廣藥數(shù)據(jù)庫實驗答案參考_第1頁
廣藥數(shù)據(jù)庫實驗答案參考_第2頁
廣藥數(shù)據(jù)庫實驗答案參考_第3頁
廣藥數(shù)據(jù)庫實驗答案參考_第4頁
廣藥數(shù)據(jù)庫實驗答案參考_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、-實驗三 參考答案(一)、數(shù)據(jù)庫、表的創(chuàng)建及刪除1.將數(shù)據(jù)庫bookdb的相關(guān)屬性(系統(tǒng)默認(rèn)設(shè)置),填入下表:項目 內(nèi)容數(shù)據(jù)庫所有者 XP-6Administrator(Windows身份登錄SQL server)數(shù)據(jù)庫名稱 bookdb數(shù)據(jù)庫邏輯文件名 bookdb數(shù)據(jù)文件物理名 D:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatabookdb.mdf(本機SQL SERVER系統(tǒng)安裝目錄在D盤)數(shù)據(jù)庫初始大小 3MB數(shù)據(jù)文件最大值 不限制增長數(shù)據(jù)文件增長量 1MB日志邏輯文件名 bookdb_log日志文件物理名 D:Program Fil

2、esMicrosoft SQL ServerMSSQL.1MSSQLDatabookdb_log.ldf(本機SQL SERVER系統(tǒng)安裝目錄在D盤)日志文件初始大小 1MB日志文件最大值 2,097,152MB日志文件增長量 10%*/-根據(jù)“二、實驗內(nèi)容”的要求,使用T-SQL命令創(chuàng)建/刪除數(shù)據(jù)庫EDUC,創(chuàng)建數(shù)據(jù)表student、course、sc。-2.刪除bookdb數(shù)據(jù)庫。DROP DATABASE bookdb-3.創(chuàng)建數(shù)據(jù)庫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語句將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語句在year字段添加約束,year 的屬性值在2006-2012之間。ALTER TABLE CourseADD CONSTRAINT CK_year CHECK(year BETWEEN 2006 AND 2012

7、)-3刪除列-(1)用SQL語句將Course表中的year字段刪除。-先刪除year上的各種約束(CHECK約束)ALTER TABLE CourseDROP CONSTRAINT CK_year -再刪除yearALTER TABLE CourseDROP COLUMN year -COLUMN不能省略-實驗四 參考答案-1. 統(tǒng)計各門課程所選修的人數(shù),并把結(jié)果存儲在一張新表中。(提示:用SelectInto,group by)SELECT Course_id,COUNT(*) AS 選修人數(shù) INTO Course_numFROM StudentGradeGROUP BY Course_

8、id-2查詢男生的資料。SELECT *FROM StudentWHERE Stu_sex=男-3查詢所有計算機系的班級信息。-WHERE連接查詢SELECT *FROM Class,DeparmentWHERE Class.depar_id=Deparment.depar_id AND Depar_name=計算機系-JOIN連接查詢SELECT *FROM Class JOIN Deparment ON Class.depar_id=Deparment.depar_idWHERE Depar_name=計算機系-嵌套查詢SELECT * -父查詢:根據(jù)子查詢找出的系別編號,查找該系別編號的

9、班級FROM ClassWHERE Depar_id=(SELECT Depar_id -子查詢:找出計算機系的系別編號 FROM Deparment WHERE Depar_name=計算機系)-4查詢艾老師所教的課程號。(也可用嵌套查詢)SELECT Course_id,*FROM CourseTeacher JOIN Teacher ON CourseTeacher.Teac_id=Teacher.Teac_idWHERE Teac_name like 艾%-5查詢年齡小于30歲的女同學(xué)的學(xué)號和姓名。-GETDATE()為獲取系統(tǒng)時間的函數(shù),YEAR()為獲取“年”,MONTH()為獲取

10、“月”,DAY()為獲取“日”。SELECT *FROM StudentWHERE (YEAR(GETDATE()-YEAR(Birthday)80-實驗五 參考答案-1找出所有任教“數(shù)據(jù)庫”的教師的姓名。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ù)庫 -此處用連接查詢,三個表連接后形成一個大表,然后從中篩選。-練

11、菲彰上了兩個班級的數(shù)據(jù)庫,因此有兩條記錄??捎肈ISTINCT去除重復(fù)行-嵌套查詢SELECT teac_name -根據(jù)子查詢得到的結(jié)果在teacher中找出上“數(shù)據(jù)庫”的老師,上數(shù)據(jù)庫的老師只有一個,故只有一條記錄。FROM teacher WHERE teac_id in(SELECT teac_id FROM courseteacher WHERE course_id=(SELECT course_id FROM course WHERE course_name=數(shù)據(jù)庫) -2取出學(xué)號為“”的學(xué)生選修的課程號和課程名。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“涂杰杰”所選修的全部課程號及成績。(注意: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語言成績比數(shù)據(jù)結(jié)構(gòu)成績好的學(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語言) 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、個新表 JOIN StudentGrade AS SG2 ON SG1.Stu_id=SG2.Stu_id -此連接得到:將相同內(nèi)容的表,表進行自身連接 JOIN Course AS C2 ON SG2.Course_id=C2.Course_id -此連接得到:每位學(xué)生的選課情況及所選課程信息,作為一個新表WHERE SG1.GradeSG2.Grade AND C1.Course_name=C語言 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ù),無人選的課程的選修人數(shù)為0。-COUNT(stu_id),此處不能為*,COUNT(*)為統(tǒng)計有多少行(記錄)。因為course與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檢索選修課程號為“0109”或“0111”的學(xué)生學(xué)號、姓名和所在班級。SELECT student.stu_id,stu_name,class_idFROM student JOIN studentgrade ON student.stu_id=studentgrade.stu_idWHERE course_id in(0109,0111)-若列出班級名稱,則需在于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)多個表(A,B,C)進行連接時,B表同時具有A表和C表中的某一字段,最好將B表作為連接三個表的中介,-如下,將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é)號。SELECT stu_idFROM studentgradeWHERE course_id=0203

