模式的定義與刪除
模式的定義
CREATE SCHEMA <模式名> AUTHORZATION <用戶名> [<表定義字句>|<視圖定義字句>|<授權定義字句>];
如果沒有指定模式名,那麼模式名隱含爲用戶名。
模式的刪除
DROP SCHEMA <模式名><CASCADE|DESTRICT>
CASCADE(級聯) 和 DESTRICT(限制) 兩者比選其一
基本表的定義、刪除與修改
定義基本表
CREATE TABLE <表名>(<列名><數據類型>[列級完整性約束條件]
[,<列名><數據類型>[列級完整性約束條件]]
....
[,[表列級完整性約束條件]);
- 主碼由一個屬性構成,可將 PRIMARY KEY 作爲列級完成性約束條件
- 主碼由多個屬性構成,PRIMARY KEY(<列名 1>[,<列名 2>…]) 必須作爲表級完整性約束條件
- 定義外碼:FOREIGN KEY (外碼名) REFERENCES <被參照表名>(被參照列名);
修改基本表
ALTER TABLE <表名>
[ADD [COLUMN] <新列名><數據類型> [完整性約束]]
[ADD <表級完整性約束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]
[DROP CONSTRAINT<完整性約束名> [RESTRICT|CASCADE]]
[ALTER COLUMN <列名><數據類型>];
刪除基本表
DROP TABLE <表名> [RESTRICT|CASCADE];
索引的建立與刪除
建立索引
CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名> [<次序>][,<列名>[<次序>]]...);
在SQL Server中使用CLUSTERED而不是CLUSTER。
次序1
修改索引
ALTER INDEX <舊索引名> RENAME TO <新索引名>;
刪除索引
DROP INDEX <索引名>;
數據查詢
SELECT [ALL|DISTINCT] <目標列表達式> [,<目標列表達式>....]
FROM <表名或試圖名> [,<表名或試圖名>...] | ( <SELECT語句> ) [AS] <別名>
[WHERE<條件表達式>]
[GROUP BY <列名 1> [HAVING<條件表達式>]]
[ORDER BY <列名 2> [ASC|DESC]];
- 取消重複行:使用關鍵字 DISTINCT, 沒有指定關鍵字則默認爲ALL
- 目標列表達式,即查詢結果以經過表達式運算後的結果顯示
- WHERE字句中不能使用聚集函數作爲條件表達式
- 外連接`SELECT <目標列表達式> FROM <表名> [LEFT|RIGHT] OUTER JOIN <連接表名> ON (連接條件)
- 嵌套查詢中,子查詢的SELECT語句中不能使用 ORDER BY 子句,即 OERDER BY 子句只能對最終查詢結果排序
- 嵌套查詢中可使用IN, ANY(或SOME), ALL, EXISTS(代表量詞:存在),使用存在量詞EXISTS後,若內層查詢結果非空,則外層的 WHERE 子句true,否則返回 false。
- 集合查詢主要使用並操作 UNION,交操作 INTERSECT 和差操作 EXCEPT。
數據更新
插入元組
INSERT INTO <表名> [(<屬性列 1>[,<屬性列 2>]....)]
VALUES (<常量 1>[,<常量 2>]....);
- 如果INTO子句中沒有指明任何屬性列名,則新插入的元組並需在每個屬性列上均有值。
插入子查詢結果
INSERT INTO <表名> [(<屬性列 1>[,<屬性列 2>....])]
子查詢;
修改數據
UPDATE <表名>
SET <列名>=<表達式>[,<列名>=<表達式>]....
[WHERE<條件>];
刪除數據
DELETE
FROM <表名>
[WHERE <條件>];
視圖
建立視圖
CREATE VIEW <視圖名> [(<列名>[,<列名>] ....]
AS <子查詢>
[WITH CHECK OPTION];
刪除視圖
DROP VIEW <視圖名> [CASCADE];
查詢視圖
同基本表的查詢操作相同。
更新視圖
由於視圖是不實際存儲數據的虛表,因此對視圖的更新最終要轉換爲對基本表的跟新。但並不是所有的視圖都是可更新的,因爲有些視圖的更新不能唯一地有意義地轉換成對相應基本表的更新。
常用的查詢條件表
查詢條件 | 謂詞 |
---|---|
比較 | =,>,<,>=,<=,!=,<>,!>,!<; NOT+上述比較運算符 |
確定範圍 | BETWEEN AND, NOT WETWEEN AND |
確定集合 | IN, NOT IN |
字符匹配 | LIKE, NOT LIKE |
空值 | IS NULL, IS NOT NULL |
多重條件(邏輯運算) | AND, OR, NOT |
LIKE '<匹配串>' [ESCAPE '<換碼字符>']
- %(百分號) 代表任意長度的字符串
- _(下劃線) 代表任意單個字符
聚集函數表
函數名 | 功能 |
---|---|
COUNT(*) | 統計元組個數 |
COUNT([DISTINCT | ALL) <列名> | 統計一列中值的個數 |
SUM([DISTINCT | ALL) <列名> | 計算一列值的總和(此列必須是數值型) |
AVG([DISTINCT | ALL) <列名> | 計算一列值的平均值(此列必須是數值型) |
MAX([DISTINCT | ALL) <列名> | 求一列值中的最大值 |
MIN([DISTINCT | ALL) <列名> | 求一列值中的最小值 |
數據類型表
數據類型 | 含義 |
---|---|
CHAR(n),CHARACTER(n) | 長度爲n的定長字符串 |
VARCHAR(n),CHARACTERARYING(n) | 最大長度爲n的變長字符串 |
CLOB | 字符串大對象 |
BLOB | 二進制大對象 |
INT,INTEGER | 長整數(4字節) |
SMALLINT | 短整數(2字節) |
BIGINT | 大整數(8字節) |
NUMERGIC(p,d) | 定點數,由p位數字(不包括符號、小數點)組成,小數點後面有d位數字 |
DECIMAL(p,d),DEC(p,d) | 同NUMERGIC |
REAL | 取決於機器精度的單精度浮點數 |
DOUBLE PRECISION | 取決於機器精度的雙精度浮點數 |
FLOAT(n) | 可選精度的浮點數,精度至少爲n位數字 |
BOOLEAN | 邏輯布爾量 |
DATE | 日期,包含年、月、日,格式爲YYYY-MM-DD |
TIME | 時間,包含一日的時、分、秒,格式爲HH:MM:SS |
TIMESTAMP | 時間戳類型 |
INTERVAL | 時間間隔類型 |
- 次序可選 ASC(升序)或DESC(降序),默認值爲ASC ↩