35
35
36
36
# 基础
37
37
38
- 模式:定义了数据如何存储 、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。
38
+ 模式定义了数据如何存储 、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。
39
39
40
40
主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。
41
41
42
- SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL,各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
43
-
44
- # 查询
42
+ SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
45
43
46
44
SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。
47
45
46
+ # 查询
47
+
48
48
** DISTINCT**
49
49
50
50
相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。
@@ -58,7 +58,7 @@ FROM mytable;
58
58
59
59
限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。
60
60
61
- 返回前 5 行的 SQL :
61
+ 返回前 5 行 :
62
62
63
63
``` sql
64
64
SELECT *
@@ -85,17 +85,17 @@ LIMIT 2, 3;
85
85
``` sql
86
86
# 注释
87
87
SELECT *
88
- FROM mytable -- 注释
88
+ FROM mytable; -- 注释
89
89
/* 注释1
90
90
注释2 */
91
91
```
92
92
93
93
# 排序
94
94
95
- ** ASC** :升序(默认)
96
- ** DESC** :降序
95
+ - ** ASC** :升序(默认)
96
+ - ** DESC** :降序
97
97
98
- 可以按多个列进行排序:
98
+ 可以按多个列进行排序,并且为每个列指定不同的排序方式 :
99
99
100
100
``` sql
101
101
SELECT *
@@ -105,7 +105,7 @@ ORDER BY col1 DESC, col2 ASC;
105
105
106
106
# 过滤
107
107
108
- 在应用层也可以过滤数据,但是不在服务器端进行过滤的数据非常大, 导致通过网络传输了很多多余的数据,从而浪费了网络带宽。
108
+ 不进行过滤的数据非常大, 导致通过网络传输了很多多余的数据,从而浪费了网络带宽。因此尽量使用 SQL 语句来过滤不必要的数据,而不是传输所有的数据到客户端中然后由客户端进行过滤 。
109
109
110
110
``` sql
111
111
SELECT *
@@ -134,22 +134,21 @@ WHERE col IS NULL;
134
134
135
135
# 通配符
136
136
137
- 通配符也是用在过滤语句中,只能用于文本字段 。
137
+ 通配符也是用在过滤语句中,但它只能用于文本字段 。
138
138
139
139
- ** %** 匹配 >=0 个任意字符,类似于 \* ;
140
140
141
141
- ** \_ ** 匹配 ==1 个任意字符,类似于 \. ;
142
142
143
- - ** [ ] ** 可以匹配集合内的字符,用脱字符 ^ 可以对其进行否定
143
+ - ** [ ] ** 可以匹配集合内的字符,例如 [ ab ] 将匹配字符 a 或者 b。 用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。
144
144
145
145
使用 Like 来进行通配符匹配。
146
146
147
147
``` sql
148
148
SELECT *
149
149
FROM mytable
150
- WHERE col LIKE ' [^AB]%' -- 不以AB开头的任意文本
150
+ WHERE col LIKE ' [^AB]%' -- 不以 A 和 B 开头的任意文本
151
151
```
152
-
153
152
不要滥用通配符,通配符位于开头处匹配会非常慢。
1
3FE0
54
153
155
154
# 计算字段
0 commit comments