20、AND grade=(SELECT MAX(grade) FROM studentgrade -子查詢的作用是:找出“0203”課程的最高分 WHERE course_id=0203)-如果最高分的同學(xué)有兩個以上(分?jǐn)?shù)相同),此方法無法實現(xiàn)。SELECT TOP 1 Stu_idFROM StudentGradeWHERE Course_id=0203ORDER BY Grade DESC-8沒有選修以“01”開頭的課程的學(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é)課程的名稱和成績。(請使用連接查詢和嵌套查詢分別來完成) 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=蘇賢興)-實驗六參考答案-1統(tǒng)計年齡大于30歲的學(xué)

23、生的人數(shù)。SELECT COUNT(*)FROM StudentWHERE (year(getdate()-year(Birthday)30-2統(tǒng)計數(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)計各系開設(shè)班級的數(shù)目(系名稱、班級數(shù)目),并創(chuàng)建結(jié)果表。SELECT Depar_name,COUNT(*) AS 班級數(shù)目 INTO Class_CountFROM Deparment,ClassWHERE Class.Depar_id=Deparment.Depar_idGROUP BY Deparment.Depar_name-4找出最多人選修的三門課的課程編號,以及統(tǒng)計選修人數(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)計每科目的最高分、最低分,平均分、總分,并以中文列名顯示。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、績都在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要來自StudentGrade表,否則就會出現(xiàn)問題:無法剔除沒有選課的學(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要來自StudentGrade表,否則就會出現(xiàn)問題:無法剔除沒有選課的學(xué)生 WHERE NOT EXISTS (SELECT * FROM StudentGrade WHERE Student.Stu_id=StudentGrade.Stu_id AND Grade=2) -9檢索至少選修課程“數(shù)據(jù)結(jié)構(gòu)”和“C語言”的學(xué)生學(xué)號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語言 )-10列出所有班名、班主任、班長、系名。(請使用連接查詢;進一步考慮使用外連接,因為很多班級可能是沒有班長的,考慮需要顯示所有班級的信息)-列出所有班名,班主任,班長,系名/*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-實驗七參考答案-l、新開設(shè)一門課程,名叫網(wǎng)絡(luò)安全與防火墻,學(xué)時40,編號為“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é)號、姓名、性別和班級

32、編號,然后把班級編號為“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īng)濟系”三個字。UPDATE classSET class_name=經(jīng)濟系+class_nameWHERE class_id=(SELECT class_id FROM deparment WHERE depar_name=經(jīng)濟系)-5、學(xué)號為“”的學(xué)生的“數(shù)據(jù)結(jié)構(gòu)”課程成績改為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表中所有成績不及格的記錄。DELETEFROM studentgradeWHERE grade60-7、刪除studentgrade表中學(xué)號以“99”開頭的學(xué)生選修課程的記錄。DELETEFROM studentgradeWHERE stu_id like 99%-8、刪除課程名為“C語言”的課程信息和所有這門課的選課信息/*此題中由于course表與courseteacher和studentgrade存在外鍵聯(lián)系,根據(jù)各表中的course_id建立。從現(xiàn)實中的邏輯角度考慮,應(yīng)是:先開設(shè)一門課,然后指定講授這門課的老師、時間和地點,再是

35、學(xué)生們根據(jù)自身情況選修這門課程。因此,如需刪除這門課(撤銷此課),先刪除學(xué)生選課信息,再刪除該課的授課信息,最后刪除該課的課程信息。*/DELETEFROM studentgradeWHERE course_id=(SELECT course_id FROM course WHERE course_name=C語言)DELETEFROM courseteacherWHERE course_id=(SELECT course_id FROM course WHERE course_name=C語言)DELETEFROM courseWHERE course_name=C語言-實驗八參考答案-(一

36、)、視圖的操作-1建立一視圖View_CSTeacher,列出計算機系各個老師的資料(姓名、性別、職稱)。USE SCHOOLGOCREATE VIEW VIEW_CSTEACHERASSELECT TEAC_NAME,TEAC_SEX,TECHPOSTFROM TEACHERWHERE DEPAR_ID=(SELECT DEPAR_ID FROM DEPARMENT WHERE DEPAR_NAME=計算機系)-2建立一視圖View_Class,列出每個班級的名稱、系別和班級人數(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,列出每個學(xué)生的學(xué)號、選修課程門數(shù)和平均成績,并按平均成績從大到小排列。USE SCHOOLGOCREATE VIEW VIEW_STUDENTASSELECT TOP 1000 STU_ID,COUNT(COURSE_ID) AS 選修

38、課程數(shù),AVG(GRADE) AS 平均成績 -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,列出每個學(xué)生的學(xué)號、姓名、選修課程門數(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 平均成績 FROM STUDENT JOIN STUDENTGRADE ON STUDENT.STU_ID=STUDENTGRADE.STU_IDGROUP BY STUDENT.STU_ID,STU_NAME-6要通過視圖View_Student,將學(xué)號為“”的平均成績改為90分,是否可以實現(xiàn)?并說明原因不可以實現(xiàn)。原因: 對視圖的更新,本質(zhì)就是轉(zhuǎn)化為對基本表的更新。因此,更新視圖會

40、受到一些限制,比如:一些視圖是不可更新的, 因為對這些視圖的更新不能唯一地有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新。 簡而言之,如果對視圖的更新無法轉(zhuǎn)換成對基本表的更新,此更新則不被允許。 本題中通過視圖對平均成績更新,平均成績?yōu)閺幕颈碇型ㄟ^集合運算產(chǎn)生的結(jié)果,在視圖的來源表中并沒有與其對應(yīng)的行/列, 因此無法對平均成績的更新轉(zhuǎn)化為對基本表中某些行/列的更新。-7刪除視圖View_CSTeacher。USE SCHOOLGODROP VIEW VIEW_CSTEACHER-(二)、索引的創(chuàng)建與刪除-1分別建立以下索引(如果不能成功建立,請分析原因)-(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)建主鍵,一個基本表在創(chuàng)建主鍵的同時,DBMS會自動在主鍵(stu_id,course_id)上創(chuàng)建聚集索引。而一個基本表只能

42、有一個聚集索引,故本題所要求的索引無法成功創(chuàng)建。-(4) 在studentgrade表的Stu_id(升序),Course_id(升序)和Grade(降序)三列上建立一個普通索引。USE SCHOOLGOCREATE UNIQUE INDEX IX_studentgradeON studentgrade(STU_ID,COURSE_ID,GRADE DESC)-2刪除索引-(1)將studentgrade表的Sno列上的聚集索引刪掉。此題要求不能成功實現(xiàn)。原因:普通的索引可以用drop來刪除:drop index 表名.索引名; 但是在建立表的時候,主鍵自動在主鍵列上建立一個聚集索引(通過給表

43、增加的一個唯一約束也會自動增加一個唯一索引)這類通過主鍵和唯一約束創(chuàng)建的索引與主鍵或唯一約束是同名的,是不能夠通過DROP INDEX來刪除的。 必須通過以下方法刪除該聚集索引(其實就是通過刪除主鍵的方式刪除索引,但不能刪除索引進而刪除主鍵)才能創(chuàng)建其他的索引:alter table 基本表名 drop constraint 主鍵約束名; 通過此方法會刪除主鍵,因此可以在建立了其他想要建立的索引之后,重新建立主鍵。(唯一索引的操作方法類似) -實驗九參考答案-4為U1賬戶設(shè)置對Student表的權(quán)限,讓它查詢Student,修改除了Stu-id之外的其他字段,并驗證。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-通過SQL命令或企業(yè)管理器查看用戶U1的權(quán)限-通過各種方式方法驗證符合/違反U1所擁有權(quán)限的操作,仔細(xì)查看DBMS所作出的反應(yīng),并分析其原因。-5設(shè)置數(shù)據(jù)庫角色。設(shè)置數(shù)據(jù)庫角色A1,A1能查詢、更新Course表,并把此角色賦予U2并驗證U2是否具有此權(quán)限。-創(chuàng)建數(shù)據(jù)庫角色u

45、se schoolgocreate role A1 -或exec sp_addrole A1-給數(shù)據(jù)庫角色授權(quán)grant select,update on course to A1 -把此角色賦予U2,其實是將U2添加為角色A1的成員exec sp_addrolemember A1,U2-通過SQL命令或企業(yè)管理器查看用戶U2的權(quán)限-通過各種方式方法驗證符合/違反U2所擁有權(quán)限的操作,仔細(xì)查看DBMS所作出的反應(yīng),并分析其原因。-6修改U1的權(quán)限,讓它具有傳遞性,并傳遞給U3,并驗證。-修改U1的權(quán)限,實際操作是:對其重新授權(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中對U3進行授權(quán)(U1授給U3的權(quán)限必須得是U1能夠授予的)grant select,update(stu_name,stu_sex,birthday,phone,address,class_id)on studentto u3-通過SQL命令或企業(yè)管理器查看用戶U3的權(quán)限-通過各種方式方法驗證符合/違反U3所擁有權(quán)限的操作,仔細(xì)查看DBMS所作出的反應(yīng),并分析其原因。-實驗十參考答案/*(一)、認(rèn)真學(xué)習(xí)三類完整性、CHECK短語、CON

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論