《数据库实验答案(共11页).doc》由会员分享,可在线阅读,更多相关《数据库实验答案(共11页).doc(11页珍藏版)》请在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) 工资表(教师号,基本工资,职务工资,合计),
2、Salary(Tno,jbgz,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 CHA
3、RSET=utf8 COLLATE=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);Cr
4、eate Table T(TNochar(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中增
5、加一个sdept(系)的新的属性列; alter 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上建立聚簇索引。Cre
6、ate Clustered Index 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删除学生表st
7、udent的索引。 Drop Index 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中
8、学号sno的外码约束。Alter Table SC Add Foreign Key(SNo) references Student(SNo);-实验三 数据的插入、更新及删除操作1、用insert输入数据。学生表student的数据 张三22男计算机系 李四 21男信息系王五23男数学系陈六19男计算机系吴七24女数学系刘八22女信息系Insert Into Student Values(, 张三, 男, 22, 计算机科学与技术系);Insert Into Student Values(, 李四, 男, 21, 信息科学系);Insert Into Student Values(, 王五,
9、男, 23, 数理系);Insert Into Student Values(, 陈六, 男, 19, 计算机科学与技术系);Insert Into Student Values(, 吴七, 女, 24, 数理系);Insert Into Student Values(, 刘八, 女, 22, 信息科学系);课程表course的数据1 数学52 数据结构43 程序设计24 数据库原理35 操作系统3Insert Into Course Values(1, 数学, 5);Insert Into Course Values(2, 数据结构, 4);Insert Into Course Values
10、(3, 程序设计, 2);Insert Into Course Values(4, 数据库原理, 3);Insert Into Course Values(5, 操作系统, 3);选课表SC的数据190580385490185298291Insert Into SC Values(, 1, 90);Insert Into SC Values(, 5, 80);Insert Into SC Values(, 3, 85);Insert Into SC Values(, 4, 90);Insert Into SC Values(, 1, 85);Insert Into SC Values(, 2,
11、 98);Insert Into SC Values(, 2, 91);基本表T的数据0001张三男1968-10信息副教授湘潭0002李四 女1956-11信息教授长沙1001王五男1973-07计算机讲师湘潭1008陈六男1970-08计算机副教授北京Insert Into T Values(0001, 张三, 男, 1968-10-10, 信息科学系, 副教授, 湘潭);Insert Into T Values(0002, 李四, 女, 1956-11-10, 信息科学系, 教授, 长沙);Insert Into T Values(1001, 王五, 男, 1973-07-20, 计算机
12、科学与技术系, 讲师, 湘潭);Insert Into T Values(1008, 陈六, 男, 1970-08-20, 计算机科学与技术系, 副教授, 北京);基本表Salary的数据00011000300130000021500500200010018002001000Insert Into Salary Values(0001, 1000, 300, 1300);Insert Into Salary Values(0002, 1500, 500, 2000);Insert Into Salary Values(1001, 800, 200, 1000);*/2、用delete删除数据记
13、录(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 Where TNo = 0001Update Salary Set jbgz = jbgz + 100实验四 数据的查询1、简单查询,用select检索(1)查询所有学生的基本情况。select * fro
14、m student;(2)查询教师每月应交纳的个人所得税。 select hj*0.005 as monthshui from Salary;(3)查询张三与李四两位同学的基本情况。 select * from student where sname=张三 or sname=李四;(4)查询9911班学生的基本信息(规定学生学号的前四位是班级号)。 select * from student where sno like 9911%;(5)查询所有年龄在20岁以下的学生姓名及其年龄。 select sname,sage from student where sage2;2、多表查询,用sele
15、ct检索(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 student.sno=sc.sno;(3)查询每一门课的间接先修课。 select CA.cno AS 课程号,CB.PreCourse AS 间接先修课号from course CA,course CBwh
16、ere CA.PreCourse=CB.cno 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=Ty. Address and Tx.TnameTy.Tname(5)查询选修2号课程且成绩在90分以上的所有学生。 select * from student,SCwhere student
17、.sno=SC.sno and SC.cno=2 and SC.grade90;(6)查询与王五在同一个系学习的学生。select *from studentwhere sdept=(select sdept from student where sname=王五);实验五 视图1、建立男学生的视图,属性包括学号、姓名、选修课程名和成绩。 create view boystudent_view as select student.sno,sname,cno,gradefrom student,SCwhere student.ssex=男 and student.sno=SC. Sno and
18、o=o;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 where student.sdept=信息 and student.sno=SC.sno and SC.cno=14、建立信息系选修了1号课程且成绩在90分以上的学生的视图。 create vie
19、w xinxi_view2 as select student.sno,sname,sage,ssex from student,SC where student.sdept=信息 and student.sno=SC.sno and SC.cno=1 and SC.grade905、建立计算机系选修了2号课程的学生的视图。create view jisuanji_viewas select student.sno,sname,sage,ssexfrom student,SCwhere student.sdept=计算机 and student.sno=SC.sno and SC.cno=26
20、、建立一个学生出生年份的视图。create view year_viewas select sno,sname,2016-sage as birthdayfrom student7、建立一个计算机系学生的视图,并要求在进行修改、插入操作时,仍然要确保视图只有计算机系的学生。create view jisuanji2_viewas select student.sno,sname,sage,ssexfrom studentwhere sdept=计算机with check option8、向学生视图中插入一条新记录(,钱进,男,20) create view student_view1 as s
21、elect sno,sname,ssex,sage from student;insert into student_view1 values(,钱进,男,20)9、将学生视图中学号为的学生姓名改为“刘平平”。 update student_view1 set sname=刘平平 where sno=10、删除计算机系视图中学号为的记录。 deletefrom jisuanji2_view where sno=11、删除学生出生年份的视图。drop view year_view;实验六 集合函数和授权语句应用1、使用select语句查询(1)9911班学生的人数和平均成绩(规定学生学号的前四位
22、是班级号)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,MAX(sc.grade) as maxgrade FROM scGROUP BY snoHAVING MAX(grade)90(4)月工资大于平均工资的教师号SELECT TNo FROM Salary WHERE hj=( SELECT AVG(hj)
23、 from Salary ) 2、使用GRANT语句,把对基本表STUNT、SC、COURSE的使用权限授给其它用户。3、使用GRANT语句,让用户LI有权在当前库中创建视图。4、使用REVOKE语句,不允许ZHAO这个用户在当前库中创建视图。5、实验完成后,撤消建立的基本表和视图。 实验七 创建、执行、修改和删除存储过程1、建立查询计算机系女学生的存储过程。CREATE PROCEDURE SELECT_WOMANAS SELECT * FROM student WHERE SSEX=女2、执行刚建立存储过程。 exec select_woman3、修改刚建立的存储过程。 ALTER PRO
24、CEDURE SELECT_WOMANAS SELECT * FROM studentWHERE SSEX=男4、建立一个按性别查询学生信息的带参数的存储过程。CREATE PROCEDURE SELECT_SEX(vssex char(4) )ASSELECT * FROM student WHERE student.ssex=vssex*/exec SELECT_SEX vssex=男;5、删除刚建立的存储过程。DROP PROCEDURE SELECT_WOMAN 实验八 触发器的插入、删除、更新和创建1、对student表创建delete触发器,当删除某个学生记录时,同时在选课表SC中
25、删除该学生的选课记录。 create trigger t1 on student for delete as delete from sc where sno in (select sno from deleted) /*当表student 和SC 都有 sno为 delete from student where sno= select * from student 看结果2、对student表创建update 触发器,当对student表进行修改时,显示被修改的记录。2 create trigger t2 on student for update as select * from del
26、etedInsert Into Student Values(00001, 王五, 男, 23, 数理系); Update student Set sage = sage + 1 where sno=00001 看结果3、对SC表创建insert 触发器,当对SC表插入一条记录时,检查SC表中的学号在student表中是否存在,如果不存在,则不允许插入新记录。create trigger t3 on sc for insert as if(select count(*) from student where sno in(select sno from inserted) rollback t
27、ransactioncreate trigger t3 on sc for insert as begin if (select count(*) from student where sno in (select sno from inserted)=0 begin print 无效的记录 rollback transaction 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= where sno= select * from student 实验十:数据的复制与恢复1、将所建数据库先进行分离,然后再分离出来的数据库进行附加操作。2、对所建数据库进行备份。3、对进行了备份的数据库进行还原。4、删除所建数据库。5、将所建数据库的数据导入到Excel表格中。6、将Excel表格中的数据导入到另一数据库中。专心-专注-专业