數據庫三(SQL)

一、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]

視圖的實現:

實體化視圖:有效性檢查;執行視圖定義,生成臨時表;操作臨時表;刪除臨時表

視圖消除法:有效性檢查;將視圖操作轉爲對基表的操作;執行修改後的操作

作用:簡化用戶操作;

使用戶能多角度看待統一數據;

對重構數據庫提供了一定程度的邏輯獨立性;

對機密數據提供安全保護;

更清晰的表達查詢。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章