百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

MySQL运维实战(4.7) SQL_MODE之ANSI_QUOTES

liuian 2025-01-17 12:15 50 浏览

作者:俊达
在 MySQL 中,标识符是指数据库、表名、列名等的名称。默认情况下,MySQL 使用反引号 (\`) 来引用标识符。当使用 MySQL 的关键字或者特殊字符作为表名或列名时,可以使用反引号 (\`)来避免语法错误。然而,MySQL 提供了一个 SQL 模式——ANSI_QUOTES ,它可以改变标识符引号的行为。不设置ANSI_QUOTES时,MySQL可以使用双引号来引用字符串常量。而设置ANSI_QUOTES后,双引号 (") 内的内容不再是字符串,而是MySQL的标识符(如表名、字段名)。这样做的好处是,可以更容易地将 SQL 语句与其他数据库系统的语法进行兼容,因为在 ANSI SQL 中,双引号是用于引用标识符的常用方法。
下面是一个示例,说明了这两种情况的区别:
不设置ANSI_QUOTES

mysql> set sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

-- order是关键字,不能作为表名
mysql> create table order(a varchar(100));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order(a int)' at line 1

mysql> create table "order"(a varchar(100));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"order"(a int)' at line 1

-- 使用反引号(``),
mysql> create table `order`(a varchar(100));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into `order` values("abc");
Query OK, 1 row affected (0.00 sec)

mysql> select * from `order`;
+------+
| a    |
+------+
| abc  |
+------+
1 rows in set (0.00 sec)

设置ANSI_QUOTES

mysql> drop table `order`;
Query OK, 0 rows affected (0.00 sec)

-- 设置ANSI_QUOTES
mysql> set sql_mode='ANSI_QUOTES';
Query OK, 0 rows affected (0.00 sec)


-- 使用双引号
mysql> create table "order"(a varchar(100));
Query OK, 0 rows affected (0.02 sec)

-- "abc" 不是合法的字符串表达式, 而是字段abc
mysql> insert into "order" values ( "abc");
ERROR 1054 (42S22): Unknown column 'abc' in 'field list'

-- 这里插入的"a"不是字符串a,而是字段a
mysql> insert into "order" values ( "a");
Query OK, 1 row affected (0.01 sec)

mysql> select * from "order";
+------+
| a    |
+------+
| NULL |
+------+

总之,该设置主要用于处理标识符的引用问题,以确保 MySQL 正确解释和执行 SQL 语句。根据实际需要,可以选择使用反引号或设置 ANSI_QUOTES 模式,以便更好地处理标识符的引用。
更多技术信息请查看云掣官网云掣YunChe - 可观测运维专家 | 大数据运维托管 | 云MSP服务

相关推荐

怎么使用ghost备份系统(怎么用ghost备份文件)

  步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。  步骤...

如何组装电脑视频(电脑组装小视频)

第一部,主机箱拧上螺丝柱,主板对准螺柱拧螺丝第二部,安装对应的CPU,涂抹散热硅脂.安装散热器第三部,安装电源拧紧螺丝,电源接口插入对应主板的接口.第四部,安装内存条,显卡,硬盘.第五部,主机箱上...

怎么安装宽带(怎么安装宽带全部教程)

这个事好办,你可以带上你的身份证是网络供应商营业大厅,叫他们查你所住的地方有没有宽带资源,一般情况下,他们马上就可以查出,如果 有,你就填写协议或资料的东西,然后交钱就可以了,根据你自己上网需要,和营...

win7专业版一键还原(win7一键还原工具)
  • win7专业版一键还原(win7一键还原工具)
  • win7专业版一键还原(win7一键还原工具)
  • win7专业版一键还原(win7一键还原工具)
  • win7专业版一键还原(win7一键还原工具)
繁体字转换器app(繁体字转换器软件下载)

简体繁体转换工具是一款可以自由转换简体字和繁体字的工具软件。简体繁体转换工具支持中文简体、繁体互相转换,还可以简体和BIG5之间的相互转换,只需要在软件中输入需要转换的简体文字,然后点击一下就可以转换...

用户账户控制怎么打开(用户账户控制在哪里设置)
用户账户控制怎么打开(用户账户控制在哪里设置)

1、按开始(或者按“Win键”),选择“控制面板”;  2、在“控制面板”界面中,选择“用户账户和家庭安全”;  3、在“用户账户和家庭安全”界面中,选择“用户账户”;  4、在“用户账户”界面中,选择“更改用户账户控制设置”;  5、这样...

2025-12-19 00:05 liuian

日语输入法下载安装 app(日语输入法下载安装讯飞)

搜狗输入法可以把中文翻译成日语。1、首先打开短信的文字输入框,输入需要翻译的中文,找到右上方的搜索图标。2、接着在弹出的功能栏中选择左下方的翻译功能,这时就能看到翻译出的多国语言。3、最后选择日文后方...

win10系统补丁怎么安装(win10系统补丁怎么安装不了)

任何系统装补丁都是一样的。下载好补丁的NPK文件,然后放在DNF安装文件夹下面的imagepacks2里面就好。首先,强烈不建议用管家类的软件批量打补丁,非常容易出问题!如果你的电脑是用的正版系统,...

windows10电脑怎么格式化d盘

格式化D盘的步骤如下:首先备份重要的数据,因为格式化会清空盘中的所有数据。打开“我的电脑”,找到需要格式化的D盘。右键点击D盘,选择“格式化”。在弹出的窗口中选择“文件系统”,一般选择NTFS文件系统...

xpu盘启动盘制作工具(xp系统启动盘制作)

XP系统设置U盘启动方法:1、将启动U盘插入电脑USB口,在开机时候按着“F2”(具体按键跟根据个人电脑而已,开机时有提示)键,进入BIOS界面,选择并进入“BOOT(启动)”设置项。2、在启动界面中...

tplink路由器初始账号密码(tp-link路由器默认账号密码)

初始密码:admin,可以在路由器底部标贴中查看到;  2、新版本的TP-Link路由器,没有默认登录密码了;新版的TP-link需要打开tplogin.cn作为管理页面登陆,默认是没有管理员密码的,...

win7纯净版系统之家官网下载

纯净版win7官网站好。win7纯净版就是在原版系统基础上纯净2.win7纯净版就是在原版系统基础上纯净化后的版本,它去除了所有第三方软件和捆绑软件,而且纯净版系统一定是后续封装的系统,非原版系统...

苹果自带的手机管家(苹果自带的手机管家能两个手机吗)

苹果手机没有自带的手机管家的,因为苹果手机并没有必要有管家。因为苹果首先是一个封闭的系统,它是AppStore的里面才能下载软件,软件都是经过安全扫描,不会有太多风险的。的内存管理本身就十分优秀,后台...

水星路由器管理员初始密码(水星路由器管理员密码一般是啥)

水星路由器初始管理员密码旧版默认密码是:admin水星路由器目前有新、旧2个版本,而旧版本的水星路由器,默认密码是:admin注意问题:一台路由器,如果有默认密码。2.新版没有默认密码前面...

华硕笔记本官网序列号查询(华硕官方序列号查询)

1.不提供完整序列号。2.因为华硕官网为了保护用户的隐私和安全,不会公开提供完整的序列号。3.如果您需要查询或注册产品,可以在产品包装盒上或产品本身上找到部分序列号,并在华硕官网上进行相应的操作...