2016年計(jì)算機(jī)等級(jí)考試四級(jí)數(shù)據(jù)庫(kù)技術(shù)復(fù)習(xí)筆記:關(guān)系數(shù)據(jù)庫(kù)操作

字號(hào):

  第8章 關(guān)系數(shù)據(jù)庫(kù)操作語(yǔ)言SQL
    8.1 SQL支持的數(shù)據(jù)類型
    8.1.1 數(shù)值型
    1、 準(zhǔn)確型
    2、 近似型
    8.1.2 字符串型
    1、 普通編碼字符串類型;
    2、 統(tǒng)一編碼字符串類型—Unicode編碼;
    3、 二進(jìn)制字符串類型;
    8.1.3 日期時(shí)間類型
    8.1.4 貨幣類型
    8.2 定義和維護(hù)關(guān)系表
    8.2.1 關(guān)系表的定義與刪除
    1、定義表
    CREATE TABLE <表名> (<列名><數(shù)據(jù)類型>[列級(jí)完整性約束定義]{, <列名><數(shù)據(jù)類型>[列級(jí)完整性約束定義]…}[,表級(jí)完整性約束定義])
    1、 列級(jí)完整性約束:
    (1) NOT NULL:取值非空;
    (2) DEFAULT:指定列的默認(rèn)值,形式:DEFAULT 常量;
    (3) UNIQUE:列取值不重復(fù);
    (4) CHECK:列的取值范圍,形式:CHECK(約束表達(dá)式);
    (5) PRIMARY KEY:指定本列為主碼;
    (6) FOREIGN KEY:定義本列為引用其他表的外碼;
    2、 刪除表
    DROP TABLE <表名>
    8.2.2 修改表結(jié)構(gòu)
    ALTER TABLE <表名>
    8.3 數(shù)據(jù)操作語(yǔ)言
    8.3.1 數(shù)據(jù)查詢
    1、查詢語(yǔ)句的基本結(jié)構(gòu):
    SELECT <目標(biāo)列名序列> FROM <數(shù)據(jù)源> {WHERE , GROUP BY , HAVING , ORGER BY}
    (1) 比較:SELECT A,B,C FROM TABLE_A WHERE A>30;
    (2) 確定范圍:WHERE A (NOT)BETWEEN 初始值 AND 結(jié)束值;
    (3) 確定集合:WHERE A (NOT)IN (‘A1’,‘A2’….‘A3’);
    (4) 字符串匹配:WHERE A LIKE <匹配符>;
    (5) 四種<匹配符>:
    (A)_(下劃線):匹配任意一個(gè)字符;
    (B)%(百分號(hào)):匹配0個(gè)或多個(gè)字符;
    (C)[ ]:匹配[ ]中的任意一個(gè)字符;
    (D)[^]:不匹配[ ]中的任意一個(gè)字符;
    (6) 涉及空值的查詢:WHERE A IS (NOT)NULL;
    (7) 多重條件查詢:AND(條件必須全部為TRUE,結(jié)果才為TRUE),OR(任一條件為TRUE,結(jié)果即為TRUE);
    (8) 對(duì)查詢結(jié)果進(jìn)行排序:ORDER BY A [ASC(順序) | DESC(逆序)];
    (9) 列別名:列名 AS 新列名;
    (10) 消除取值相同的行:SELECT DISTINCT A FROM TABLE_A;
    (11) 使用聚合函數(shù)統(tǒng)計(jì)數(shù)據(jù):SQL的聚合函數(shù):
    (A) COUNT(*):統(tǒng)計(jì)表中元組的個(gè)數(shù);
    (B) COUNT([ALL (全部)| DISTINCT(無(wú)重復(fù))] <列名>):統(tǒng)計(jì)本列非空列值的個(gè)數(shù);
    (C) SUM(列名):計(jì)算列值的總和(必須是數(shù)值型列);
    (D) AVG(列名):計(jì)算列值平均值(必須是數(shù)值型列);
    (E) MAX(列名):求列值;
    (F) MIN(列名):求列最小值;
    (12) 對(duì)查詢結(jié)果進(jìn)行分組計(jì)算:
    (A) 使用GROUP BY;
    (B) 使用HAVING子句;
    3、 連接查詢
    (1) 內(nèi)連接:FROM 表1 JOIN 表2 ON (連接條件);
    (2) 自連接:一種特殊的內(nèi)連接,相互連接的表在物理上是同一張表,但通過(guò)為表取別名的方法,在邏輯上分為兩張表;
    (3) 外連接:輸出不滿足連接條件的元組,格式:
    FROM 表1 LEFT|RIGHT OUTER JOIN 表2 ON (連接條件)
    4、 查詢語(yǔ)句的擴(kuò)展:
    (1) 合并多個(gè)結(jié)果集:SELECT 語(yǔ)句1 UNION SELECT 語(yǔ)句2……,使用UNION的兩個(gè)基本規(guī)則:
    (A) 所有查詢語(yǔ)句中列的個(gè)數(shù)和列的順序必須相同;
    (B) 所有查詢語(yǔ)句中對(duì)應(yīng)的數(shù)據(jù)類型必須兼容;
    (2) 將查詢結(jié)果保存到新表中:SELECT 查詢列表序列 INTO 新表名 FROM 數(shù)據(jù)源;
    (3) 使用限制結(jié)果集行數(shù): n [percent] [WITH TIES]
    (A) n :表示取查詢結(jié)果的前n行;
    (B) n percent:表示取查詢結(jié)果的前n%行;
    (C) WITH TIES:表示包括并列的結(jié)果;
    (4) 使用CASE表達(dá)式:
    (A) 簡(jiǎn)單CASE表達(dá)式:
    (B) 搜索CASE表達(dá)式;
    5、子查詢:如果一個(gè)SELECT語(yǔ)句是嵌套在一個(gè)SELECT、INSERT、UPDATE或DELETE語(yǔ)句中,則稱為子查詢或內(nèi)層查詢,包含子查詢的語(yǔ)句稱為主查詢或外層查詢;
    (1) 使用子查詢進(jìn)行基于集合的測(cè)試,形式:WHERE 表達(dá)式 [NOT] IN (子查詢);
    (2) 使用子查詢進(jìn)行比較測(cè)試,形式:WHERE 表達(dá)式 比較運(yùn)算符 (子查詢);
    (3) 使用子查詢進(jìn)行存在性測(cè)試,形式:WHERE [NOT] EXISTS (子查詢);
    8.3.2 數(shù)據(jù)修改
    1、 添加數(shù)據(jù):INSERT [INTO] 表名 VALUE 值列表;使用插入單行語(yǔ)句時(shí)要注意:
    (1) 值列表中的值與列名表中的列按位置順序?qū)?yīng),要求它們的數(shù)據(jù)類型必須一致;
    (2) 如果[表名]后邊沒(méi)有指明列名,則值列表中的值的順序必須與表中列的順序一致,且每一列均有值;
    2、 更新數(shù)據(jù):形式 UPDATE 表名 SET [列名=表達(dá)式] [WHERE 更新條件];
    3、 刪除數(shù)據(jù)::形式DELETE [FROM] 表名 [WHERE 刪除條件];
    8.4 索引
    1、 創(chuàng)建索引:CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]
    INDEX 索引名 ON 表名
    (1) UNIQUE:表示要?jiǎng)?chuàng)建的索引是索引;
    (2) CLUSTERED:表示要?jiǎng)?chuàng)建的索引是聚集索引;
    (3) NONCLUSTERED:表示要?jiǎng)?chuàng)建的索引是非聚集索引;
    2、 刪除索引:DROP INDEX 索引名;
    8.5 視圖
    8.5.1 定義視圖
    1、 語(yǔ)法格式:CREATE VIEW 視圖名 AS SELECT 語(yǔ)句 [WITH CHECK OPTION]
    2、 需要注意下列幾點(diǎn):
    (1) 在定義視圖時(shí)要么指定全部視圖列,要么全部省略不寫。如果省略了視圖列名,則視圖的列名與查詢語(yǔ)句的列名相同。但如下情況則要明確指出組成視圖的所有列名:
    A、 某個(gè)目標(biāo)列不是單純的屬性名,而是計(jì)算函數(shù)或列的表達(dá)式;
    B、 多表連接時(shí)選出了幾個(gè)同名列作為視圖的字段;
    C、 需要在視圖中為某個(gè)列選用新的更合適的列名。
    (2) WITH CHECK OPTION選項(xiàng)表示通過(guò)視圖對(duì)數(shù)據(jù)進(jìn)行增加、刪除和更改操作時(shí)要保證對(duì)數(shù)據(jù)的操作結(jié)果要滿足定義視圖時(shí)指定的WHERE子句條件;
    3、 視圖通常用于查詢數(shù)據(jù),也可修改基本表中的數(shù)據(jù),但不是所有的視力都可以這樣。
    4、 定義單源表視圖—視圖數(shù)據(jù)可只取自一個(gè)基本表的部分行、列,這樣的視圖行列與基本表行列對(duì)應(yīng),這樣定義的視圖一般可以進(jìn)行查詢和更改數(shù)據(jù)操作
    5、 定義多源表視圖—視圖數(shù)據(jù)可以來(lái)自多個(gè)表中,這樣定義的視圖一般只用于查詢,不用于修改數(shù)據(jù)。
    6、 在已有視圖上定義新視圖—可以在視圖上再建立視圖,這時(shí)作為數(shù)據(jù)源的視圖必須是已經(jīng)建立好的。
    7、 定義帶表達(dá)式的視圖—在定義基本表時(shí),為減少數(shù)據(jù)庫(kù)中的冗余數(shù)據(jù),表中只存放基本數(shù)據(jù),由基本數(shù)據(jù)經(jīng)過(guò)各種計(jì)算派生出的數(shù)據(jù)一般是不存儲(chǔ)的。所以定義視圖時(shí)可以根據(jù)需要設(shè)置一些派生屬性列,在這些派生屬性列中保存經(jīng)過(guò)計(jì)算的值。這些派生屬性由于在基本表中并不實(shí)際存在,因此,也稱它們?yōu)樘摂M列。包含虛擬列的視圖也稱為帶表達(dá)式的視圖。
    8、 含分組統(tǒng)計(jì)信息的視圖—指定義視圖的查詢語(yǔ)句中含有GROUP BY 子句,這樣的視圖只能用于查詢,不能修改數(shù)據(jù)。
    8.5.2 刪除視圖
    1、 格式為:DROP VIEW <視圖名>
    8.5.3 視圖的作用
    1、 簡(jiǎn)化數(shù)據(jù)查詢語(yǔ)句;
    2、 使用戶能從多角度看到同一數(shù)據(jù);
    3、 提高了數(shù)據(jù)的安全性;
    4、 提供了一定程度的邏輯獨(dú)立性