《end数据库实验答案.docx》由会员分享,可在线阅读,更多相关《end数据库实验答案.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、试验一 创立、修改数据库与表构造1、用create建立教学数据库的五个根本表:(1) 学生表(学号,姓名,性别,年龄),student(Sno, sname, ssex,sage) ;(2)课程表(课程号,课程名,学分),Course (Cno, Cname, credit) ;(3)选课表(学号,课程号,成果),SC (Sno, Cno, grade ) ;(4) 老师表(老师号,姓名,性别,诞生年月,系部,职称,地址),T(Tno,Tname,ssex,birthday,dept,title,address) ;(5) 工资表(老师号,根本工资,职务工资,合计),Salary(Tno,jb
2、gz,zwgz,hj);Create Database StudentUse StudentCreate Table Student(SNochar(20) primary key,SNamechar(20) ,SSexchar(4) default 男,SAgeint在MySQL 中,每个表指明数据库引擎,字符集比拟好,用下列语句!Create Table Student(SNochar(20) primary key,SNamechar(20) ,SSexchar(4) default 男,SAgeint) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLAT
3、E=utf8_bin;Create Table Course(CNochar(20) primary key,CNamechar(20) NOT NULL,CReditfloat,Create Table SC(SNochar(20) NOT NULL,CNochar(20) NOT NULL,Gradefloat,Primary Key(SNo, CNo),Foreign Key(SNo) References Student(SNo) On Delete Cascade,Foreign Key(CNo) References Course(CNo)Create Table T(TNocha
4、r(20) Primary Key,TNamechar(20) NOT NULL,TSexchar(4) default 男,birthday DateTime,deptchar(20),titlechar(20),address char(20)Create Table Salary(TNochar(20) NOT NULL,jbgzfloat,zwgzfloat,hjfloat,Foreign Key(TNo) References T(TNo) On Delete Cascade);2、用alter修改根本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列; a
5、lter table Student add Dept char(20);(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。alter able Student alter colum sname varchar(10)3、建立一个临时表,然后将其删除 Create Table temp (ANochar(20) NOT NULL,Bfloat, C char(10) ) Drop tabte temp试验二 建立与删除索引1、用create index在学生表student的学号sno上建立聚簇索引。Create Clustered Index
6、SNo_Index On Student(SNo);2、在学生表student中,为姓名sname建立非聚簇索引。 Create Index SName_Index On Student(SName);3、在课程表的课程号Cno上建立唯一索引。 Create Unique Index CNo_Index On Course(CNo);4、在选课表的学号sno、成果Grade上建立复合索引,要求学号为升序,学号一样时成果为降序。Create Index SCNo_Index On SC(SNo ASC, Grade DESC);5、用drop删除学生表student的索引。 Drop Index
7、 Student.SNo_Index;6、增加学生表student中姓名唯一约束。 Alter Table Student Add Unique(SName);7、增加学生表student中性别男、女唯一约束。 Alter Table Student Add Constraint:SSex check(SSex = 男 or SSex = 女);8、增加学生表student中年龄1825岁约束。Alter Table Student Add Constraint:SAge check(SAge = 18 And SAge = 25);9、增加选课表SC中学号sno的外码约束。Alter Tab
8、le SC Add Foreign Key(SNo) references Student(SNo);试验三 数据的插入、更新及删除操作1、用insert输入数据。学生表student的数据991201 张三22男计算机系991202 李四 21男信息系991101王五23男数学系991102陈六19男计算机系991103吴七24女数学系000101刘八22女信息系Insert Into Student Values(991201, 张三, 男, 22, 计算机科学与技术系);Insert Into Student Values(991202, 李四, 男, 21, 信息科学系);Insert
9、 Into Student Values(991101, 王五, 男, 23, 数理系);Insert Into Student Values(991102, 陈六, 男, 19, 计算机科学与技术系);Insert Into Student Values(991103, 吴七, 女, 24, 数理系);Insert Into Student Values(000101, 刘八, 女, 22, 信息科学系);课程表course的数据1 数学52 数据构造43 程序设计24 数据库原理35 操作系统3Insert Into Course Values(1, 数学, 5);Insert Into
10、Course Values(2, 数据构造, 4);Insert Into Course Values(3, 程序设计, 2);Insert Into Course Values(4, 数据库原理, 3);Insert Into Course Values(5, 操作系统, 3);选课表SC的数据991201190991201580991201385991201490991102185991102298000101291Insert Into SC Values(991201, 1, 90);Insert Into SC Values(991201, 5, 80);Insert Into SC
11、 Values(991201, 3, 85);Insert Into SC Values(991201, 4, 90);Insert Into SC Values(991102, 1, 85);Insert Into SC Values(991102, 2, 98);Insert Into SC Values(000101, 2, 91);根本表T的数据0001张三男1968-10信息副教授湘潭0002李四 女1956-11信息教授长沙1001王五男1973-07计算机讲师湘潭1008陈六男1970-08计算机副教授北京Insert Into T Values(0001, 张三, 男, 196
12、8-10-10, 信息科学系, 副教授, 湘潭);Insert Into T Values(0002, 李四, 女, 1956-11-10, 信息科学系, 教授, 长沙);Insert Into T Values(1001, 王五, 男, 1973-07-20, 计算机科学与技术系, 讲师, 湘潭);Insert Into T Values(1008, 陈六, 男, 1970-08-20, 计算机科学与技术系, 副教授, 北京);根本表Salary的数据1300000210Insert Into Salary Values(0001, 1000, 300, 1300);Insert Into
13、Salary Values(0002, 1500, 500, 2000);Insert Into Salary Values(1001, 800, 200, 1000);*/2、用delete删除数据记录(1)删除老师表T中老师号为0001的元组。(2)删除老师表T中的全部数据。update t set birthday=1961-10-04 where Tno =0001 Delete From T;3、用 update更新数据记录(1) 把0001号老师的根本工资加100。(2) 把全部老师的根本工资都加100。 Update Salary Set jbgz = jbgz + 100 Wh
14、ere TNo = 0001Update Salary Set jbgz = jbgz + 100试验四 数据的查询1、简洁查询,用select检索(1)查询全部学生的根本状况。select * from student;(2)查询老师每月应交纳的个人所得税。 select hj*0.005 as monthshui from Salary;(3)查询张三与李四两位同学的根本状况。 select * from student where sname=张三 or sname=李四;(4)查询9911班学生的根本信息(规定学生学号的前四位是班级号)。 select * from student w
15、here sno like 9911%;(5)查询全部年龄在20岁以下的学生姓名及其年龄。 select sname,sage from student where sage2;2、多表查询,用select检索(1)查询老师的收入状况,包括老师号、姓名及月总收入。select T.Tno,Tname, hj /不能写成select Tno,因为Tno不明确from T,Salarywhere T.Tno=Salary.Tno;(2)查询每个学生的学号、姓名、选修课程及成果。 select student.sno,sname,cno,gradefrom student,sc where stud
16、ent.sno=sc.sno;(3)查询每一门课的间接先修课。 select CAo AS 课程号,CB.PreCourse AS 间接先修课号from course CA,course CBwhere CA.PreCourse=CBo and CB.PreCourse is not null;(4)查询有一样地址的两位老师的信息。 select *from T Txwhere Tx.address in (select address from T Ty where Tx.TnameTy.Tname); select * from T Tx, T Ty where Tx. address=T
17、y. Address and Tx.TnameTy.Tname(5)查询选修2号课程且成果在90分以上的全部学生。 select * from student,SCwhere student.sno=SC.sno and SCo=2 and SC.grade90;(6)查询与王五在同一个系学习的学生。select *from studentwhere sdept=(select sdept from student where sname=王五);试验五 视图1、建立男学生的视图,属性包括学号、姓名、选修课程名与成果。 create view boystudent_view as select
18、 student.sno,sname,cno,gradefrom student,SCwhere student.ssex=男 and student.sno=SC. Sno and courseo=sco;2、在男学生视图中查询平均成果大于80分的学生学号与姓名。 select sno,snamefrom boystudent_viewgroup by snohaving AVG(grade)803、建立信息系选修了1号课程的学生的视图。 create view xinxi_view1 as select student.sno,sname,ssex,sage from student,SC
19、 where student.sdept=信息 and student.sno=SC.sno and SCo=14、建立信息系选修了1号课程且成果在90分以上的学生的视图。 create view xinxi_view2 as select student.sno,sname,sage,ssex from student,SC where student.sdept=信息 and student.sno=SC.sno and SCo=1 and SC.grade905、建立计算机系选修了2号课程的学生的视图。create view jisuanji_viewas select student.
20、sno,sname,sage,ssexfrom student,SCwhere student.sdept=计算机 and student.sno=SC.sno and SCo=26、建立一个学生诞生年份的视图。create view year_viewas select sno,sname,2016-sage as birthdayfrom student7、建立一个计算机系学生的视图,并要求在进展修改、插入操作时,照旧要确保视图只有计算机系的学生。create view jisuanji2_viewas select student.sno,sname,sage,ssexfrom stud
21、entwhere sdept=计算机with check option8、向学生视图中插入一条新记录(951101,钱进,男,20) create view student_view1 as select sno,sname,ssex,sage from student;insert into student_view1 values(951101,钱进,男,20)9、将学生视图中学号为991101的学生姓名改为“刘平平”。 update student_view1 set sname=刘平平 where sno=99110110、删除计算机系视图中学号为991201的记录。 deletefr
22、om jisuanji2_view where sno=99120111、删除学生诞生年份的视图。drop view year_view;试验六 集合函数与受权语句应用1、运用select语句查询(1)9911班学生的人数与平均成果(规定学生学号的前四位是班级号)SELECT COUNT(sno) as 总人数, AVG(sc.grade)AS 平均分 FROM scWHERE sno like 9912%(2)每个学生的学号与相应的平均成果SELECT sno, AVG(grade) FROM,scGROUP BY student.sno(3)成果大于90分的学生学号SELECT sno,M
23、AX(sc.grade) as maxgrade FROM scGROUP BY snoHAVING MAX(grade)90(4)月工资大于平均工资的老师号SELECT TNo FROM Salary WHERE hj=( SELECT AVG(hj) from Salary ) 2、运用GRANT语句,把对根本表STUNT、SC、COURSE的运用权限授给其它用户。3、运用GRANT语句,让用户LI有权在当前库中创立视图。4、运用REVOKE语句,不允许ZHAO这个用户在当前库中创立视图。5、试验完成后,撤消建立的根本表与视图。 试验七 创立、执行、修改与删除存储过程1、建立查询计算机系女
24、学生的存储过程。CREATE PROCEDURE SELECT_WOMANAS SELECT * FROM student WHERE SSEX=女2、执行刚建立存储过程。 exec select_woman3、修改刚建立的存储过程。 ALTER PROCEDURE SELECT_WOMANAS SELECT * FROM studentWHERE SSEX=男4、建立一个按性别查询学生信息的带参数的存储过程。CREATE PROCEDURE SELECT_SEX(vssex char(4) )ASSELECT * FROM student WHERE student.ssex=vssex*/
25、exec SELECT_SEX vssex=男;5、删除刚建立的存储过程。DROP PROCEDURE SELECT_WOMAN 试验八 触发器的插入、删除、更新与创立1、对student表创立delete触发器,当删除某个学生记录时,同时在选课表SC中删除该学生的选课记录。 create trigger t1 on student for delete as delete from sc where sno in (select sno from deleted) /*当表student 与SC 都有 sno为000101 delete from student where sno=0001
26、01 select * from student 看结果2、对student表创立update 触发器,当对student表进展修改时,显示被修改的记录。2 create trigger t2 on student for update as select * from deletedInsert Into Student Values(00001, 王五, 男, 23, 数理系); Update student Set sage = sage + 1 where sno=00001 看结果3、对SC表创立insert 触发器,当对SC表插入一条记录时,检查SC表中的学号在student表中是
27、否存在,假设不存在,则不允许插入新记录。create trigger t3 on sc for insert as if(select count(*) from student where sno in(select sno from inserted) rollback transactioncreate trigger t3 on sc for insert as begin if (select count(*) from student where sno in (select sno from inserted)=0 begin print 无效的记录 rollback trans
28、action end end4、用alter trigger修改以上编写的触发器。5、用drop trigger删除以上编写的触发器。create trigger t4 on student for update as if update(sno) update sc set sc.sno=inserted.sno from sc,inserted,deleted where sc.sno=deleted.sno /* sc 中的 去掉SNO外键约束 update student set sno=060121 where sno=000101 select * from student 试验十:数据的复制与复原1、将所建数据库先进展分别,然后再分别出来的数据库进展附加操作。2、对所建数据库进展备份。3、对进展了备份的数据库进展复原。4、删除所建数据库。5、将所建数据库的数据导入到Excel表格中。6、将Excel表格中的数据导入到另一数据库中。第 19 页