SQL(Structured Query Language),結構化查詢語言,是現行關系數據庫的標準語言,SQL不單支持數據查詢(Data Query)功能,還支持數據定義(Data Definition)、數據操縱(Data Manipulation)和數據控制(Data Control)功能。
0 關鍵詞
1 SQL基本動詞
功能 | 動詞 |
---|---|
數據定義 | CREATE, DROP, ALTER |
數據查詢 | SELECT |
數據操縱 | INSERT, UPDATE, DELETE |
數據控制 | GRANT, REVOKE |
2 數據定義
創建 | 刪除 | 修改 | |
---|---|---|---|
模式 | CREATE SCHEMA | DROP SCHEMA | - |
表 | CREATE TABLE | DROP TABLE | ALTER TABLE |
視圖 | CREATE VIEW | DROP VIEW | - |
索引 | CREATE INDEX | DROP INDEX | - |
2.1 模式
2.1.1 定義模式
CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>
注意:模式的定義需要DBA權限或者DBA授予的CREATE SCHEMA權限。
2.1.2 刪除模式
DROP SCHEMA <模式名> <CASCADE | RESTRICT>
- CASCADE:級聯。在刪除模式時,將會將該模式下的所有數據庫對象全部刪除,比如定義在該模式下的基本表、視圖等。
- RESTRICT:限制。若要刪除的模式下已經定義了數據庫對象,則對該模式的刪除操作會被系統拒絕。
2.2 基本表
2.2.1 定義基本表
CREATE TABLE <表名> ( <類名> <數據類型> [列級完整性約束條件], …)
2.2.2 修改基本表
ALETER TABLE <表名>
[ ADD <新的列名> <數據類型> [完整性約束條件]]
[ DROP <完整性約束條件名> ]
[ ALTER COLUMN <列名> <數據類型> ]
2.2.3 刪除基本表
DROP TABLE <表名> [ CASCADE | RESTRICT ]
- CASCADE:級聯。級聯刪除將刪除該基本表和依賴于該基本表的所有對象,例如視圖等。
- RESTRICT:限制。當該基本表存在被其他表的約束所引用、存在依賴于該基本表的視圖、存在觸發器、儲過程或函數等情況下,該基本表將不能被刪除。
2.3 索引
2.3.1 建立索引
CREATE [ UNIQUE ] [ CLUSTER ] INDEX <索引名> ON <表名> ( <列名> [<次序>] [,<列名>[<次序>] ]… )
- 表名:要建立索引的基本表的名字。
- 次序:ASC(升序)或者DESC(降序)默認值為ASC。
- UNIQUE:索引值只對應唯一的一條數據記錄。
- CLUSTER:聚簇索引。聚簇索引的索引項的順序與表中記錄的物理順序一致。
注意:在經常查詢的列上建立聚簇索引雖然可以提高查詢效率,但如果該索引列上的數據經常更新(增、刪、改)則會導致整個物理順序的改變,系統開銷較大。因此聚簇索引并不適合建立在經常更新(增、刪、改)的列上。
2.3.2 刪除索引
DROP INDEX <索引名>
3 數據查詢
SELECT [ALL | DISTINCT] <目標列表達式> [別名] [, <目標列表達式>][別名]…
FROM <表名> [別名] [,<表名> [別名]]…
[WHERE <條件表達式>]
[GROUP BY <列名A> [HAVING <條件表達式>]]
[ORDER BY <列名B> [ASC | DESC]]
ALL:查詢所有行,不指定默認為ALL。
DISTINCT:去除查詢列中取值重復的行,只保留一行。
FROM:FROM后加表名,用于指定所要查詢的表。
WHERE:WHERE后加條件表達式,用于指定查詢條件。
GROUP BY:有GROUP BY子句的話,將按列名A的列值進行分組。
HAVING:有 HAVING子句的話,將按HAVING后的條件表達式對查詢結果進行過濾。
ORDER BY:有ORDER BY子句的話,將對查詢結果按列名B得值進行升序(ASC)或者降序(DESC)排列。
-
目標列表達式常見格式:
*
<表名>. *
COUNT( [DISTINCT | ALL] * )
[ <表名>. ] <屬性列名表達式> [, [ <表名>. ] <屬性列名表達式> ]…
聚集函數常見格式:
< COUNT | SUM | AVG | MAX | MIN > [DISTINCT | ALL <列名> ]
-
WHERE子句條件表達式常見格式: