数据库实验内容答案.docx

上传人:h**** 文档编号:1996858 上传时间:2019-03-26 格式:DOCX 页数:9 大小:27.29KB
下载 相关 举报
数据库实验内容答案.docx_第1页
第1页 / 共9页
数据库实验内容答案.docx_第2页
第2页 / 共9页
数据库实验内容答案.docx_第3页
第3页 / 共9页
数据库实验内容答案.docx_第4页
第4页 / 共9页
数据库实验内容答案.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、实验内容:实验一:数据库的操作使用 Management Studio 和 sql 语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为 3MB,最大为 50MB,数据库自动增长,增长方式按 10%;日志文件初始大小为 2MB,数据大小不受限制,按 1MB 增长。create database smon (name=smdata,filename=e:smdata.mdf,size=3,maxsize=50,filegrowth=10%)log on(name=smlog,filename=e:smlog.ldf,size=2,maxsize=unlimited,file

2、growth=1)2.修改数据库“SM” ,将数据文件名改成“sm_data”,初始大小改成 5MB alter database smmodify file( name=smdata,newname=sm_data,size=5) 3.分别查看数据库“SM” ,该数据库中的文件和文件组。exec sp_helpfile smexec sp_helpfilegroup sm4.删除数据库“SM” 。drop database sm实验二:创建表1. 在数据库 SM 中创建学生表 student,课程表 course,选课表 scstudent(sid,sno,clno,sname,ssex,s

3、age,sbir)说明:sid int identity(1,1) 序号sno 为主关系键,为字符类型 学号clno 字符类型, 班级号sname 字符类型,并不为空ssex 字符类型,check 的值的范围为男女sbir 日期类型 出生日期sage int;use smcreate table student( sid int identity(1,1),sno char(10) constraint pk_st primary key,clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check

4、(ssex in(男,女),sbir datetime,sage int)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为 2,小数位为 1ctno ,cpno 字符类型ctime 整型create table course(cno char(4) constraint pk_c primary key,cname varchar(20) constaint uk_cname unique,ccredit decimal(2,1),ctno char(2

5、),cpno char(4),ctime tinyint)sc(sno,cno,score)说明:sno+cno 为主键,并且 sno 是 student 的外部键,cno 是 course 的外部键。score 精确数值型,精确长度为 4,小数位为 1create table sc( sno char(10) constraint fk_sno foreign key references student(sno),cno char(4) constriant fk_cno foreign key references course(cno),score decimal(4,1),const

6、raint pk_sc primary key(sno,cno)2.使用 Management Studio 对数据库 SM 中的表插入数据实验三:表的维护1.用 sql 语句修改表 course 的列属性 ,将 cname 的长度改为 40,且不允许空alter table coursedrop constraint uk_cnamealter table coursealter column cname char(40) not null2.用 sql 语句向表 student 中增加列 email,且要求输入的电子邮件地址必须包括“alter table student add emai

7、l varchar(20) constraint ck_email check(email like %) 3.用 sql 语句删除表 student 中的列 sbiralter table student drop column sbir 4.删除 sname 列上的约束。alter table studentalter column sname varchar(20) null5.删除表 studentdrop table student实验四:简单数据查询在实验二的基础上,再在 sm 数据库中新建表 teacher,包括如下数据项teacher(tno,tname,age,sal,dno

8、)tno 为教职工编号,tname 姓名,age 年龄,sal 为月薪,dno 为部门号在 student,course,sc,teacher 四张表中进行下列查询1,查询所有 0002 部门职工的信息;select * from teacher where dno=00022,查询 1984 年和 1985 年出生的女生的信息;select * from student where year(sbir) in(1984,1985) and ssex=女 3,查询 0001 部门、0002 部门或 0003 部门的职工信息;select * from teacher where dno in(

9、0001,0002,0003)4,查询学号为 03004 的同学正在学习的课程;select cno from sc where sno=030045,查询不姓王或李的同学的信息。select * from student where sname like 王李%6,查询有多少名学生的物理课成绩不及格;select count(sno)from sc,coursewhere o=o and cname=物理 and score60 and o=ogroup by sno实验五 复杂查询(自连接和外连接不考)1. 查询体育课成绩不及格的男生名单select sname from student,

10、course,scwhere student.sno=sc.sno and o=oand cname=体育 and ssex=男 and score04001 and sage0exec sp_bindrule rule1,teacher.sal实验九 存储过程1.在学生表中,根据姓名查询并显示该同学的信息,否则显示“查无此人” (使用ifelse 语句)create proc p2(sname varchar(20) -创建存储过程asif exists( select * from student where sname=sname)select * from student where

11、sname=snameelseprint 查无此人exec p2 刘燕 -执行存储过程 2. 查看并显示选修指定课程的人数。create proc p3(cno char(4)asdeclare n intselect n=count(sno) from sc where cno=cnoprint 有+convert(varchar(10),n)+个人选修这门课exec p3 1001 3. 1+2+.+100(使用 while 语句)declare i int,s intset i=1set s=0while (i=90 then 一等when avg=80 then 二等when avg=

12、70 then 三等else 补考endexec p4 201320180305实验十 触发器 s(sno,sname,ssex,sbirthday)c(cno,cname,credit,ctime,cnum)sc(sno,cno,score)1.不允许向数据表 s 添加数据create trigger tr1on sfor insertasprint 任何人不得添加数据rollbackcreate trigger tr1on sinstead of insertasselect * from s 2.不允许修改数据表 s 中李四的数据inserted 表格中保存了即将被添加的记录行, 结构与

13、原表相同deleted 表格中保存即将被删除的记录行, 结构与原表相同修改数据相当于删除旧记录添加新记录create trigger tr2on sfor updateasif exists(select * from deleted where sname=李四)rollback3.删除学生信息的同时删除该生的选课信息 create trigger tr3on sfor deleteasdelete from scwhere snoin (select sno from deleted) 4.每添加一条选课记录,课程表中相应课程的选修人数加 1 * create trigger tr4 on

14、 scfor insertasupdate c set cnum=cnum+1 where o = (select cno from inserted) 5. 每当添加、删除、修改 s 表中数据, 相应班级人数进行更新 *s(sno,sname,ssex,sbirthday,clno)class(clno,cnum)- 班级表(班级号,班级人数 )create trigger tr5 on sfor insert,delete,updateasupdate class set cnum=cnum+1where class.clno=(select clno from inserted)update class set cnum=cnum-1where class.clno=(select clno from deleted)备注:查找的具体数据可以根据你所创建的具体表做相应调整

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 试题真题

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。