【正文】
L中一個關系就對應一個基本表 ? 一個 (或多個 )基本表對應一個存儲文件 ? 一個表可以帶若干索引 ? 存儲文件 ? 邏輯結構組成了關系數(shù)據(jù)庫的內(nèi)模式 ? 物理結構是任意的,對用戶透明 ? 視圖 ?從一個或幾個基本表導出的表 ?數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應的數(shù)據(jù) ?視圖是一個虛表 ?用戶可以在視圖上再定義視圖 河北經(jīng)貿(mào)大學信息技術學院 第三章 關系數(shù)據(jù)庫標準語言 SQL SQL概述 學生 課程數(shù)據(jù)庫 數(shù)據(jù)定義 數(shù)據(jù)查詢 數(shù)據(jù)更新 視圖 小結 河北經(jīng)貿(mào)大學信息技術學院 學生 課程 數(shù)據(jù)庫 ? 學生 課程模式 ST : 學生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname,Cpno,Ccredit) 學生選課表: SC(Sno,Cno,Grade) 河北經(jīng)貿(mào)大學信息技術學院 Student表 學 號 Sno 姓 名 Sname 性 別 Ssex 年 齡 Sage 所 在 系 Sdept 202315121 202315122 202315123 202315125 李勇 劉晨 王敏 張立 男 女 女 男 20 19 18 19 CS CS MA IS 河北經(jīng)貿(mào)大學信息技術學院 Course表 課程號 Cno 課程名 Cname 先行課 Cpno 學分 Ccredit 1 2 3 4 5 6 7 數(shù)據(jù)庫 數(shù)學 信息系統(tǒng) 操作系統(tǒng) 數(shù)據(jù)結構 數(shù)據(jù)處理 PASCAL語言 5 1 6 7 6 4 2 4 3 4 2 4 河北經(jīng)貿(mào)大學信息技術學院 SC表 學 號 Sno 課程號 Cno 成績 Grade 202315121 202315121 202315121 202315122 202315122 1 2 3 2 3 92 85 88 90 80 河北經(jīng)貿(mào)大學信息技術學院 第三章 關系數(shù)據(jù)庫標準語言 SQL SQL概述 學生 課程數(shù)據(jù)庫 數(shù)據(jù)定義 數(shù)據(jù)查詢 數(shù)據(jù)更新 視圖 小結 河北經(jīng)貿(mào)大學信息技術學院 數(shù)據(jù)定義 表 3 . 2 S Q L 的數(shù)據(jù)定義語句 操 作 方 式 操 作 對 象 創(chuàng) 建 刪 除 修 改 模式 C R E A T E S C H E MA D R O P S C H E MA 表 C R E A T E T A B L E D R O P T A B L E A L T E R T A B L E 視 圖 C R E A T E V I E W D R O P V I E W 索 引 C R E A T E I N D E X D R O P I N D E X SQL的數(shù)據(jù)定義功能 : 模式定義、表定義、視圖和索引的定義 河北經(jīng)貿(mào)大學信息技術學院 數(shù)據(jù)定義 ? 模式的定義與刪除 ? 基本表的定義、刪除與修改 ? 索引的建立與刪除 河北經(jīng)貿(mào)大學信息技術學院 定義模式(續(xù)) [例 1]定義一個學生 課程模式 ST CREATE SCHEMA “ ST” AUTHORIZATION WANG。 ?數(shù)據(jù)操作符統(tǒng)一 河北經(jīng)貿(mào)大學信息技術學院 ? 非關系數(shù)據(jù)模型的數(shù)據(jù)操縱語言“ 面向過程 ”,必須制定存取路徑 ? SQL只要提出“做什么”,無須了解存取路徑。 當該模式中沒有任何下屬的對象時 才能執(zhí)行。 ? 搜索路徑的當前默認值是: $user, PUBLIC 河北經(jīng)貿(mào)大學信息技術學院 模式與表(續(xù)) ? DBA用戶可以設置搜索路徑,然后定義基本表 SET search_path TO “ ST”, PUBLIC; Create table Student( ......) 。 河北經(jīng)貿(mào)大學信息技術學院 五、刪除基本表 DROP TABLE 表名 [ RESTRICT| CASCADE]; ? RESTRICT:刪除表是有限制的。 ERROR: relation IS_Student does not exist 河北經(jīng)貿(mào)大學信息技術學院 刪除基本表(續(xù)) 序 號 標準及主流數(shù)據(jù)庫的處理方式 依賴基本表的對象 SQL99 Kingbase ES ORACLE 9i MS SQL SERVER 2023 R C R C C 1. 索引 無規(guī)定 √ √ √ √ √ 2. 視圖 √ √ √ 保留 √ 保留 √ 保留 3. DEFAULT, PRIMARY KEY, CHECK(只含該表的列) NOT NULL 等約束 √ √ √ √ √ √ √ 4. Foreign Key √ √ √ 5. TRIGGER √ √ √ √ √ 6. 函數(shù)或存儲過程 √ √ 保留 √ 保留 √ 保留 √ 保留 √ 保留 DROP TABLE時, SQL99 與 3個 RDBMS的處理策略比較 R表示 RESTRICT , C表示 CASCADE 39。 SC表按學號升序和課程號降序建唯一索引 – 對于已含重復值的屬性列不能建 UNIQUE索引 – 對某個列建立 UNIQUE索引后 , 插入新記錄時 DBMS會自動檢查新記錄在該列上是否取了重復值 。 SELECT Sname, 2023Sage /*假定當年的年份為 2023年 */ FROM Student; 輸出結果: Sname 2023Sage 李勇 1984 劉晨 1985 王敏 1986 張立 1985 查詢經(jīng)過計算的值(續(xù)) 河北經(jīng)貿(mào)大學信息技術學院 查詢經(jīng)過計算的值(續(xù)) [例 5] 查詢?nèi)w學生的姓名 、 出生年份和所有系 , 要求用小寫字母表示所有系名 SELECT Sname, ‘ Year of Birth: 39。 SELECT Sname FROM Student WHERE Sdept=‘ CS’; [例 8] 查詢所有年齡在 20歲以下的學生姓名及其年齡。CS39。CS39。 SELECT Sname FROM Student WHERE Sname LIKE 39。 短語對通配符進行轉(zhuǎn)義。 ESCAPE 39。CS39。 ) 可改寫為: SELECT Sname, Ssex FROM Student WHERE Sdept= 39。 3 39。 SELECT MAX(Grade) FROM SC WHER Cno= ‘ 1 ’ ; [例 29] 查詢學生 202315012選修課程的總學分數(shù)。 休息一會兒。20231501239。 SELECT * FROM Student ORDER BY Sdept, Sage DESC; 河北經(jīng)貿(mào)大學信息技術學院 單表查詢 ? 查詢僅涉及一個表: ?一 、 選擇表中的若干列 ?二 、 選擇表中的若干元組 ?三 、 ORDER BY子句 ?四 、 聚集函數(shù) ?五 、 GROUP BY子句 河北經(jīng)貿(mào)大學信息技術學院 四、聚集函數(shù) ? 聚集函數(shù): ? 計數(shù) COUNT( [DISTINCT|ALL] *) COUNT( [DISTINCT|ALL] 列名 ) ? 計算總和 SUM( [DISTINCT|ALL] 列名 ) ? 計算平均值 AVG( [DISTINCT|ALL] 列名 ) ? 最大最小值 MAX( [DISTINCT|ALL] 列名 ) MIN( [DISTINCT|ALL] 列名 ) 河北經(jīng)貿(mào)大學信息技術學院 聚集函數(shù) (續(xù)) [例 26] 查詢學生總人數(shù) 。 OR Sdept= 39。 SELECT Sname, Ssex FROM