




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库原理实验指导书参考答案
中割准工出院
《数据库原理与应用》实验指导
/年第一学期
姓名:______________
学号:______________
班级:______________
指导教师:______________
计算机科学与工程学院
文档仅供参考
实验一SQLServer使用初步
一、实验目的
1、熟悉SQLServer的组成及基本功能。
2、掌握SQLServer的登录及注册。
3、掌握SQLServer企业管理器的使用方
法。
4、熟悉查询分析器的基本使用。
二、实验预习
1、什么是数据库管理系统DBMS?你所知道
的DBMS有哪些?
2、SQLServer()的安装步骤?
文档仅供参考
三、实验内容和要求
1、注册服务器
基本步骤:
(1)打开企业管理器
(2)右击SQLServer组f新建SQLServer
注册
(3)添加可用的服务器(实际数据库服务
器的名称或IP地址)
(4)选择身份验证模式(选“系统管理员
分配给我的登录信息”)
(5)输入正确的登录名和密码
(6)选择SQLServer组(选“在现有的SQL
Server组中添加SQLServer
(7)完成注册
若注册成功,则显示注册成功的信息。
2、连接SQLServer服务器
(1)右键单击上面注册的数据库服务器,
选择连接,建立与数据库服务器的连接。观
察连接后服务器图标的变化;
文档仅供参考
(2)右键单击选择编辑SQLServer注册属
性,观察已注册数据库服务器的属性信息;
(3)右键单击选择删除SQLServer注册。
为保证数据库的安全性,使用完毕自己的数
据库后,可采取删除的方式,断开与数据库
的连接;
(4)重复注册服务器的步骤,再次建立与
数据库的连接;
3、熟悉企业管理器
(1)单击建立的服务器连接,观察服务器
的7个项目,写出它们的名称。经过查看联
机帮助,总结7个项目的基本功能。
(2)单击数据库,观察Northwind数据库
文档仅供参考
下的11个项目,写出项目名称,经过联机
帮助了解它们的基本功能。
(3)查看Northwind的表项目,单击表,
观察表的名称、所有者、类型以及创立日期。
回答:
■这些表的所有者有哪几种?
■这些表的类型有哪几种?
■选择表Employees,在右键菜单中选择
打开表->返回所有行,观察表中的数据,
说出这些数据的实际含义。观察其它用
文档仅供参考
户类型的表,你还能说出它们数据的实
际含义吗?
(4)查看Northwind的视图项目,单击视
图,观察视图的名称、所有者、类型以及创
立日期。选择视图ProductSalesfor1997,
同上面观察表中数据的方法一样,观察视图
中的数据,说出这些数据的意义。
文档仅供参考
(5)查看Northwind的用户项目,单击用
户。回答:
■有哪类用户?查看它们的属性对话框,
它们的角色和权限是否相同?
■经过联机帮助,写出dbo、Guest用户的
区别。
(6)查看Northwind的角色项目,单击角
色。回答:
■有哪些角色类型?经过查看联机帮助,
文档仅供参考
写出它们各自的含义和作用。
(7)查看Northwind的安全性项目,单击
项目中的登录,观察不同的登录名称、类型、
服务器访问、默认数据库,找到你自己的登
录名称,右键单击打开属性对话框,观察对
话框中的设置,写出登录属性对话框中的设
置作用。
文档仅供参考
4、熟悉查询分析器
(1)打开查询分析器。基本步骤:
■单击注册的数据库服务器,确定服务器
已经连接;
-在主菜单“工具”中选择“SQL查询分
析器”;
■在打开的查询分析器窗口中,左侧的对
象浏览器为注册的服务器,在工具栏的
数据库选择中选择Northwind数据库为
当前数据库;右侧窗口为查询窗口。
(2)分别在查询窗口中输入如下查询语句,
观察查询结果,写出结果的数据记录个数:
查询语句1:
SELECT*
FROMShippers
ORDERBYCompanyName
结果记录数:
查询语句2:
文档仅供参考
SELECTFirstName,HomePhone
FROMNorthwind.dbo.Employees
ORDERBYFirstNameASC
结果记录数:
查询语句3:
SELECTROUND((UnitPrice*.9),2)
ASDiscountPrice
FROMProducts
WHEREProductID=58
结果记录数:
查询语句4:
SELECTOrderlD,
DATEDIFF(dd,ShippedDate,
GETDATE())ASDaysSinceShipped
FROMNorthwind.dbo.Orders
WHEREShippedDateISNOTNULL
文档仅供参考
结果记录数:
查询语句5:
SELECTProductID,ProductName
FROMNorthwind.dbo.Products
WHERECategorylD=1ORCategorylD
=4ORCategorylD=5
结果记录数:
四、实验小结
文档仅供参考
五、评阅成绩
实验预实验过实验结实验报总成绩
习20%程20%果30%告30%
文档仅供参考
实验二数据定义
一、实验目的
1、掌握SQL数据定义功能:数据库定义、
表的定义、索引定义。
2、掌握利用企业管理器和SQL语句定义表、
索引的方法。
二、实验预习
1、SQL中基本表定义语句格式:
2、SQL中修改基本表语句格式:
文档仅供参考
三、实验内容和要求
1、在企业管理器中,利用菜单操作的方式
在各自的数据库中建立如下四个基本表:
(1)供应商表S:
列名说数据类型约束
明
SNO供CHAR(6)PRIMARY
应KEY
商
号
SNAME供VARCHAR(20)NOT
应NULL
商
名
STATUS供VARCHAR(50)
应
商
状
态
文档仅供参考
CITY所VARCHAR(50)
在
城
市
(2)零件表P:
列名说数据类型约束
明
PNO零CHAR(6)PRIMARYKEY
件
号
PNAME零VARCHAR(20)NOTNULL
件
名
COLOR颜CHAR(2)
色
WEIGHT重NUMERIC(9,2)CHECK(WEIGHT>0
量AND
WEIGHT<=100)
(3)工程项目表J:
列名说明数据类型约束
文档仅供参考
JNO项目CHAR(6)PRIMARY
号KEY
JNAME项目VARCHAR(20)NOT
名NULL
CITYVARCHAR(50)
(4)供应情况表SPJ:
皿.1口MAmi
列名说明数据类型约束
SNO供应商CHAR(6)NOTNULL
号
PNO零件号CHAR(6)NOTNULL
JNO项目号CHAR(6)NOTNULL
QTY供应数SMALLINTDEFAULT
量100
2、用CREATE语句建立如下三个表,并写出
相应的语句。
(1)学生表Student:
列名说明数据类型约束
SNO学号CHAR(7)主码
文档仅供参考
SNAME姓名CHAR(10)NOT
NULL
SSEX性别CHAR(2)取“男”
或“女”
SAGE年龄SMALLINT取值
15-45
SDEPT所在VARCHAR(20)默认
系“计算
机系”
语句:
CREATETABLEStudent(
Snochar(7)PRIMARYKEY,
Snamechar(10)notnull,
Ssexchar(2)CHECK(Ssex='男'orSsex=,
女'),
SagesmallintCHECK(Sage>=15and
Sage<=45),
Sdeptchar(20)DEFAULT'计算机系'
)
(2)课程表Course:
列名说数据类型约束
明
文档仅供参考
CNO课CHAR(10)主码
程
号
CNAME课VARCHAR(20)NOT
程NULL
名
CCREDIT学SMALLINT大于0
分
SEMSTER学SMALLINT大于0
期
PERIOD学SMALLINT大于0
时
语句:
CREATETABLECourse(
Cnochar(10)PRIMARYKEY,
Cnamevarchar(20)NOTNULL,
Ccreditsmallintcheck(ccredit>0),
semstersmallintcheck(semster>0),
periodsmallintcheck(period>0)
)
(3)选课表Sc:
文档仅供参考
列名说明数据类型约束
SNO学号CHAR(7)主码,引用
Student的外码
CNO课程号CHAR(10)主码,引用
Course的外码
GRADE成绩SMALLINT大于0
语句:
CREATETABLESC(
Snochar(7),
Cnochar(10),
Gradesmallintcheck(grade>=0),
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Cno)REFERENCESCourse(Cno),
FOREIGNKEY(Sno)REFERENCESStudent(Sno)
)
3、利用SQL语句对表结构进行修改。
(1)为零件表P增加一个规格(GUIGE)列,
数据类型为字符,长度50;
AlterTablePAddGUIGEchar(50)
文档仅供参考
(2)修改课程表Course的CNAME属性列的
类型为VARCHAR(30);
AlterTableCourseAlterColumnCNAME
varchar(30)
(3)为供应情况表SPJ添加参照完整性约
束;
SPJ的SNO列参照S表SNO列
AlterTableSPJAddForeignKey(SNO)
ReferencesS(SNO)
SPJ的PNO列参照P表PNO列
AlterTableSPJAddForeignKey(PNO)
ReferencesP(PNO)
SPJ的JNO列参照J表JNO列
AlterTableSPJAddForeignKey(JNO)
ReferencesJ(JNO)
文档仅供参考
(4)删除零件表P的规格(GUIGE)列
AlterTablePDropColumnGUIGE
4、利用企业管理器向表中添加数据
(1)供应商表S:
SN0SNAMESTATUSCITY
S1精益20天津
S2盛锡10北京
继续往表中增加一条记录:四个字段的数据
分别是S1,东方红,30,北京,会出现什么情
况?为什么?
(2)零件表P:
PN0PNAMECOLORWEIGHT
P1螺母红12
P2螺栓绿17
文档仅供参考
P3螺丝蓝105.5
刀
是否能够正常输入三条数据?如果否,问题
出在哪里,为什么?
(3)工程项目表J:
JNOJNAMECITY
J1一汽北京
J2半导体南京
r
J3常州
第三条记录是否能够正常输入,若否,会出
现什么问题,为什么?
(4)供应情况表SPJ:
文档仅供参考
SNOPNOJNOQTY
S1P1J1200
S1P1J3
S2P2J4
输入过程中是否会遇到问题,若有,出在哪,
为什么?
四、实验小结
文档仅供参考
五、评阅成绩
实验预实验过实验结实验报总成绩
习20%程20%果30%告30%
文档仅供参考
实验三数据查询
一、实验目的
1、掌握查询语句的基本组成和使用方法
2、掌握常见查询技巧
二、实验预习
1、SQL中查询语句格式:
2、连接查询有哪些不同的连接方式?有什
么特点。
文档仅供参考
三、实验内容和要求
1、按照下表中的内容,在企业管理器中为
数据库表输入相应的数据。
学生表:Student
SnoSnameSsexSageSdept
9512101李勇男19计算机
系
9512103王敏女20计算机
系
9521101张莉女22信息系
9521102吴宾男21信息系
9521103张海男20信息系
9531101钱小平女18数学系
9531102王大力男19数学系
课程表:Course
CnoCnameCcreditSemsterPeriod
C01计算机313
导论
C02VB434
C03计算机474
文档仅供参考
网络
C04数据库664
基础
C05高等数818
学
选课表:SC
SnoCnoGrade
9512101C0395
9512103C0351
9512101C0580
9512103C0560
9521101C0572
9521102C0580
9521103C0545
9531101C0581
9531102C0594
9512101C01NULL
9531102C01NULL
9512101C0287
文档仅供参考
9512101C0476
2、完成下列查询
(1)查询全体学生的信息。
select*fromstudent
(2)查询“信息系”学生的学号,姓名和
出生年份。
selectSno,Sname,-SageasBirthyear
fromstudentwhereSdept=,信息系'
(3)查询考试不及格的学生的学号。
selectDistinctSnofromSCwhere
Grade<60
(4)查询无考试成绩的学生的学号和相应
的课程号。
文档仅供参考
selectSno,CnofromSCwhereGradeis
null
(5)将学生按年龄升序排序。
select*fromstudentorderbySageasc
(6)查询选修了课程的学生的学号和姓名。
SelectSno,SnamefromStudentWhereSno
in(SelectSnoFromSc)
或:
selectdistinctstudent.Sno,Snamefrom
student,SCwherestudent.Sno=SC.Sno
(7)查询年龄在20-23岁之间的学生的姓
名,系,年龄。
文档仅供参考
selectSname,Sage,Sdeptfromstudent
whereSagebetween20and23
(8)查询同时选修了“计算机导论”,“高
等数学”课程的学生的学号,姓名。
selectstudent.Sno,Snamefromstudent
whereNOTEXISTS(
select*fromcoursewhere
Cnamein('高等数学','计算机导论
')ANDNOTEXISTS(select*fromSC
whereSno=student.Snoand
Cno=course.Cno))
或:
selectstudent.Sno,Snamefrom
student,sc,Coursewhere
student.sno=sc.snoand
o=oandcname=,高等数学’
andstudent,snoin(selectsnofromsc
wherecno=(selectcnofromcoursewhere
文档仅供参考
cname=,计算机导论'))
或:
selectstudent.Sno,Snamefromstudent
wheresnoin(selectsnofromscwhere
cno=(selectenofromcoursewhere
cname='高等数学'))andsnoin(select
snofromscwherecno=(selectenofrom
coursewherecname=,计算机导论’))
(9)查询姓“张”的学生的基本信息。
select*fromstudentwhereSnamelike
'张%'
(10)查询“95211”班学生的选课情况,
要求输出学号,姓名,课程名,成绩,按照
学号升序排序。
selectstudent.Sno,Sname,Cname,Grade
fromstudent,SC,coursewhere
文档仅供参考
student.Sno=SC.Snoand
course.Cno=SC.Cno
andstudent.Snolike'95211%'order
bystudent.Sno
或:
selectstudent.Sno,Sname,Cname,Grade
fromstudent,SC,coursewhere
student.Sno=SC.Snoand
course.Cno=SC.Cno
andleft(student,sno,5)='95211'
orderby1
(11)查询选修了课程的学生的总人数。
selectcount(distinctsno)fromSC
(12)查询选修了“C05”课程的的学生成
绩单,要求输出学号,姓名,成绩,结果按
班级升序,成绩降序排列。
文档仅供参考
selectstudent.Sno,Sname,Gradefrom
student,SCwherestudent.Sno=SC.Snoand
Cno='C05'orderby
left(student.Sno,5)asc,Gradedesc
(13)统计各门课程的成绩,要求输出课程
代号,课程名,平均成绩,选修人数。(成
绩为NULL值的不统计)
select
course.Cno,Cname,avg(Grade),count(Sno)
fromcourse,Scwherecourse.Cno=SC.Cno
andGradeisnotnullgroupby
Course.Cno,Cname
(14)统计各门课程的不及格人数,要求输
出课程代号,课程名,不及格人数。
selectCourse.Cno,Cname,count(Sno)
fromSC,CoursewhereSC.Cno=course.Cno
文档仅供参考
andGrade<60groupby
Course.Cno,Cname
(15)查询选修平均成绩在75分以上的学
生的学号,姓名,所在系。
selectsc.sno,sname,sdeptfrom
student,scwherestudent.sno=sc.sno
groupbysc.sno,sname,sdepthaving
avg(grade)>75
或:
selectsno,sname,sdeptfromstudent
whereSnoin(SelectSnoFromSCGroup
BySnoHavingAvg(Grade)>75)
(16)查询与“王大力”同一个系的学生的
基本信息
select*fromstudentwheresdept
in(selectsdeptfromstudentwhere
文档仅供参考
sname=,王大力’)
(17)查询选修平均分高于所有学生平均分
的学生的学号,并按学号升序排列。
selectstudent.Snofromstudent,SC
wherestudent.Sno=SC.Snogroupby
student.Snohavingavg(Grade)>(select
Avg(Grade)fromSC)orderbystudent.Sno
asc
(18)查询未选修“VB”或“数据库基础”
两门课的学生的学号,姓名,系名。(要求
用嵌套查询)
selectsno,sname,sdeptfromstudent
wheresnonotin(selectsnofromscwhere
enoin(selectenofromcoursewhere
cnamein('VB','数据库基础')))
或:
文档仅供参考
selectsno,sname,sdeptfromStudent
whereexists(
select*fromCoursewherecname=,VB'
andnotexists(
select*fromSCwheresno=Student.sno
andcno=Course.enoandCourse,cname!=,
数据库基础,))
(19)查询选修了全部课程的学生的学号,
姓名,系名。
selectsno,sname,sdeptfromstudent
wherenotexists(select*fromcourse
wherenotexists
(select*fromscwhere
sno=student.snoandcno=course.eno))
或:
selectsno,sname,sdeptfromstudent
wheresnoin(selectsnofromscgroup
文档仅供参考
bysnohavingcount(eno)=(select
coount(*)fromcourse))
(20)输出“高等数学”课程成绩前三名的
学生的学号,姓名,系名
selecttop3student,sno,sname,sdept
fromstudent,sc,coursewhere
student.sno=sc.snoand
o=course.enoandcname=,高等数学’
orderbygradedesc
四、实验小结
五、评阅成绩
实验预实验过实验结实验报总成绩
文档仅供参考
习20%程20%果30%告30%
文档仅供参考
实验四数据更新
一、实验目的
1、掌握SQL语言的数据更新操作
2、掌握SQLServer企业管理器的数据导
入和导出功能
二、实验预习
1、数据插入语句格式:
2、数据修改语句格式:
3、数据删除语句格式:
4、SQLServer中可进行批量数据导入和导
出,可支持哪些格式的数据导入导出?(举
常见格式类型)
文档仅供参考
三、实验内容和要求
(执行操作后,将语句填写在下面的空白
处)
1、插入数据
(1)在学生表Student中插入数据:
Sno:9512102Sname:刘晨Ssex:男
Sage:20Sdept:计算机系
insertintoStudent
values('9512102'J刘晨','男',20,'计算机系')
(2)在课程表Course中插入数据:
Cno:C06Cname:数据结构Ccredit:
5Semster:4
insertintoCourse(cno,cname,ccredit,semster)
values('C06','数据结构',5,4)
或:
insertintoCoursevalues('C06','数据结构',5,4,null)
文档仅供参考
(3)在选课表SC中插入95211班学生选修
C04的选课信息。
提示:插入的数据的Sno从Student表中查
询而来,插入的Cno为“C04”
insertintoSC(sno,Cno)
selectsno,'c04'fromStudentwheresnolike'95211%'
(4)查询高等数学的成绩,包括学号,成
绩,并按学号升序排序。将查询的结果输出
到一个名为gs_cj的表中。
selectsno,gradeintogs__cj
fromsc,o=oandcname=,高等数学'
orderbysno
(5)将SC表中“C05”课程的选课记录输
出至一个新表中,表名为GsOl。
select*intoGsOl
fromscwherecno=,c05*
文档仅供参考
2、修改数据
(1)将所有学生的年龄增加1岁。
updatestudentsetsage=sage+l
(2)修改“9512101”学生的“C01”课程
成绩为85o
updatescsetgrade=85
wheresno=,951210Tandcno=,cOT
(3)修改“9531102”学生的“C01”课程
成绩为70o
updatescsetgrade=70
wheresno=,9531102,andcno=,cOT
(4)将所有平均分为75分以上的学生的各
文档仅供参考
门课成绩在原来基础上增加1%。
updatescsetgrade=grade*l.01
wheresnoin
(selectsnofromscgroupbysnohavingavg(grade)>=75)
3、删除数据
(1)删除“9531102”学生“C05”课程的
成绩记录
deletefromscwheresno=,9531102*andcno='c05'
(2)删除所有课程为“C05”的选课记录
deletefromscwherecno=,c05,
4、数据的导出
(1)将数据库中的S,P,J,SPJ表导出为一
个ACCESS数据库,名为DB_SPJ。
(2)Student表中数据导出到一个文本文
件,用,作为数据项的分隔符。
文档仅供参考
(3)将Course表中数据导出到一个Excel
文件中。
5、批量增加数据
(1)利用查询,将其它表中的数据增加到
需要的数据表中。
将GsOl表中的数据添加到SC表中。(用
Insert语句实现)
insertintoscselect*fromGsOl
(2)从外部其它数据源导入数据(选做)
-从文本文件中导入
■从ACCESS中导入数据
■从EXECEL中导入数据
文档仅供参考
四、实验小结
五、评阅成绩
实验预实验过实验结实验报总成绩
习20%程20%果30%告30%
文档仅供参考
实验五数据控制
一、实验目的
1、掌握数据库完整性约束条件的设置
2、掌握触发器的基本使用
3、掌握SQLServer的安全性控制方法
二、实验预习
1、关系数据库的完整性约束有哪些?
2、什么是触发器?其作用是什么?SQL
Server中的触发器主要有哪些?
文档仅供参考
三、实验内容和要求
1、实体完整性约束
(1)为供应商表SPJ建立完整性约束,约
束列为SNO,PNO,JNOo
方法1:在表设计器中建立,请写出建立的
步骤:
方法2:写出创立表的同时定义完整性约束
的SQL语句。
createtablespj
(
snochar(6)foreignkeyreferences
s(sno),
pnochar(6)foreignkeyreferences
文档仅供参考
P(pno),
jnochar(6)foreignkeyreferences
j(jno),
qtysmallintdefault100,
primarykey(sno,pno,jno)
)
(2)根据实验2中的内容,输入数据下面
的数据,能否成功?为什么?
S1P1J1200
(3)输入下面的数据能否成功,为什么?
S1NULLJ1200
文档仅供参考
(4)根据上面实验的结果,请说明实体完
整性约束的含义。
2、参照完整性约束
(1)修改Student表中记录,将学号
9512101改为9512103,更改是否成功?若
不成功请说出原因。
updatestudentsetsno=,9512103,where
sno=951210r
(2)修改SC表中记录,将学号为9512101
的记录均改为学号9512109,是否更改成
功?若不成功请说出原因。
文档仅供参考
updatescsetsno=,9512109,where
sno=9512101'
(3)设置SC表的参照完整性为更新和删除
时均为级联。
方法1:在表设计器中设置,请写出设置的
步骤:
方法2:在创立表时同时设置参照完整性约
束,并设置规则为级联。请写出SQL语句。
文档仅供参考
CREATETABLESC(
Snochar(10),
Cnochar(10),
Gradenumeric(6,2),
PRIMARYKEY(Sno,Cno),
FOREIGNKEY(Cno)REFERENCES
Course(Cno)
ondeletecascadeonupdatecascade,
FOREIGNKEY(Sno)REFERENCES
Student(Sno)
ondeletecascadeonupdatecascade
)
(4)修改Student表学号9512101为
9512109,观察SC表中相应记录是否更新?
updatestudentsetsno=,9512109,where
sno=,951210V
文档仅供参考
(5)在Course表中删除课程代号为C01的
记录,观察SC表中选课C01的记录是否删
除?
deletefromcoursewherecno=,COT
3、用户自定义完整性
(1)设置Student表的Sno输入长度必须
为7个字符的约束。请将CHECK约束子句写
在下面:
altertablestudentaddcheck(snolike
,3
(2)设置student表的Sdept只能为“计
算机系”,“数学系”,“信息系”,“物理系”。
请将CHECK约束子句写在下面:
altertablestudentaddcheck(sdeptin('
计算机系’,'数学系信息系','物理系
文档仅供参考
'))
4、触发器
(1)定义一个触发器,其基本功能是在SC
表中增加或修改一个选课记录时,检查该课
程的选课人数是否超过限定(可自行定义一
个限定值,根据表中数据的情况而定)。若
超过限定值,则拒绝操作。
触发器代码:
CREATETRIGGERtriglONSC
FORINSERT,UPDATE
AS
IF(SELECTCOUNT(*)FROMSCWHERE
CNO=(selectCNOfromINSERTED))>10
BEGIN
PRINT'选课人数超过上限'
文档仅供参考
ROLLBACK
END
(2)定义一个触发器,当删除Student表
中数据时,先将删除的数据插入到另一个专
门存放已删除数据的表中(实验时,首先定
义一个与Student表结构相同的表用来存放
删除的数据),然后执行删除操作。
触发器代码:
selecttop0*intosifromstudent
createtriggertrig2onstudent
fordelete
as
insertintosiselect*fromdeleted
5、用户权限控制
(1)在自己数据库中添加其它用户。
(2)为添加的用户进行授权和权限收回。
相互检查是否获得了相应的权限。
文档仅供参考
sp_adduser'rjl07','rjl07'
grantselectonstudenttorjl07
grantselect,update(cname)oncourseto
rjl07
revokeselectoncoursefromrjl07
sp_dropuserJrjl07,
四、实验小结
五、评阅成绩
实验预实验过实验结实验报总成绩
习20%程20%果30%告30%
文档仅供参考
实验六视图与存储过程
一、实验目的
1、掌握视图的定义及使用
2、掌握存储过程的建立和调用
二、实验预习
1、基本表与视图有什么不同?哪种视图能
够更新?
2、视图定义语句格式:
3、什么是存储过程,其作用主要是什么?
文档仅供参考
三、实验内容和要求
1、视图(将执行的SQL语句写在下面)
(1)建立视图IS_STUDENT,视图中包含信息
系全体学生的基本信息。
createviewIS_STUDENT
as
select*fromstudentwheresdept=,信
息系'
select*fromIS_STUDENT
(2)建立视图CJ_STUDENT,视图中包含所有
成绩不及格的学生的学号,姓名,课程名,
成绩。
createviewCJ_STUDENT
as
selectsc.sno,sname,cname,gradefrom
sc,student,course
wheresc.sno=student.snoand
文档仅供参考
o=course.enoandgrade<60
select*fromCJ_STUDENT
(3)建立视图AVG_CJ,视图包括学生的学
号以及她们的平均成绩,按成绩降序排列。
createviewavg_cj(sno,ag)
as
selectsno,avg(grade)fromscgroupby
sno
select*fromavg_cj
(4)修改视图IS_STUDENT,将年龄均加lo
观察基本表Student中相应的数据是否发生
变化。
updateis_studentsetsage=sage+l
select*fromisstudent
文档仅供参考
(5)在视图IS_STUDENT中插入新的记录,
学号为9531103,姓名为张玉,女,21岁。
insertintois_student
valuesC9531103',‘张玉‘,'女',21,'信息
系')
select*fromis_student
(6)根据视图AVG_CJ,查询平均成绩大于
60的学生的学号。
select*fromavg_cjwhereag>60
2、存储过程
(1)建立存储过程student_Gradel,功能
是查询计算机系学生的成绩,包括学号,姓
名,课程名,成绩,按学号升序排序。
存储过程代码:
createproceduresutdent_gradel
as
文档仅供参考
selectsc.sno,sname,cname,gradefrom
sc,student,course
wheresc.sno=student.snoand
o=course.enoandsdept=,计算机系’
orderbysc.sno
执行存储过程代码:
execsutdent_gradel
(2)建立存储过程student_Grade2,功能
是根据参数提供的系名,查询该系学生的成
绩,包括学号,姓名,课程名,成绩,按学
号升序排序。
存储过程代码:
createproceduresutdent_grade2©sdept
char(20)
as
selectsc.sno,sname,cname,gradefrom
文档仅供参考
sc,student,course
wheresc.sno=student.snoand
o=course.enoandsdept=@sdept
orderbysc.sno
执行存储过程代码:
execsutdent_grade2'信息、系'
(3)建立存储过程student_Grade3,功能是
根据参数提供的学生的姓名和课程名,查询
该学生相应的课程成绩,若存在不为空的成
绩,则返回参数值为成绩值,否则返回-1。
存储过程代码:
createprocedurestudent_grade3©sname
char(10),©cnamevarchar(20),©grade
smallintoutput
as
select@grade=gradefrom
student,sc,coursewhere
文档仅供参考
student.sno=sc.snoand
o=course.enoandsname=@snameand
cname=@cname
if©gradeisnull
set@grade=-l
执行存储过程代码:
declare@gsmallint
execstudent_Grade3'李勇','计算机导论
’,@goutput
print@g
(4)建立存储过程check_Xk,功能是根据
提供的参数学号和课程号,完成选课记录的
插入功能。要求如下:
■首先检查该课程选课人数是否已满(可
自己根据表中数据的情况定义一个限定
值),若满,则返回一个0;若不满,继
续检查该学生是否已经选满3门课程,
若满,则返回-1,否则将选课记录插入
文档仅供参考
到SC表中,并返回lo
存储过程代码:
createprocedurecheck_xk@sno
char(7),@cnochar(10)
if(selectcount(*)fromscwhere
cno=@cno)>=80
return0
else
if(selectcount(*)fromscwhere
sno=@sno)>=3
return-1
else
begin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校教师期末述职报告
- 高三小说知识全解析
- 高钾临床表现
- 高考色彩基础知识2
- 北冥有鱼首知识框架图
- 高校年终总结大会
- 八年级上册《分式的混合运算》课件与练习
- 高中文明安全主题班会
- 【名师课件】4.2.1 课件:全反射-2025版高一物理必修二
- 西部农民工返乡创业比赛
- 管道系统吹洗(扫)记录(压缩空气)
- 唯识二十论述记讲记(完整版)-智敏上师
- 建设单位甲方对监理单位考核管理办法
- 摩登情书原著全文在线【3篇】
- 小型提灌站管护合同范本
- 统一战线理论与政策(讲课稿)
- 义务教育数学课程标准(2022年版)知识竞赛题库及答案
- 表贴式永磁同步电动机永磁体气隙磁场解析计算
- 厨房烹饪操作流程图
- 桥台锥坡工程量计算公式
- 配电柜维护保养规程
评论
0/150
提交评论