![廣藥數(shù)據(jù)庫(kù)實(shí)驗(yàn)答案參考_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/29/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf2/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf21.gif)
![廣藥數(shù)據(jù)庫(kù)實(shí)驗(yàn)答案參考_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/29/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf2/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf22.gif)
![廣藥數(shù)據(jù)庫(kù)實(shí)驗(yàn)答案參考_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/29/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf2/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf23.gif)
![廣藥數(shù)據(jù)庫(kù)實(shí)驗(yàn)答案參考_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/29/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf2/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf24.gif)
![廣藥數(shù)據(jù)庫(kù)實(shí)驗(yàn)答案參考_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2020-10/29/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf2/75aeb4db-f8ee-47ac-8c0a-109ebcc7faf25.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、-實(shí)驗(yàn)三 參考答案(一)、數(shù)據(jù)庫(kù)、表的創(chuàng)建及刪除1.將數(shù)據(jù)庫(kù)bookdb的相關(guān)屬性(系統(tǒng)默認(rèn)設(shè)置),填入下表:項(xiàng)目 內(nèi)容數(shù)據(jù)庫(kù)所有者 XP-6Administrator(Windows身份登錄SQL server)數(shù)據(jù)庫(kù)名稱 bookdb數(shù)據(jù)庫(kù)邏輯文件名 bookdb數(shù)據(jù)文件物理名 D:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatabookdb.mdf(本機(jī)SQL SERVER系統(tǒng)安裝目錄在D盤)數(shù)據(jù)庫(kù)初始大小 3MB數(shù)據(jù)文件最大值 不限制增長(zhǎng)數(shù)據(jù)文件增長(zhǎng)量 1MB日志邏輯文件名 bookdb_log日志文件物理名 D:Program Fil
2、esMicrosoft SQL ServerMSSQL.1MSSQLDatabookdb_log.ldf(本機(jī)SQL SERVER系統(tǒng)安裝目錄在D盤)日志文件初始大小 1MB日志文件最大值 2,097,152MB日志文件增長(zhǎng)量 10%*/-根據(jù)“二、實(shí)驗(yàn)內(nèi)容”的要求,使用T-SQL命令創(chuàng)建/刪除數(shù)據(jù)庫(kù)EDUC,創(chuàng)建數(shù)據(jù)表student、course、sc。-2.刪除bookdb數(shù)據(jù)庫(kù)。DROP DATABASE bookdb-3.創(chuàng)建數(shù)據(jù)庫(kù)EDUC。CREATE DATABASE EDUCON PRIMARY (NAME=EDUC_data,FILENAME=C:EDUC_data.mdf,S
3、IZE=4MB,MAXSIZE=10MB,FILEGROWTH=1MB)LOG ON (NAME=EDUC_log,FILENAME=C:EDUC_log.ldf,SIZE=1MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)-4.創(chuàng)建數(shù)據(jù)表Student。USE EDUCCREATE TABLE Student(Sno varchar(20) NOT NULL CONSTRAINT PK_Student PRIMARY KEY,Sname varchar(10) NOT NULL,Sage int,Ssex varchar(2),Sdept varchar(30)-5.
4、創(chuàng)建數(shù)據(jù)表Course。CREATE TABLE Course(Cno varchar(15) NOT NULL CONSTRAINT PK_Course PRIMARY KEY,Cname varchar(30),Cpno varchar(15),Ccredit int)-6.創(chuàng)建數(shù)據(jù)表SC。CREATE TABLE SC(Sno varchar(20) NOT NULL,Cno varchar(15) NOT NULL,Grade DECIMAL(9,2),CONSTRAINT PK_SC PRIMARY KEY(Sno,Cno)-(二)、修改基本表的定義-1修改列屬性-(1)用SSMS將
5、Student表中的Sage字段設(shè)為不能為空(not null)。ALTER TABLE StudentALTER COLUMN Sage int NOT NULL-(2)用SQL語(yǔ)句將Student表中的屬性Sno varchar(20)改成char(8)類型。-先刪除Sno上的各種約束(此例中Sno上的約束有:主鍵)ALTER TABLE Student DROP CONSTRAINT PK_Student -CONSTRAINT 也可省略-再修改Sno列ALTER TABLE Student ALTER COLUMN Sno CHAR(8) NOT NULL -需設(shè)置為不允許空,否則不能
6、在該列上創(chuàng)建主鍵-最后,恢復(fù)(添加)Sno上的主鍵約束ALTER TABLE Student ADD CONSTRAINT PK_Student PRIMARY KEY(Sno)-2添加列-(1)用SSMS在Course表中添加一列year,類型為varchar(4),默認(rèn)置為空。ALTER TABLE CourseADD year varchar(4) NULL-(2)用SQL語(yǔ)句在year字段添加約束,year 的屬性值在2006-2012之間。ALTER TABLE CourseADD CONSTRAINT CK_year CHECK(year BETWEEN 2006 AND 2012
7、)-3刪除列-(1)用SQL語(yǔ)句將Course表中的year字段刪除。-先刪除year上的各種約束(CHECK約束)ALTER TABLE CourseDROP CONSTRAINT CK_year -再刪除yearALTER TABLE CourseDROP COLUMN year -COLUMN不能省略-實(shí)驗(yàn)四 參考答案-1. 統(tǒng)計(jì)各門課程所選修的人數(shù),并把結(jié)果存儲(chǔ)在一張新表中。(提示:用SelectInto,group by)SELECT Course_id,COUNT(*) AS 選修人數(shù) INTO Course_numFROM StudentGradeGROUP BY Course_
8、id-2查詢男生的資料。SELECT *FROM StudentWHERE Stu_sex=男-3查詢所有計(jì)算機(jī)系的班級(jí)信息。-WHERE連接查詢SELECT *FROM Class,DeparmentWHERE Class.depar_id=Deparment.depar_id AND Depar_name=計(jì)算機(jī)系-JOIN連接查詢SELECT *FROM Class JOIN Deparment ON Class.depar_id=Deparment.depar_idWHERE Depar_name=計(jì)算機(jī)系-嵌套查詢SELECT * -父查詢:根據(jù)子查詢找出的系別編號(hào),查找該系別編號(hào)的
9、班級(jí)FROM ClassWHERE Depar_id=(SELECT Depar_id -子查詢:找出計(jì)算機(jī)系的系別編號(hào) FROM Deparment WHERE Depar_name=計(jì)算機(jī)系)-4查詢艾老師所教的課程號(hào)。(也可用嵌套查詢)SELECT Course_id,*FROM CourseTeacher JOIN Teacher ON CourseTeacher.Teac_id=Teacher.Teac_idWHERE Teac_name like 艾%-5查詢年齡小于30歲的女同學(xué)的學(xué)號(hào)和姓名。-GETDATE()為獲取系統(tǒng)時(shí)間的函數(shù),YEAR()為獲取“年”,MONTH()為獲取
10、“月”,DAY()為獲取“日”。SELECT *FROM StudentWHERE (YEAR(GETDATE()-YEAR(Birthday)80-實(shí)驗(yàn)五 參考答案-1找出所有任教“數(shù)據(jù)庫(kù)”的教師的姓名。SELECT teac_nameFROM teacher JOIN courseteacher ON teacher.teac_id=courseteacher.teac_id JOIN course ON courseteacher.course_id=course.course_idWHERE course_name=數(shù)據(jù)庫(kù) -此處用連接查詢,三個(gè)表連接后形成一個(gè)大表,然后從中篩選。-練
11、菲彰上了兩個(gè)班級(jí)的數(shù)據(jù)庫(kù),因此有兩條記錄。可用DISTINCT去除重復(fù)行-嵌套查詢SELECT teac_name -根據(jù)子查詢得到的結(jié)果在teacher中找出上“數(shù)據(jù)庫(kù)”的老師,上數(shù)據(jù)庫(kù)的老師只有一個(gè),故只有一條記錄。FROM teacher WHERE teac_id in(SELECT teac_id FROM courseteacher WHERE course_id=(SELECT course_id FROM course WHERE course_name=數(shù)據(jù)庫(kù)) -2取出學(xué)號(hào)為“”的學(xué)生選修的課程號(hào)和課程名。SELECT course.course_id,course_nam
12、eFROM course JOIN studentgrade ON course.course_id=studentgrade.course_idWHERE stu_id=-嵌套查詢SELECT course_id,course_nameFROM courseWHERE course_id in(SELECT course_id FROM studentgrade WHERE stu_id=)-3“涂杰杰”所選修的全部課程號(hào)及成績(jī)。(注意:school中有同名,即有兩名學(xué)生叫“涂杰杰”。)SELECT course_id,gradeFROM studentgrade JOIN student
13、ON studentgrade.stu_id=student.stu_idWHERE stu_name=涂杰杰-嵌套查詢SELECT course_id,gradeFROM studentgradeWHERE stu_id in(SELECT stu_id FROM student WHERE stu_name=涂杰杰)-4C語(yǔ)言成績(jī)比數(shù)據(jù)結(jié)構(gòu)成績(jī)好的學(xué)生(自身連接)。SELECT *FROM studentgrade AS a JOIN studentgrade AS b ON a.stu_id=b.stu_idWHERE a.course_id=(SELECT course_id FROM
14、 course WHERE course_name=C語(yǔ)言) AND b.course_id=(SELECT course_id FROM course WHERE course_name=數(shù)據(jù)結(jié)構(gòu)) AND a.gradeb.grade-連接查詢,比嵌套查詢復(fù)雜SELECT SG1.Stu_id,C1.Course_name,SG1.Grade,C2.Course_name, SG2.GradeFROM StudentGrade AS SG1 JOIN Course AS C1 ON SG1.Course_id=C1.Course_id -此連接得到:每位學(xué)生的選課情況及所選課程信息,作為一
15、個(gè)新表 JOIN StudentGrade AS SG2 ON SG1.Stu_id=SG2.Stu_id -此連接得到:將相同內(nèi)容的表,表進(jìn)行自身連接 JOIN Course AS C2 ON SG2.Course_id=C2.Course_id -此連接得到:每位學(xué)生的選課情況及所選課程信息,作為一個(gè)新表WHERE SG1.GradeSG2.Grade AND C1.Course_name=C語(yǔ)言 AND C2.Course_name=數(shù)據(jù)結(jié)構(gòu)-5顯示所有課程的選修情況(外連接)。SELECT *FROM course LEFT JOIN studentgrade ON course.co
16、urse_id=studentgrade.course_idORDER BY course.course_id -為了便于觀察。將每門課程的選修情況列在一起-或:列出各門課程的選修人數(shù),無(wú)人選的課程的選修人數(shù)為0。-COUNT(stu_id),此處不能為*,COUNT(*)為統(tǒng)計(jì)有多少行(記錄)。因?yàn)閏ourse與studentgrade左連接后,每門課程都至少有一條行(記錄)。SELECT course.course_id,COUNT(stu_id) AS 選修人數(shù) FROM course LEFT JOIN studentgrade ON course.course_id=studentg
17、rade.course_idGROUP BY course.course_id-6檢索選修課程號(hào)為“0109”或“0111”的學(xué)生學(xué)號(hào)、姓名和所在班級(jí)。SELECT student.stu_id,stu_name,class_idFROM student JOIN studentgrade ON student.stu_id=studentgrade.stu_idWHERE course_id in(0109,0111)-若列出班級(jí)名稱,則需在于Class表連接SELECT student.stu_id,stu_name,class_nameFROM student JOIN studentg
18、rade ON student.stu_id=studentgrade.stu_id JOIN class ON student.class_id=class.class_idWHERE course_id in(0109,0111)-當(dāng)多個(gè)表(A,B,C)進(jìn)行連接時(shí),B表同時(shí)具有A表和C表中的某一字段,最好將B表作為連接三個(gè)表的中介,-如下,將student作為連接studentgrade和class的中介SELECT student.stu_id,stu_name,class_nameFROM studentgrade JOIN student ON studentgrade.stu_id
19、=student.stu_id JOIN class ON student.class_id=class.class_idWHERE course_id in(0109,0111)-嵌套查詢SELECT student.stu_id,stu_name,class_idFROM student WHERE stu_id in(SELECT stu_id FROM studentgrade WHERE course_id in(0109,0111) )-7查詢“0203”課程的最高分的學(xué)生的學(xué)號(hào)。SELECT stu_idFROM studentgradeWHERE course_id=0203
20、AND grade=(SELECT MAX(grade) FROM studentgrade -子查詢的作用是:找出“0203”課程的最高分 WHERE course_id=0203)-如果最高分的同學(xué)有兩個(gè)以上(分?jǐn)?shù)相同),此方法無(wú)法實(shí)現(xiàn)。SELECT TOP 1 Stu_idFROM StudentGradeWHERE Course_id=0203ORDER BY Grade DESC-8沒(méi)有選修以“01”開(kāi)頭的課程的學(xué)生信息。(用子查詢完成。提示not in或not exists)SELECT *FROM StudentWHERE stu_id NOT IN (SELECT stu_id
21、 FROM studentgrade WHERE course_id like01%)SELECT *FROM StudentWHERE NOT EXISTS (SELECT * FROM studentgrade WHERE Student.stu_id=studentgrade.stu_id -EXISTS查詢?yōu)橄嚓P(guān)子查詢,依賴父表(student),需將兩表連接 AND course_id like01%)-9找出“蘇賢興”同學(xué)所學(xué)課程的名稱和成績(jī)。(請(qǐng)使用連接查詢和嵌套查詢分別來(lái)完成) SELECT course_name,gradeFROM course JOIN studentgr
22、ade ON course.course_id=studentgrade.course_id JOIN student ON studentgrade.stu_id=student.stu_idWHERE stu_name=蘇賢興-嵌套查詢SELECT course_name,gradeFROM course JOIN studentgrade ON course.course_id=studentgrade.course_id WHERE stu_id in(SELECT stu_id FROM student WHERE stu_name=蘇賢興)-實(shí)驗(yàn)六參考答案-1統(tǒng)計(jì)年齡大于30歲的學(xué)
23、生的人數(shù)。SELECT COUNT(*)FROM StudentWHERE (year(getdate()-year(Birthday)30-2統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)有多少人80分或以上。-嵌套查詢- SELECT COUNT(*) as 人數(shù)- FROM StudentGrade- WHERE Grade80 AND Course_id=(SELECT Course_id- FROM Course- WHERE Course_name=數(shù)據(jù)結(jié)構(gòu))-連接查詢SELECT COUNT(*) as 人數(shù)FROM StudentGrade,CourseWHERE Grade80 AND StudentGrad
24、e.Course_id=Course.Course_id AND Course_name=數(shù)據(jù)結(jié)構(gòu)-3統(tǒng)計(jì)各系開(kāi)設(shè)班級(jí)的數(shù)目(系名稱、班級(jí)數(shù)目),并創(chuàng)建結(jié)果表。SELECT Depar_name,COUNT(*) AS 班級(jí)數(shù)目 INTO Class_CountFROM Deparment,ClassWHERE Class.Depar_id=Deparment.Depar_idGROUP BY Deparment.Depar_name-4找出最多人選修的三門課的課程編號(hào),以及統(tǒng)計(jì)選修人數(shù),并按人數(shù)降序排列。SELECT TOP 3 Course_id,COUNT(*) AS 選修人數(shù) FROM
25、 StudentGradeGROUP BY Course_id ORDER BY 選修人數(shù) DESC-或:-ORDER BY COUNT(*) DESC-5統(tǒng)計(jì)每科目的最高分、最低分,平均分、總分,并以中文列名顯示。SELECT Course_name AS 課程名,MAX(Grade) 最高分,MIN(Grade) 最低分,AVG(ALL(Grade) AS 平均分,SUM(ALL(Grade) AS 總分FROM StudentGrade,CourseWHERE StudentGrade.Course_id=Course.Course_idGROUP BY Course_name-6所有成
26、績(jī)都在70分以上的學(xué)生姓名(提示:使用子查詢)SELECT Stu_id,Stu_nameFROM StudentWHERE Stu_id IN(SELECT Stu_id FROM StudentGrade GROUP BY Stu_id HAVING MIN(Grade)=70) -注意:HAVING MIN(Grade)=70 是關(guān)鍵。-注意:MIN(Grade)是關(guān)鍵。此處分組條件不可以是Student.Stu_id。SELECT Stu_id,Stu_nameFROM Student WHERE (SELECT MIN(Grade) FROM StudentGrade WHERE S
27、tudent.Stu_id=StudentGrade.Stu_id GROUP BY StudentGrade.Stu_id )=70 -或SELECT Stu_id,Stu_nameFROM StudentWHERE Stu_id in (select a.Stu_id from StudentGrade a -關(guān)鍵:Stu_id要來(lái)自StudentGrade表,否則就會(huì)出現(xiàn)問(wèn)題:無(wú)法剔除沒(méi)有選課的學(xué)生 where 70=all (SELECT Grade FROM StudentGrade b WHERE a.Stu_id=b.Stu_id )-或SELECT Stu_id,Stu_nam
28、eFROM StudentWHERE Stu_id in (SELECT Stu_id FROM StudentGrade -關(guān)鍵:Stu_id要來(lái)自StudentGrade表,否則就會(huì)出現(xiàn)問(wèn)題:無(wú)法剔除沒(méi)有選課的學(xué)生 WHERE NOT EXISTS (SELECT * FROM StudentGrade WHERE Student.Stu_id=StudentGrade.Stu_id AND Grade=2) -9檢索至少選修課程“數(shù)據(jù)結(jié)構(gòu)”和“C語(yǔ)言”的學(xué)生學(xué)號(hào)SELECT Stu_idFROM StudentGrade JOIN Course ON StudentGrade.Cours
29、e_id=Course.Course_id WHERE Course_name=數(shù)據(jù)結(jié)構(gòu) AND Stu_id IN (SELECT Stu_id FROM StudentGrade JOIN Course ON StudentGrade.Course_id=Course.Course_id WHERE Course_name=C語(yǔ)言 )-10列出所有班名、班主任、班長(zhǎng)、系名。(請(qǐng)使用連接查詢;進(jìn)一步考慮使用外連接,因?yàn)楹芏喟嗉?jí)可能是沒(méi)有班長(zhǎng)的,考慮需要顯示所有班級(jí)的信息)-列出所有班名,班主任,班長(zhǎng),系名/*SELECT Class_name,Stu_name,Teac_name,Depar
30、_nameFROM Student JOIN Class ON Monitor=Student.Stu_id JOIN Teacher ON Director=Teacher.Teac_idJOIN Deparment ON Class.Depar_id=Deparment.Depar_id */-或:(此方法的查詢結(jié)果中還包括Monitor為NULL的記錄)SELECT Class_name,Stu_name,Teac_name,Depar_nameFROM Class LEFT JOIN Student ON Monitor=Student.Stu_id JOIN Teacher ON D
31、irector=Teacher.Teac_id JOIN Deparment ON Class.Depar_id=Deparment.Depar_id-實(shí)驗(yàn)七參考答案-l、新開(kāi)設(shè)一門課程,名叫網(wǎng)絡(luò)安全與防火墻,學(xué)時(shí)40,編號(hào)為“0118”,主要介紹網(wǎng)絡(luò)的安全與主要的防火墻軟件。 INSERT INTO Course(course_id,course_name,course_hour,introduce)VALUES (0118,網(wǎng)絡(luò)安全與防火墻,40,主要介紹網(wǎng)絡(luò)的安全與主要的防火墻軟件)-2、先建立monitor表,其結(jié)構(gòu)與student表大致一樣包含student表的學(xué)號(hào)、姓名、性別和班級(jí)
32、編號(hào),然后把班級(jí)編號(hào)為“0101”的學(xué)生的相應(yīng)資料插入到monitor表中。CREATE TABLE monitor( stu_id varchar(9) constraint pk_monitor primary key, stu_name varchar(8), stu_sex varchar(2), class_id varchar(4)INSERT INTO monitorSELECT stu_id,stu_name,stu_sex,class_idFROM studentWHERE class_id=0101-3、更新所有職稱為“助教”的教師職稱為“助理教師”。UPDATE teac
33、herSET techpost=助理教師WHERE techpost=助教-4、在所有經(jīng)濟(jì)系班級(jí)的名稱前加上“經(jīng)濟(jì)系”三個(gè)字。UPDATE classSET class_name=經(jīng)濟(jì)系+class_nameWHERE class_id=(SELECT class_id FROM deparment WHERE depar_name=經(jīng)濟(jì)系)-5、學(xué)號(hào)為“”的學(xué)生的“數(shù)據(jù)結(jié)構(gòu)”課程成績(jī)改為80分。UPDATE studentgradeSET grade=80WHERE course_id=(SELECT course_id FROM course WHERE course_name=數(shù)據(jù)結(jié)構(gòu))
34、 AND stu_id=-6、刪除studentgrade表中所有成績(jī)不及格的記錄。DELETEFROM studentgradeWHERE grade60-7、刪除studentgrade表中學(xué)號(hào)以“99”開(kāi)頭的學(xué)生選修課程的記錄。DELETEFROM studentgradeWHERE stu_id like 99%-8、刪除課程名為“C語(yǔ)言”的課程信息和所有這門課的選課信息/*此題中由于course表與courseteacher和studentgrade存在外鍵聯(lián)系,根據(jù)各表中的course_id建立。從現(xiàn)實(shí)中的邏輯角度考慮,應(yīng)是:先開(kāi)設(shè)一門課,然后指定講授這門課的老師、時(shí)間和地點(diǎn),再是
35、學(xué)生們根據(jù)自身情況選修這門課程。因此,如需刪除這門課(撤銷此課),先刪除學(xué)生選課信息,再刪除該課的授課信息,最后刪除該課的課程信息。*/DELETEFROM studentgradeWHERE course_id=(SELECT course_id FROM course WHERE course_name=C語(yǔ)言)DELETEFROM courseteacherWHERE course_id=(SELECT course_id FROM course WHERE course_name=C語(yǔ)言)DELETEFROM courseWHERE course_name=C語(yǔ)言-實(shí)驗(yàn)八參考答案-(一
36、)、視圖的操作-1建立一視圖View_CSTeacher,列出計(jì)算機(jī)系各個(gè)老師的資料(姓名、性別、職稱)。USE SCHOOLGOCREATE VIEW VIEW_CSTEACHERASSELECT TEAC_NAME,TEAC_SEX,TECHPOSTFROM TEACHERWHERE DEPAR_ID=(SELECT DEPAR_ID FROM DEPARMENT WHERE DEPAR_NAME=計(jì)算機(jī)系)-2建立一視圖View_Class,列出每個(gè)班級(jí)的名稱、系別和班級(jí)人數(shù)。USE SCHOOLGOCREATE VIEW VIEW_CLASSASSELECT CLASS_NAME,DE
37、PAR_NAME,COUNT(STU_ID)FROM CLASS JOIN DEPARMENT ON CLASS.DEPAR_ID=DEPARMENT.DEPAR_ID JOIN STUDENT ON CLASS.CLASS_ID=STUDENT.CLASS_IDGROUP BY CLASS_NAME,DEPAR_NAME-3建立一視圖View_Student,列出每個(gè)學(xué)生的學(xué)號(hào)、選修課程門數(shù)和平均成績(jī),并按平均成績(jī)從大到小排列。USE SCHOOLGOCREATE VIEW VIEW_STUDENTASSELECT TOP 1000 STU_ID,COUNT(COURSE_ID) AS 選修
38、課程數(shù),AVG(GRADE) AS 平均成績(jī) -TOP 1000 目的是結(jié)合ORDER BY在子查詢中使用,并排序FROM STUDENTGRADEGROUP BY STU_IDORDER BY AVG(GRADE) DESC-4查詢視圖View_Student。-將視圖作為基本表一樣查詢USE SCHOOLSELECT *FROM VIEW_STUDENT-5修改視圖View_Student,列出每個(gè)學(xué)生的學(xué)號(hào)、姓名、選修課程門數(shù)和平均成績(jī)。-此題要求實(shí)質(zhì)是:先刪除該視圖(View_Student),然后在創(chuàng)建視圖(View_Student)USE SCHOOLGODROP VIEW VIE
39、W_STUDENTCREATE VIEW VIEW_STUDENTASSELECT STUDENT.STU_ID,STU_NAME,COUNT(COURSE_ID) AS 選修課程數(shù),AVG(GRADE) AS 平均成績(jī) FROM STUDENT JOIN STUDENTGRADE ON STUDENT.STU_ID=STUDENTGRADE.STU_IDGROUP BY STUDENT.STU_ID,STU_NAME-6要通過(guò)視圖View_Student,將學(xué)號(hào)為“”的平均成績(jī)改為90分,是否可以實(shí)現(xiàn)?并說(shuō)明原因不可以實(shí)現(xiàn)。原因: 對(duì)視圖的更新,本質(zhì)就是轉(zhuǎn)化為對(duì)基本表的更新。因此,更新視圖會(huì)
40、受到一些限制,比如:一些視圖是不可更新的, 因?yàn)閷?duì)這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新。 簡(jiǎn)而言之,如果對(duì)視圖的更新無(wú)法轉(zhuǎn)換成對(duì)基本表的更新,此更新則不被允許。 本題中通過(guò)視圖對(duì)平均成績(jī)更新,平均成績(jī)?yōu)閺幕颈碇型ㄟ^(guò)集合運(yùn)算產(chǎn)生的結(jié)果,在視圖的來(lái)源表中并沒(méi)有與其對(duì)應(yīng)的行/列, 因此無(wú)法對(duì)平均成績(jī)的更新轉(zhuǎn)化為對(duì)基本表中某些行/列的更新。-7刪除視圖View_CSTeacher。USE SCHOOLGODROP VIEW VIEW_CSTEACHER-(二)、索引的創(chuàng)建與刪除-1分別建立以下索引(如果不能成功建立,請(qǐng)分析原因)-(1) 在Student表的Stu_name列上建
41、立普通降序索引。USE SCHOOLGOCREATE INDEX IX_SNAMEON STUDENT(STU_NAME DESC)-(2) 在Course表的Course_name列上建立唯一索引。USE SCHOOLGOCREATE UNIQUE INDEX IX_COURSE_NAMEON COURSE(COURSE_NAME)-(3) 在studentgrade表的Stu_id列上建立聚集索引。此題要求的聚集索引不能正常建立。原因: studentgrade中已創(chuàng)建主鍵,一個(gè)基本表在創(chuàng)建主鍵的同時(shí),DBMS會(huì)自動(dòng)在主鍵(stu_id,course_id)上創(chuàng)建聚集索引。而一個(gè)基本表只能
42、有一個(gè)聚集索引,故本題所要求的索引無(wú)法成功創(chuàng)建。-(4) 在studentgrade表的Stu_id(升序),Course_id(升序)和Grade(降序)三列上建立一個(gè)普通索引。USE SCHOOLGOCREATE UNIQUE INDEX IX_studentgradeON studentgrade(STU_ID,COURSE_ID,GRADE DESC)-2刪除索引-(1)將studentgrade表的Sno列上的聚集索引刪掉。此題要求不能成功實(shí)現(xiàn)。原因:普通的索引可以用drop來(lái)刪除:drop index 表名.索引名; 但是在建立表的時(shí)候,主鍵自動(dòng)在主鍵列上建立一個(gè)聚集索引(通過(guò)給表
43、增加的一個(gè)唯一約束也會(huì)自動(dòng)增加一個(gè)唯一索引)這類通過(guò)主鍵和唯一約束創(chuàng)建的索引與主鍵或唯一約束是同名的,是不能夠通過(guò)DROP INDEX來(lái)刪除的。 必須通過(guò)以下方法刪除該聚集索引(其實(shí)就是通過(guò)刪除主鍵的方式刪除索引,但不能刪除索引進(jìn)而刪除主鍵)才能創(chuàng)建其他的索引:alter table 基本表名 drop constraint 主鍵約束名; 通過(guò)此方法會(huì)刪除主鍵,因此可以在建立了其他想要建立的索引之后,重新建立主鍵。(唯一索引的操作方法類似) -實(shí)驗(yàn)九參考答案-4為U1賬戶設(shè)置對(duì)Student表的權(quán)限,讓它查詢Student,修改除了Stu-id之外的其他字段,并驗(yàn)證。use schoolgog
44、rant select,update(stu_name,stu_sex,birthday,phone,address,class_id)on studentto u1-或grant select,update on student to u1revoke update(stu_id) on student from u1-通過(guò)SQL命令或企業(yè)管理器查看用戶U1的權(quán)限-通過(guò)各種方式方法驗(yàn)證符合/違反U1所擁有權(quán)限的操作,仔細(xì)查看DBMS所作出的反應(yīng),并分析其原因。-5設(shè)置數(shù)據(jù)庫(kù)角色。設(shè)置數(shù)據(jù)庫(kù)角色A1,A1能查詢、更新Course表,并把此角色賦予U2并驗(yàn)證U2是否具有此權(quán)限。-創(chuàng)建數(shù)據(jù)庫(kù)角色u
45、se schoolgocreate role A1 -或exec sp_addrole A1-給數(shù)據(jù)庫(kù)角色授權(quán)grant select,update on course to A1 -把此角色賦予U2,其實(shí)是將U2添加為角色A1的成員exec sp_addrolemember A1,U2-通過(guò)SQL命令或企業(yè)管理器查看用戶U2的權(quán)限-通過(guò)各種方式方法驗(yàn)證符合/違反U2所擁有權(quán)限的操作,仔細(xì)查看DBMS所作出的反應(yīng),并分析其原因。-6修改U1的權(quán)限,讓它具有傳遞性,并傳遞給U3,并驗(yàn)證。-修改U1的權(quán)限,實(shí)際操作是:對(duì)其重新授權(quán)use schoolgogrant select,update(st
46、u_name,stu_sex,birthday,phone,address,class_id)on studentto u1with grant option-用U1登錄SQL SERVER,然后在U1中對(duì)U3進(jìn)行授權(quán)(U1授給U3的權(quán)限必須得是U1能夠授予的)grant select,update(stu_name,stu_sex,birthday,phone,address,class_id)on studentto u3-通過(guò)SQL命令或企業(yè)管理器查看用戶U3的權(quán)限-通過(guò)各種方式方法驗(yàn)證符合/違反U3所擁有權(quán)限的操作,仔細(xì)查看DBMS所作出的反應(yīng),并分析其原因。-實(shí)驗(yàn)十參考答案/*(一)、認(rèn)真學(xué)習(xí)三類完整性、CHECK短語(yǔ)、CON
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 環(huán)境藝術(shù)設(shè)計(jì)與可持續(xù)發(fā)展的協(xié)同實(shí)踐
- 匯報(bào)溝通職場(chǎng)中的軟實(shí)力
- 未來(lái)商業(yè)發(fā)展趨勢(shì)與市場(chǎng)分析
- 生產(chǎn)線工藝改進(jìn)的思路與實(shí)踐案例
- 吊裝工程專項(xiàng)方案
- “比賽場(chǎng)次”(說(shuō)課稿)-2024-2025學(xué)年六年級(jí)數(shù)學(xué)上冊(cè)北師大版
- 《7 栽小蔥》(說(shuō)課稿)三年級(jí)下冊(cè)科學(xué)蘇教版
- Module 1 Unit 2 I'm Danny(說(shuō)課稿)-2024-2025學(xué)年牛津上海版(試用本)英語(yǔ)二年級(jí)上冊(cè)
- Unit3 What would you like?(說(shuō)課稿)-2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)001
- 16 宇宙的另一邊 說(shuō)課稿-2023-2024學(xué)年語(yǔ)文三年級(jí)下冊(cè)統(tǒng)編版
- 安全個(gè)人承諾書范文個(gè)人承諾書范文
- 遠(yuǎn)視儲(chǔ)備培訓(xùn)課件
- 嶺南膏方規(guī)范
- 【可行性報(bào)告】2023年虛擬演播室制作設(shè)備相關(guān)行業(yè)可行性分析報(bào)告
- 世界老年人跌倒的預(yù)防和管理指南解讀及跌倒應(yīng)急處理-
- GB/T 7251.2-2023低壓成套開(kāi)關(guān)設(shè)備和控制設(shè)備第2部分:成套電力開(kāi)關(guān)和控制設(shè)備
- 四川省地圖模板含市縣圖課件
- 帶拼音生字本模板(可A4打印)
- 小學(xué)語(yǔ)文必備文學(xué)常識(shí)???00題匯總(含答案)
- 英語(yǔ)人教版高中必修三(2019新編)第一單元教案
- 超高大截面框架柱成型質(zhì)量控制
評(píng)論
0/150
提交評(píng)論