何时开始使用USE进行T-SQL查询?

dmr*_*dmr 3 t-sql database

我是T-SQl和数据库的新手,有点困惑.在我正在阅读的T-SQL书中,它说写了一个USE语句来设置会话的数据库上下文.这是否意味着SQL-server实例中可以有多个数据库,USE语句告诉SQL服务器查询将在哪个数据库?

Ada*_*son 5

它并不那么简单.是的,服务器可以有多个数据库,但我会提醒您不要使用USE语句,除非您的所有查询都是这样.

与SQL Server的每个连接都有一个"当前数据库".这意味着在该连接上运行的任何查询都将使用该数据库(尽管可以通过使用点表示法明确指示来访问其他数据库中的信息).该USE语句更改了连接的当前数据库,因此如果一个语句期望在MyDatabase数据库中运行(但不使用USE MyDatabase语句指定它)并执行另一个查询Use OtherDatabase,则第一个查询将在运行时失败.

例如:

  • 连接到SQL Server到MyDatabase数据库
  • 执行以下查询:

select * from sometable

  • 执行下一个查询:

    use OtherDatabase

    select * from othertable

如果我们再次尝试执行第一个查询,它将失败(假设sometable它也不存在OtherDatabase),因为我们已经用USE语句更改了连接的上下文.这里的结果是该USE语句是连接范围的,不是特定于单个查询.

在软件开发中,更常见的方法是为计划查询的每个数据库维护与服务器的连接.这意味着查询MyDatabase将使用与查询使用的连接不同的连接OtherDatabase.这有助于减少查询上下文更改导致查询失败的可能性.