第三章 關係資料庫標準語言SQL
1:SQL的特點
可以獨立完成資料庫生命週期中的全部活動:
①:定義和修改、刪除關係模式,定義和刪除檢視,插入資料,建立資料庫
②:對資料庫中的資料進行查詢和更新
③:資料庫重構和維護
④:資料庫安全性、完整性控制,以及事務控制
2:SQL的動詞
SQL 功 能 |
動詞 |
數 據 查 詢 |
SELECT |
數 據 定 義 |
CREATE,DROP,ALTER |
數 據 操 縱 |
INSERT,UPDATE,DELETE |
數 據 控 制 |
GRANT,REVOKE |
3:學生-課程模式 S-T :
學生表:Student(Sno,Sname,Ssex,Sage,Sdept)
課程表:Course(Cno,Cname,Cpno,Ccredit)
學生選課表:SC(Sno,Cno,Grade)
4:SQL的資料定義功能:
模式定義 表定義 檢視和索引的定義
5: SQL的資料定義語句
操 作 對 象 |
操 作 方 式 |
||
創 建 |
刪 除 |
修 改 |
|
模式 |
CREATE SCHEMA |
DROP SCHEMA |
|
表 |
CREATE TABLE |
DROP TABLE |
ALTER TABLE |
檢視 |
CREATE VIEW |
DROP VIEW |
|
索引 |
CREATE INDEX |
DROP INDEX |
ALTER INDEX |
6:定義模式
為使用者WANG定義一個學生-課程模式S-T
CREATE SCHEMA “S-T” AUTHORIZATION WANG
7:在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句
CREATE SCHEMA <模式名> AUTHORIZATION <使用者名稱>[<表定義子句>|<檢視定義子句>|<授權定義子句>]
8:刪除模式:
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
CASCADE(級聯)
刪除模式的同時把該模式中所有的資料庫物件全部刪除。
RESTRICT(限制)
如果該模式中定義了下屬的資料庫物件(如表、檢視等),則拒絕該刪除語句的執行。
僅當該模式中沒有任何下屬的物件時才能執行。
資料型別 |
含義 |
CHAR(n),CHARACTER(n) |
長度為n的定長字串 |
VARCHAR(n), CHARACTERVARYING(n) |
最大長度為n的變長字串 |
CLOB |
字串大物件 |
BLOB |
二進位制大物件 |
INT,INTEGER |
長整數(4位元組) |
SMALLINT |
短整數(2位元組) |
BIGINT |
大整數(8位元組) |
NUMERIC(p,d) |
定點數,由p位數字(不包括符號、小數點)組成,小數後面有d位數字 |
DECIMAL(p, d), DEC(p, d) |
同NUMERIC |
REAL |
取決於機器精度的單精度浮點數 |
DOUBLE PRECISION |
取決於機器精度的雙精度浮點數 |
FLOAT(n) |
可選精度的浮點數,精度至少為n位數字 |
BOOLEAN |
邏輯布林量 |
DATE |
日期,包含年、月、日,格式為YYYY-MM-DD |
TIME |
時間,包含一日的時、分、秒,格式為HH:MM:SS |
TIMESTAMP |
時間戳型別 |
INTERVAL |
時間間隔型別 |
9:修改基本表
ALTER TABLE <表名>
[ ADD[COLUMN] <新列名> <資料型別> [ 完整性約束 ] ]
[ ADD <表級完整性約束>]
[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<完整性約束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><資料型別> ]
ADD子句用於增加新列、新的列級完整性約束條件和新的表級完整性約束條件。
DROP COLUMN子句用於刪除表中的列
DROP CONSTRAINT子句用於刪除指定的完整性約束條件
ALTER COLUMN子句用於修改原有的列定義,包括修改列名和資料型別
10:刪除基本表
DROP TABLE <表名>[RESTRICT| CASCADE]
RESTRICT:刪除表是有限制的
CASCADE:刪除該表沒有限制
11:索引的建立與刪除
建立索引的目的:加快查詢速度
特點:B+樹索引具有動態平衡的優點
HASH索引具有查詢速度快的特點
12:資料字典
資料字典是關係資料庫管理系統內部的一組系統表,它記錄了資料庫中所有定義資訊:關係模式定義 檢視定義 索引定義 完整性約束定義 各類使用者對資料庫的操作許可權 統計資訊等
13:語句格式
SELECT [ALL|DISTINCT] <目標列表達式>[,<目標列表達式>] …
FROM <表名或檢視名>[,<表名或檢視名> ]…|(SELECT 語句)
[AS]<別名>
[ WHERE <條件表示式> ]
[ GROUP BY <列名1> [ HAVING <條件表示式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ]
14:SELECT子句:指定要顯示的屬性列
FROM子句:指定查詢物件(基本表或檢視)
WHERE子句:指定查詢條件
GROUP BY子句:對查詢結果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用聚集函式。
HAVING短語:只有滿足指定條件的組才予以輸出
ORDER BY子句:對查詢結果表按指定列值的升序或降序排序