SQL Server表名为啥要加方括号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server表名为啥要加方括号?相关的知识,希望对你有一定的参考价值。

我刚安装了Microsoft SQL Server 2000个人版,发现它的SQL语句怎么和标准不一样。比如我使用最简单的查询语句"select * from user"查询表user,结果它提示语法错误,后来系统自动给我纠正过来变成"select * from [user]",查询才成功执行了。
也就是说要给表名添加方括号才是正确的格式。我就郁闷了,在网上找资料都没有提到Microsoft SQL Server有这个特点啊,难道是我的安装有问题吗?我现在刚开始学Microsoft SQL Server,希望各位高手指点一下小弟!

这个不是必须要加,但表名或字段名如果引用了sqlserver中的关键字,数据库会不识别这到底是关键字还是表名(或字段名)时就必须要加。

比如,一个表名叫user,user在sqlserver中属于关键字,那么查询的时候必须要这样:

select * from [user]

否则就会报错。

同理,如果user属于字段名,也同样要加,如

select * from 表名 where [user]=1
参考技术A 因为"user"是SQL Server保留的关键字,所以用"select * from user"查询会提示语法错误。加上中过号,以声明其不是保留字。
如果表名不是关键字,如Company,则用"select * from Company"是没问题的,不用加中括号本回答被提问者采纳
参考技术B [] 里的内容表示是一个用户级的变量.
目的是防止用户使用的名称和系统保留字冲突
比如你有一个表名就叫select
那么你select * from select肯定是不行的.
但是你select * from [select] 就没问题了
你那个user也是一样.
所有的表名字段名都可以加[],但是只要不跟系统关键字冲突就可以省略
参考技术C SQL的语句和INFORMIX等数据库的SELECT语句都是标准的。 参考技术D 去网上找1下把

sql server 2008中列名外的中括号去除不掉

我的这个列里面也没有包含“-”,不过是一个表的主键和另一个表的外键,求高手指教
就是上图中的“level”列

level应该是 sqlserver的关键字,

所以用中括号 扩起来。

用的时候 带着 中括号 就行。
参考技术A level应该是 sqlserver的关键字, 所以用中括号 扩起来。 用的时候 带着 中括号 就行。 参考技术B 因为level是数据库的关键字,数据库内部会加中括号来区别列名及表名等

以上是关于SQL Server表名为啥要加方括号?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 查询生成器/如何阻止它添加方 [括号]?

oracle sql用的mysql软件,查关联的表名的时候会有表名和后面的括号,如图

在ASP中SQL语句中表名或列名为啥要加中括号

sql server 2008中列名外的中括号去除不掉

oracle 动态 sql 使用带括号的参数作为表名

SQL中的列名上加中括号是啥意思