auto commit

This commit is contained in:
CyC2018 2018-03-04 22:38:19 +08:00
parent d60cecc076
commit 2722ea0f54

View File

@ -35,16 +35,16 @@
# 基础
模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。
模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。
主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。
SQLStructured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
# 查询
SQLStructured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。
# 查询
**DISTINCT**
相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。
@ -58,7 +58,7 @@ FROM mytable;
限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。
返回前 5 行的 SQL
返回前 5 行:
```sql
SELECT *
@ -85,17 +85,17 @@ LIMIT 2, 3;
```sql
# 注释
SELECT *
FROM mytable -- 注释
FROM mytable; -- 注释
/* 注释1
注释2 */
```
# 排序
**ASC**:升序(默认)
**DESC**:降序
- **ASC**:升序(默认)
- **DESC**:降序
可以按多个列进行排序:
可以按多个列进行排序,并且为每个列指定不同的排序方式
```sql
SELECT *
@ -105,7 +105,7 @@ ORDER BY col1 DESC, col2 ASC;
# 过滤
在应用层也可以过滤数据,但是在服务器端进行过滤的数据非常大,导致通过网络传输了很多多余的数据,从而浪费了网络带宽。
不进行过滤的数据非常大,导致通过网络传输了很多多余的数据,从而浪费了网络带宽。因此尽量使用 SQL 语句来过滤不必要的数据,而不是传输所有的数据到客户端中然后由客户端进行过滤。
```sql
SELECT *
@ -134,22 +134,21 @@ WHERE col IS NULL;
# 通配符
通配符也是用在过滤语句中,只能用于文本字段。
通配符也是用在过滤语句中,但它只能用于文本字段。
- **%** 匹配 >=0 个任意字符,类似于 \*
- **\_** 匹配 ==1 个任意字符,类似于 \.
- **[ ]** 可以匹配集合内的字符,用脱字符 ^ 可以对其进行否定
- **[ ]** 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。
使用 Like 来进行通配符匹配。
```sql
SELECT *
FROM mytable
WHERE col LIKE '[^AB]%' -- 不以AB开头的任意文本
WHERE col LIKE '[^AB]%' -- 不以 AB 开头的任意文本
```
不要滥用通配符,通配符位于开头处匹配会非常慢。
# 计算字段