2

如果有人使用 Microsoft 的 SQL Server management Studio 右键单击​​数据库中的给定表并创建脚本表到查询窗口,它会在窗口中显示创建表代码。我注意到类似以下内容

CREATE TABLE [dbo].[Login](
[UserId] [int] NOT NULL,
[LoginName] nvarchar COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL


这也是它在其他 DBMS 中的显示方式吗?
这是特定于使用的 DBMS 的东西吗?
它只是一个奇特的观点吗?

为什么在列名和表名周围使用“ [ ] ”。简单的 TSQL 定义看起来像
CREATE TABLE table_name (
Column#1 Datatype NOT NULL,
Column#2 Datatype NOT NULL UNIQUE,
-- etc...
)

请不要介意我的愚蠢问题。

在此先感谢,
巴拉吉小号

4

2 回答 2

2

这些是标识符引号。它们将内容标记为数据库标识符(列名、表名等),并允许将空格、特殊字符和保留字用作标识符。通常这些都不会出现在标识符中,因此严格来说,ID 引号是不必要的。当由于特殊字符或保留字无法解析文本时,需要使用 ID 引号。

对于自动化工具来说,总是简单地使用 ID 引号比弄清楚你什么时候可以不使用它们更容易。

不同的数据库产品对 ID 引号使用不同的字符。您经常会看到用于此的反引号 (`)。

于 2010-07-07T03:52:41.240 回答
0

只是为了添加拉里·卢斯蒂格(Larry Lustig)的出色答案,SQL Server 的“创建脚本”函数吐出 SQL 代码,其首要任务是对解析器友好,这就是为什么它总是使用其首选的分隔标识符字符作为方括号,而不是说双引号由 SQL-92 标准使用(SQL Server 代码可以通过使用来支持标准分隔标识符,SET QUOTED_IDENTIFIER ON但我认为这不能指定为输出选项)。在人眼上容易(使用空格、换行符等)只是次要考虑。

于 2010-07-07T07:50:01.010 回答