广药数据库实验答案参考.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《广药数据库实验答案参考.doc》由会员分享,可在线阅读,更多相关《广药数据库实验答案参考.doc(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流广药数据库实验答案参考【精品文档】第 22 页-实验三 参考答案(一)、数据库、表的创建及删除1.将数据库bookdb的相关属性(系统默认设置),填入下表:项目 内容数据库所有者 XP-201104281226Administrator(Windows身份登录SQL server)数据库名称 bookdb数据库逻辑文件名 bookdb数据文件物理名 D:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatabookdb.mdf(本机SQL SERVER系统安装目录在D盘)数据库初始大小 3MB数据文件最大值 不
2、限制增长数据文件增长量 1MB日志逻辑文件名 bookdb_log日志文件物理名 D:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatabookdb_log.ldf(本机SQL SERVER系统安装目录在D盘)日志文件初始大小 1MB日志文件最大值 2,097,152MB日志文件增长量 10%-根据“二、实验内容”的要求,使用T-SQL命令创建/删除数据库EDUC,创建数据表student、course、sc。-2.删除bookdb数据库。DROP DATABASE bookdb-3.创建数据库EDUC。CREATE DATABASE EDUCO
3、N PRIMARY NAME=EDUC_data,FILENAME=C:EDUC_data.mdf,SIZE=4MB,MAXSIZE=10MB,FILEGROWTH=1MBLOG ON NAME=EDUC_log,FILENAME=C:EDUC_log.ldf,SIZE=1MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%-4.创建数据表Student。USE EDUCCREATE TABLE StudentSno varchar(20) NOT NULL CONSTRAINT PK_Student PRIMARY KEY,Sname varchar(10) NOT NUL
4、L,Sage int,Ssex varchar(2),Sdept varchar(30)-5.创建数据表Course。CREATE TABLE CourseCno varchar(15) NOT NULL CONSTRAINT PK_Course PRIMARY KEY,Cname varchar(30),Cpno varchar(15),Ccredit int-6.创建数据表SC。CREATE TABLE SCSno varchar(20) NOT NULL,Cno varchar(15) NOT NULL,Grade DECIMAL(9,2),CONSTRAINT PK_SC PRIMAR
5、Y KEY(Sno,Cno)-(二)、修改基本表的定义-1修改列属性-(1)用SSMS将Student表中的Sage字段设为不能为空(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 ALTE
6、R COLUMN Sno CHAR(8) NOT NULL -需设置为不允许空,否则不能在该列上创建主键-最后,恢复(添加)Sno上的主键约束ALTER TABLE Student ADD CONSTRAINT PK_Student PRIMARY KEY(Sno)-2添加列-(1)用SSMS在Course表中添加一列year,类型为varchar(4),默认置为空。ALTER TABLE CourseADD year varchar(4) NULL-(2)用SQL语句在year字段添加约束,year 的属性值在2006-2012之间。ALTER TABLE CourseADD CONSTRA
7、INT CK_year CHECK(year BETWEEN 2006 AND 2012)-3删除列-(1)用SQL语句将Course表中的year字段删除。-先删除year上的各种约束(CHECK约束)ALTER TABLE CourseDROP CONSTRAINT CK_year -再删除yearALTER TABLE CourseDROP COLUMN year -COLUMN不能省略-实验四 参考答案-1. 统计各门课程所选修的人数,并把结果存储在一张新表中。(提示:用SelectInto,group by)SELECT Course_id,COUNT(*) AS 选修人数 INTO
8、 Course_numFROM StudentGradeGROUP BY Course_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=
9、计算机系-嵌套查询SELECT * -父查询:根据子查询找出的系别编号,查找该系别编号的班级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岁的女同学的学号和姓名。
10、-GETDATE()为获取系统时间的函数,YEAR()为获取“年”,MONTH()为获取“月”,DAY()为获取“日”。SELECT *FROM StudentWHERE (YEAR(GETDATE()-YEAR(Birthday)80-实验五 参考答案-1找出所有任教“数据库”的教师的姓名。SELECT teac_nameFROM teacher JOIN courseteacher ON teacher.teac_id=courseteacher.teac_id JOIN course ON courseteacher.course_id=course.course_idWHERE cou
11、rse_name=数据库 -此处用连接查询,三个表连接后形成一个大表,然后从中筛选。-练菲彰上了两个班级的数据库,因此有两条记录。可用DISTINCT去除重复行-嵌套查询SELECT teac_name -根据子查询得到的结果在teacher中找出上“数据库”的老师,上数据库的老师只有一个,故只有一条记录。FROM teacher WHERE teac_id in(SELECT teac_id FROM courseteacher WHERE course_id=(SELECT course_id FROM course WHERE course_name=数据库) -2取出学号为“98010
12、1011”的学生选修的课程号和课程名。SELECT course.course_id,course_nameFROM course JOIN studentgrade ON course.course_id=studentgrade.course_idWHERE stu_id=980101001-嵌套查询SELECT course_id,course_nameFROM courseWHERE course_id in(SELECT course_id FROM studentgrade WHERE stu_id=980101001)-3“涂杰杰”所选修的全部课程号及成绩。(注意:school中
13、有同名,即有两名学生叫“涂杰杰”。)SELECT course_id,gradeFROM studentgrade JOIN student 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语言成绩比数据结构成绩好的学生(自身连接)。SELECT *FROM studentgrade AS a JOIN student
14、grade AS b ON a.stu_id=b.stu_idWHERE a.course_id=(SELECT course_id FROM course WHERE course_name=C语言) AND b.course_id=(SELECT course_id FROM course WHERE course_name=数据结构) AND a.gradeb.grade-连接查询,比嵌套查询复杂SELECT SG1.Stu_id,C1.Course_name,SG1.Grade,C2.Course_name, SG2.GradeFROM StudentGrade AS SG1 JOIN
15、 Course AS C1 ON SG1.Course_id=C1.Course_id -此连接得到:每位学生的选课情况及所选课程信息,作为一个新表 JOIN StudentGrade AS SG2 ON SG1.Stu_id=SG2.Stu_id -此连接得到:将相同内容的表,表进行自身连接 JOIN Course AS C2 ON SG2.Course_id=C2.Course_id -此连接得到:每位学生的选课情况及所选课程信息,作为一个新表WHERE SG1.GradeSG2.Grade AND C1.Course_name=C语言 AND C2.Course_name=数据结构-5显
16、示所有课程的选修情况(外连接)。SELECT *FROM course LEFT JOIN studentgrade ON course.course_id=studentgrade.course_idORDER BY course.course_id -为了便于观察。将每门课程的选修情况列在一起-或:列出各门课程的选修人数,无人选的课程的选修人数为0。-COUNT(stu_id),此处不能为*,COUNT(*)为统计有多少行(记录)。因为course与studentgrade左连接后,每门课程都至少有一条行(记录)。SELECT course.course_id,COUNT(stu_id)
17、AS 选修人数 FROM course LEFT JOIN studentgrade ON course.course_id=studentgrade.course_idGROUP BY course.course_id-6检索选修课程号为“0109”或“0111”的学生学号、姓名和所在班级。SELECT student.stu_id,stu_name,class_idFROM student JOIN studentgrade ON student.stu_id=studentgrade.stu_idWHERE course_id in(0109,0111)-若列出班级名称,则需在于Clas
18、s表连接SELECT student.stu_id,stu_name,class_nameFROM student JOIN studentgrade ON student.stu_id=studentgrade.stu_id JOIN class ON student.class_id=class.class_idWHERE course_id in(0109,0111)-当多个表(A,B,C)进行连接时,B表同时具有A表和C表中的某一字段,最好将B表作为连接三个表的中介,-如下,将student作为连接studentgrade和class的中介SELECT student.stu_id,s
19、tu_name,class_nameFROM studentgrade JOIN student ON studentgrade.stu_id=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查询“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 答案 参考
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内