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)

文檔簡介

本文格式為Word版,下載可任意編輯——SQL語言(綜合)課堂練習(xí)和習(xí)題SQL語言課堂練習(xí)和習(xí)題

一、選擇題

1.SQL語言是()的語言,簡單學(xué)習(xí).

A.過程化B.非過程化C.格式化D.導(dǎo)航式

2.SQL語言的數(shù)據(jù)操縱語句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最頻繁的語句是().

A.SELECTB.INSERTC.UPDATED.DELETE

3.在視圖上不能完成的操作是().

A.更新視圖B.查詢C.在視圖上定義新的表D.在視圖上定義新的視圖

4.SQL語言集數(shù)據(jù)查詢,數(shù)據(jù)操縱,數(shù)據(jù)定義和數(shù)據(jù)控制功能于一體,其中,CREATE,DROP,ALTER語句是實現(xiàn)哪種功能().

A.數(shù)據(jù)查詢B.數(shù)據(jù)操縱C.數(shù)據(jù)定義D.數(shù)據(jù)控制

5.SQL語言中,刪除一個視圖的命令是().

A.DELETEB.DROPC.CLEARD.REMOVE6.在SQL語言中的視圖VIEW是數(shù)據(jù)庫的().

A.外模式B.模式C.內(nèi)模式D.存儲模式7.以下的SQL語句中,()不是數(shù)據(jù)定義語句.

A.CREATETABLEB.DROPVIEWC.CREATEVIEWD.GRANT8.若要撤銷數(shù)據(jù)庫中已經(jīng)存在的表S,可用().

A.DELETETABLESB.DELETESC.DROPTABLESD.DROPS9.若要在基本表S中增加一列CN(課程名),可用().

A.ADDTABLES(CNCHAR(8))B.ADDTABLESALTER(CNCHAR(8))

C.ALTERTABLESADD(CNCHAR(8))D.ALTERTABLES(ADDCNCHAR(8))

10.學(xué)生關(guān)系模式S(S#,Sname,Sex,Age),S的屬性分別表示學(xué)生的學(xué)號,姓名,性別,年齡.要在表S中刪除一個屬性\年齡\可選用的SQL語句是().

A.DELETEAgefromSB.ALTERTABLESDROPAgeC.UPDATESAgeD.ALTERTABLES'Age'

11.有關(guān)系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是學(xué)生號,SNAME是學(xué)生姓名,SAGE是學(xué)生年齡,C#是課程號,CNAME是課程名稱.要查詢選修\課的年齡不小于20的全體學(xué)生姓名的SQL語句是SELECTSNAMEFROMS,C,SCWHERE子句.這里的WHERE子句的內(nèi)容是().

A.S.S#=SC.S#andC.C#=SC.C#andSAGE>=20andCNAME='ACCESS'B.S.S#=SC.S#andC.C#=SC.C#andSAGEin>=20andCNAMEin'ACCESS'C.SAGEin>=20andCNAMEin'ACCESS'D.SAGE>=20andCNAME='ACCESS'

12.設(shè)關(guān)系數(shù)據(jù)庫中一個表S的結(jié)構(gòu)為S(SN,CN,grade),其中SN為學(xué)生名,CN為課程名,二者均為字符型;grade為成績,數(shù)值型,取值范圍0-100.若要把\張二的化學(xué)成績80分\插入S中,則可用().

A.ADDINTOSVALUES('張二','化學(xué)','80')B.INSERTNTOSVALUES('張二','化學(xué)','80')C.ADDINTOSVALUES('張二','化學(xué)',80)D.INSERTINTOSVALUES('張二','化學(xué)',80)

13.設(shè)關(guān)系數(shù)據(jù)庫中一個表S的結(jié)構(gòu)為:S(SN,CN,grade),其中SN為學(xué)生名,CN為課程名,二者均為字符型;grade為成績,數(shù)值型,取值范圍0-100.若要更正王二的化學(xué)成績?yōu)?5分,則可用().

