文章目录
MySQL 服务器可以以不同的 SQL 模式来操作,并且可以为不同客户端应用不同模式。这样每个应用程序可以根据自己的需求来定制服务器的操作模式。这类模式定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查。这样,就能在众多不同的环境下、与其他数据库服务器一起更容易地使用 MySQL。
- 查看 MySQL 当前的 SQL 模式
- 设置 MySQL 的 SQL 模式
- SQL 模式介绍
- TRADITIONAL(传统模式)
- STRICT(严格模式)
- ANSI 模式
MySQL 常用的有三种 SQL 模式,传统模式、严格模式和 ANSI 模式。MySQL 的 SQL 模式默认为空,该模式为非严格模式。
查看 MySQL 当前的 SQL 模式可以通过如下命令查看 MySQL 当前的 SQL 模式:
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode';
mysql> SELECT @@sql_mode;
设置 MySQL 的 SQL 模式
mysql> SET [GLOBAL|SESSION] sql_mode='modes';
启动 MySQL 时指定 SQL 模式:
[root@htlwk0001host ~]# mysqld --sql-mode="modes"
SQL 模式介绍
TRADITIONAL(传统模式)
该模式的简单描述是当在列中插入不正确的值时“给出错误而不是警告”。注释:一旦发现错误立即放弃INSERT/UPDATE。如果你使用非事务存储引擎,那么出现错误前进行的数据更改不会“回滚”,会导致结果更新“只进行了一部分”。
mysql> SET [GLOBAL|SESSION] sql_mode='TRADITIONAL';
STRICT(严格模式)
如果不能将给定的值插入到表中,则放弃该语句。
严格模式具有两种:STRICT_TRANS_TABLES
和 STRICT_ALL_TABLES
。
STRICT_TRANS_TABLES
对支持事务的表实行严格模式;STRICT_ALL_TALBES
在所有表执行严格模式。
mysql> SET [GLOBAL|SESSION] sql_mode='STRICT_TRANS_TABLES';
mysql> SET [GLOBAL|SESSION] sql_mode='STRICT_ALL_TABLES';
ANSI 模式
更改操作的语法和行为,使其更适合标准的SQL。