【正文】
ELECT語句 ,具有靈活的使用方式和極強查詢的功能。關(guān)系操作中最常用的是“投影、選擇和連接” ,都體現(xiàn)在 SELECT語句中 : ? SELECT A1, A2, … , An ? FROM R1, R2, … , Rm ? [ WHERE F] ? SELECT語句語義為:將 FROM子句所指出的 R(基本表或視圖 )進行連接,從中選取滿足 WHERE子句中條件 F的行(元組),最后根據(jù) SELECT子句給出的 A(列名 )將查詢結(jié)果表輸出。 指出目標表的列名 ,相應(yīng)于 “ 投影 ” 指出基本表或視圖 ,相應(yīng)于 “ 連接 ” F為“選擇 ”操作的條件 65 關(guān)系數(shù)據(jù)庫語言 SQL ? 單表查詢 ? 從指定的一個表中找出符合條件的元組 . ? 例如,查詢所有男學(xué)生名的情況 . ? S N O S N A M E D E P A R T S E X B D A T E H E I G H T A 041 周光明 自動控制 男 1986 8 10 1. 7 C 005 張雷 計算機 男 1987 6 30 1. 75 C 008 王寧 計算機 女 1986 8 20 1. 62 M 038 李霞霞 應(yīng)用數(shù)學(xué) 女 1988 10 20 1. 65 R 098 錢欣 管理工程 男 1986 5 16 1. 8 選擇選擇S N O S N A M E D E P A R T S E X B D A T E H E I G H T A 04 1 周光明 自動控制 男 1986 8 10 1. 7 C 00 5 張雷 計算機 男 1987 6 30 1. 75 R 09 8 錢欣 管理工程 男 1986 5 16 1. 8 SSELECT * FROM S WHERE SEX=‘男’; 66 關(guān)系數(shù)據(jù)庫語言 SQL SNAME DEPART CNAME GRADE 張雷 計算機 軟件工程 張雷 計算機 數(shù)據(jù)庫 82 周光明 自動控制 軟件工程 92 周光明 自動控制 數(shù)學(xué)分析 周光明 自動控制 人工智能 90 錢欣 管理工程 數(shù)據(jù)庫 75 錢欣 管理工程 人工智能 連接查詢 一個查詢同時涉及兩個以上的表,稱連接查詢。是關(guān)系數(shù)據(jù)庫中最主要的查詢。例如,查詢每個男學(xué)生及其選修課程的情況。要求列出學(xué)生名,系別,選修課程名及成績。 SELECT SNANE, DEPART, CNAME, GRADE FROM S, C, SC WHERE = AND = AND =‘男’; S N O C N O G R A D E A 0 4 1 C C 1 1 2 92 A 0 4 1 M E 2 3 4 9 2 . 5 A 0 4 1 M S 2 1 1 90 C 0 0 5 C C 1 1 2 8 4 . 5 C 0 0 5 C S 2 0 2 82 M 0 3 8 M E 2 3 4 85 R 0 9 8 C S 2 0 2 75 R 0 9 8 M S 2 1 1 7 0 . 5 S N O S N A M E D E P A R T S E X B D A T E H E I G H T A 041 周光明 自動控制 男 1986 8 10 1. 7 C 005 張雷 計算機 男 1987 6 30 1. 75 C 008 王寧 計算機 女 1986 8 20 1. 62 M 038 李霞霞 應(yīng)用數(shù)學(xué) 女 1988 10 20 1. 65 R 098 錢欣 管理工程 男 1986 5 16 1. 8 C N O C N A M E L H O U R S E M E S T E R C C 1 12 軟件工程 60 春 C S 202 數(shù)據(jù)庫 45 秋 E E 103 控制工程 60 春 M E 234 數(shù)學(xué)分析 40 秋 M S 21 1 人工智能 60 秋 學(xué)生登記表(S)學(xué)生選課成績表(SC)課程開設(shè)表(C)查詢涉及 S、 C和 SC三個表, S和 SC表通過 SNO作連接 , C和 SC表通過 CNO來實現(xiàn)連接 67 關(guān)系數(shù)據(jù)庫語言 SQL ? SQL的數(shù)據(jù)更新 ? SQL提供了插入數(shù)據(jù)、更改數(shù)據(jù)和刪除數(shù)據(jù)的 3類語句 。 ? (1) 插入語句 ? 插入語句 INSERT可將一個記錄插入到指定的表中: ? 例如,將一個新的課程記錄插入到課程開設(shè)表 C中 : ? 插入插入(CW101,論文寫作,30,春)C N O C N A M E L H O U R S E M E S T E R C C 1 12 軟件工程 60 春 C S 202 數(shù)據(jù)庫 45 秋 E E 103 控制工程 60 春 M E 234 數(shù)學(xué)分析 40 秋 M S 21 1 人工智能 60 秋 C W 101 論文寫作 30 春 C N O C N A M E L H O U R S E M E S T E R C C 1 12 軟件工程 60 春 C S 20 2 數(shù)據(jù)庫 45 秋 E E 10 3 控制工程 60 春 M E 23 4 數(shù)學(xué)分析 40 秋 M S 21 1 人工智能 60 秋 CINSERT INTO 表名 ( 列名 1, 列名 2… ) VALUES( 表達式 1, 表達式 2, … ) INSERT INTO S( CNO, CNAME, LHOUR, SEMESTER) VALUES(‘ CW101?,‘論文寫作 ?, 30,?春’ ) 68 關(guān)系數(shù)據(jù)庫語言 SQL ? ( 2)更改語句 ? 對指定表中已有數(shù)據(jù)進行修改。語句格式如下: 其功能是修改指定表中滿足 WHERE子句條件的記錄,其中 SET子句給出 表達式 的值用于取代相應(yīng)列的值 . ? 例如 :將‘ ME234?課程的課時改為 30,并改成春季開設(shè): ? 更新更新C N O C N A M E L H O U R S E M E S T E R C C 1 1 2 軟件工程 60 春 C S 2 0 2 數(shù)據(jù)庫 45 秋 E E 1 0 3 控制工程 60 春 M E 2 3 4 數(shù)學(xué)分析 40 秋 M S 2 1 1 人工智能 60 秋 C N O C N A M E L H O U R S E M E S T E R C C 1 12 軟件工程 60 春 C S 202 數(shù)據(jù)庫 45 秋 E E 103 控制工程 60 春 M E 234 數(shù)學(xué)分析 30 春 M S 21 1 人工智能 60 秋 CUPDATE 表名 SET 列名 = 表達式 ….. [ WHERE條件 ] UPDATE C SET LHOUR=30, SEMESTER=‘春’ WHERE CNO=‘ ME234? ; 69 關(guān)系數(shù)據(jù)庫語言 SQL ?( 3)刪除數(shù)據(jù) ? SQL刪除語句的格式為: ? 其功能是從指定表中刪除滿足 WHERE子句條件的記錄。如果省略 WHERE子句,則刪除表中所有記錄 . ? 例如,從 C表中刪除課程號為’ CC112?的記錄: ? 刪除刪除C N O C N A M E L H O U R S E M E S T E R C S 2 0 2 數(shù)據(jù)庫 45 秋 E E 1 0 3 控制工程 60 春 M E 2 3 4 數(shù)學(xué)分析 40 秋 M S 2 1 1 人工智能 60 秋 CN O CN AM E L H O U R S E M E S T E R C C 1 1 2 軟件工程 60 春 C S 2 0 2 數(shù)據(jù)庫 45 秋 E E 1 0 3 控制工程 60 春 M E 2 3 4 數(shù)學(xué)分析 40 秋 M S 2 1 1 人工智能 60 秋 CDELETE FROM 表名 [ WHERE 條件 ] DELETE FROM C WHERE CNO=?CC112?。 70 關(guān)系數(shù)據(jù)庫語言 SQL ? SQL的 視圖 ? 視圖是 DBMS所提供的一種由用戶觀察數(shù)據(jù)庫中數(shù)據(jù)的重要機制。視圖可由基本表或其他視圖導(dǎo)出。它與基本表不同,視圖只是一個虛表,在數(shù)據(jù)字典中保留其邏輯定義,而不作為一個表實際存儲數(shù)據(jù)。 ? SQL用 CREATE VIEW語句建立視圖,其格式為: ? ? CREATE VIEW <視圖名>[<列名>, … ] ? AS <子查詢> 71 關(guān)系數(shù)據(jù)庫語言 SQL ? SQL視圖的例 : ? 例如,若建立管理工程系學(xué)生的視圖 ME_S,語句為: ? ? 視圖定義后,用戶就可以象對基本表操作一樣對視圖進行查詢。 例如,在管理工程系的學(xué)生視圖中找出年齡大于 25歲的學(xué)生 ,其 SQL語句為 : ? CREATE VIEW ME_s AS (SELECT SNO, SNAME, SEX, BDATE, HEIGHT FROM S WHERE DEPART=‘管理工程’ ) ; SELECT SNANE 2022YEAR( BDATE) FROM ME_S WHERE 2022- YEAR( BDATE)> 25; 72 數(shù)據(jù)庫系統(tǒng)及應(yīng)用新技術(shù) ? .?dāng)?shù)據(jù)庫體系結(jié)構(gòu)的發(fā)展 ? DBS運行在計算機系統(tǒng)之上,其體系結(jié)構(gòu)與計算機體系結(jié)構(gòu)密切相關(guān)。因此 DBS的系統(tǒng)結(jié)構(gòu)也隨著它的硬件和軟件支撐環(huán)境的變化而不斷演變。 ? ① 集中式數(shù)據(jù)庫系統(tǒng) 。早期的 DBMS以分時操作系統(tǒng)作為運行環(huán)境,采用集中式的數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu),把數(shù)據(jù)庫建立在本單位的主計算機上,且不與其他計算機系統(tǒng)進行數(shù)據(jù)交互。在這種系統(tǒng)中,不但數(shù)據(jù)是集中的,數(shù)據(jù)的管理也是集中的。 . . 終端 DB 73 數(shù)據(jù)庫體系結(jié)構(gòu)的發(fā)展 ? ② 客戶 /服務(wù)器結(jié)構(gòu) (C/S) ? 是一種網(wǎng)絡(luò)處理系統(tǒng)。有多臺用作客戶機的計算機和一至多臺用作服務(wù)器的計算機。客戶機直接面向用戶,接收并處理任務(wù),將需要 DB操作的任務(wù)委托服務(wù)器執(zhí)行;而服務(wù)器只接收這種委托,完成對 DB的查詢和更新,并把查詢結(jié)果返回給客戶機。 C/S結(jié)構(gòu)的 DBS雖然處理上是分布的,但數(shù)據(jù)卻是集中的,還是屬于集中式數(shù)據(jù)庫系統(tǒng)。 客戶機 DB 數(shù)據(jù)庫服務(wù)器 74 數(shù)據(jù)庫體系結(jié)構(gòu)的發(fā)展 ? ③ 瀏覽器 /服務(wù)器結(jié)構(gòu) (B/S) ? ? 由瀏覽器 ,Web服務(wù)器 ,數(shù)據(jù)庫服務(wù)器 3個層次組成 .客戶端使用一個通用的瀏覽器代替了各種應(yīng)用軟件 .用戶操作通過瀏覽器執(zhí)行 . ? 客戶機 DB 瀏覽器 數(shù)據(jù)庫服務(wù)器 75 數(shù)據(jù)庫體系結(jié)構(gòu)的發(fā)展 ? ④ 分布式數(shù)據(jù)庫系統(tǒng) ? 數(shù)據(jù)共享和數(shù)