-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SQL #15
Comments
图片展示了一些常见的SQL语句及其功能。下面是每个SQL语句的详细介绍:
这些是SQL中常用的语句和关键字,它们帮助我们进行数据库操作和数据管理。每个语句和关键字都有其特定的功能和用法,通过组合使用这些语句,我们可以构建复杂的查询来满足各种数据处理需求。 |
修改 SQL 模式(如禁用 临时禁用
|
作用和影响启用
这样做的目的是确保查询结果的确定性,因为在 示例启用
|
id | name | department |
---|---|---|
1 | Alice | HR |
2 | Bob | IT |
3 | Carol | IT |
4 | Dave | HR |
查询示例:
SELECT name, COUNT(*) FROM employees GROUP BY department;
在 ONLY_FULL_GROUP_BY
模式下,这个查询会产生错误,因为 name
列既不在 GROUP BY
子句中,也不是聚合函数的一部分。
禁用 ONLY_FULL_GROUP_BY
SET SESSION sql_mode='';
在禁用 ONLY_FULL_GROUP_BY
模式后,MySQL 允许这种查询,并返回不确定的结果,因为 name
列不在 GROUP BY
子句中,MySQL 会从每个组中随意选择一个 name
的值。
为什么启用 ONLY_FULL_GROUP_BY
- 数据一致性: 确保查询结果的一致性,防止不确定的数据出现在结果集中。
- SQL 标准符合性: 使查询符合 SQL 标准,增强可移植性和可维护性。
- 明确性: 强制开发者编写明确的、符合逻辑的查询,减少潜在的错误。
关闭 ONLY_FULL_GROUP_BY
的潜在风险
- 数据不一致性: 禁用后,可能会得到不确定的结果,尤其是在查询包含未聚合的列时。
- 隐含错误: 可能会掩盖一些查询中的逻辑错误,使得结果集不符合预期。
总结
ONLY_FULL_GROUP_BY
模式的主要作用是确保 GROUP BY
子句中的查询符合 SQL 标准,结果集具有确定性。虽然禁用该模式可以允许一些更灵活的查询,但可能导致数据不一致和隐含的错误。因此,建议在需要时慎重考虑是否禁用 ONLY_FULL_GROUP_BY
模式。
The text was updated successfully, but these errors were encountered: