SQL语法 分隔符理解小结

两者主要的区别在于:分隔的标识符被括在双引号中(Transact-SQL也支持方括号的使用:[标识符])并且是区分大小写的。单引号只用于字符串的定界。总的来说,引入分隔的标识符是为了对标识符进行规范,否则就会与保留字相同了。特别要提到的是,分隔的标识符能够使你在命名(标识符或变量的名字)的时候,免于使用在将来的SQL标准中可能出现的保留字。另外,分隔的标识符能够包含一些在通常的标识符名称中被视为不合法的字符,如空格。

在SQL SERVER中,双引号的使用由SET 语句中的QUOTED_IDENTIFIER选项来定义。如果这个选项被设为ON,则双引号中的标识符将被定义为一个分隔的标识符。在这种情况下,双引号不能被用于定界字符串。”

记住以下几句话就能把分隔符理解了

以上这段话是书上的原话,我对分隔的标识符的理解是:例如"hu","h u",[hu],

[ h u]这几个标识符都是不同的,在使用时就像使用a,b等标识符一样,只不过必须加上双引号或中括号,不知这样理解对不对。

我自己对分隔符的理解:分隔符就是为了起到分隔作用。 SELECT * FROM "My Table"

WHERE "Last Name" = 'O''Brien'

自我分析:SELECT,FROM,where是关键字。"My Table"就是标志符,而””就是分隔符

请大虾们指教。

其实你理解的挺对的

但是别忘了它的作用是为了定义标识符

符合所有标识符格式规则的标识符可以使用分隔符,也可以不使用分隔符。

不符合标识符格式规则的标识符必须使用分隔符。

分隔标识符在下列情况下使用:

当在对象名称或对象名称的组成部分中使用保留字时。

推荐不要使用保留关键字作为对象名称。从 Microsoft® SQL Server 早期版本升级的数据库可能含有标识符,这些标识符包括早期版本中未保留而在 SQL Server 2000 中保留的字。可用分隔标识符引用对象直到可改变其名称。

当使用未被列为合法标识符的字符时。

SQL Server 允许在分隔标识符中使用当前代码页中的任何字符。但是,不加选择地在对象名称中使用特殊字符将使 SQL 语句和脚本难以阅读和维护。

Transact-SQL 所使用的分隔符类型:

说明 分隔符仅用于标识符。分隔符不能用于关键字,不论它们在 SQL Server 中是否被标记为保留字。

