auto commit
This commit is contained in:
parent
1d90836268
commit
48eb74263d
35
notes/SQL.md
35
notes/SQL.md
@ -196,7 +196,7 @@ WHERE col IS NULL;
|
|||||||
|
|
||||||
应该注意到,NULL 与 0 、空字符串都不同。
|
应该注意到,NULL 与 0 、空字符串都不同。
|
||||||
|
|
||||||
**AND OR** 用于连接多个过滤条件。优先处理 AND,因此当一个过滤表达式涉及到多个 AND 和 OR 时,应当使用 () 来决定优先级。
|
**AND OR** 用于连接多个过滤条件,优先处理 AND,当一个过滤表达式涉及到多个 AND 和 OR 时,可以使用 () 来决定优先级,使得优先级关系更清晰。
|
||||||
|
|
||||||
**IN** 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。
|
**IN** 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。
|
||||||
|
|
||||||
@ -246,14 +246,14 @@ FROM mytable
|
|||||||
## 文本处理
|
## 文本处理
|
||||||
|
|
||||||
| 函数 | 说明 |
|
| 函数 | 说明 |
|
||||||
| ------------ | ------------ |
|
| :---: | :---: |
|
||||||
| LEFT() RIGHT() | 左边或者右边的字符 |
|
| LEFT() RIGHT() | 左边或者右边的字符 |
|
||||||
| LOWER() UPPER() | 转换为小写或者大写 |
|
| LOWER() UPPER() | 转换为小写或者大写 |
|
||||||
| LTRIM() RTIM() | 去除左边或者右边的空格 |
|
| LTRIM() RTIM() | 去除左边或者右边的空格 |
|
||||||
| LENGTH() | 长度 |
|
| LENGTH() | 长度 |
|
||||||
| SOUNDEX() | 转换为语音值 |
|
| SOUNDEX() | 转换为语音值 |
|
||||||
|
|
||||||
其中, **SOUNDEX()** 是将一个字符串转换为描述其语音表示的字母数字模式的算法,它是根据发音而不是字母比较。
|
其中, **SOUNDEX()** 可以将一个字符串转换为描述其语音表示的字母数字模式。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT *
|
SELECT *
|
||||||
@ -267,7 +267,7 @@ WHERE SOUNDEX(col1) = SOUNDEX('apple')
|
|||||||
- 时间格式:HH:MM:SS
|
- 时间格式:HH:MM:SS
|
||||||
|
|
||||||
|函 数 | 说 明|
|
|函 数 | 说 明|
|
||||||
| --- | --- |
|
| :---: | :---: |
|
||||||
| AddDate() | 增加一个日期(天、周等)|
|
| AddDate() | 增加一个日期(天、周等)|
|
||||||
| AddTime() | 增加一个时间(时、分等)|
|
| AddTime() | 增加一个时间(时、分等)|
|
||||||
| CurDate() | 返回当前日期 |
|
| CurDate() | 返回当前日期 |
|
||||||
@ -288,13 +288,16 @@ WHERE SOUNDEX(col1) = SOUNDEX('apple')
|
|||||||
|
|
||||||
```sql
|
```sql
|
||||||
mysql> SELECT NOW();
|
mysql> SELECT NOW();
|
||||||
-> '2017-06-28 14:01:52'
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
2018-4-14 20:25:11
|
||||||
```
|
```
|
||||||
|
|
||||||
## 数值处理
|
## 数值处理
|
||||||
|
|
||||||
| 函数 | 说明 |
|
| 函数 | 说明 |
|
||||||
| --- | --- |
|
| :---: | :---: |
|
||||||
| SIN() | 正弦 |
|
| SIN() | 正弦 |
|
||||||
| COS() | 余弦 |
|
| COS() | 余弦 |
|
||||||
| TAN() | 正切 |
|
| TAN() | 正切 |
|
||||||
@ -308,7 +311,7 @@ mysql> SELECT NOW();
|
|||||||
## 汇总
|
## 汇总
|
||||||
|
|
||||||
|函 数 |说 明|
|
|函 数 |说 明|
|
||||||
| --- | --- |
|
| :---: | :---: |
|
||||||
| AVG() | 返回某列的平均值 |
|
| AVG() | 返回某列的平均值 |
|
||||||
| COUNT() | 返回某列的行数 |
|
| COUNT() | 返回某列的行数 |
|
||||||
| MAX() | 返回某列的最大值 |
|
| MAX() | 返回某列的最大值 |
|
||||||
@ -330,7 +333,7 @@ FROM mytable
|
|||||||
|
|
||||||
可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。
|
可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。
|
||||||
|
|
||||||
指定的分组字段除了能按该字段进行分组,也可以按该字段进行排序,例如按 col 字段排序并分组数据:
|
指定的分组字段除了能按该字段进行分组,也会自动按按该字段进行排序。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT col, COUNT(*) AS num
|
SELECT col, COUNT(*) AS num
|
||||||
@ -338,7 +341,7 @@ FROM mytable
|
|||||||
GROUP BY col;
|
GROUP BY col;
|
||||||
```
|
```
|
||||||
|
|
||||||
GROUP BY 是按照分组字段进行排序,ORDER BY 也可以以汇总字段来进行排序。
|
GROUP BY 按分组字段进行排序,ORDER BY 也可以以汇总字段来进行排序。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT col, COUNT(*) AS num
|
SELECT col, COUNT(*) AS num
|
||||||
@ -347,14 +350,14 @@ GROUP BY col
|
|||||||
ORDER BY num;
|
ORDER BY num;
|
||||||
```
|
```
|
||||||
|
|
||||||
WHERE 过滤行,HAVING 过滤分组。行过滤应当先于分组过滤;
|
WHERE 过滤行,HAVING 过滤分组,行过滤应当先于分组过滤。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT col, COUNT(*) AS num
|
SELECT col, COUNT(*) AS num
|
||||||
FROM mytable
|
FROM mytable
|
||||||
WHERE col > 2
|
WHERE col > 2
|
||||||
GROUP BY col
|
GROUP BY col
|
||||||
HAVING COUNT(*) >= 2;
|
HAVING num >= 2;
|
||||||
```
|
```
|
||||||
|
|
||||||
分组规定:
|
分组规定:
|
||||||
@ -436,10 +439,10 @@ where department = (
|
|||||||
自连接版本
|
自连接版本
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select e2.name
|
select e1.name
|
||||||
from employee as e1, employee as e2
|
from employee as e1, employee as e2
|
||||||
where e1.department = e2.department
|
where e1.department = e2.department
|
||||||
and e1.name = "Jim";
|
and e2.name = "Jim";
|
||||||
```
|
```
|
||||||
|
|
||||||
连接一般比子查询的效率高。
|
连接一般比子查询的效率高。
|
||||||
@ -479,9 +482,9 @@ group by Customers.cust_id;
|
|||||||
|
|
||||||
# 十六、组合查询
|
# 十六、组合查询
|
||||||
|
|
||||||
使用 **UNION** 来组合两个查询,如果第一个查询返回 M 行,第二个查询返回 N 行,那么组合查询的结果为 M+N 行。
|
使用 **UNION** 来组合两个查询,如果第一个查询返回 M 行,第二个查询返回 N 行,那么组合查询的结果一般为 M+N 行。
|
||||||
|
|
||||||
每个查询必须包含相同的列、表达式或者聚集函数。
|
每个查询必须包含相同的列、表达式和聚集函数。
|
||||||
|
|
||||||
默认会去除相同行,如果需要保留相同行,使用 UNION ALL。
|
默认会去除相同行,如果需要保留相同行,使用 UNION ALL。
|
||||||
|
|
||||||
@ -622,7 +625,7 @@ MySQL 不允许在触发器中使用 CALL 语句 ,也就是不能调用存储
|
|||||||
|
|
||||||
不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CREATE 和 DROP 语句。
|
不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CREATE 和 DROP 语句。
|
||||||
|
|
||||||
MySQL 的事务提交默认是隐式提交,也就是每执行一条语句就把这条语句当成一个事务然后进行提交。当出现 START TRANSACTION 语句时,会关闭隐式提交;当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,重新恢复隐式提交。
|
MySQL 的事务提交默认是隐式提交,每执行一条语句就把这条语句当成一个事务然后进行提交。当出现 START TRANSACTION 语句时,会关闭隐式提交;当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,重新恢复隐式提交。
|
||||||
|
|
||||||
通过设置 autocommit 为 0 可以取消自动提交,直到 autocommit 被设置为 1 才会提交;autocommit 标记是针对每个连接而不是针对服务器的。
|
通过设置 autocommit 为 0 可以取消自动提交,直到 autocommit 被设置为 1 才会提交;autocommit 标记是针对每个连接而不是针对服务器的。
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user