A.UPDATESSETgrade=85WHERESN='王二'ANDCN='化學(xué)'B.UPDATESSETgrade='85'WHERESN='王二'ANDCN='化學(xué)'C.UPDATEgrade=85WHERESN='王二'ANDCN='化學(xué)'D.UPDATEgrade='85'WHERESN='王二'ANDCN='化學(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ù)庫\課的全體男生姓名的SQL語句是SELECTSNAMEFROMS,C,SCWHERE子句.這里的WHERE子句的內(nèi)容是().

A.S.S#=SC.S#andC.C#=SC.C#andSEX='男'andCNAME='數(shù)據(jù)庫'B.S.S#=SC.S#andC.C#=SC.C#andSEXin'男'andCNAMEin'數(shù)據(jù)庫'C.SEX'男'andCNAME'數(shù)據(jù)庫'D.S.SEX='男'andCNAME='數(shù)據(jù)庫'17.若用如下的SQL語句創(chuàng)立了一個表SC:

CREATETABLESC(S#CHAR(6)NOTNULL,C#CHAR(3)NOTNULL,SCOREINTEGER,NOTECHAR(20));向SC表插入如下行時,()行可以被插入.

A.('202309','111',60,必修)

B.('202323','101',NULL,NULL)C.(NULL,'103',80,'選修')D.('202332',NULL,86,'')

18.假設(shè)學(xué)生關(guān)系S(S#,SNAME,SEX),課程關(guān)系C(C#,CNAME),學(xué)生選課關(guān)系SC(S#,C#,GRADE).要查詢選修\課的男生姓名,將涉及到關(guān)系().

A.SB.S,SCC.C,SCD.S,C,SC

19.SQLServer2000的字符型系統(tǒng)數(shù)據(jù)類型主要包括()。

A.int、money、charB.char、varchar、textC.datetime、binary、intD.char、varchar、int

20.假使要在SQLServer2000中存儲圖形圖像、Word文檔文件,不可采用的數(shù)據(jù)類型是()。

A.binaryB.varbinaryC.imageD.text21.不屬于SQLServer2000系統(tǒng)全局變量的是()。A.@@ErrorB.@@ConnectionsC.@@Fetch_StatusD.@Records

22.SQLServer2000提供的單行解釋語句是使用()開始的一行內(nèi)容。A.“/*〞B.“--〞C.“{〞D.“/〞

23.以下標(biāo)識符可以作為局部變量使用()。

A.[@Myvar]B.MyvarC.@MyvarD.@Myvar24.在SQLServer中,WAITFOR語句中的DELAY參數(shù)是指()。A.要等待的時間B.指示SQLServer一直等到指定的時間過去C.用于指示時間D.以上都不是

25.下面()組命令,將變量count值賦值為1。

A.DECLARE@countSELECT@count=1B.DIMcount=1C.DECLAREcountSELECTcount=1D.DIM@countSELECT@count=1

26.以下()賦值語句是錯誤的。

A.SELECT@C=1B.SET@C=1C.SELECT@DJ=單價FROMbook

ORDERBY單價DESCD.SET@DJ=單價FROMbook

ORDERBY單價DESC

27.在SQLServer編程中,可使用()將多個語句捆綁。

A.{}B.BEGIN-ENDC.()D.[]

28.在SQLServer2000中,以下變量名正確的是()。

A.@sumB.jC.sumD.4kk選擇題答案:

(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(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.break2.waitfor

三、簡答題

1.試述SQL語言的特點.答:

(1)綜合統(tǒng)一.SQL語言集數(shù)據(jù)定義語言DDL,數(shù)據(jù)操縱語言DML,數(shù)據(jù)控制語言DCL的功能于一體.

(2)高度非過程化.用SQL語言進(jìn)行數(shù)據(jù)操作,只要提出\做什么\而無須指明\怎么做\因此無需了解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統(tǒng)自動完成.

(3)面向集合的操作方式.SQL語言采用集合操作方式,不僅操作對象,查找結(jié)果可以是元組的集合,而且一次插入,刪除,更新操作的對象也可以是元組的集合.

(4)以同一種語法結(jié)構(gòu)提供兩種使用方式.SQL語言既是自含式語言,又是嵌入式語言.作為自含式語言,它能夠獨立地用于聯(lián)機(jī)交互的使用方式,也能夠嵌入到高級語言程序中,供程序員設(shè)計程序時使用.

(5)語言簡捷,易學(xué)易用.2.試述SQL的定義功能.

答:SQL的數(shù)據(jù)定義功能包括定義表,定義視圖和定義索引.

SQL語言使用CREATETABLE語句定義建立基本表,;ALTERTABLE語句修改基本表定義,DROPTABLE語句刪除基本表;建立索引使用CREATEINDEX語句建立索引,DROPINDEX語句刪除索引表;SQL語言使用CREATEVIEW命令建立視圖,DROPVIEW語句刪除視圖.

3.用SQL語句建立“關(guān)系數(shù)據(jù)庫和關(guān)系代數(shù)課堂練習(xí)和習(xí)題〞中的四個表.答:對于S表:S(SNO,SNAME,STATUS,CITY);建S表:

CREATETABLES(SNOCHAR(3),SNAMECHAR(10),STATUSCHAR(2),CITYCHAR(10));

P(PNO,PNAME,COLOR,WEIGHT);建P表:

CREATETABLEP(PNOCHAR(3),PNAMECHAR(10),COLORCHAR(4),WEIGHTINT);

J(JNO,JNAME,CITY);建J表:

CREATETABLEJ(JNOCHAR(3),JNAMECHAR(10),CITYCHAR(10));

SPJ(SNO,PNO,JNO,QTY);建SPJ表:

CREATETABLESPJ(SNOCHAR(3),PNOCHAR(3),JNOCHAR(3),QTYINT);

4.針對上題中建立的四個表試用SQL語言完成“關(guān)系數(shù)據(jù)庫和關(guān)系代數(shù)課堂練習(xí)和習(xí)題〞的查詢.

答:(1)求供應(yīng)工程J1零件的供應(yīng)商號碼SNO;SELECTSNOFROMSPJ

WHEREJNO='J1';

(2)求供應(yīng)工程J1零件P1的供應(yīng)商號碼SNO;SELECTSNOFROMSPJ

WHEREJNO='J1'ANDPNO='P1';

(3)求供應(yīng)工程J1零件為紅色的供應(yīng)商號碼SNO;SELECTSNOFROMSPJ

WHEREJNO='J1'ANDPNOIN(SELECTPNOFROMP

WHERECOLOR='紅');或

SELECTSNOFROMSPJ,P

WHEREJNO='J1'ANDSPJ.PNO=P.PNOANDCOLOR='紅';*(4)求沒有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號JNO;解析:

用SQL語言表示如下:SELECTJNOFROMJ

WHERENOTEXISTS(SELECT*FROMSPJ

WHERESPJ.JNO=J.JNOANDSNOIN(SELECTSNOFROMS

WHERECITY='天津')ANDPNOIN(SELECTPNOFROMP

WHERECOLOR='紅'));或

SELECTJNOFROMJ

WHERENOTEXISTS(SELECT*

=90then'優(yōu)秀'when@c>=70then'良好'when@c>=60then'及格'else'不及格'end)

fetchfromxxxinto@a,@b,@cendclosexxxdeallocatexxx

18.declare@cnumeric(5,2)

declare@c1int,@c2int,@c3int,@c4intset@c1=0;set@c2=0;set@c3=0;set@c4=0declarexxxcursor

forselect成績fromscoreopenxxx

fetchxxxinto@c

while@@fetch_status=0begin

if(@c>=90)set@c1=@c1+1;

elseif(@c>=70)set@c2=@c2+1;elseif(@c>=60)set@c3=@c3+1;elseset@c4=@c4+1fetchfromxxxinto@cendclosexxxdeallocatexxx

print'優(yōu)秀生人數(shù):'+str(@c1,5);print'良好生人數(shù):'+str(@c2,5);print'及格生人數(shù):'+str(@c3,5);print'及格生人數(shù):'+str(@c4,5)

19.declare@achar(8),@bvarchar(10)declare@cnumeric(5,2)declare@dintset@d=80

declarexxxcursor

forselect學(xué)號,課程名,成績fromscoreopenxxx

fetchxxxinto@a,@b,@cwhile@@fetch_status=0begin

if(@c>=@d)print@a+replicate('',3)+@b+str(@c,5)fetchfromxxxinto@a,@b,@cendclosexxxdeallocatexxx

20.declare@achar(8),@bvarchar(10),@cnumeric(5,2)declare@schar(8),@rvarchar(10)set@s='20230001'set@r='數(shù)學(xué)'set@c=84

declarexxxcursor

forselect學(xué)號,課程名fromscoreopenxxx

fetchxxxinto@a,@bwhile@@fetch_status=0begin

if(@a=@sand@b=@r)updatescoreset成績=@c

wherecurrentofxxx

fetchfromxxxinto@a,@bendclosexxxdeallocatexxx參考答案:

1.從Students表中查詢出所有當(dāng)年(系統(tǒng)時間)入學(xué)的學(xué)生記錄。

2.首先定義一個名為@MyNo的局部變量,并給它賦初值,假使@MyNo屬于計算機(jī)軟件專業(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的值(即“計算機(jī)〞)的所有學(xué)生人數(shù)。7.從students表中分組統(tǒng)計出每個年份入學(xué)的學(xué)生人數(shù)。8.從students表中分組統(tǒng)計出每個月份入學(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)锧c的值。

14.向score表中插入學(xué)號為@a的值、課程名為@b的值、成績?yōu)锧c的值的學(xué)生成績記

錄。

15.從score表中刪除學(xué)號為@a的值、課程名為@b的值的學(xué)生成績記錄。16.從score表中統(tǒng)計并顯示出記錄總數(shù)

17.顯示出score表中每個成績記錄,并在每條記錄最終給出優(yōu)秀、良好、及格、不及格等相應(yīng)等級。

18.從score表中按成績統(tǒng)計并顯示出優(yōu)秀、良好、及格、不及格各多少人。19.顯示出score表中成績大于等于@d值的所有記錄。

20.修改score表中學(xué)號為@a的值、課程名為@b的值的學(xué)生的成績?yōu)锧c的值。

五、問題描述:此題用到下面三個關(guān)系表:

CARD(CNO,NAME,CLASS)借書卡。CNO卡號,NAME姓名,CLASS班級BOOKS(BNO,BNAME,AUTHOR,PRICE,QUANTITY)圖書。BNO書號,BNAME書名,AUTHOR,PRICE單價,QUANTITY庫存冊數(shù)

BORROW(CNO,BNO,RDATE)借書記錄。CNO借書卡號,BNO書號,RDATE還書日期

備注:限定每人每種書只能借一本;庫存冊數(shù)隨借書、還書而改變。

要求實現(xiàn)如下15個處理:

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

7.查詢當(dāng)前借了\計算方法\但沒有借\計算方法習(xí)題集\的讀者,輸出其借書卡號,并按卡號降序排序輸出。

8.將\班同學(xué)所借圖書的還期都延長一周。9.從BOOKS表中刪除當(dāng)前無人借閱的圖書記錄。10.假使經(jīng)常按書名查詢圖書信息,請建立適合的索引。

11.在BORROW表上建立一個觸發(fā)器,完成如下功能:假使讀者借閱的書名是\數(shù)據(jù)庫技術(shù)及應(yīng)用\,就將該讀者的借閱記錄保存在BORROW_SAVE表中(注ORROW_SAVE表結(jié)構(gòu)同BORROW表)。

12.建立一個視圖,顯示\力01\班學(xué)生的借書信息(只要求顯示姓名和書名)。

13.查詢當(dāng)前同時借有\(zhòng)計算方法\和\組合數(shù)學(xué)\兩本書的讀者,輸出其借書卡號,并按卡號升序排序輸出。

14.假定在建BOOKS表時沒有定義主碼,寫出為BOOKS表追加定義主碼的語句。15.對CARD表做如下修改:

a.將NAME最大列寬增加到10個字符(假定原為6個字符)。b.為該表增加1列NAME(系名),可變長,最大20個字符。

參考答案:(未上機(jī)驗證)

1.寫出建立BORROW表的SQL語句,要求定義主碼完整性約束和引用完整性約束CREATETABLEBORROW(CNOintFOREIGNKEYREFERENCESCARD(CNO),BNOintFOREIGNKEYREFERENCESBOOKS(BNO),RDATEdatetime,PRIMARYKEY(CNO,BNO))2.找出借書超過5本的讀者,輸出借書卡號及所借圖書冊數(shù)SELECTCNO,借圖書冊數(shù)=COUNT(*)FROMBORROWGROUPBYCNOHAVINGCOUNT(*)>53.查詢借閱了\水滸\一書的讀者,輸出姓名及班級SELECT*FROMCARDcWHEREEXISTS(SELECT*FROMBORROWa,BOOKSbWHEREa.BNO=b.BNOANDb.BNAME=N'水滸'ANDa.CNO=c.CNO)4.查詢過期未還圖書,輸出借閱者(卡號)、書號及還書日期SELECT*FROMBORROWWHERERDATE6.查詢現(xiàn)有圖書中價格最高的圖書,輸出書名及SELECTBNO,BNAME,AUTHORFROMBOOKSWHEREPRICE=(SELECTMAX(PRICE)FROMBOOKS)7.查詢當(dāng)前借了\計算方法\但沒有借\計算方法習(xí)題集\的讀者,輸出其借書卡號,并按卡號降序排序輸出SELECTa.CNOFROMBORROWa,BOOKSbWHEREa.BNO=b.BNOANDb.BNAME=N'計算方法'ANDNOTEXISTS(SELECT*FROMBORROWaa,BOOKSbbWHEREaa.BNO=bb.BNOANDbb.BNAME=N'計算方法習(xí)題集'ANDaa.CNO=a.CNO)ORDERBYa.CNODESC8.將\班同學(xué)所借圖書的還期都延長一周UPDATEbSETRDATE=DATEADD(Day,7,b.RDATE)FROMCARDa,BORROWbWHEREa.CNO=b.CNOANDa.CLASS=N'C01'9.從BOOKS表中刪除當(dāng)前無人借閱的圖書記錄DELETEAFROMBOOKSaWHERENOTEXISTS(SELECT*FROMBORROWWHEREBNO=a.BNO)10.假使經(jīng)常按書名查詢圖書信息,請建立適合的索引CREATECLUSTEREDINDEXIDX_BOOKS_BNAMEONBOOKS(BNAME)11.在BORROW表上建立一個觸發(fā)器,完成如下功能:假使讀者借閱的書名是\數(shù)據(jù)庫技術(shù)及應(yīng)用\,就將該讀者的借閱記錄保存在BORROW_SAVE表中(注ORROW_SAVE表結(jié)構(gòu)同BORROW表)CREATETRIGGERTR_SAVEONBORROWFORINSERT,UPDATEASIF@@ROWCOUNT>0INSERTBORROW_SAVESELECTi.*FROMINSERTEDi,BOOKSbWHEREi.BNO=b.BNOANDb.BNAME=N'數(shù)據(jù)庫技術(shù)及應(yīng)用'12.建立一個視圖,顯示\力01\班學(xué)生的借書信息(只要求顯示姓名和書名)CREA

溫馨提示

  • 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

提交評論