MySQL中反引号和引号的区别及用法

MySQL中反引号和引号的区别及用法,第1张

MySql中用一对反引号"`"来标注SQL语句中的标识,如数据库名、表名、字段名等。反引号是非必须的,在确保不会导致歧义发生的情况下可以省略掉,反之,例如在出现字段名与保留关键字相同、标识中含空格等等情况下就需要使用,否则可能出错。

引号则用来标注语句中所引用的字符型常量或日期/时间型常量。引号是必须的,不得省略,否则会导致系统报错。一般情况下使用一对英文单引,也可以英文双引号。

下面举例示范反引号和单引号的用法

select cid,`name`,`place of birth` ,

'特殊客户群' as remark

from client where `type of client`='student'

选出客户类型为学生的记录,列出客户id、姓名和出生地,额外附加一个虚拟备注字段将学生类型客户标注为常量"特殊客户群"

a.

select * from student where

remark="Mary's elder twin sister"

b.

select * from student where

remark='Mary''s elder twin sister'

通过备注查出玛丽的双胞胎姐姐的资料。

因为常量中包含英文单引号

a例使用双引号标注字符串常量,可直接引用含单引号的字符串

b例使用单引号标注字符串常量,字串中包含的单引号需要转义(一个单引号写成两个单引号),否则会报错。

MySQL里引用字符串常量时需要用一对英文单引号“ ' ”或英文双引号“ " ”将字符串常量常量括起来。例如:

'an apple'

"a book"

一般应使用英文单引号,如果字符串内需要包含单引号时,除了使用转义的办法外,我们可以选用一对双引号来包括字符串,这样字符串内的单引号被视作普通字符,无需特殊处理。

例如  Johnson's mother

select "Johnson's mother",'Johnson''s mother','Johnson\'s mother'

与单引号对应,使用英文双引号引用的字符串内需要包含双引号时,除了使用转义的办法外,我们可以用一对单引号来包括字符串,这样字符串内的双引号被视作普通字符,无需特殊处理。

例如  He said: "Go away"

select 'He said: "Go away"' ,"He said: ""Go away""" ,"He said: \"Go away\""

MySQL里使用一对反勾号“ ` ”将识别符括起来,一般情况下可以不用,单是如果识别符出现关键字冲突或标识符的写法可能产生歧义的情况下就必须使用。例如:

create table t1 (id int primary key ,desc varchar(10))-- 这句会报错

create table t1 (id int primary key,`desc` varchar(10))-- 这句客成功运行

另外,如果SQL服务器模式包括ANSI_QUOTES模式选项,还可以用双引号替代反勾号将识别符括起来:

mysql>CREATE TABLE "test" (col INT) ERROR 1064: You have an error in your SQL syntax. (...)mysql>SET sql_mode='ANSI_QUOTES'mysql>CREATE TABLE "test" (col INT)Query OK, 0 rows affected (0.00 sec)

之前报错,设置SQL服务器模式包括ANSI_QUOTES模式后,运行成功。

MySQL识别下列转义字符:

\0

一个ASCII 0 (NUL)字符。

\n

一个新行符。

\t

一个定位符。

\r

一个回车符。

\b

一个退格符。

\'

一个单引号(“'”)符。

\"

一个双引号(“"”)符。

\\

一个反斜线(“\”)符。

\%

一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。

\_

一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。

注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。

有几种方法在一个字符串内包括引号:

一个字符串内用“'”加引号的“'”可以被写作为“''”。

一个字符串内用“"”加引号的“"”可以被写作为“""”。

你可以把一个转义字符(“\”)放在引号前面。

一个字符串内用“"”加引号的“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“'”加引号的与“"”也不需要特殊对待。

下面显示的SELECT演示引号和转义如何工作:

mysql>SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'

+-------+---------+-----------+--------+--------+

| hello | "hello" | ""hello"" | hel'lo | 'hello |

+-------+---------+-----------+--------+--------+

mysql>SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"

+-------+---------+-----------+--------+--------+

| hello | 'hello' | ''hello'' | hel"lo | "hello |

+-------+---------+-----------+--------+--------+

mysql>SELECT "This\nIs\nFour\nlines"

+--------------------+

| This

Is

Four

lines |

+--------------------+

如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:

NUL

ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。

\

ASCII 92,反斜线。用'\\'表示。

'

ASCII 39,单引号。用“\'”表示。

"

ASCII 34,双引号。用“\"”表示。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/6115825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-15
下一篇 2023-03-15

发表评论

登录后才能评论

评论列表(0条)

保存