重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
类似与MSSQL里面的[],理解为对字段名、表名的一个引号,不是必须的,例如建立表abc可以使用:
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的门源网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
create table abc ....
也可以使用:
create table `abc` ...
但是,如果你建立的表名叫做table或者其它的特殊名称,那就必须要使用反引号:
create table `table` ...
它是为了区分MYSQL的保留字与普通字符而引入的符号。
举个例子:SELECT `select` FROM `test` WHERE select=‘字段值‘
在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分。
引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select=‘字段值‘
不加反引号建的表不能包含MYSQL保留字,否则出错
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例使用单引号标注字符串常量,字串中包含的单引号需要转义(一个单引号写成两个单引号),否则会报错。
经评论区朋友的指点,此篇文章存在问题,不把SQL关键字作为字段名才是解决问题的关键。
单独针对mysql,可以使用反引号,即`
对于oracle,需要使用双引号加大写,即"KEY"这种,或者直接不加任何符号,不能使用单引号,不然会出现评论区兄弟说的那种情况,即查询结果的字段是返回'key'这种形式。
sql使用单引号
查询见截图,下面返回的查询结果中返回的字段名带有单引号:
查询结果中应该不带单引号的。
所以为了兼顾mysql和oralce,最好的办法是修改字段名,不要涉及sql系统关键字和特殊字段。
在mybatis的xml配置中有如下sql语句:
上述配置,在mysql中会报错
提示有语法错误, key value为msyql系统关键字,解决方法可以是可以用反引号,如下
这样做在mysql中是可以的,不过在oracle中使用反引号会报错
上述mybatis配置中的sql在oracle中执行是没问题的,
所以为了sql在mysql和oracle中都能执行,使用单引号更改sql语句,改完如下:
这样在mysql和oracle中都可以执行了。
1、首先单引号和反引号,如图,这里的 '图书ID' 就使用到了单引号,而 CREATE TABLE `book` 这里的 book 就使用到了反引号。
2、单引号:在例子中的条件值周围使用的是单引号。SQL 使用单引号来环绕文本值。如果是数值,不要使用引号。
3、反引号:它是为了区分MYSQL的保留字与普通字符而引入的符号。有MYSQL保留字作为字段的,必须加上反引号来区分。
4、双引号的用法和单引号有所类似,大多数数据库都支持单引号和双引号的互换,即varchar类型的变量既可以用单引号来囊括,也可以用双引号。
5、另外,在oracle里面,双引号还有一个意义,那就是保留大小写。在oracle数据库里面,所有的字段是默认为转化成大写后进数据库的,所以如果有一个表名为user,这个时候select * from user;这个语句是查不出任何数据的。
mysql的别名可以不加引号,如果加引号,单引号和双引号以及反引号都可以,如下
mysql的 字段名、表名 通常不需要加任何引号,如果非要加上引号,必须加反引号``(注意是英文状态),如下
QA:
Q:在给字段设置别名的时候,加单引号、双引号和不加有区别吗?
A:本质上都可以实现,但是如果引号引起来可以添加空格,不加引号的别名无法做到。