SQL語言(綜合)課堂練習(xí)和習(xí)題_第1頁
SQL語言(綜合)課堂練習(xí)和習(xí)題_第2頁
SQL語言(綜合)課堂練習(xí)和習(xí)題_第3頁
SQL語言(綜合)課堂練習(xí)和習(xí)題_第4頁
SQL語言(綜合)課堂練習(xí)和習(xí)題_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、SQL語言 課堂練習(xí)和習(xí)題一、選擇題 1. SQL語言是( )的語言,容易學(xué)習(xí) . A.過程化 B. 非過程化 C.格式化 D. 導(dǎo)航式 2. SQL語言的數(shù)據(jù)操縱語句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最頻繁的語句是( ) . A. SELECT B. INSERT C. UPDATE D. DELETE 3. 在視圖上不能完成的操作是( ) . A. 更新視圖 B. 查詢 C. 在視圖上定義新的表 D. 在視圖上定義新的視圖 4. SQL語言集數(shù)據(jù)查詢,數(shù)據(jù)操縱,數(shù)據(jù)定義和數(shù)據(jù)控制功能于一體,其中,CREATE,DROP,ALTER語句是實現(xiàn)

2、哪種功能( ). A. 數(shù)據(jù)查詢 B. 數(shù)據(jù)操縱 C. 數(shù)據(jù)定義 D. 數(shù)據(jù)控制 5. SQL語言中,刪除一個視圖的命令是( ). A.DELETE B.DROP C.CLEAR D.REMOVE 6. 在SQL語言中的視圖VIEW是數(shù)據(jù)庫的( ) . A. 外模式 B. 模式 C. 內(nèi)模式 D. 存儲模式 7. 下列的SQL語句中,( )不是數(shù)據(jù)定義語句. A. CREATE TABLE B. DROP VIEW C. CREATE VIEW D. GRANT 8. 若要撤銷數(shù)據(jù)庫中已經(jīng)存在的表S,可用( ). A. DELETE TABLE S B. DELETE S C. DROP TA

