我正在为一份新工作从MySQL
切换到SQL Server
,我遇到了一些我不太理解的事情,因为我以前从未遇到过这样的事情。
我正在使用wideworlimportters微软样本DB供参考。
查看表结构,我可以看到它是SCHEMA_NAME.X.TABLE_NAME
[WideWorldImporters].[Application].[Cities]
在MySQL
中,这就是schema.tablename
[WideWorldImporters].[Cities]
中间部分(示例中的[Application]部分)究竟是什么?我似乎找不到任何关于它的东西,但这可能是因为我不知道要找什么。这显然很重要,因为如果删除了select查询,它将无法工作。谁能解释一下,甚至说出这个名字,这样我就可以研究了?
Microsoft使用Database_Name.Schema_Name.Table_Name
的三部分命名模式,这与MySQL的约定不同。一般来说,MySQL"模式"大致相当于SQL Server的"数据库"。
在实践中,除非特别需要,否则应该避免显式引用数据库名称。
Microsoft documentation: https://learn.microsoft.com/en-us/sql/t-sql/language-elements/transact-sql-syntax-conventions-transact-sql?view=sql-server-ver15#multipart-names
我想在paneerakbari
上添加一些额外的细节
:关于SQL Server
,根据Microsoft Doc Transact-SQL有不同的格式来定义对象名(表名),以下是支持的格式
对象引用格式 | 描述 | server.database.schema。对象 | 四名 |
---|---|
server.database . .object | 省略模式名。 |
服务器模式。object | 省略数据库名 |
服务器……object | 省略数据库和模式名 |
database.schema。object | 服务器名省略 |
数据库。 | 服务器和模式名省略。 |
模式。object | 服务器名和数据库名省略。 |
object | 省略服务器、数据库和模式名 |