From 2722ea0f5410a28d64573c3233f7e64bf2a1ebb5 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 4 Mar 2018 22:38:19 +0800 Subject: [PATCH] auto commit --- notes/SQL 语法.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/notes/SQL 语法.md b/notes/SQL 语法.md index 8a22acd1..b530acfe 100644 --- a/notes/SQL 语法.md +++ b/notes/SQL 语法.md @@ -35,16 +35,16 @@ # 基础 -模式:定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 +模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。 -SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL,各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。 - -# 查询 +SQL(Structured 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]%' -- 不以 A 和 B 开头的任意文本 ``` - 不要滥用通配符,通配符位于开头处匹配会非常慢。 # 计算字段