数据库实验内容答案Word格式文档下载.docx

上传人:b****5 文档编号:20654547 上传时间:2023-01-24 格式:DOCX 页数:12 大小:19.75KB
下载 相关 举报
数据库实验内容答案Word格式文档下载.docx_第1页
第1页 / 共12页
数据库实验内容答案Word格式文档下载.docx_第2页
第2页 / 共12页
数据库实验内容答案Word格式文档下载.docx_第3页
第3页 / 共12页
数据库实验内容答案Word格式文档下载.docx_第4页
第4页 / 共12页
数据库实验内容答案Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据库实验内容答案Word格式文档下载.docx

《数据库实验内容答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库实验内容答案Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

数据库实验内容答案Word格式文档下载.docx

4.删除数据库“SM”。

dropdatabasesm

 

实验二:

创建表

1.在数据库SM中创建学生表student,课程表course,选课表sc

student(sid,sno,clno,sname,ssex,sage,sbir)

说明:

sidintidentity(1,1)序号

sno为主关系键,为字符类型学号

clno字符类型,班级号

sname字符类型,并不为空

ssex字符类型,check的值的范围为男女

sbir日期类型出生日期

sageint;

usesm

createtablestudent

(sidintidentity(1,1),

snochar(10)constraintpk_stprimarykey,

clnochar(10),

snamevarchar(20)notnull,

ssexchar

(2)constraintck_ssexcheck(ssexin('

男'

'

女'

)),

sbirdatetime,

sageint

course(cno,cname,ccredits,ctno,cpno,ctime)

cno字符类型,主关系键

cname字符类型,唯一键

ccredits学分,精确数值型,精确长度为2,小数位为1

ctno,cpno字符类型

ctime整型

createtablecourse

(cnochar(4)constraintpk_cprimarykey,

cnamevarchar(20)constaintuk_cnameunique,

ccreditdecimal(2,1),

ctnochar

(2),

cpnochar(4),

ctimetinyint

sc(sno,cno,score)

sno+cno为主键,并且sno是student的外部键,cno是course的外部键。

score精确数值型,精确长度为4,小数位为1

createtablesc

(snochar(10)constraintfk_snoforeignkeyreferencesstudent(sno),

cnochar(4)constriantfk_cnoforeignkeyreferencescourse(cno),

scoredecimal(4,1),

constraintpk_scprimarykey(sno,cno)

2.使用ManagementStudio对数据库SM中的表插入数据

实验三:

表的维护

1.用sql语句修改表course的列属性,将cname的长度改为40,且不允许空

altertablecourse

dropconstraintuk_cname

altercolumncnamechar(40)notnull

2.用sql语句向表student中增加列email,且要求输入的电子邮件地址必须包括"

@"

altertablestudent

addemailvarchar(20)constraintck_emailcheck(emaillike'

%@%'

3.用sql语句删除表student中的列sbir

dropcolumnsbir

4.删除sname列上的约束。

altertablestudent

altercolumnsnamevarchar(20)null

5.删除表student

droptablestudent

实验四:

简单数据查询

在实验二的基础上,再在sm数据库中新建表teacher,包括如下数据项

teacher(tno,tname,age,sal,dno)

tno为教职工编号,tname姓名,age年龄,sal为月薪,dno为部门号

在student,course,sc,teacher四张表中进行下列查询

1,查询所有0002部门职工的信息;

select*fromteacherwheredno='

0002'

2,查询1984年和1985年出生的女生的信息;

select*fromstudentwhereyear(sbir)in(1984,1985)

andssex='

3,查询0001部门、0002部门或0003部门的职工信息;

select*fromteacherwherednoin('

0001'

0003'

4,查询学号为03004的同学正在学习的课程;

selectcnofromscwheresno='

03004'

5,查询不姓王或李的同学的信息。

select*fromstudentwheresnamelike'

[^王李]%'

6,查询有多少名学生的物理课成绩不及格;

selectcount(sno)

fromsc,course

whereo=oandcname='

物理'

andscore<

60

7,求女学生的学生总数;

fromstudent

wheressex='

8,求职工的最高工资、最低工资和平均工资;

selectmax(sal),min(sal),avg(sal)

fromteacher

9,查询职工的年薪,并按年薪的升序排列;

selecttname,sal*12年薪

fromteacherorderbysalasc

10,求每个班的学生数

student(sid,sno,clno,sname,ssex,sage,sbir)

groupbyclno

11,查询每个学生已获得的学分(成绩及格即得相应课程的学分)。

selectsno,sum(ccredit)

wherescore>

60ando=o

groupbysno

实验五复杂查询(自连接和外连接不考)

1.查询体育课成绩不及格的男生名单

selectsname

fromstudent,course,sc

wherestudent.sno=sc.snoando=o

andcname='

体育'

2.将04001班全体学生的成绩置0

sc(sno,cno,score)

student(sno,clno...)

updatescsetscore=0

wheresnoin(selectsnofromstudentwhereclno='

04001'

3.删除04002班全体学生的选课记录

deletefromscwheresnoin(selectsnofromstudentwhereclno='

04002'

4.查询所有选修了001号课程的学生的姓名

fromstudent,sc

wherestudent.sno=sc.snoandcno='

001'

5.查询其他班中比04001班所有学生年龄都小的学生,并按年龄的降序输出

select*fromstudent

whereclno<

>

'

andsage<

all(selectsagefromstudentwhere

clno='

6.查询没有选修数据库课程的学生的信息

select*fromstudent

wheresnonotin(selectsno

fromsc,course

数据库'

实验六创建视图和数据操纵

1.建立04002班学生的视图

createviewv_clno

as

whereclno='

2.建立04001班学生的视图,输出其学号、姓名、和年龄,并且更换列名

createviewv1(学号,姓名,年龄)

as

selectsno,sname,sagefromstudent

3.将学生的学号和平均成绩建立一个视图

createviewv2(学号,平均成绩)

selectsno,avg(score)

fromsc

4.建立04003班学生选修了0001号课程的学生的视图.

createviewv3(学号,姓名)

selectsno,sname

fromstudent,sc

04003'

andstudent.sno=sc.snoandcno='

5.向数据表S添加一个学生信息

201320180309刘可女1998-2-15经管

insertintos(sno,sname,ssex,sbirthday,sdept)

values('

201320180309'

刘可'

1998-2-15'

null)

6.将张三的C语言课程成绩改为100分

updatescsetscore=100

wheresno=(selectsnofromswheresname='

张三'

andcno=(selectcnofromcwherecname='

c语言'

7.删除1001号课程的选修信息

deletefromscwherecno='

1001'

实验七数据安全(角色部分不考)

1.在服务器中创建test数据库的用户yy和登陆账号。

sp_addlogin'

login1'

pass1'

usetest

sp_adduser'

yy'

2.把对表sc的插入权授予给用户yy,并允许将此权限再授予其他用户

grantinsertonsctoyywithoption

3.把在test数据库建表权限授予给用户yy。

grantcreatetabletoyy

4.把查询表s和修改学生编号sno的权限授予给户yy。

grantselect,update(sno)onstoyy

5.收回用户yy在test数据库中的建表权。

revokecreatetablefromyy

6.yy用户拒绝对C表的查看权限

denyselectonctoyy

实验八索引的创建与使用,默认与规则的创建

1.使用sql语句在表course的cname字段上创建一个唯一性的聚集索引,索引排列顺序为降序。

createuniqueclusteredindexindex1oncourse(cnamedesc)

2.使用sql语句在表course的credit字段上创建一个非唯一性的非聚集索引。

createnonclusteredindexindex2oncourse(credit)

3.在sm数据库中创建一个学生性别的默认值,并将默认值捆绑到sm数据库表student的sex列上。

createdefaultdf1as'

execsp_bindefault'

df1'

student.sex'

4.在sm数据库中定义规则,使用该规则的列的值被限制为必须大于0,并将规则捆绑到sm数据库表teacher的sal列上。

最后对表teacher执行插入语句,查看执行结果。

createrulerule1as@x>

execsp_bindrule'

rule1'

teacher.sal'

实验九存储过程

1.在学生表中,根据姓名查询并显示该同学的信息,否则显示“查无此人”(使用if……else语句)

createprocp2(@snamevarchar(20))--创建存储过程

ifexists(select*fromstudentwheresname=@sname)

select*fromstudentwheresname=@sname

else

print'

查无此人'

execp2'

刘燕'

--执行存储过程

2.查看并显示选修指定课程的人数。

createprocp3(@cnochar(4))

declare@nint

select@n=count(sno)fromscwherecno=@cno

有'

+convert(varchar(10),@n)+'

个人选修这门课'

execp3'

3.1+2+...+100(使用while语句)

declare@iint,@sint

set@i=1

set@s=0

while(@i<

=100)

begin

set@s=@s+@i

set@i=@i+1

end

print@s

4.使用case表达式,判断课程表中ctno列的值,如果为“00”,则显示“专业基础课”;

如果为“01”,则显示“公共基础课”;

如果为“02”,则显示“专业课”;

否则显示“待定”。

selectcno课程号,cname课程名,课程类型=

casectno

when'

00'

then'

专业基础课'

01'

公共基础课'

02'

专业课'

else'

待定'

fromcourse

5.给定学号,根据该学生的平均分,评定等级,90以上‘一等'

80以上‘二等'

70分以上'

三等'

其他'

补考'

createprocp4(@snochar(12))

declare@avgdecimal

select@avg=AVG(score)fromsc

wheresno=@sno

print(@sno+

case

when@avg>

=90then'

一等'

=80then'

二等'

=70then'

execp4'

201320180305'

实验十触发器

s(sno,sname,ssex,sbirthday)

c(cno,cname,credit,ctime,cnum)

1.不允许向数据表s添加数据

createtriggertr1

ons

forinsert

任何人不得添加数据'

rollback

insteadofinsert

select*froms

2.不允许修改数据表s中李四的数据

inserted表格中保存了即将被添加的记录行,结构与原表相同

deleted表格中保存即将被删除的记录行,结构与原表相同

修改数据相当于删除旧记录添加新记录

createtriggertr2

forupdate

ifexists(select*fromdeletedwheresname='

李四'

3.删除学生信息的同时删除该生的选课信息

createtriggertr3

fordelete

deletefromsc

wheresno

in(selectsnofromdeleted)

4.每添加一条选课记录,课程表中相应课程的选修人数加1*

createtriggertr4

onsc

updatecsetcnum=cnum+1

whereo=(selectcnofrominserted)

5.每当添加、删除、修改s表中数据,相应班级人数进行更新*

s(sno,sname,ssex,sbirthday,clno)

class(clno,cnum)--班级表(班级号,班级人数)

createtriggertr5

forinsert,delete,update

updateclasssetcnum=cnum+1

whereclass.clno=(selectclnofrominserted)

updateclasssetcnum=cnum-1

whereclass.clno=(selectclnofromdeleted)

备注:

查找的具体数据可以根据你所创建的具体表做相应调整

欢迎您的下载,

资料仅供参考!

致力为企业和个人提供合同协议,策划案计划书,学习资料等等

打造全网一站式需求

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1