SQL語句整理(二) 數據定義語言DDL
前言:
這是我學數據庫時整理的學習資料,基本上包括了所以的SQL語句的知識點。
我的教材是人大王珊老師的《數據庫系統概論》。
因為是手打的,所以會用一些細節打錯了,但都挺明顯也不多(考完試後我也沒有心情繼續整理了)。
希望能對大家有幫助。
1. 模式 SCHEMA
CREATE SCEMA <模式名> AUTHORIZATION <用戶名>;
eg:
CREATE SCEMA"S-T" AUTHORIZATION WANG;
Note:
用戶可以在定義模式的同時創建基本表、視圖,定義授權:
CREATE SCHEMA<模式名> AUTHORIZATION <用戶名> [<表定義子句>|
<視圖定義子句>|<授權定義子句>];
eg:
CREATE SCHEMA TEST AUTHORIZATION ZHANG
CREATE TABLE TAB1
( COL1 SMALLINT,
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);
DROP SCHEMA <模式名> <CASCADE|RESTRICT>;
eg:
DROP SCHEMA ZHANG CASCADE;
Note:
CASCADE --> 級聯 --> 連帶將模式中的數據庫對象都刪除
RESTRICT -> 限制 --> 有下屬數據庫對象時,不刪除
2. 表 TABLE
CREATE TABLE <表名> (<列名> <數據類型> [列級完整性約束條件]
[,<列名> <數據類型> [列級完整性約束條件]
...
[,<表級約束條件
eg:
CREATE TABLE Course
( Cno CHAR(4) PRIMARY KEY,
Cname CHAR(20) UNIQUE,
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY (Cpn) REFERENCES Course(Cno)
);
Note:
1.PRIMARY KEY (Sno,Cno)
2.UNIQUE(Cname)
3.“主碼”同時也可以是“外碼”
4.“數據類型”見 P83
5.定義“表”所屬“模式”:
顯示給出模式名:
CREATE TABLE "S-T".Student(...);
顯示當前搜索路徑:
SHOW searched_path;
默認值:$user,PUBLIC
數據庫管理員設置搜索路徑:
SET searched_path TO "S-T",PUBLIC;
DROP TABLE <表名> <CASCADE|RESTRICT>;
Note:
1.CASCADE --> 級聯 --> 連帶將模式中的數據庫對象都刪除
RESTRICT -> 限制 --> 有下屬數據庫對象時,不刪除
2.默認:RESTRICT
ALTER TABLE <表名>
[ ADD [COLUMN] <新列名> <數據類型> [完整性約束] ]
[ ADD <表級完整性約束> ]
[ DROP [COLUMN] <列明> <CASCADE|RESTRICT> ]
[ DROP CONSTRAINR <完整性約束名> [RESTRICT|CASCADE] ]
[ ALTER COLUMN <列名> <數據類型> ];
Note:
DROP [COLUMN] <列名> <CASCADE|RESTRICT> 中:
CASCADE --> 自動刪除引用了該列的其它對象,如視圖
RESTRICT -> 如果該列被其它對象引用,則不刪除
3. 視圖 VIEW
CREATE VIEW <視圖名> [<列名>[,<列名>]...]
AS
<子查詢>
[ WITH CHECK OPTION ];
eg:
CREATE VIEW IS_S1(Sno,Sname,Grade)
AS
SELECT Student.Sno,Sname,Grade
FROM Student.SC
WHERE Sdept=‘IS‘
AND Student.Sno=SC.sno
AND SC.Cno=‘1‘;
Note:
1.WITH CHECK OPTION --> 對視圖進行數據操縱(UPDATE、INSERT、DELETE)
操作時要保證更新、插入、刪除的行滿足視圖定義中<子查詢>表達式
2.屬性列名要麽全指定,要麽全省略
省略時默認由<子查詢>中各個列的諸字段組成
以下3種情況必須顯示指出視圖的所有列名:
1) <子查詢>中對應的列名是聚集函數或列表達式
2) 多表連接時,選出的視圖字段在多個表中是同名字段
3) 需要在視圖中為該列啟用新的名字
DROP VIEW <視圖名> [CASCADE];
eg:
DROP VIEW IS_S1 CASCADE;
Note:
CASCADE --> 級聯 --> 將由該視圖導出的所有視圖都刪除
SQL語句整理(二) 數據定義語言DDL