1. 數據定義語句 - 模式 · 創建: CREATE SCHEMA · 刪除: DROP SCHEMA - 表 · 創建: CREATE TABLE · 刪除: DROP TABLE · 修改: ALTER TABLE - 視圖 · 創建: CREATE VIEW · 刪除: DROP VIEW ...
1. 數據定義語句
- 模式
· 創建: CREATE SCHEMA
· 刪除: DROP SCHEMA
- 表
· 創建: CREATE TABLE
· 刪除: DROP TABLE
· 修改: ALTER TABLE
- 視圖
· 創建: CREATE VIEW
· 刪除: DROP VIEW
- 索引
· 索引: CREATE INDEX
· 刪除: DROP INDEX
· 修改: ALTER INDEX
2.模式的定義與刪除
- 模式定義: CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>; //為用戶定義一個XX模式
- 在創建模式時,創建基本表、視圖,定義授權
CREATE SCHEMA <模式名> AUTHORIZATION <用戶名> [<表定義子句>|<視圖定義子句>|<授權定義子句>]
- 刪除模式: DROP SCHEMA <模式名> <CASECADE|RESTRICT>;
· <CASECADE|RESTRICT> 二者必選其一
CASECADE:級聯 刪除模式時,把該模式中的所有資料庫對象全部刪除
RESTRICT:限制 如果該模式已定義下屬的資料庫對象則拒絕刪除
3.基本表的定義、刪除、修改
- 定義:CREATE TABLE <表名> (<列名> <數據類型> [列級完整性約束條件]
[,<列名> <數據類型> [列級完整性約束條件] ]
... [,<表級完整性約束條件>]);
- 修改基本表 ALTER TABLE <表名> [ADD [COLUMN] <新列名> <數據類型> [完整性約束]]
[ADD <表級完整性約束>]
[DROP [COLUMN] <列名> [CASECADE|RESTRICT] ]
[DROP CONSTRAINT <完整性約束名> [CASECADE|RESTRICT] ]
[ALTER COLUMN <列名> <數據類型> ] ;
· 刪除時使用 STRICT 如果該列被其他對象引用 則拒絕刪除該列
· DROP CONSTRAINT 子句用於刪除指定的完整性約束條件
· ALTER COLUMN 修改原有的列定義
- 刪除基本表 DROP TABLE <表名> [CASECADE|RESTRICT];
4.索引的建立、修改
- 建立索引 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名> [次序] [,<列名> [次序]]...);
- 修改索引 ALTER INDEX <就索引名> RENAME TO <新索引名>
- 刪除索引名 DROP INDEX <索引名>;
5. 數據查詢
- 一般格式 SELECT [ALL | DISTINCT] <目標列表達式> [,<目標列表達式>] ...
FROM <表名或視圖名> [,<表名或者視圖名>...] | (<SELECT語句>) [AS] <別名>
[WHERE <條件表達式>]
[GROUP BY <列名 1> [HAVING <條件表達式>]]
[ORDER BY <列名 2> [ASC|DESC]]
· DISTINCT 去掉重覆元素
· ORDER BY 排序:ASC 升序、 DESC 降序
· GROUP BY 將查詢結果按一列或者多列的值分組,值相等的為一組
6. 常用查詢條件
- 確定範圍: BETWEEN AND, NOT BETWEEN AND
- 確定集合: IN, NOT IN
- 字元匹配: LIKE, NOT LIKE
· 通配符 % _
% : 任意長度的字元串 例如:a%b 以a開頭b結尾
_ : 任意字元串
- 空值: IS NULL, IS NOT NULL
- 邏輯運算: AND, OR, NOT
7. 聚集函數
- 統計元組個數 COUNT(*)
- 統計列中值個數 COUNT([DISTINCT|ALL] <列名>)
- 統計列值總和 SUM([DISTINCT|ALL] <列名>)
- 平均值 AVG([DISTINCT|ALL] <列名>)
- 最大值 MAX([DISTINCT|ALL] <列名>)
- 最小值 MIN([DISTINCT|ALL] <列名>)
8. 查詢例子
- 查詢名字中第二個字為陽的學生的名字和學號
SELECT Sname,Sno FROM Student WHERE Sname LIKE '_陽%'
- 查詢電腦科學系年齡在20歲以下的學生姓名
SELECT Sname FROM Student WHERE Sdept='CS' AND Sage<20;
- 查詢一號課程學生平均成績
SELECT AVG(Grade) FROM CS WHERE Cno='1';
- 查詢平均成績大於等於90分的學生學號和平均成績
SELECT Sno,AVE(Grade) FROM CS GROUP BY Sno HAVING AVG(Grade)>=90;