SQL语法 分隔符精通小结

相互根本的区分在于:分隔的标志符被括在双引号中同临时候是分别朗朗上口写的。单引号只用于字符串的定界。总而言之,引进分隔的标记符是为了对标志符实行正规,不然就能够与保留字形似了。非常要提到的是,分隔的标志符能够令你在命名的时候,免于使用在今天的SQL标准中或者现身的保留字。别的,分隔的标志符能够饱含部分在平时的标志符名称中被视为非法的字符,如空格。
在SQL SEXC60VE奥德赛后,双引号的选择由SET
语句中的QUOTED_IDENTIFIEENCORE选项来定义。即使这几个选项被设为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 二〇〇二 中保存的字。可用分隔标识符援引对象直到可转移其名目。
当使用未被列为法定标志符的字符时。 SQL Server
允许在相隔标记符中使用当前代码页中的任何字符。可是,不加接纳地在对象名称中动用特殊字符将使
SQL 语句和本子难以阅读和护卫。 Transact-SQL 所接受的相间符类型: 说明分隔符仅用于标志符。分隔符不能够用于重大字,无论它们在 SQL Server
中是还是不是被标志为保留字。 被引述的标识符用双引号 (“卡塔尔国 分隔断: SELECT *
FROM “Blanks in Table Name” 括在括号中的标志符用方括号 ([ ]) 分隔:
SELECT * FROM [Blanks In Table Name] 仅当 QUOTED_IDENTIFIEWrangler选项设置为 ON 时,被援引的标志符才有效。暗许情形下,当用于 SQL Server 的
Microsoft OLE DB 提供程序和 SQL Server ODBC 驱动程序连接时,将
QUOTED_IDENTIFIEGL450 设置为 ON。默许意况下,DB-Library 不将
QUOTED_IDENTIFIEOdyssey 设置为
ON。不管选取何种接口,个别应用程序或客户可每一天变动设置。SQL Server
提供了七种主意来钦点该选项。比如,在 SQL Server 公司微处理器和 SQL
查询分析器中,该选项可在对话中装置。在 Transact-SQL 中,能够应用 SET
QUOTED_IDENTIFIER、sp_dboption 的 quoted identifier 选项或
sp_configure 的 user options 选项将此选项设为多样等级。 当
QUOTED_IDENTIFIEXC60 为 ON 时,对于 SQL 语句中的双引号和单引号 (‘State of Qatar的运用,SQL Server 坚决守护 SQL-92 法则:
双引号只可以用于分隔标志符,无法用于分隔字符串。
为保险与现成应用程序的兼容性,SQL Server
并不完全强逼该准绳。假使字符串未有当先标记符的尺寸,则该字符串可含蓄在双引号内。但不提议如此做。
单引号必需用来含有字符串,不可能用于分隔标记符。
假设字符串包括单引号,则须要在单引号前再追加多个单引号: SELECT * FROM
“My Table” WHERE “Last Name” = ‘O”Brien’ 当 QUOTED_IDENTIFIEOdyssey 为 OFF
时,对于双引号和单引号的运用,SQL Server 遵守如下准绳:
引号不可能用于分隔标志符,而是用括号作为分隔符。
单引号或双引号可用于含有字符串。
要是使用双引号,嵌入的单引号无需用五个单引号来代表: SELECT * FROM
[My Table] WHERE [Last Name] = “O’Brien” 无论 QUOTED_IDENTIFIEXC90的装置什么样,都足以在括号中使用分隔符。 分隔标志符准绳分隔标记符的格式准绳是:
分隔标记符能够分包与正规标记符相符的字符数。本地有时表标志符最多能够蕴含116 个字符。
标记符的本位能够分包当前代码页内字母的随便组合。比如,分隔符标识符能够蕴含空格、对通常标志符有效的别样字符以至下列任何字符:
代字号 (~) 连字符 (-) 惊叹号 (!卡塔尔(قطر‎ 左括号 ({State of Qatar 百分号 (%卡塔尔 右括号 (}卡塔尔 插入号
(^State of Qatar 撇号 (‘卡塔尔 and 号 (&卡塔尔(قطر‎ 句号 (.卡塔尔(قطر‎ 左圆括号 ((卡塔尔 反斜杠 (\卡塔尔 右圆括号 (卡塔尔国State of Qatar重音符号 (`)

先说说哪些是标志符,举个例证,若是创制了二个堪称USEPRADO的数量库表,则直接用SQL语句“SELECT
* FROM USE安德拉”做询问时会报错:“在第一字 ‘USE奇骏’
左近有语法错误。”,也等于USE安德拉被用作SQL
SEKugaVEHaval的显要字管理了,实际不是被以为是二个表或视图。但假若改革为“SELECT *
FROM
[USER]”就没难点了。此处的方括号正是标识符。标志符的法力正是告诉数据库引擎,此处是一个数据库对象(举例是三个表、视图、存款和储蓄进程等卡塔尔(قطر‎,并不是二个第一字。

现行反革命剩余最后叁个小意思了,SQL SERAV4VE景逸SUV联机丛书说OFF是SET
QUOTED_IDENTIFIECR-V的暗中认可值,那即便我们省略掉SET
QUOTED_IDENTIFIEENCORE语句和写了SET QUOTED_IDENTIFIER
OFF应该效果等同才对,但事实证明省略掉SET QUOTED_IDENTIFIER语句和SET
QUOTED_IDENTIFIER
ON语句才是同等的,这又是干吗呢?原本在默许景况下,连选择 SQL Server
时,ODBC 和 OLE DB 客商端发出连接级 SET 语句,将 QUOTED_IDENTIFIEHaval设置为 ON。而连接级设置(使用 SET 语句设置)会替代 QUOTED_IDENTIFIEPRADO的暗中同意数据库设置。原来那样!!!

SQL SELacrosseVEMurano的协作丛书的疏解:

SELECT * FROM [USER]  WHERE a= ‘ netasp’

SET QUOTED_IDENTIFIER OFF

SET QUOTED_IDENTIFIER ON

“当 SET QUOTED_IDENTIFIECR-V 为 ON
时,标记符能够由双引号分隔,而文字必得由单引号分隔。当 SET
QUOTED_IDENTIFIEEscort 为 OFF 时,标记符不可加引号,且必需信守全部Transact-SQL 标记符准则。”

SET QUOTED_IDENTIFIER ON