被引用的标识符用双引号 (") 分隔开:

SELECT * FROM "Blanks in Table Name"

括在括号中的标识符用方括号 ([ ]) 分隔:

SELECT * FROM [Blanks In Table Name]

仅当 QUOTED_IDENTIFIER 选项设置为 ON 时,被引用的标识符才有效。默认情况下,当用于 SQL Server 的 Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序连接时,将 QUOTED_IDENTIFIER 设置为 ON。默认情况下,DB-Library 不将 QUOTED_IDENTIFIER 设置为 ON。不管使用何种接口,个别应用程序或用户可随时更改设置。SQL Server 提供了多种方法来指定该选项。例如,在 SQL Server 企业管理器和 SQL 查询分析器中,该选项可在对话中设置。在 Transact-SQL 中,可以使用 SET QUOTED_IDENTIFIER、sp_dboption 的 quoted identifier 选项或 sp_configure 的 user options 选项将此选项设为多种级别。

当 QUOTED_IDENTIFIER 为 ON 时,对于 SQL 语句中的双引号和单引号 (') 的使用,SQL Server 遵循 SQL-92 规则:

双引号只能用于分隔标识符,不能用于分隔字符串。

为保持与现有应用程序的兼容性,SQL Server 并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。

单引号必须用来包含字符串,不能用于分隔标识符。

如果字符串包含单引号,则需要在单引号前再增加一个单引号:

SELECT * FROM "My Table"

WHERE "Last Name" = 'O''Brien'

当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使用,SQL Server 遵循如下规则:

引号不能用于分隔标识符,而是用括号作为分隔符。

单引号或双引号可用于包含字符串。

如果使用双引号,嵌入的单引号不需要用两个单引号来表示:

SELECT * FROM [My Table]

WHERE [Last Name] = "O'Brien"

无论 QUOTED_IDENTIFIER 的设置如何,都可以在括号中使用分隔符。

分隔标识符规则

分隔标识符的格式规则是:

分隔标识符可以包含与常规标识符相同的字符数(1 到 128 个,不包括分隔符字符)。本地临时表标识符最多可以包含 116 个字符。

标识符的主体可以包含当前代码页内字母(分隔符本身除外)的任意组合。例如,分隔符标识符可以包含空格、对常规标识符有效的任何字符以及下列任何字符: 代字号 (~) 连字符 (-)

惊叹号 (!) 左括号 ({)

百分号 (%) 右括号 (})

插入号 (^) 撇号 (')

and 号 (&) 句号 (.)

左圆括号 (() 反斜杠 (\)

右圆括号 ()) 重音符号 (`)

时间: 2024-10-11 06:13:09

SQL语法 分隔符理解小结的相关文章

SQL语法 分隔符理解小结_MsSql

两者主要的区别在于:分隔的标识符被括在双引号中(Transact-SQL也支持方括号的使用:[标识符])并且是区分大小写的.单引号只用于字符串的定界.总的来说,引入分隔的标识符是为了对标识符进行规范,否则就会与保留字相同了.特别要提到的是,分隔的标识符能够使你在命名(标识符或变量的名字)的时候,免于使用在将来的SQL标准中可能出现的保留字.另外,分隔的标识符能够包含一些在通常的标识符名称中被视为不合法的字符,如空格. 在SQL SERVER中,双引号的使用由SET 语句中的QUOTED_IDEN

SQL语法大全

sql语法  SQL语法大全   SQL语法大全1. ASP与Access数据库连接: <%@ language=VBscript%><%dim conn,mdbfilemdbfile=server.mappath("数据库名称.mdb")set conn=server.createobject("adodb.connection")conn.open "driver={microsoft access driver (*.mdb)};u

SQL语法查询文档

sql语法  一.SQL速成  结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表.索引.字段等)的建立和操纵.  以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册.  1.创建表  表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联.创建表的基本语法如下:  create table table_name  (column_name data无效 {identity |null

SQL语法速成

sql语法|速成 一.SQL速成  结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件(如表.索引.字段等)的建立和操纵.  以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册.  1.创建表  表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联.创建表的基本语法如下:  create table table_name  (column_name data无效 {identity |nu

SQL Server :理解DCM页

原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map:DCM ),还有差异备份(differential backups). 差异变更页(Differential Change Map:DCM ) :SQL Server使用差异变更页来跟踪自上次完全备份后修改过的区.DCM页在数据文件里是第6页.DCM页用来跟踪完全备份后修改过的区.DCM为每个跟踪

Oracle9iPL/SQL编程的经验小结_oracle

正在看的ORACLE教程是:Oracle9iPL/SQL编程的经验小结.平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享. 1.当需要向表中装载大量的数据流或者需要处理大量的数据流的时候,能否使用管道提高处理效率? 管道函数对于改善并行查询的性能非常方便,它加快往表中加载数据的速度.管道函数的使用总结如下两点: 每当在查询里使用PL/SQL函数时,该查询将被序列化,即一个处理器只能运行一个查询实例,那么在这种情况下不可能使用并行查询(比如在数据仓库中要

SQL Server BCP使用小结

原文:SQL Server BCP使用小结用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件  [-m 最大错误数]             [-f 格式化文件]         [-e 错误文件]  [-F 首行]                   [-L 末行]             [-b 批大小]  [-n 本机类型]               [-c 字符类型]         [-w 宽字符类型]  [-N

SQL语法手册

sql语法 http://blog.csdn.net/web_gus/archive/2004/10/11/132122.aspx

SQL语法参考

sql语法|参考|语法参考 一.资料定义 ddl(data definition language) 资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系.表格内的有什麽栏位主键.表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的. 1.建表格:create table table_name( column1 datatype [not null] [not null primary key], column2 datatyp