来自DBMS的SQL Create表脚本包含[]

时间:2010-07-07 02:41:52

标签: sql create-table

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

CREATE TABLE [dbo]。[登录](
    [UserId] [int] NOT NULL,
    [LoginName] nvarchar COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
等。

这是否也出现在其他DBMS中?
这是DBMS使用的特定内容吗?
它只是一个奇特的观点吗?

为什么在列名和表名周围使用“ [] ”。简单的TSQL定义看起来像是什么 CREATE TABLE table_name(
  第1列数据类型NOT NULL,
  第2列数据类型NOT NULL UNIQUE,
   - 等...... )

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

提前致谢,
巴拉吉S

2 个答案:

答案 0 :(得分:2)

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

自动化工具更容易使用ID引号,而不是在没有它们的情况下逃脱。

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

答案 1 :(得分:0)

只是为了增加Larry Lustig的优秀答案,SQL Server的“创建脚本”功能吐出SQL代码,其首要任务是解析器友好,这就是为什么它总是使用其首选的分隔标识符字符为方括号,而不是说SQL-92标准使用的双引号(SQL Server代码可以通过使用SET QUOTED_IDENTIFIER ON支持标准分隔标识符,但我不认为这可以指定为输出选项)。人眼容易(使用空白,换行等)仅仅是次要的考虑因素。