第3章 關系數據庫標准語言SQL
一、選擇題
1、SQL語言是 的語言,易學習。
A.過程化 B.非過程化 C.格式化 D.導航式 答案:B
2、SQL語言是 語言。
A.層次數據庫 B.網絡數據庫 C.關系數據庫 D.非數據庫 答案:C
3、SQL語言具有 的功能。
A.關系規范化、數據操縱、數據控制 B.數據定義、數據操縱、數據控制
C.數據定義、關系規范化、數據控制 D.數據定義、關系規范化、數據操縱 答案:B
4、SQL語言具有兩種使用方式,分別稱為交互式SQL和 。
A.提示式SQL B.多用戶SQL C.嵌入式SQL D.解釋式SQL 答案:C
5、假定學生關系是S(S#,SNAME,SEX,AGE),課程關系是C(C#,CNAME,TEACHER),學生選課關系是SC(S#,C#,GRADE)。
要查找選修“COMPUTER”課程的“女”學生姓名,將涉及到關系 。
A.S B.SC,C C.S,SC D.S,C,SC 答案:D
6、若用如下的SQL語句創建一個student表:
CREATE TABLE student(NO C(4) NOT NULL,
NAME C(8) NOT NULL,
SEX C(2),
AGE N(2))
可以插入到student表中的是 。
A.(‘1031’,‘曾華’,男,23) B.(‘1031’,‘曾華’,NULL,NULL)
C.(NULL,‘曾華’,‘男’,‘23’) D.(‘1031’,NULL,‘男’,23) 答案:B
7、當兩個子查詢的結果 時,可以執行並,交,差操作.
A.結構完全不一致 B.結構完全一致
C.結構部分一致 D.主鍵一致 答案:B
第8到第10題基於這樣的三個表即學生表S、課程表C和學生選課表SC,它們的結構如下:
S(S#,SN,SEX,AGE,DEPT)
C(C#,CN)
SC(S#,C#,GRADE)
其中:S#為學號,SN為姓名,SEX為性別,AGE為年齡,DEPT為系別,C#為課程號,CN為課程名,GRADE為成績。
8、檢索所有比“王華”年齡大的學生姓名、年齡和性別。正確的SELECT語句是 。
A.SELECT SN,AGE,SEX FROM S
WHERE AGE>(SELECT AGE FROM S
WHERE SN=‘王華’)
B.SELECT SN,AGE,SEX
FROM S
WHERE SN=‘王華’
C.SELECT SN,AGE,SEX FROM S
WHERE AGE>(SELECT AGE
WHERE SN=‘王華’)
D.SELECT SN,AGE,SEX
FROM S
WHERE AGE>王華.AGE
答案:A
9、檢索選修課程‘C2’的學生中成績最高的學生的學號。正確的SELECT語句是 。
A. SELECT S# FORM SC
WHERE C#=‘C2’ AND GRADE>=
(SELECT GRADE FORM SC
WHERE C#=‘C2’)
B.SELECT S# FORM SC
WHERE C#=‘C2’ AND GRADE IN
(SELECT GRADE FORM SC
WHERE C#=‘C2’)
C.SELECT S# FORM SC
WHERE C#=‘C2’ AND GRADE NOT IN
(SELECT GRADE FORM SC
WHERE C#=‘C2’)
D.SELECT S# FORM SC
WHERE C#=‘C2’ AND GRADE>=ALL
(SELECT GRADE FORM SC
WHERE C#=‘C2’)
答案:D
10、檢索學生姓名及其所選修課程的課程號和成績。正確的SELECT語句是 。
A.SELECT S.SN,SC.C#,SC.GRADE
FROM S
WHERE S.S#=SC.S#
B.SELECT S.SN,SC.C#,SC.GRADE
FROM SC
WHERE S.S#=SC.GRADE
C.SELECT S.SN,SC.C#,SC.GRADE
FROM S,SC
WHERE S.S#=SC.S#
D.SELECT S.SN,SC.C#,SC.GRADE
FROM S.SC
答案:C
11、關系代數中的л運算符對應SELECT語句中的( )子句.
A.SELECT B.FROM C.WHERE D.GROUP BY 答案:A
12、關系代數中的σ運算符對應SELECT語句中的( )子句.
A.SELECT B.FROM C.WHERE D.GROUP BY 答案:C
13、WHERE子句的條件表達式中,可以匹配0個到多個字符的通配符是( ).
A. * B. % C. - D. ? 答案:B
14、WHERE子句的條件表達式中,可以匹配單個字符的通配符是( ).
A. * B. % C. - D. ? 答案:C
15、SELECT語句中與HAVING子句同時使用的是( )子句.
A.ORDER BY B.WHERE C.GROUP BY D.無需配合 答案:C
16、與WHERE G BETWEEN 60 AND 100語句等價的子句是( ). 答案:D
- WHERE G>60 AND G<100
- WHERE G>=60 AND G<100
- WHERE G>60 AND G<=100
- WHERE G>=60 AND G<=100
17、SELECT語句執行的結果是( ). 答案:C
A.數據項 B.元組 C.表 D.視圖
18、下列SQL語句中,修改表結構的是____。答案:A
A.ALTER B.CREATE C.UPDATE D.INSERT
二、填空題
1、SQL是 結構化查詢語言 。 答案:結構化查詢語言
2、視圖是一個虛表,它是從 ① 中導出的表。在數據庫中,只存放視圖的 ② ,不存放視圖的 ③ 。 答案:①一個或幾個基本表 ②定義 ③視圖對應的數據
3、設有如下關系表R:
R(No,NAME,SEX,AGE,CLASS)
主關鍵字是NO
其中NO為學號,NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號。
寫出實現下列功能的SQL語句。
①插入一個記錄(25,’李明’,’男’,21,’95031’); 。
②插入’95031’班學號為30、姓名為’鄭和’的學生記錄; 。
③將學號為10的學生姓名改為’王華’; 。
④將所有’95101’班號改為’95091’; 。
⑤刪除學號為20的學生記錄; 。
⑥刪除姓’王’的學生記錄; 。
答案:
①INSERT INTO R VALUES(25,’李明’,’男’,21,’95031’)
②INSERT INTO R(NO,NAME,CLASS) VALUES(30,’鄭和’,’95031’)
③UPDATE R SET NAME=‘王華’ WHERE NO=10
④UPDATE R SET CLASS=’95091’WHERE CLASS=’95101’
⑤DELETE FROM R WHERE NO=20
⑥DELETE FROM R WHERE NAME LIKE’王%’
4、SELECT語句中,__WHERE _____子句用於選擇滿足給定條件的元組,使用_GROUP BY______子句可按指定列的值分組,同時使用__HAVING_____子句可提取滿足條件的組。
5、 在SQL中,如果希望將查詢結果排序,應在SELECT語句中使用_ORDER BY__子句,其中_ASC____選項表示升序,_DESC______選項表示將降序。
6、子查詢的條件不依賴與父查詢,這類查詢稱之為_不相關子查詢_______,否則稱之為_相關子查詢_______。
7、若一個視圖是從單個基本表中導出來的,並且只是去掉了基本表的某些行和某些列,但保留了碼,我們稱這類視圖為__行列子集視圖_________。
三、SQL練習
1、設學生課程數據庫中有三個關系:
學生關系S(S#,SNAME,AGE,SEX)
學習關系SC(S#,C#,GRADE)
課程關系C(C#,CNAME)
其中S#、C#、SNAME、AGE、SEX、GRADE、CNAME分別表示學號、課程號、姓名、年齡、性別、成績和課程名。
用SQL語句表達下列操作。
(1)檢索選修課程名稱為 ’MATHS’ 的學生的學號與姓名。
(2)檢索至少學習了課程號為 ’C1’ 和 ’C2’ 的學生的學號。
(3)檢索年齡在18到20之間(含18和20)的女生的學號、姓名和年齡。
(4)檢索平均成績超過80分的學生學號和平均成績。
(5)檢索選修了三門課以上的學生的姓名。
答案:(1)SELECT S#,SNAME
FROM S,SC,C
WHERE S.S#=SC.S#
AND C.C#=SC.C#
AND CNAME=’ MATHS’
(2) SELECT S#
FROM SC
WHERE CNO=’C1’ AND S# IN( SELECT S#
FROM SC
WHERE CNO=’C2’)
(3)SELECT S#,SNAME,AGE
FROM S
WHERE SEX=’女’AND AGE BETWEEN 18 AND 20
(4) SELECT S# ,AVG(GRADE)
FROM SC
GROUP BY S#
HAVING AVG(GRADE)>80
(5) SELECT SNAME
FROM S,SC
WHERE S.S#=SC.S#
GROUP BY S#
HAVING COUNT(*)>3
2、設學生-課程數據庫中包括三個表:
學生表:Student (Sno,Sname,Sex,Sage,Sdept)
課程表:Course(Cno,Cname,Ccredit)
學生選課表:SC(Sno,Cno,Grade)
其中Sno、Sname、Sex、Sage、Sdept、 Cno、Cname、Ccredit、Grade分別表示學號、姓名、性別、年齡、所在系名、課程號、課程名、學分和成績。
試用SQL語言完成下列項操作:
(1)創建一個計算機科學系學生信息視圖S_CS_VIEW,該視圖包含的屬性為:Sno、Sname、Sex。
(2)通過上面第2題創建的視圖修改數據,把‘王平’的名字改為‘王慧平’。
(3)創建一選修數據庫課程信息的視圖,視圖名稱為datascore_view,該視圖包含的屬性為: SNO、SNAME、GRADE。
答案:
(1) CREATE VIEW S_CS_VIEW
AS
SELECT SNO, SNAME, SEX
FROM STUDENT
WHERE Sdept=’CS’
(2)UPDATE S_CS_VIEW
SET SNAME=’王慧平’
WHERE SNAME=’王平’
(3) CREATE VIEW datascore_view
AS
SELECT SNO,SNAME,GRADE
FROM STUDENT, SC, COURSE
WHERE STUDENT.SNO=SC.SNO
AND COURSE.CNO=SC.CNO
AND CNAME=’數據庫’