sql数据库实例数据库入门Word格式文档下载.docx
《sql数据库实例数据库入门Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《sql数据库实例数据库入门Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
当学生选修一门新的课程后,Statistics表的cNumber自动加1,且creditNumber自动增加新选课程的学分。
8、创建视图:
找出所有已修学分超过6、所修课程平均分不低于60的学生的基本信息、以及所修课程的平均分。
按照平均分排序,若平均分相同按照学号排序。
9、对于如下一组数据操作:
(1)select*fromcourse;
(2)select*fromcoursewherecname=’数据库’
(3)select*fromcoursewherecredit=3
(4)select*fromcoursewherecredit>
2andcredit<
5
(5)updatecoursesetcredit=3wherecredit=2
对Course表的credit属性创建索引,并给出上述查询在创建了该索引后的执行计划;
去掉Course表的credit属性上创建的索引,并给出上述查询的执行计划。
对上述有无索引个查询执行的情况进行对比分析,总结出什么时候索引有效?
10、将表Student、Course、Enroll作内连接的结果发布为HTML网页格式。
二、实验步骤及分析过程
1、设计并在MSSQLServer2000中创建以上表结构,并设置完整性约束。
(1)创建数据库SC。
SQL语句为:
createdatabaseSC创建后的数据库如图1。
(2)创建表
创建学生表:
createtableStudent(
snovarchar(10)notnullprimarykey,
snamevarchar(50)notnull,
ageint,
sexvarchar
(2)notnull
)
创建课程表:
createtableCourse(
cnovarchar(10)notnullprimarykey,
cnamevarchar(50)notnull,
creditintnotnull
创建注册表:
createtableEnroll(
snovarchar(10)notnull
referencesStudent(sno),
cnovarchar(10)notnull
referencesCourse(cno),
gradeint,
primarykey(sno,cno)
创建选课情况表:
createtableStatisticss(
snovarchar(10)notnullprimarykey
cNumberintnotnull,
creditSumintnotnull,
创建后的表如图2。
(3)插入数据
Student表:
insertintoStudentvalues('
2008001'
'
李贵斌'
22,'
男'
)
2008002'
冉从宝'
21,'
2008003'
杨文学'
20,'
2008004'
杨璐'
女'
2008005'
李小萌'
Course表:
insertintoCoursevalues('
001'
数据库'
4)
002'
java'
3)
003'
操作系统'
5)
004'
软件工程'
005'
计算机英语'
2)
Enroll表:
insertintoEnrollvalues('
89)
98)
85)
88)
90)
78)
79)
(4)查看表的内容
select*fromStudent结果如图3。
select*fromCourse结果如图4。
select*fromEnroll结果如图5。
2、查询所有选修课程学生的基本信息、课程信息及相应的考试成绩。
selecta.sno,a.sname,a.age,a.sex,o,ame,b.credit,c.grade
fromStudenta,Courseb,Enrollc
wherea.sno=c.snoando=o
执行结果如图6所示。
执行结果分析:
只显示了选了课程的学生信息。
3、查询所有学生的信息,若已选课就还要给出选修课程的信息及考试成绩。
selecta.sno,a.sname,a.sex,a.age,o,ame,d.credit,d.grade
fromStudentaleftouterjoin
(selecto,ame,b.credit,c.grade,c.sno
fromCourseb,Enrollcwhereo=o)d
ona.sno=d.sno
执行结果如图7所示。
不但列出选了课程的学生而且还列出来没选课程的学生信息。
4、查询所有课程的信息,若课程有学生选修就还要给出选修课程的学生的信息及考试成绩。
selecto,ame,a.credit,d.sno,d.sname,d.sex,d.age,d.grade
fromCoursealeftouterjoin
(selectb.sno,b.sname,b.age,b.sex,c.grade,o
fromStudentb,Enrollcwhereb.sno=c.sno)d
ono=o
执行结果如图8所示。
不但列出被选课程的信息和学生选课情况而且还列出来没被选课程的信息。
5、查询选修名为“数据库”的课程的考试成绩最高的学生的信息。
(1)先查看选了数据库课程的学生信息。
selecta.sno,a.sname,a.sex,a.age,ame,c.grade
fromStudenta,Courseb,Enrollc
wherea.sno=c.snoando=oandame='
执行结果如图9所示。
有三位学生选修了数据库课程。
(2)查询选修“数据库”课程的考试成绩最高的学生的信息。
selecta.sno,a.sname,a.sex,a.age,ame,d.grade
fromStudenta,
(selecto,ame,c.grade,c.snofromCourseb,Enrollc
whereo=oandame='
)d
wherea.sno=d.snoandd.grade=(selectmax(grade)
from(selecto,ame,c.grade
fromCourseb,Enrollcwhereo=o)d
whereame='
执行结果如图10所示。
与图9结合比较,图10了列出了选修“数据库”课程成绩最高学生信息。
6、对Student的age创建规则,满足18≤age≤25,并给出验证实例及验证结果。
(1)创建规则并且绑定它。
createruleage_ruleas
@age>
=18and@age<
=25
sp_bindruleage_rule,'
Student.age'
(2)插入数据检验。
2008006'
李志锋'
(所影响的行数为1行)
2008007'
李小龙'
32,'
2008008'
杨一民'
17,'
服务器:
消息513,级别16,状态1,行1
列的插入或更新与先前的CREATERULE语句所强制的规则冲突。
该语句已终止。
冲突发生于数据库'
SC'
,表'
Student'
,列'
age'
。
语句已终止。
规则设置成功。
7、创建触发器:
createtriggerinsert_statisticssonEnroll
forinsertas
begin
updateasetcNumber=cNumber+d.countCno,credit