3、BLE S D. DROP S 9. 若要在基本表S中增加一列CN(課程名),可用( ). A.ADD TABLE S(CN CHAR(8) B.ADD TABLE S ALTER(CN CHAR(8) C.ALTER TABLE S ADD(CN CHAR(8) D.ALTER TABLE S (ADD CN CHAR(8) 10. 學(xué)生關(guān)系模式 S( S#,Sname,Sex,Age),S的屬性分別表示學(xué)生的學(xué)號,姓名,性別,年齡.要在表S中刪除一個屬性"年齡",可選用的SQL語句是( ). A. DELETE Age from S B. ALTER TABLE S D

4、ROP Age C. UPDATE S Age D. ALTER TABLE S 'Age' 11. 有關(guān)系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是學(xué)生號,SNAME是學(xué)生姓名,SAGE是學(xué)生年齡, C#是課程號,CNAME是課程名稱.要查詢選修"ACCESS"課的年齡不小于20的全體學(xué)生姓名的SQL語句是SELECT SNAME FROM S,C,SC WHERE子句.這里的WHERE子句的內(nèi)容是( ). A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=

5、20 and CNAME='ACCESS' B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in 'ACCESS' C. SAGE in>=20 and CNAME in 'ACCESS' D. SAGE>=20 and CNAME=' ACCESS' 12. 設(shè)關(guān)系數(shù)據(jù)庫中一個表S的結(jié)構(gòu)為S(SN,CN,grade),其中SN為學(xué)生名,CN為課程名,二者均為字符型;grade為成績,數(shù)值型,取值范圍0-100.若要把"張二的化學(xué)成績

6、80分"插入S中,則可用( ). A. ADD INTO S VALUES('張二','化學(xué)','80') B. INSERT NTO S VALUES('張二','化學(xué)','80') C. ADD INTO S VALUES('張二','化學(xué)',80) D. INSERT INTO S VALUES('張二','化學(xué)',80) 13. 設(shè)關(guān)系數(shù)據(jù)庫中一個表S的結(jié)構(gòu)為:S(SN,CN,grade),其中SN為學(xué)生名,CN為課程

7、名,二者均為字符型;grade為成績,數(shù)值型,取值范圍0-100.若要更正王二的化學(xué)成績?yōu)?5分,則可用( ) . A. UPDATE S SET grade=85 WHERE SN='王二' AND CN='化學(xué)' B. UPDATE S SET grade='85' WHERE SN='王二' AND CN='化學(xué)' C. UPDATE grade=85 WHERE SN='王二' AND CN='化學(xué)' D. UPDATE grade='85' WHERE SN

8、='王二' AND CN='化學(xué)' 14. 在SQL語言中,子查詢是( ) . A. 返回單表中數(shù)據(jù)子集的查詢語言 B. 選取多表中字段子集的查詢語句 C. 選取單表中字段子集的查詢語句 D. 嵌入到另一個查詢語句之中的查詢語句 15. SQL是一種( )語言. A. 高級算法 B. 人工智能 C. 關(guān)系數(shù)據(jù)庫 D. 函數(shù)型 16. 有關(guān)系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是學(xué)生號,SNAME是學(xué)生姓名,SEX是性別, C#是課程號,CNAME是課程名稱.要查詢選修"數(shù)據(jù)庫"課的全

9、體男生姓名的SQL語句是SELECT SNAME FROM S,C,SC WHERE子句.這里的WHERE子句的內(nèi)容是( ). A.S.S# = SC.S# and C.C# = SC.C# and SEX='男' and CNAME='數(shù)據(jù)庫' B.S.S# = SC.S# and C.C# = SC.C# and SEX in'男'and CNAME in'數(shù)據(jù)庫' C.SEX '男' and CNAME ' 數(shù)據(jù)庫' D.S.SEX='男' and CNAME=' 數(shù)據(jù)

10、庫' 17. 若用如下的SQL語句創(chuàng)建了一個表SC: CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20);向SC表插入如下行時,( )行可以被插入 . A.('201009','111',60,必修) B.('200823','101',NULL,NULL) C.(NULL,'103',80,'選修') D.('201132',NULL,86,' &#

11、39;) 18. 假設(shè)學(xué)生關(guān)系S(S#,SNAME,SEX),課程關(guān)系C(C#,CNAME),學(xué)生選課關(guān)系SC(S#,C#,GRADE).要查詢選修"Computer"課的男生姓名,將涉及到關(guān)系( ). A. S B. S,SC C. C,SC D. S,C,SC 19.SQL Server2000的字符型系統(tǒng)數(shù)據(jù)類型主要包括( )。 A. int、money、char B. char、varchar、text C. datetime、binary、int D. char、varchar、int 20. 如果要在SQL Server2000中存儲圖形圖像、Word文檔文件,

12、不可采用的數(shù)據(jù)類型是( )。 A. binary B. varbinary C. image D. text 21. 不屬于SQL Server2000系統(tǒng)全局變量的是( )。 A. Error B. Connections C. Fetch_Status D. Records22.SQL Server2000提供的單行注釋語句是使用( )開始的一行內(nèi)容。 A. “/*” B. “-” C. “” D. “/” 23. 下列標(biāo)識符可以作為局部變量使用( )。 A. Myvar B. My var C. Myvar D. My var24在SQL Server 中,WAITFOR 語句中的DEL

13、AY參數(shù)是指()。A. 要等待的時間      B. 指示SQL Server 一直等到指定的時間過去C. 用于指示時間       D. 以上都不是25.下面(    )組命令,將變量count值賦值為1。ADECLARE countSELECT count=1BDIM count=1  CDECLARE countSELECT count=1DDIM  countSELECT count=126下列(    )賦值語句是錯

14、誤的。ASELECTC=1    B.  SET C=1  CSELECT DJ=單價FROM bookORDER BY 單價DESCDSET DJ=單價FROM bookORDER BY 單價DESC27在SQL Server 編程中,可使用()將多個語句捆綁。A         B. BEGIN-END  C(  )      D.   28在SQL Server 2000中,下列變量名正確的是( &#

15、160;   )。Asum        Bj            Csum           D4kk選擇題答案: (1) B (2) A (3) C (4) C (5) B (6) A (7) D (8) C (9) C (10) B (11) A (12) D (13) A (14) D

16、(15) C (16) A (17) B (18) D (19)B(20)D(21)D(22)B(23)C(24)A(25)A(26)D(27)B(28)A二、填空題1 在T-SQL編程語句中,WHILE結(jié)構(gòu)可以根據(jù)條件多次重復(fù)執(zhí)行一條語句或一個語句塊,還可以使用 () 和 CONTINUE 關(guān)鍵字在循環(huán)內(nèi)部控制 WHILE 循環(huán)中語句的執(zhí)行。2 在T-SQL編程語句中,()用于使語句在某一時刻或在一段時間間隔后繼續(xù)執(zhí)行。1.break 2.waitfor三、簡答題1. 試述SQL語言的特點. 答: (1)綜合統(tǒng)一. SQL語言集數(shù)據(jù)定義語言DDL,數(shù)據(jù)操縱語言DML,數(shù)據(jù)

17、控制語言DCL的功能于一體. (2)高度非過程化.用SQL語言進(jìn)行數(shù)據(jù)操作,只要提出"做什么",而無須指明"怎么做",因此無需了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統(tǒng)自動完成. (3)面向集合的操作方式.SQL語言采用集合操作方式,不僅操作對象,查找結(jié)果可以是元組的集合,而且一次插入,刪除,更新操作的對象也可以是元組的集合. (4)以同一種語法結(jié)構(gòu)提供兩種使用方式.SQL語言既是自含式語言,又是嵌入式語言.作為自含式語言,它能夠獨立地用于聯(lián)機交互的使用方式,也能夠嵌入到高級語言程序中,供程序員設(shè)計程序時使用. (5)語言簡捷,易學(xué)易用.

18、 2. 試述SQL的定義功能. 答: SQL的數(shù)據(jù)定義功能包括定義表,定義視圖和定義索引. SQL語言使用CREATE TABLE語句定義建立基本表,;ALTER TABLE語句修改基本表定義,DROP TABLE語句刪除基本表;建立索引使用CREATE INDEX語句建立索引, DROP INDEX語句刪除索引表;SQL語言使用CREATE VIEW命令建立視圖,DROP VIEW語句刪除視圖. 3. 用SQL語句建立“關(guān)系數(shù)據(jù)庫和關(guān)系代數(shù) 課堂練習(xí)和習(xí)題”中的四個表. 答: 對于S表:S( SNO,SNAME,STATUS,CITY); 建S表 :CREATE TABLE S (SNO C

19、HAR(3), SNAME CHAR(10), STATUS CHAR(2), CITY CHAR(10); P(PNO,PNAME,COLOR,WEIGHT); 建P表 :CREATE TABLE P (PNO CHAR(3), PNAME CHAR(10), COLOR CHAR(4), WEIGHT INT); J(JNO,JNAME,CITY); 建J表 :CREATE TABLE J (JNO CHAR(3), JNAME CHAR(10), CITY CHAR(10); SPJ(SNO,PNO,JNO,QTY); 建SPJ表 :CREATE TABLE SPJ (SNO CHAR(

20、3), PNO CHAR(3), JNO CHAR(3), QTY INT); 4. 針對上題中建立的四個表試用SQL語言完成“關(guān)系數(shù)據(jù)庫和關(guān)系代數(shù) 課堂練習(xí)和習(xí)題”的查詢. 答: (1) 求供應(yīng)工程J1零件的供應(yīng)商號碼SNO; SELECT SNO FROM SPJ WHERE JNO='J1' (2) 求供應(yīng)工程J1零件P1的供應(yīng)商號碼SNO; SELECT SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' (3) 求供應(yīng)工程J1零件為紅色的供應(yīng)商號碼SNO; SELECT SNO FROM SPJ WHERE

21、 JNO='J1' AND PNO IN (SELECT PNO FROM P WHERE COLOR='紅'); 或 SELECT SNO FROM SPJ,P WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='紅' *(4) 求沒有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號JNO; 解析: 用SQL語言表示如下: SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT

22、 SNO FROM S WHERE CITY='天津') AND PNO IN (SELECT PNO FROM P WHERE COLOR='紅'); 或 SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ, S, P WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY='天津' AND P. COLOR='紅'); 注意:從 J 表入手,以包含那些尚未使用任何零件的工程號. *(5) 求至少

23、用了供應(yīng)商S1所供應(yīng)的全部零件的工程號JNO . 解析: 用SQL語言表示如下: SELECT DISTINCT JNO FROM SPJ SPJZ WHERE NOT EXISTS (SELECT * FROM SPJ SPJX WHERE SNO='S1' AND NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO AND SPJY.SNO='S1') 5. 針對習(xí)題3中的四個表試用SQL語言完成以下各項操作: (1)找出所有供應(yīng)商的姓名和所在城市.

24、 (2)找出所有零件的名稱,顏色,重量. (3)找出使用供應(yīng)商S1所供應(yīng)零件的工程號碼. (4)找出工程項目J2使用的各種零件的名稱及其數(shù)量. (5)找出上海廠商供應(yīng)的所有零件號碼. (6)找出使用上海產(chǎn)的零件的工程名稱. (7)找出沒有使用天津產(chǎn)的零件的工程號碼. (8)把全部紅色零件的顏色改成藍(lán)色. (9)由S5供給J4的零件P6改為由S3供應(yīng),請作必要的修改. (10)從供應(yīng)商關(guān)系中刪除S2的記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)的記錄. (11)請將 (S2,J6,P4,200) 插入供應(yīng)情況關(guān)系. 答: (1) 找出所有供應(yīng)商的姓名和所在城市. SELECT SNAME, CITY FRO

25、M S; (2) 找出所有零件的名稱,顏色,重量. SELECT PNAME, COLOR, WEIGHT FROM P; (3) 找出使用供應(yīng)商S1所供應(yīng)零件的工程號碼. SELECT JNO FROM SPJ WHERE SNO='S1' (4) 找出工程項目J2使用的各種零件的名稱及其數(shù)量. SELECT P.PNAME, SPJ.QTY FROM P, SPJ WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2' (5) 找出上海廠商供應(yīng)的所有零件號碼. SELECT DISTINCT PNO FROM SPJ WHERE SNO I

26、N (SELECT SNO FROM S WHERE CITY='上海'); (6) 找出使用上海產(chǎn)的零件的工程名稱. SELECT JNAME FROM J, SPJ, S WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S.SNO AND S.CITY='上海' 或 SELECT JNAME FROM J WHERE JNO IN (SELECT JNO FROM SPJ, S WHERE SPJ. SNO=S.SNO AND S.CITY='上海'); (7) 找出沒有使用天津產(chǎn)的零件的工程號碼. SELECT JNO

27、 FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO FROM S WHERE CITY='天津'); 或 SELECT JNO FROM J WHERE NOT EXISTS (SELECT *1 FROM SPJ, S WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY='天津'); (8) 把全部紅色零件的顏色改成藍(lán)色. UPDATE P SET COLOR='藍(lán)' WHERE

28、 COLOR='紅' ; (9) 由S5供給J4的零件P6改為由S3供應(yīng),請作必要的修改. UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6' (10) 從供應(yīng)商關(guān)系中刪除S2的記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)的記錄. DELETE FROM SPJ WHERE SNO='S2' 或 DELETE FROM S WHERE SNO='S2' 解析:注意刪除順序,應(yīng)該先從SPJ表中刪除供應(yīng)商S2所供應(yīng)零件的記

29、錄,然后從從S表中刪除S2. (11) 請將 (S2,J6,P4,200) 插入供應(yīng)情況關(guān)系. INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (S2,J6,P4,200); 或 INSERT INTO SPJ VALUES (S2,P4,J6,200); 6針對系統(tǒng)示例數(shù)據(jù)庫中的相應(yīng)表,寫出滿足要求的SQL語句。(1)查詢pubs數(shù)據(jù)庫的authors表中的作者的姓(au_lname)、名(au_fname)和電話號碼(phone)。(2)使用TOP關(guān)鍵字,從Northwind數(shù)據(jù)庫的customers表中搜索返回前20%的數(shù)據(jù)。(3)查詢Northwi

30、nd數(shù)據(jù)庫的Orders表中的數(shù)據(jù),并將其中的貨物重量feight增加50%。(4)使用WHERE 子句從Northwind 數(shù)據(jù)庫的Products表中檢索出所有單位價格(UnitPrice)超過50美元的貨物名稱(Product Name )、貨物代號(ProductID)以及每單位重量(QuantityPerUnit)。(5)在Northwind 數(shù)據(jù)庫的Employees表中搜索出職務(wù)(Title)為銷售代表(Sales Representative),稱呼(TitleOfCourtesy)為小姐(MS)的所有職員的名(FirstName)、姓(LastName)和生日(BirhthD

31、ate)。(6)查詢在Northwind數(shù)據(jù)庫的Employees表中以字母A作Firstname第一個字母的雇員的Firstname和Lastname。(7)查詢Northwind數(shù)據(jù)庫Employees表中所有雇員的Firstname和Lastname,并按生日BirthDate從小到大進(jìn)行排列。(8)在Northwind數(shù)據(jù)庫的Products表中查詢出每個供應(yīng)商(Suppliers)所提供的每一種平均價格(Unitprice)超過15美元的產(chǎn)品,并按供應(yīng)商的ID分類。四、寫出下列每條語句或程序段的功能 假設(shè)存在名為AAA的數(shù)據(jù)庫,包括Students(學(xué)號 char(8),姓名 var

32、char(8),年齡 int,專業(yè) varchar(20),入學(xué)日期 DateTime)和Score(學(xué)號 char(8),課程名 varchar(10),成績 numeric(5,2))兩張表。 1. SELECT * FROM Students WHERE DATEPART(year,入學(xué)日期) =DATEPART(year,GETDATE() 2. DECLARE MyNO CHAR(8) SET MyNO='20030001' IF (SELECT 專業(yè) FROM Students WHERE 學(xué)號=MyNO)='計算機軟件' BEGIN SELECT

33、AVG(成績) AS 平均成績 FROM Score WHERE 學(xué)號=MyNO END ELSE PRINT '學(xué)號為' +MyNO+'的學(xué)生不存在或不屬于軟件專業(yè)' GO 3. declare a numeric(5,2) set a=(select avg(成績) from score) select * from score where 成績>=a 4. declare a numeric(5,2),b numeric(5,2) set a=(select max(成績) from score) set b=(select min(成績) from

34、 score) print a-b 5. declare a char(6) set a='劉亮' if(exists(select * from students where 姓名=a) print '姓名為'+a+'的同學(xué)存在!' else print '姓名為'+a+'的同學(xué)不存在!' 6. declare a char(8) set a='計算機' select 計算機專業(yè)人數(shù)=count(*) from students where left(專業(yè),3)=a 7. select year(

35、入學(xué)日期) as 入學(xué)年份,count(*) as 人數(shù) from students group by year(入學(xué)日期) 8. select month(入學(xué)日期) as 入學(xué)月份,count(*) as 人數(shù) from students group by month(入學(xué)日期) 9. select day(入學(xué)日期) as 入學(xué)日號,count(*) as 人數(shù) from students group by day(入學(xué)日期) 10. create procedure xxk1 as begin select * from students x,score y where x.學(xué)號=y.

36、學(xué)號 end 11.create procedure xxk2 as begin select x.學(xué)號,x.姓名,x.專業(yè),count(*) as 門數(shù) from students x,score y where x.學(xué)號=y.學(xué)號 group by x.學(xué)號,x.姓名,x.專業(yè) end 12.create procedure xxk3 as begin select 學(xué)號,avg(成績) as 平均成績 from score group by 學(xué)號 end 13.create procedure xxk4 ( a char(8),b varchar(10),c numeric(5,2) )

37、 as begin update score set 成績=c where 學(xué)號=a and 課程名=b end 14.create procedure xxk5 ( a char(8),b varchar(10),c numeric(5,2) ) as begin insert into score values(a,b,c) end 15.create procedure xxk6 ( a char(8),b varchar(10) ) as begin delete from score where 學(xué)號=a and 課程名=b end 16.eclare a char(8),b var

38、char(10),c numeric(5,2) declare d int set d=0 declare xxx cursor for select 學(xué)號,課程名,成績 from score open xxx fetch xxx into a,b,c while fetch_status=0 begin set d=d+1 fetch from xxx into a,b,c end close xxx deallocate xxx print d 17.declare a char(8),b varchar(10),c numeric(5,2) declare xxx cursor for

39、select 學(xué)號,課程名,成績 from score open xxx fetch xxx into a,b,c while fetch_status=0 begin print a+replicate(' ',3) +b+str(c)+replicate(' ',3) +(case when c>=90 then '優(yōu)秀' when c>=70 then '良好' when c>=60 then '及格' else '不及格' end ) fetch from xxx into

40、 a,b,c end close xxx deallocate xxx 18.declare c numeric(5,2) declare c1 int, c2 int, c3 int, c4 int set c1=0; set c2=0; set c3=0; set c4=0 declare xxx cursor for select 成績 from score open xxx fetch xxx into c while fetch_status=0 begin if(c>=90) set c1=c1+1; else if(c>=70) set c2=c2+1; else i

41、f(c>=60) set c3=c3+1; else set c4=c4+1 fetch from xxx into c end close xxx deallocate xxx print '優(yōu)秀生人數(shù):'+str(c1,5); print '良好生人數(shù):'+str(c2,5); print '及格生人數(shù):'+str(c3,5); print '及格生人數(shù):'+str(c4,5) 19.declare a char(8),b varchar(10) declare c numeric(5,2) declare d int

42、set d=80 declare xxx cursor for select 學(xué)號,課程名,成績 from score open xxx fetch xxx into a,b,c while fetch_status=0 begin if(c>=d) print a+replicate(' ',3)+b+str(c,5) fetch from xxx into a,b,c end close xxx deallocate xxx 20.declare a char(8),b varchar(10),c numeric(5,2) declare s char(8),r va

43、rchar(10) set s='20030001' set r='數(shù)學(xué)' set c=84 declare xxx cursor for select 學(xué)號,課程名 from score open xxx fetch xxx into a,b while fetch_status=0 begin if(a=s and b=r) update score set 成績=c where current of xxx fetch from xxx into a,b end close xxx deallocate xxx參考答案:1. 從Students表中查詢出所

44、有當(dāng)年(系統(tǒng)時間)入學(xué)的學(xué)生記錄。 2. 首先定義一個名為MyNo的局部變量,并給它賦初值,如果MyNo屬于計算機軟件專業(yè),則顯示出平均成績,否則顯示“學(xué)號為MyNo的學(xué)生不存在或不屬于軟件專業(yè)”。 3. 從score表中查詢出大于等于平均成績的所有記錄。 4. 求出score表中最高成績與最低成績的分?jǐn)?shù)之差。 5. 從students表中查詢姓名為a的值的同學(xué)是否存在,根據(jù)不同情況顯示出相應(yīng)信息。 6. 從students表中統(tǒng)計出專業(yè)名開頭為a的值(即“計算機”)的所有學(xué)生人數(shù)。 7. 從students表中分組統(tǒng)計出每個年份入學(xué)的學(xué)生人數(shù)。 8. 從students表中分組統(tǒng)計出每個月份

45、入學(xué)的學(xué)生人數(shù)。 9. 從students表中分組統(tǒng)計出每個日號入學(xué)的學(xué)生人數(shù)。 10. 顯示出AAA庫中所有學(xué)生的記錄信息及選課成績 11. 顯示出AAA庫中每個學(xué)生的學(xué)號、姓名、專業(yè)等信息及選課門數(shù) 12. 顯示出AAA庫中每個學(xué)生的平均成績 13. 修改score表中學(xué)號為a的值、課程名為b的值的學(xué)生的成績?yōu)閏的值。 14. 向score表中插入學(xué)號為a的值、課程名為b的值、成績?yōu)閏的值的學(xué)生成績記錄。 15. 從score表中刪除學(xué)號為a的值、課程名為b的值的學(xué)生成績記錄。 16. 從score表中統(tǒng)計并顯示出記錄總數(shù) 17. 顯示出score表中每個成績記錄,并在每條記錄最后給出優(yōu)秀

46、、良好、及格、不及格等相應(yīng)等級。 18. 從score表中按成績統(tǒng)計并顯示出優(yōu)秀、良好、及格、不及格各多少人。 19. 顯示出score表中成績大于等于d值的所有記錄。20. 修改score表中學(xué)號為a的值、課程名為b的值的學(xué)生的成績?yōu)閏的值。五、問題描述:本題用到下面三個關(guān)系表:CARD (CNO,NAME,CLASS)    借書卡。   CNO 卡號,NAME  姓名,CLASS 班級BOOKS(BNO,BNAME,AUTHOR,PRICE,QUANTITY 

47、)    圖書。     BNO 書號,BNAME 書名,AUTHOR 作者,PRICE 單價,QUANTITY 庫存冊數(shù) BORROW( CNO,BNO ,RDATE )   借書記錄。 CNO 借書卡號,BNO 書號,RDATE 還書日期備注:限定每人每種書只能借一本;庫存冊數(shù)隨借書、還書而改變。要求實現(xiàn)如下15個處理:  

48、1 寫出建立BORROW表的SQL語句,要求定義主碼完整性約束和引用完整性約束。  2 找出借書超過5本的讀者,輸出借書卡號及所借圖書冊數(shù)。  3 查詢借閱了"水滸"一書的讀者,輸出姓名及班級。  4 查詢過期未還圖書,輸出借閱者(卡號)、書號及還書日期。  5 查詢書名包括"網(wǎng)絡(luò)"關(guān)鍵詞的圖書,輸出書號、書名、作者。  6 查詢現(xiàn)有圖書中價格最高的圖書,輸出書名及作者。  7

49、 查詢當(dāng)前借了"計算方法"但沒有借"計算方法習(xí)題集"的讀者,輸出其借書卡號,并按卡號降序排序輸出。  8 將"C01"班同學(xué)所借圖書的還期都延長一周。  9 從BOOKS表中刪除當(dāng)前無人借閱的圖書記錄。  10如果經(jīng)常按書名查詢圖書信息,請建立合適的索引。  11在BORROW表上建立一個觸發(fā)器,完成如下功能:如果讀者借閱的書名是"數(shù)據(jù)庫技術(shù)及應(yīng)用",就將該讀者的借閱記錄保存在BORROW_SAVE表中(注

50、ORROW_SAVE表結(jié)構(gòu)同BORROW表)。  12建立一個視圖,顯示"力01"班學(xué)生的借書信息(只要求顯示姓名和書名)。  13查詢當(dāng)前同時借有"計算方法"和"組合數(shù)學(xué)"兩本書的讀者,輸出其借書卡號,并按卡號升序排序輸出。  14假定在建BOOKS表時沒有定義主碼,寫出為BOOKS表追加定義主碼的語句。  15對CARD表做如下修改:    a. 將NAME最大列寬增加到10個字符(假定原為6個字符)。

51、b. 為該表增加1列NAME(系名),可變長,最大20個字符。 參考答案:(未上機驗證)1. 寫出建立BORROW表的SQL語句,要求定義主碼完整性約束和引用完整性約束CREATE TABLE BORROW(    CNO int FOREIGN KEY REFERENCES CARD(CNO),    BNO int FOREIGN KEY REFERENCES BOOKS(BNO),

52、    RDATE datetime,    PRIMARY KEY(CNO,BNO) 2. 找出借書超過5本的讀者,輸出借書卡號及所借圖書冊數(shù)SELECT CNO,借圖書冊數(shù)=COUNT(*)FROM BORROWGROUP BY CNOHAVING COUNT(*)>53. 查詢借閱了"水滸"一書的讀者,輸出姓名及班級SELECT * FROM CARD cWHERE 

53、;EXISTS(    SELECT * FROM BORROW a,BOOKS b     WHERE a.BNO=b.BNO        AND b.BNAME=N'水滸'        AND a.CNO=c.CNO) 4. 查詢過期未還圖書,輸

54、出借閱者(卡號)、書號及還書日期SELECT * FROM BORROW WHERE RDATE<GETDATE() 5. 查詢書名包括"網(wǎng)絡(luò)"關(guān)鍵詞的圖書,輸出書號、書名、作者SELECT BNO,BNAME,AUTHOR FROM BOOKSWHERE BNAME LIKE N'%網(wǎng)絡(luò)%' 6. 查詢現(xiàn)有圖書中價格最高的圖書,輸出書名及作者SELECT BNO,BNAME,AUTHOR FROM BOOKSWH

55、ERE PRICE=(    SELECT MAX(PRICE) FROM BOOKS) 7. 查詢當(dāng)前借了"計算方法"但沒有借"計算方法習(xí)題集"的讀者,輸出其借書卡號,并按卡號降序排序輸出SELECT a.CNOFROM BORROW a,BOOKS bWHERE a.BNO=b.BNO AND b.BNAME=N'計算方法'    AND 

56、;NOT EXISTS(        SELECT * FROM BORROW aa,BOOKS bb        WHERE aa.BNO=bb.BNO            AND bb.BNAME=N'計算方法習(xí)題集

57、9;            AND aa.CNO=a.CNO)ORDER BY a.CNO DESC 8. 將"C01"班同學(xué)所借圖書的還期都延長一周UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)FROM CARD a,BORROW bWHERE a.CNO=b.CNO    AND a.CLASS=N'C01' 9. 從BOOKS表中刪除當(dāng)前無人借閱的圖書記錄DELETE A FROM BOOKS aWHERE NOT EXISTS(    SELECT * FROM BORROW    WHERE BNO=a.BNO) 10. 如果經(jīng)常按書名查詢圖書信息,請建立合適的索引CREAT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論