mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-27 05:23:46 +00:00
Update SQL.md
按 MySQL 8.0 更新 GROUP BY 排序、触发器中 CALL 的使用和修改密码的语法(Password() 已在 8.0 中移除);文字校对。
This commit is contained in:
+7
-7
@@ -365,7 +365,7 @@ mysql> SELECT NOW();
|
||||
|
||||
可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。
|
||||
|
||||
指定的分组字段除了能按该字段进行分组,也会自动按该字段进行排序。
|
||||
MySQL 5.7 及之前的版本在一定条件下会自动按分组字段排序,MySQL 8.0 不再隐式排序,需要排序时应当使用 ORDER BY。
|
||||
|
||||
```sql
|
||||
SELECT col, COUNT(*) AS num
|
||||
@@ -373,7 +373,7 @@ FROM mytable
|
||||
GROUP BY col;
|
||||
```
|
||||
|
||||
GROUP BY 自动按分组字段进行排序,ORDER BY 也可以按汇总字段来进行排序。
|
||||
ORDER BY 也可以按汇总字段来进行排序。
|
||||
|
||||
```sql
|
||||
SELECT col, COUNT(*) AS num
|
||||
@@ -403,7 +403,7 @@ HAVING num >= 2;
|
||||
|
||||
子查询中只能返回一个字段的数据。
|
||||
|
||||
可以将子查询的结果作为 WHRER 语句的过滤条件:
|
||||
可以将子查询的结果作为 WHERE 语句的过滤条件:
|
||||
|
||||
```sql
|
||||
SELECT *
|
||||
@@ -658,7 +658,7 @@ DELETE 触发器包含一个名为 OLD 的虚拟表,并且是只读的。
|
||||
|
||||
UPDATE 触发器包含一个名为 NEW 和一个名为 OLD 的虚拟表,其中 NEW 是可以被修改的,而 OLD 是只读的。
|
||||
|
||||
MySQL 不允许在触发器中使用 CALL 语句,也就是不能调用存储过程。
|
||||
MySQL 的触发器可以使用 CALL 语句调用存储过程,但是该存储过程不能向客户端返回数据,也不能使用动态 SQL。
|
||||
|
||||
# 二十一、事务管理
|
||||
|
||||
@@ -770,12 +770,12 @@ REVOKE SELECT, INSERT ON mydatabase.* FROM myuser;
|
||||
|
||||
**更改密码**
|
||||
|
||||
必须使用 Password() 函数进行加密。
|
||||
MySQL 8.0 移除了 Password() 函数,直接指定新密码即可。
|
||||
|
||||
```sql
|
||||
SET PASSWROD FOR myuser = Password('new_password');
|
||||
SET PASSWORD FOR myuser = 'new_password';
|
||||
```
|
||||
|
||||
# 参考资料
|
||||
|
||||
- BenForta. SQL 必知必会 [M]. 人民邮电出版社, 2013.
|
||||
- Ben Forta. SQL 必知必会 [M]. 人民邮电出版社, 2013.
|
||||
|
||||
Reference in New Issue
Block a user