【文章內容簡介】
其中:供應商表S由供應商代碼(SNO)、供應商名(SNAME)、供應商狀態(tài)(STATUS)、供應商所在城市(CITY)組成;零件表P由零件代碼(PNO)、零件名(PNAME)、顏色(COLOR)、重量(WEIGHT)組成;工程項目表J由工程項目代碼(SNO)、工程項目(JNAME)、工程項目所在城市(CITY)組成;供應情況表SPJ由供應商代碼(SNO)、零件代碼(PNO)、工程項目代碼(JNO)、供應數(shù)量(QTY)組成,表示某供應商供應某種零件給某工程項目的數(shù)量為QTY。用關系代數(shù)完成下列操作(共10分,每小題2分)1. 求為工程“J1”(J1是工程項目代碼)供應零件的供應商號碼SNOΠSNO(σJNO=“J1”(SPJ))2. 求供應商“S1”(S1是供應商代碼)供應的零件(包括PNO、PNAME)ΠPNO,PNAME((P?(ΠPNO(σSNO=“S1”(SPJ)))3. 求供應了“P1”號,但沒有供應“P2”號零件的供應商姓名SNAMEΠSNAME((ΠSNO (σPNO=“P1”(SPJ)) ΠSNO(σPNO=“P2”(SPJ)))?S)4. 求與供應商代碼為“S1”的供應商同在一個城市的供應商的姓名SNAMEΠSNAME,CITY(S)247。ΠCITY(σSNO=“S1”(S))5. 求至少供應了供應商“S1”所供應的全部零件的供應商號碼SNO和姓名SNAMEΠSNO,SNAME((ΠSNO,PNO(SPJ)247。ΠPN0(σSNO=“S1”(SPJ)))?S)第五章一、填空題1. SQL支持數(shù)據(jù)庫三級數(shù)據(jù)模式結構,其中全體基本表構成數(shù)據(jù)據(jù)庫的__模式____,視圖和部分基本表構成數(shù)據(jù)庫的_____外模式_____,存儲文件和索引文件構成數(shù)據(jù)庫的_____內模式___。2. SQL核心動詞共9個,其中用于數(shù)據(jù)定義的三個動詞中除了CREATE外還包括_DROP__、_ALTER__。3. SQL的主要功能可分為3類,分別是___數(shù)據(jù)定義_、__、___數(shù)據(jù)控制__、_和_、_數(shù)據(jù)操作_。二、選擇題1. 視圖屬于數(shù)據(jù)庫三級模式中的哪一級 ( )A) 外模式 B) 內模式 C) 模式 D) 不屬于任何一級模式2. 下列關于視圖的描述,不正確的是 ( )A) 使用視圖可加快查詢語句的執(zhí)行速度 B) 視圖可以簡化用戶的操作 C) 視圖可以對機密數(shù)據(jù)提供安全保護 D) 使用視圖可以簡化查詢語句的編寫3. 下述關于索引的描述不正確的是 ( )A) 使用索引可明顯加快數(shù)據(jù)查詢速度 B) 使用索引可保證數(shù)據(jù)的唯一性 C) 對一個基本表,不要建過多的索引,對經(jīng)常更新的列要建聚簇索引 D) 根據(jù)查詢要求建索引4. SQL中的Insert into語句屬于以下哪一類語言 ( )A) DDL B) DML C) DCL D) DLL5. SQL語言是 ( )A) 過程化的語言 B) 非過程化的語言C) 格式化的語言 D) 導航式的語言7. 以下哪一個動詞不屬于SQL數(shù)據(jù)定義命令( ) A、create B、alter C、drop D、delete8. SQL中的grant和revoke語句屬于以下哪一類語言 ( )A) DDL B) DML C) DCL D) DLL三、簡答題1. 什么是基表(基本表)?什么是視圖?二者有何關系與區(qū)別?關系數(shù)據(jù)庫中的關系在SQL中又稱為基表。由若干張表(包括基表與視圖)經(jīng)映像語句構筑而成的表被稱為視圖。基表與視圖都采用二維表格結構,都統(tǒng)稱為表。但基表中的數(shù)據(jù)(元組)需要有數(shù)據(jù)庫中的物理存儲空間,而視圖在數(shù)據(jù)庫中只保存其定義信息,其數(shù)據(jù)并不占用存儲空間,而是來源于定義該視圖的基表。視圖上的數(shù)據(jù)操縱命令最終都將轉化成相應基表上的操作才能得以實現(xiàn)。2. 試述SQL的特點與功能。 SQL的主要功能(1) 數(shù)據(jù)定義功能:用于定義DB的模式(基本表)、外模式(視圖)和內模式(索引文件),通過DDL實現(xiàn)。(2) 數(shù)據(jù)操縱功能:包括數(shù)據(jù)查詢和數(shù)據(jù)更新兩種語句,數(shù)據(jù)查詢包括數(shù)據(jù)的查找、統(tǒng)計、分組、排序、檢索等操作,數(shù)據(jù)更新包括數(shù)據(jù)的插入、刪除、修改操作。通過DML實現(xiàn)。(3) 數(shù)據(jù)控制功能:包括安全性和完整性控制,通過DCL實現(xiàn)。 SQL的特點集數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制于一體。此外,1) SQL具有自含式和嵌入式兩種形式。2) SQL具有語言簡潔、易學易用的特點(九個動詞)。3) SQL支持三級模式結構。① 全體基本表構成了數(shù)據(jù)庫的模式。② 視圖和部分基本表構成了數(shù)據(jù)庫的外模式。③ 數(shù)據(jù)庫的存儲文件和它們的索引文件構成了關系數(shù)據(jù)庫的內模式。3. 簡述視圖的優(yōu)點(4分)。視圖的優(yōu)點1) 視圖能夠簡化用戶的操作。2) 視圖機制可以使用戶以不同的方式看待同一數(shù)據(jù)。3) 視圖對數(shù)據(jù)庫的重構提供了一定程度的邏輯獨立性。4) 視圖可以對機密的數(shù)據(jù)提供安全保護。4. 簡述建立索引的原則.建立索引的原則1) 索引的建立和維護由DBA和DBMS完成。2) 大表應當建索引,小表則不必建索引。3) 對于一個基本表,不要建立過多的索引。4) 根據(jù)查詢要求建索引。四、SQL查詢1. 讀者:R(rno,rname,rage,rdept) 讀者的借書證號、讀者姓名,年齡,部門 (下劃線表示主碼,下同)圖書:B(bno,bname,bprice,bpub) 書號、書名、定價、出版社借閱:BR(brno,rno,bno,date1,date2) 借閱號、借書證號,書號、借閱日期、歸還日期提示:一本書只能借給一個讀者,而一個讀者可以借多本書。1). 用SQL語言定義借閱表BR的關系模式,數(shù)據(jù)類型請合理選定,但要求包含如下約束216。 主鍵為brno216。 借閱日期不能為空216。 rno,bno都是外鍵 (5分)create table BR(brno char(8) primary key,rno char(8) foreign key references R(rno),bno char(8) foreign key references B(bno),date1 datetime not null,date2 datetime)2). 查詢 所有讀者的姓名用其出生年份(輸出rname,rbirth)(3分)。 Select rname ,2015rage as rbirth from R3). 查詢借閱過圖書“數(shù)據(jù)庫原理”(書名)的讀者姓名(輸出rname)(3分)。 Select rname from R where rno in (select rno from BR where bno in (select bno from B where bname =‘數(shù)據(jù)庫原理’))4). 查詢被借閱次數(shù)超過100次的圖書與被借閱次數(shù)(輸出bno,次數(shù))(3分)。 Select bno,count(*) 次數(shù) from BR group by bno having count(*)1005). 給用戶user1授權,允許對表br進行查詢和修改操作,并允許權利轉授(3分) Grant select,update on br to user1 with grant option6). 查詢從未借閱過“001”號圖書的讀者姓名(輸出rno)(3分)。 Select rname from R where rno not in (select rno from BR where bno =‘001’)2. 已知選課數(shù)據(jù)庫包含的關系模式及其含義如下:S(sno,sname, sage ,sdept) C(o,ame, cpre) SC(sno,o,grade)其中:S是學生表,sno表示學號、sname表示姓名、sage表示年齡、sdept表示系別;C是課程表,o為課程號、ame為課程名,cpre為先行課(存儲的是先行課的課程號);SC是選課表,sno為學號,o為課程號,grade為成績;用SQL語言實現(xiàn)下列操作任務 (本題共30分)1).用SQL語言定義關系模式S,要求選擇合理的數(shù)據(jù)類型且要實體完整性、定義sage的檢查約束(sage的取值范圍為15到35)和sdept的默認值約束(默認值為”計算機系”)(3分)。Create table S( Sno char(8) primary key, Sname char(10) not null, Sage int, Sdept char(20) default ‘計算機系’, Check(sage between 15 and 35))2). 查詢“信息系”年齡大于18歲的學生的信息,結果按學號升序排序(3分)。 Select * from S where sdept =‘信息系’ and age18 order by SNO asc3).定義一個視圖S_View,視圖應包含計算機系的所有學生的學號、姓名、選修的課程名和成績信息(3分) Create view S_View(學號,姓名,課程名,成績)as select , from S,C,SC where = and =4). 給用戶“李平”授權,允許對表S進行查詢、插入和修改操作,并允許權利轉授(3分)。 Grant select,insert,update on S to ‘李平’ with grant option5). 向C表中插入一條課程記錄,課程號為“C03”、課程名為”數(shù)據(jù)庫原理”、其先行課的課程號為“C01”(3分)。 Insert into C(o,ame,cpre) values (‘003’,‘數(shù)據(jù)庫原理’,‘C01’)6). 查詢“計算機系”每個學生的總分、平均分、最高分、最低分,輸出列名分別為“總分”、“平均分”、“最高分”、“最低分”(3分)。 Select sum(grade) 總分,avg(grade) 平均分,max(grade) 最高分,min(grade) 最低分 from SC where sno in(select sno from S where sdept =‘計算機系’)group by sno7). 查詢一門課都沒有選修