一、SQL概述
結構化查詢語言,是關係數據庫的標準語言
特點:綜合統一;高度非過程化(無需瞭解存取路徑);面向集合的操作方式;
以同一種語法結構提供多種使用方式(獨立、嵌入式);簡潔易學
支持關係數據庫三級模式結構,外模式處理視圖,模式處理基本表,內模式處理存儲文件
二、數據定義
模式定義:CREATE SCHEMA/DROP SCHEMA
CREATE SCHEMA <模式名> AUTHORIZATION <用戶名>若未指定模式名,則默認與用戶名同名
DROP SCHEMA<模式名><CASCADE|RESTRICT>,CASCADE級聯,表示刪除模式時同時刪除該模式下所有數據庫對象;RESTRICT限制,表示只有沒有任何下屬數據庫對象時財執行刪除
表定義:CREATE TABLE/DROP TABLE/ALTER TABLE
CREATE TABLE<表名>
(<列名><數據類型>[<列級完整性約束條件>],
…
[<表級完整性約束條件>]);
ALTER TABLE<表名>
[ADD <新列名><數據類型>[完整性約束]|[DROP <完整性約束名>|ALTER COLUMN<列名><數據類型>]
DROP TABLE <表名>[RESTRICT|CASCADE]
視圖定義:CREATE VIEW/DROP VIEW
CREATE VIEW AS SELECT語句
索引定義:CREATE INDEX/DROP INDEX加快查詢速度
CREATE [UNIQUE]|[CLUSTER] INDEX<索引名> ON <表名>(<列名>[<次序>],….)
三、數據查詢
SELECT [ALL|DISTINCT] <目標列表達式>
[,<目標列表達式>] …
FROM <表名或視圖名>[, <表名或視圖名> ] …
[ WHERE <條件表達式> ]
[ GROUP BY <列名1> [ HAVING <條件表達式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
單表查詢:
ORDER BY:ASC升序,DESC降序
聚集函數:計數COUNT([DISTINCT|ALL) *|[列名]
總和SUM();平均值AVG();最值MAX()MIN()
WHERE子句作用於基表或者視圖,HAVING短語作用於組
連接查詢:同時涉及多個表的查詢
[表名1.]<列名1> <比較運算符>[<表名2.>]<列名2>
自身連接需要給自己起別名。
外連接:以指定表爲連接主題,將主體表中不滿足連接條件的元組一併輸出,包括左外連接,右外連接
如:SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno);
嵌套查詢:將一個查詢塊嵌套在另一個查詢塊的WHERE或者HAVING子句中
查詢塊:一個SELECT-FROM-WHERE語句
子查詢不能使用ORDER BY
不相關子查詢與相關子查詢:子查詢是否依賴父查詢
集合查詢:
集合操作種類:UNION,INTERSECT,EXCEPT
四、數據更新:
插入數據:
插入元組:INSERT INTO<表名>[(<屬性列1>,…)] VALUES()
插入子查詢:INSERT INTO<表名>[(屬性列1,…)] 子查詢
刪除數據:
DELETE FROM <表名> [WHERE…]
修改數據:
UPDATE<表名> SET<列名> = <表達式>,…[WHERE…]
五、空值的處理:
空值的判斷: IS NULL,IS NOT NULL
空值的算術運算結果爲NULL,空值的比較結果爲UNKONW
六、視圖:
特點:虛表,由若干基表導出
只存放視圖定義,數據仍存放於原表
基本數據變化會導致視圖變化
優點:限制用戶直接存取基表的某些記錄,帶來安全性
可以隱藏數據的複雜性
操作:查詢、刪除、受限更新、定義新視圖
CREATE VIEW <視圖名>[<列名1>,…] AS <子查詢> [WITH CHECK OPTION]
視圖的實現:
實體化視圖:有效性檢查;執行視圖定義,生成臨時表;操作臨時表;刪除臨時表
視圖消除法:有效性檢查;將視圖操作轉爲對基表的操作;執行修改後的操作
作用:簡化用戶操作;
使用戶能多角度看待統一數據;
對重構數據庫提供了一定程度的邏輯獨立性;
對機密數據提供安全保護;
更清晰的表達查詢。