- 關(guān)系數(shù)據(jù)庫,基于關(guān)系模型,使用關(guān)系(表)存儲數(shù)據(jù),同時定義了完整性約束。常見的關(guān)系數(shù)據(jù)庫系統(tǒng)包括:Oracle、MySQL/MariaDB、SQL Server、PostgreSQL 等等。
- SQL,結(jié)構(gòu)化查詢語言,訪問和操作關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言。SQL 具有聲明性,是一種面向集合的編程語言。
1、單表查詢
SELECT col1, col2 AS c2 -- 列別名 FROM t; -- 基本查詢
SELECT * FROM t; -- 查詢所有字段
SELECT col1, col2, … FROM t WHERE conditions; -- 過濾條件
SELECT col1, col2, … FROM t ORDER BY col1 ASC, col2 DESC; -- 排序
SELECT col1, col2, … FROM t ORDER BY col1 ASC, col2 DESC OFFSET m ROWS FETCH FIRST n ROWS ONLY; -- 限定數(shù)量
LIMIT n OFFSET m; -- 非標(biāo)準(zhǔn)實(shí)現(xiàn)
SELECT col1, col2, agg_fun() -- 聚合函數(shù) FROM t GROUP BY col1, col2 -- 分組匯總
HAVING conditions; -- 分組后過濾
2、多表連接
SELECT t1.col1, t2.col2, … FROM t1 INNER JOIN t2 ON conditions; -- 內(nèi)連接 SELECT t1.col1, t2.col2, … FROM t1 LEFT JOIN t2 ON conditions; -- 左連接
SELECT t1.col1, t2.col2, … FROM t1 RIGHT JOIN t2 ON conditions; -- 右連接
SELECT t1.col1, t2.col2, … FROM t1 FULL JOIN t2 ON conditions; -- 全連接
SELECT t1.col1, t2.col2, … FROM t1 CROSS JOIN t2 ON conditions;-- 交叉連接
SELECT a.col1, b.col2, … FROM t1 a -- 表別名 JOIN t1 b ON conditions; -- 自連接
3、集合運(yùn)算
SELECT col1, col2, … FROM t1 UNION [ALL]
SELECT c1, c2, … FROM t2; -- 并集運(yùn)算
SELECT col1, col2, … FROM t1 INTERSECT SELECT c1, c2, … FROM t2; -- 交集運(yùn)算
SELECT col1, col2, … FROM t1 EXCEPT -- MINUS
SELECT c1, c2, … FROM t2; -- 差集運(yùn)算
4、子查詢
SELECT col1, (subquery) AS c2 -- 標(biāo)量子查詢 FROM t;
SELECT col1, col2, … -- 行子查詢 FROM t WHERE (col1, col2) = (subquery);
SELECT t1.col1, t2.c2, … FROM t1 JOIN (subquery) t2 -- 表子查詢 ON conditions;
SELECT t1.col1, t1.col2, … FROM t1 WHERE EXISTS ( -- 關(guān)聯(lián)子查詢 SELECT 1FROM t2 WHERE t2.c1 = t1.col1);
5、數(shù)據(jù)操作
INSERT INTO t(col1, col2, …) VALUES (val1, val2, …); -- 插入單條數(shù)據(jù)
INSERT INTO t(col1, col2, …) SELECT …; -- 插入查詢結(jié)果
UPDATE t SET col1 = val1, col2 = val2 WHERE conditions; -- 更新數(shù)據(jù)
DELETE FROM t WHERE conditions; -- 刪除數(shù)據(jù)
MEGRE INTO t1 USING t2 ON (condition) WHEN MATCHED THEN UPDATE SET col1 = val1, col2 = val2, ... WHEN NOT MATCHED THEN INSERT (col1, col2, ...) VALUES (val1, val2, ...); -- 合并數(shù)據(jù)
6、數(shù)據(jù)定義
CREATE TABLE t ( col1 INT NOT NULL PRIMARY KEY, col2 VARCHAR(50) NOT NULL, col3 DATE ); -- 創(chuàng)建表
CREATE TABLE t(col1, col2, …) SELECT … ; -- 基于查詢結(jié)果創(chuàng)建表
ALTER TABLE t ADD col3 INT; -- 增加字段
ALTER TABLE t RENAME COLUMN col1 TO c1;
ALTER TABLE t DROP COLUMN col1;
DROP TABLE t; -- 刪除表
TRUNCATE TABLE t; -- 刪除表中所有數(shù)據(jù)
CREATE VIEW v AS SELECT …; -- 創(chuàng)建視圖
DROP VIEW v; -- 刪除視圖
CREATE [UNIQUE] INDEX idx ON t(col1, col2); -- 創(chuàng)建索引
DROP INDEX idx; -- 刪除索引
擴(kuò)展內(nèi)容
· 查詢條件包括:=、!=、<>、<、<=、>、>=、BETWEEN、IN、EXISTS、LIKE、AND、OR、NOT、IS [NOT] NULL、ANY、ALL
· 完整性約束包括:PRIMARY KEY、NOT NULL、FOREIGN KEY、CHECK、UNIQUE、DEFAULT。
· 常見聚合函數(shù):AVG、COUNT、SUM、MIN、MAX。
|