Documentation Home
MySQL 8.0 参考手册  / 附录 A MySQL 8.0 常见问题解答  /  A.3 MySQL 5.7 常见问题解答:服务器 SQL 模式

A.3 MySQL 5.7 常见问题解答:服务器 SQL 模式

A.3.1. 什么是服务器 SQL 模式?
A.3.2. 有多少种服务器 SQL 模式?
A.3.3. 如何确定服务器 SQL 模式?
A.3.4. 模式是否取决于数据库或连接?
A.3.5. 可以扩展严格模式的规则吗?
A.3.6. 严格模式会影响性能吗?
A.3.7. 安装 MySQL 5.7 时默认的服务器 SQL 模式是什么?

A.3.1.

什么是服务器 SQL 模式?

服务器 SQL 模式定义了 MySQL 应该支持什么样的 SQL 语法以及它应该执行什么样的数据验证检查。这使得在不同环境中使用 MySQL 以及与其他数据库服务器一起使用 MySQL 变得更加容易。MySQL 服务器将这些模式分别应用于不同的客户端。有关详细信息,请参阅第 5.1.10 节,“服务器 SQL 模式”

A.3.2.

有多少种服务器 SQL 模式?

每种模式都可以独立打开和关闭。有关可用模式的完整列表, 请参阅 第 5.1.10 节,“服务器 SQL 模式” 。

A.3.3.

如何确定服务器 SQL 模式?

您可以使用该选项 设置默认 SQL 模式(用于mysqld 启动) 。--sql-mode使用语句 ,您可以从连接内更改设置,可以在本地连接到连接,也可以在全局范围内生效。您可以通过发出 语句来检索当前模式。 SET [GLOBAL|SESSION] sql_mode='modes'SELECT @@sql_mode

A.3.4.

模式是否取决于数据库或连接?

模式不链接到特定数据库。可以在本地为会话(连接)设置模式,也可以为服务器全局设置模式。您可以使用更改这些设置 。 SET [GLOBAL|SESSION] sql_mode='modes'

A.3.5.

可以扩展严格模式的规则吗?

当我们提到strict mode时,我们指的是至少 启用TRADITIONAL, STRICT_TRANS_TABLES或 中的一种模式。STRICT_ALL_TABLES选项可以组合,因此您可以对模式添加限制。有关详细信息,请参阅第 5.1.10 节,“服务器 SQL 模式”

A.3.6.

严格模式会影响性能吗?

与未完成验证相比,某些设置需要更多时间的输入数据密集验证。虽然对性能的影响不是很大,但如果您不需要这样的验证(也许您的应用程序已经处理了所有这些),那么 MySQL 会为您提供禁用严格模式的选项。但是,如果您确实需要它,严格模式可以提供此类验证。

A.3.7.

安装 MySQL 5.7 时默认的服务器 SQL 模式是什么?

MySQL 5.7 中默认的 SQL 模式包括这些模式: ONLY_FULL_GROUP_BYSTRICT_TRANS_TABLESNO_ZERO_IN_DATENO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERONO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION

有关所有可用模式和默认 MySQL 行为的信息,请参阅第 5.1.10 节,“服务器 SQL 模式”