自考《數(shù)據(jù)庫原理》串講—關(guān)系數(shù)據(jù)庫SQL語言

字號:

第三章 關(guān)系數(shù)據(jù)庫SQL語言
    本章為重點章,應熟悉和掌握SQL的數(shù)據(jù)定義、數(shù)據(jù)查詢、數(shù)據(jù)更新的句法及其應用,特別是數(shù)據(jù)查詢的應用。結(jié)合上機操作進行理解和掌握。
    一、SQL概述。
    1、SQL發(fā)展歷程( 識記 )
    SQL從1970年美國IBM研究中心的E.F.Codd發(fā)表論文到1974年Boyce和Chamberlin把SQUARE語言改為SEQUEL語言,到現(xiàn)在還在不斷完善和發(fā)展之中,SQL(結(jié)構(gòu)式查詢語言)雖然名為查詢,但實際上具有定義、查詢、更新和控制等多種功能。
    2、SQL數(shù)據(jù)庫的體系結(jié)構(gòu)( 領(lǐng)會 )
    SQL數(shù)據(jù)庫的體系結(jié)構(gòu)也是三級結(jié)構(gòu) ,但術(shù)語與傳統(tǒng)關(guān)系模型術(shù)語不同,在SQL中,關(guān)系模式稱為“ 基本表 ”,存儲模式稱為“ 存儲文件 ”,子模式稱為“ 視圖 ”,元組稱“ 行 ”,屬性稱“ 列 ”。
    SQL數(shù)據(jù)庫體系的結(jié)構(gòu)要點如下:
    (1)一個SQL數(shù)據(jù)庫是表的匯集。
    (2)一個SQL表由行集構(gòu)成,行是列的序列,每列對應一個數(shù)據(jù)項。
    (3)表或者是基本表,或者是視圖?;颈硎菍嶋H存儲在數(shù)據(jù)庫中的表,視圖由是由若干基本表或其他視圖構(gòu)成的表的定義。
    (4)一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。存儲文件與物理文件對應。
    (5)用戶可以用SQL語句對表進行操作,包括視圖和基本表。
    (6)SQL的用戶可以是應用程序,也可以是終端用戶。
    3、SQL的組成( 識記 )
    SQL由四部分組成:
    (1)數(shù)據(jù)定義:SQL DDL.定義SQL模式,基本表、視圖和索引。
    (2)數(shù)據(jù)操縱:SQL DML.包括數(shù)據(jù)查詢和數(shù)據(jù)更新(增、刪、改)。
    (3)數(shù)據(jù)控制:包括對基本表和視圖的授權(quán)、完整性規(guī)則的描述,事務控制等。
    (4)嵌入式SQL的使用規(guī)定。
    二、SQL的數(shù)據(jù)定義( 簡單應用 )
    1、SQL模式的創(chuàng)建和撤消:
    SQL 模式的創(chuàng)建 可簡單理解為建立一個數(shù)據(jù)庫,定義一個存儲空間,其句法是:
    CREAT SCHEMA <模式名> AUTHORIZATION <用戶名>
    撤消SQL模式的句法為:
    DROP SCHEMA <模式名> [ CASCADE | RESTRICT ]
    方括號中的選項參數(shù)CASCADE表示連鎖方式,執(zhí)行時將模式下所有基本表、視圖、索引等元素全部撤消。RESTRICT表示約束式,執(zhí)行時必須在SQL模式中沒有任何下屬元素時方可撤消模式。
    2、SQL提供的基本數(shù)據(jù)類型
    數(shù)值型:包括 integer、smallint、real、double precision 、float(n),numeric(p,d)
    字符串型:char(n)、varchar(n),前者是定長,后者為變長串
    位串型:bit(n),bit varying(n),同上。
    時間型:date、time.
    3、基本表的創(chuàng)建、修改和撤消
    基本表的創(chuàng)建:(可理解為建立表結(jié)構(gòu))
    CREAT TABLE SQL 模式名?;颈砻?BR>    (列名,類型,
    ……
    完整性約束……)
    完整性約束包括主鍵子句(PRIMARY KEY)、檢查子句(CHECK)和外鍵子句(Foreign KEY)。
    基本表結(jié)構(gòu)的修改
    ALTER TABLE 基本表名 ADD/ DROP (增加/刪除) 列名 類型名(增加時寫出)
    刪除時有子句 [CASCADE|RESTRICT],前者為連鎖刪除,后者為約束刪除,即沒有對本列的任何引用時才能刪除。
    基本表的撤消
    DROP TABLE 基本表名 [CASCADE|RESTRICT]
    4、視圖的創(chuàng)建和撤消
    創(chuàng)建: CREAT VIEW 視圖名(列名表) AS SELECT 查詢語句
    撤消: DROP VIEW 視圖名
    5、索引的創(chuàng)建和撤消
    創(chuàng)建: CREAT [UNIQUE] INDEX 索引名 ON 基本表名(列名表 [ASC|DESC])
    撤消: DROP INDEX 索引名
    總結(jié):凡創(chuàng)建都用 CREAT ,刪除都用 DROP ,改變用 alter ,再跟類型和名字,附加子句很容易了。
    三、SQL的數(shù)據(jù)查詢( 綜合應用 )
    這一段是本章的重點內(nèi)容,應該熟練掌握。首先了解基本句法:
    1、 SELECT -FROM- WHERE 句型
    SELECT 列名表(逗號隔開) FROM 基本表或視圖序列 WHERE 條件表達式
    在這里,重點要掌握條件表達式中各種運算符的應用,如=,>,<,<>等算術(shù)比較運算符、邏輯運算符 AND、OR、NOT 、集合成員資格運算符: IN,NOT IN ,以及嵌套的 SELECT 語句的用法要特別注意理解。 針對課本的例題和課后習題進行掌握。
    在查詢時, SELECT 語句可以有多種寫法,如 聯(lián)接查詢、嵌套查詢和使用存在量詞的嵌套查詢 等。好都掌握,但是起碼應能寫出一種正確的查詢語句。
    2. SELECT 語句完整的句法:
    SELECT 列名表(逗號隔開)
    FROM 基本表或視圖序列
    [ WHERE 條件表達式] (此為和條件子句)
    [GROUP BY 列名序列] (分組子句)
    [HAVING 組條件表達式] (組條件子句)
    [ORDER BY列名[ASC|DESC]……] (排序子句)
    這段關(guān)于完整句法的內(nèi)容能夠理解也就問題不大了。
    3、 SELECT 語句中的限定
    這一段內(nèi)容主要是對 SELECT 語句進一步使用進行的深入學習,領(lǐng)會下列各種限定的使用目的和方法。
    要求輸出表格中不出現(xiàn)重復元組,則在 SELECT 后加一DISTINCT
    SELECT 子句中允許出現(xiàn)加減乘除及列名,常數(shù)的算術(shù)表達式
    WHERE 子句中可以用BETWEEN……AND……來限定一個值的范圍
    同一個基本表在 SELECT 語句中多次引用時可用AS來增加別名
    WHERE 子句中字符串匹配用LIKE和兩個通配符,%和下劃線_.
    查詢結(jié)果的結(jié)構(gòu)完全一致時可將兩個查詢進行并(UNION)交(INTERSECT)差(EXCPT)操作
    查詢空值操作不是用='null',而是用 IS NULL來測試。
    集合成員資格比較用 IN/NOT IN ,集合成員算術(shù)比較用元組θSOME/ALL
    可以用子查詢結(jié)果取名(表名(列名序列))來作為導出表使用
    基本表的自然聯(lián)接操作是用 NATURAL INNER JOIN來實現(xiàn)的。
    四、SQL的數(shù)據(jù)更新( 簡單應用 )
    簡單應用就是掌握基本的句型并能套用在一些簡單的查詢要求上。
    1、數(shù)據(jù)插入:
    INSERT INTO 基本表名(列名表)
    valueS (元組值)
    或
    INSERT INTO 基本表名(列名表)
    SELECT 查詢語句
    其中元組值可以連續(xù)插入。用查詢語句可以按要求插入所需數(shù)據(jù)。
    2、數(shù)據(jù)刪除:
    DELETE FROM 基本表名 [ WHERE 條件表達式]
    3、數(shù)據(jù)修改:
    UPDATE 基本表名
    SET 列名=值表達式,[列名=值表達式……]
    [ WHERE 條件表達式]
    4、對視圖的更新:
    我們知道,對視圖的查詢是和基本表相同的,但是更新操作則受到下列三條規(guī)則的限制:(領(lǐng)會一下)
    如果視圖是從多個基本表使用聯(lián)接操作導出的,則不允許更新。
    如果導出的視圖使用了分組和聚合操作,也不允許更新。
    如果視圖是從單個基本表使用選擇和投影操作導出的,并且包括了基本表的主鍵或某個候選鍵,則可以執(zhí)行操作。(這就相當于在基本表上操作)。
    這一節(jié)的關(guān)于增刪改的操作要和前面關(guān)于數(shù)據(jù)庫模式、表的增刪改操作進行對比學習,以加深理解。不要忘記上機實踐 .