2022數據庫系統(tǒng)原理期中試卷參考答案
試題如下:

東莞理工學院(本科)試卷(期中試卷參考答案)
2021 -2022 學年第二學期
?數據庫系統(tǒng)原理
一.?選擇題(共30分??每題2分)答題要求:選擇題答案填入下表中。
1-5BBDDA
6-10ADCCD
11-15BBCAD
二.?簡答題(共10分??每題2分)
1.?假設存在一張職工表,包含“性別”屬性,要求這個屬性的值只能取“男”或“女”,這屬于哪一種完整性?
答:用戶自定義的完整性????
2.?在LIKE運算符中“%”的作用是什么?
答:匹配0個或多個字符。
3.?WHERE Age BETWEEN 20 AND 30子句,查找的Age范圍是多少?
答:Age大于等于20并且小于等于30
4.?WHERE Sdept NOT IN (‘CS’,’IS’,’MA’),查找的數據是什么?
答:查找‘CS’,’IS’,’MA’三個系之外的其他系
5.?外連接與內連接的主要區(qū)別是什么?
答:進行外連接的兩個表中,可以有一張表不滿足連接條件,而進行內連接的兩個表必須都滿足連接條件。
三.?導入數據庫和創(chuàng)建表(共10分)
1. 導入ScoreDB數據庫,并將其改名為ScoreDBTS,截圖給出“SSMS”中的運行結果。
答題要求:操作結果貼截圖,要求截圖中顯示ScoreDBTS數據庫中的各表的表名。
?

?
2. 創(chuàng)建數據表SBook
答題要求:SQL語句貼語句文本,詳細的操作結果貼截圖。
CREATE TABLE SBook( --創(chuàng)建數據表SBook
schoolYear TINYINT NOT NULL CHECK(SchoolYear IN (1,2,3,4,5,6,7,8)),--學期
Number Smallint NULL, --數量
courseNo CHAR(3) NOT NULL CHECK((CourseNo LIKE '[0-9][0-9][0-9]') AND (courseNo NOT LIKE?'000')),--課程代碼
BookNo CHAR(8) NOT NULL CHECK(BookNo LIKE '?ISBN?[0-9][0-9][0-9][0-9]'), --圖書編號
CONSTRAINT SBookPK PRIMARY KEY(CourseNo,BookNo),
FOREIGN KEY(CourseNo) REFERENCES Course(CourseNo)
)
?

?
四.??操作題(共50分)
1.?(10分)檢索所有成績小于60的學生所學課程的信息,包括學號、課程號,姓名和分數。
(1).寫出關系代數(5分)
答題要求:關系代數手寫拍照貼圖。
ΠStudent.studentNo,courseNo,studentName,score(σscore<60(StudentScore))
?

(2).寫出相應的SQL查詢語句和結果截圖(5分)
答題要求:SQL查詢語句貼語句文本,查詢結果貼截圖。
SELECT a.studentNo,courseNo,studentName,score
FROM Student a,Score b
WHERE a.studentNo=b.studentNo AND?score<60
?

2.?(10分)查詢“會計學院”,班號為“?CP1602”的所有學生的學號,姓名。請先寫出關系代數(5分),再寫出相應的SQL查詢語句(5分)。
(1).寫出關系代數(5分)
答題要求:關系代數手寫拍照貼圖。
?

(2).寫出相應的SQL查詢語句和結果截圖(5分)
答題要求:SQL查詢語句貼語句文本,查詢結果貼截圖。
SELECT?studentNo,studentName
FROM?Student?a,Class?b
WHERE?b.institute='會計學院'?AND?b.classNo='CP1602'?AND?a.classNo=b.classNo
?

?
3.?查詢成績低于該門課程平均分的學生的學號、姓名和成績,寫出相應的SQL查詢語句,寫出相應的SQL查詢語句和結果截圖(10分)
答題要求:SQL查詢語句貼語句文本,查詢結果貼截圖。
SELECT DISTINCT a.studentNo,c.studentName,a.score
FROM Score a,(SELECT courseNo,AVG(SCORE)?AS avgScore FROM Score GROUP BYcourseNo) b,Student c
WHERE a.courseNo=b.courseNo AND a.score<b.avgScore AND a.studentNo=c.studentNo
?

4.?查詢同時選修過“體育”和“操作系統(tǒng)”兩門課程的同學學號、姓名以及該同學所選修的所有課程的課程名和相應成績,按學號(升序)、成績(降序)排序輸出。寫出相應的SQL語句(10分)。
?
??SELECT ?a.studentNo, studentName, courseName, score
FROM Student a, Course b, Score c
WHERE ?a.studentNo=c.studentNo AND b.courseNo=c.courseNo
??????AND ?a.studentNo?IN?
??????????????????( SELECT studentNo?FROM Score
???????????????????WHERE courseNo?IN?
???????????????????????????( SELECT courseNo?FROM?Course
????????????????????????????WHERE courseName='體育'?)?)
??????AND ?a.studentNo?IN
??????????????????( SELECT studentNo?FROM Score
???????????????????WHERE?courseNo?IN?
?????????????????????????( SELECT courseNo?FROM Course
??????????????????????????WHERE courseName='操作系統(tǒng)'?)?)
ORDER BY a.studentNo, score DESC
?
?
SELECT?a.studentNo,a.studentName,courseName,score
FROM?Student?a,Score?b,Course?c,
(SELECT?DISTINCT?studentNo
?FROM?Score?a,Course?b
?WHERE?b.courseName='體育'?AND?a.courseNo=b.courseNo)?d,
(SELECT?DISTINCT?studentNo
?FROM?Score?a,Course?b
?WHERE?b.courseName='操作系統(tǒng)'?AND?a.courseNo=b.courseNo)?e
WHERE?d.studentNo=e.studentNo?AND?b.studentNo=d.studentNo?AND?a.studentNo=b.studentNo?AND?b.courseNo=c.courseNo
ORDER?BY?a.studentNo?,score?DESC
?

?
5.?創(chuàng)建一個視圖VIstuScore,查詢至少選修了兩門課程并且平均成績大于或等于80分的學生的學號、姓名、成績和所在班級。寫出相應的SQL查詢語句和結果截圖(10分)
?
答題要求:SQL查詢語句貼語句文本,結果截圖。
CREATE VIEW VIstuScore
AS
SELECT?distinct?A.studentNo,c.studentName,c.classNo,Score
FROM??Score?B,?(select?distinct?studentno
from?score
group?by?studentno
having?COUNT(courseno)>=2 and?AVG(score)>=80)?A,student?C?
WHERE?A.studentNo=B.studentNo?AND?A.studentNo=C.studentNo
GROUP?BY?A.studentNo,c.studentName,c.classNo,Score
?

例如:修改平均成績大于或等于79分:
SELECT?distinct?A.studentNo,c.studentName,c.classNo,Score
FROM??Score?B,?(select?distinct?studentno
from?score
group?by?studentno
having?COUNT(courseno)>=2 and?AVG(score)>=79)?A,student?C?
WHERE?A.studentNo=B.studentNo?AND?A.studentNo=C.studentNo
GROUP?BY?A.studentNo,c.studentName,c.classNo,Score
?
