三級(jí)數(shù)據(jù)庫(kù)第六章考試要點(diǎn)

字號(hào):

第六章
    一、SQL概述(一)結(jié)構(gòu)化查詢語(yǔ)言SQL
    SQL(Structured Query Language)稱為結(jié)構(gòu)化查詢語(yǔ)言。由于SQL使用方便、功能豐富、語(yǔ)言簡(jiǎn)潔易學(xué),很快得到推廣和應(yīng)用。例如關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品SQL/DS,DB2,Oracle,SYBASE等都實(shí)現(xiàn)了SQL語(yǔ)言。自SQL成為國(guó)際標(biāo)準(zhǔn)語(yǔ)言以后,各個(gè)數(shù)據(jù)庫(kù)廠家紛紛推出各自支持的SQL軟件或SQL接口的軟件。這就有可能使大多數(shù)數(shù)據(jù)庫(kù)均用SQL作為共同的數(shù)據(jù)庫(kù)語(yǔ)言和標(biāo)準(zhǔn)接口,使不同數(shù)據(jù)庫(kù)系統(tǒng)之間的互操作有了共同的基礎(chǔ)。而且對(duì)數(shù)據(jù)庫(kù)以外的領(lǐng)域也產(chǎn)生了很大影響,有不少軟件產(chǎn)品將SQL語(yǔ)言的數(shù)據(jù)查詢功能與圖形功能、軟件工程工具、軟件開發(fā)工具、人工智能程序結(jié)合起來(lái)。SQL已成為關(guān)系數(shù)據(jù)庫(kù)領(lǐng)域中一個(gè)主流語(yǔ)言。
    (二)SQL的特點(diǎn)
    其主要特點(diǎn)包括:
    (1)綜合統(tǒng)一
    (2)高度非過程化
    (3)面向集合的操作方式
    (4)以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式
    (5)語(yǔ)言簡(jiǎn)潔,易學(xué)易用
    (三)SQL數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)
    SQL語(yǔ)言支持?jǐn)?shù)據(jù)庫(kù)三級(jí)模式結(jié)構(gòu),在SQL中,模式對(duì)應(yīng)于“基本表(base table)”,內(nèi)模式對(duì)應(yīng)于“存儲(chǔ)文件”,外模式對(duì)應(yīng)于“視圖(view)”和部分基本表。元組對(duì)應(yīng)于表中的“行(row)”,屬性對(duì)應(yīng)于表中的
    “列(column)”。
    (1)一個(gè)SQL數(shù)據(jù)庫(kù)是表(table)的匯集。
    (2)一個(gè)SQL表由行集構(gòu)成,一行是列的序列,每列對(duì)應(yīng)一個(gè)數(shù)據(jù)項(xiàng)。
    (3)一個(gè)表可以帶若干索引,索引也存放在存儲(chǔ)文件中。
    (4)存儲(chǔ)文件的邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫(kù)的內(nèi)模式。存儲(chǔ)文件的物理結(jié)構(gòu)是任意的,對(duì)用戶是透明的。
    (5)一個(gè)表或者是一個(gè)基本表,或者是一個(gè)視圖。
    (6)一個(gè)基本表可以跨一個(gè)或多個(gè)存儲(chǔ)文件存放,一個(gè)存儲(chǔ)文件可以存放一個(gè)或多個(gè)基本表。每個(gè)存儲(chǔ)文件與外部存儲(chǔ)器上一個(gè)物理文件對(duì)應(yīng)。
    (7)SQL用戶可以是應(yīng)用程序,也可以是終端用戶。SQL的宿主語(yǔ)言有FORTARAN,COBOL,Pascal,PL/I、C和Ada語(yǔ)言等。SQL也能作為獨(dú)立的用戶接口,供交互環(huán)境下的終端用戶使用。
    二、SQL的數(shù)據(jù)定義
    關(guān)系數(shù)據(jù)庫(kù)是由模式、外模式和內(nèi)模式組成,即關(guān)系數(shù)據(jù)庫(kù)的基本對(duì)象是表、視圖和索引。因此,SQL的數(shù)據(jù)定義功能包括定義表、定義視圖和定義索引,由于視圖是基于基本表的虛表,索引是依附于基本表的,因此SQL通常不提供修改視圖定義和修改索引定義的操作。用戶如果想修改視圖定義或索引定義,只能先將它們刪除掉,然后再重建。
    (一)基本表
    1.創(chuàng)建基本表
    SQL語(yǔ)言使用CREATE TABLE語(yǔ)句創(chuàng)建基本表,其一般格式如下:CREATE TABLE〈表名〉(〈列名〉〈數(shù)據(jù)類型〉[列級(jí)完整性約束] [,〈列名〉〈數(shù)據(jù)類型〉[列級(jí)完整性約束]…] [,〈表級(jí)完整性約束〉] [其他參數(shù)]);
    2.修改基本表
    隨著應(yīng)用環(huán)境和應(yīng)用需求的變化,有時(shí)需要修改已建立好的基本表,包括增加新列、增加新的完整性約束條件、修改原有的定義或刪除已有的完整性約束條件等。SQL語(yǔ)言用ALTER TABLE語(yǔ)句修改基本表,其一般格式為:ALTER TABLE〈表名〉 [ADD〈新列名〉〈數(shù)據(jù)類型〉[完整性約束]] [DROP〈完整性約束名〉] [MODIFY〈列名〉〈數(shù)據(jù)類型〉];其中,〈表名〉為指定需要修改的基本表名,ADD子句用于增加新列和新的完整性約束,DROP子句用于刪除指定的完整性約束,MODIFY子句用于修改原有的列定義。
    3.刪除基本表
    當(dāng)某個(gè)基本表不再需要時(shí),可以使用SQL語(yǔ)句DROP TABLE進(jìn)行刪除,其一般格式為: DROP TABLE〈表名〉;
    (二)索引
    1.創(chuàng)建索引
    在SQL語(yǔ)言中,創(chuàng)建索引使用CREATE INDEX語(yǔ)句,其一般格式為:CREATE[UNIQUE][CLUSTER]INDEX〈索引名〉 ON〈表名〉(〈列名〉[順序][,〈列名〉[順序]]…);
    2.刪除索引
    索引一經(jīng)建立,就由系統(tǒng)使用和維護(hù)它,不需用戶干預(yù)。創(chuàng)建索引是為了減少查詢操作的時(shí)間,但如果數(shù)據(jù)增、刪頻繁,系統(tǒng)會(huì)花費(fèi)許多時(shí)間來(lái)維護(hù)索引。這時(shí),可以刪除一些不必要的索引。在SQL語(yǔ)言中,刪除索引使用DROP INDEX語(yǔ)句,其一般格式為: DROP INDEX〈索引名〉;
    三、SQL的數(shù)據(jù)操縱(一)SQL的查詢語(yǔ)句
    數(shù)據(jù)庫(kù)查詢是數(shù)據(jù)庫(kù)操作的核心。SQL語(yǔ)言提供了SELECT語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)的查詢,該語(yǔ)句的一般格式是:SELECT [ALL|DISTINCT]<目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]… FROM〈基本表(或視圖)〉[,〈基本表(或視圖)〉]… [WHERE<條件表達(dá)式>] [GROUP BY<列名1>[HAVING<內(nèi)部函數(shù)表達(dá)式>]] [ORDER BY<列名2>[ASC|DESC]];
    1.簡(jiǎn)單查詢
    簡(jiǎn)單查詢僅涉及數(shù)據(jù)庫(kù)中的一個(gè)表。
    (1)查詢表中的若干列。
    (2)查詢經(jīng)過計(jì)算的值。
    (3)消除取值重復(fù)的行。
    (4)條件查詢。通過WHERE子句實(shí)現(xiàn)條件查詢,WHERE子句常用的查詢條件如下表所示。