SQL基礎(chǔ)教程(第二版)
1 數(shù)據(jù)庫和SQL
1.1 數(shù)據(jù)庫管理系統(tǒng) DBMS**
層次數(shù)據(jù)庫 HDB
關(guān)系數(shù)據(jù)庫 RDB
RDBMS
- Oracle
- SQL server
- DB2
- PostgreSQL
- MySQL
面向?qū)ο髷?shù)據(jù)庫 OODB
XML數(shù)據(jù)庫 XMLDB
鍵值存儲系統(tǒng) KVS
1.2 數(shù)據(jù)庫的結(jié)構(gòu)
客戶端 ——SQL語句——> 服務(wù)器 RDBMS <————> 數(shù)據(jù)庫(數(shù)據(jù)保存到硬盤等設(shè)備上)
<——請求的數(shù)據(jù)——
1.3 SQL語句及種類
- DDL 數(shù)據(jù)庫定義語言
CREATE
DROP :刪除表
ALTER :添加或刪除列( 按列)
- DML 數(shù)據(jù)庫操縱語言
SELECT
INSERT :插入記錄(按行)
UPDATE :修改數(shù)據(jù)記錄
DELETE :刪除記錄月帝,表保存
- DCL 數(shù)據(jù)庫控制語言
COMMIT :確認(rèn)數(shù)據(jù)庫變更
ROLLBACK :取消變更
GRANT :賦予用戶操作權(quán)限
REVOKE :取消用戶操作權(quán)限
1.4 數(shù)據(jù)類型指定及約束
數(shù)字型 INTEGER / NUMERIC(n)
字符型 定長CHAR / VARCHAR可變長
日期型
NOT NULL 和 PRIMARY KEY
2 基礎(chǔ)查詢
2.1 SELECT
中文別名使用雙引號括起來;
distinct
去重幽污;
where
條件選擇嚷辅;
注釋 :單行__ 多行"/" 和"/" 括起來;
2.2 算術(shù)運算符和比較運算符
+ - * / // %
所有包含NULL的計算都為NULL
> < = <> >= <=
字符串比較從第一個字符開始
不能對NULL使用比較運算符距误, 否則為空
2.3 邏輯運算符
NOT AND OR
AND的優(yōu)先級高于OR
SQL的邏輯運算被稱為三值邏輯:真簸搞、假、不確定
3 聚合排序
3.1 聚合函數(shù)
COUNT 單列不計算NULL
AVG
SUM
MAX 日期也可以最大最小值計算
MIN
聚合函數(shù)會將NULL排除在外准潭,但COUNT除外
3.2 分組 group by
為聚合結(jié)果指定條件使用HAVING
而不是WHERE
, HAVING
在group by
之后
3.3 排序 order by
指定多個排序 order by col_a asc, col_b desc
NULL會匯集在開頭或者結(jié)尾
3.5 書寫和執(zhí)行順序
書寫順序
SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY
執(zhí)行順序
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
4 事務(wù)
數(shù)據(jù)的更新趁俊、插入、刪除(MySQL)
START TRANSACTION;
?
DML(INSERT / DELET / UPDATE)
INSERT INTO table_name VALUES (..., [DEFAULT], ...);
...
?
DELET FROM table_name;
?
UPDATE table_name
SET ...
[WHERE ...];
?
COMMIT/ROLLBACK;
插入默認(rèn)值用 DEFAULT value
來約束
DBMS的事務(wù)的四種特性:原子性刑然、統(tǒng)一性则酝、隔離性、持久性闰集。(ACID特性)
5 復(fù)雜查詢
- 視圖
創(chuàng)建視圖 CREATE VIEW
視圖包含 ”不能使用ORDER BY“ 和 ”可對其進行有限制的更新“兩項限制
刪除視圖 DROP VIEW
- 子查詢
標(biāo)量子查詢
- 關(guān)聯(lián)子查詢
WHERE
關(guān)聯(lián)沽讹,結(jié)合條件寫在子查詢中
6 函數(shù)、謂詞和case表達式
6.1 函數(shù)
- 算數(shù)函數(shù)
ABS
ROUND(COL, N)
MOD
- 字符串函數(shù)
LENGTH
CONCAT(str1, str2) ||
REPLACE(str, target, value)
SUBSTRING(str FROM pos FOR len)
LOWER/ UPPER
- 日期函數(shù)
EXTRACT(YEAR/MON/DAY/HOUR/MINUTE/SECOND FROM date)
- 轉(zhuǎn)換函數(shù)
CAST(col AS 類型) # 類型轉(zhuǎn)換
COALESCE(NULL, value)
- 聚合函數(shù)
6.2 謂詞
LIKE (% _)
BETWEEN
IN / NOT IN (無法選出NULL數(shù)據(jù)武鲁, IN包含NULL為空)
IS NULL / IS NOT NULL
EXISTS
6.3 CASE
CASE
WHEN ... THEN ...
ELSE ...
END
7 集合運算
7.1 表加減法
UNION
UNION ALL
EXCEPT
7.2 表聯(lián)結(jié)
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL JOIN
CROSS JOIN
8 SQL高級處理——窗口函數(shù)
窗口函數(shù)
rank 排名相同時跳躍排名爽雄,如1, 1, 3, 4, 5, 5, 7
row_number 按行數(shù)順序排名,如1, 2, 3, 4, 5
dense_rank 排名相同時不跳躍排名沐鼠,如1, 2, 2, 3, 3, 4, 4, 5
窗口函數(shù)語法
<窗口函數(shù)> OVER ([PARTITION BY col_1] ORDER BY col_2 )
SQL書籍分享
鏈接: https://pan.baidu.com/s/1BfvkSeBoQXTOyW4zM5No-Q 提取碼: vd8g