目录
题型:
一. 概况分析题(5小题,每小题2分,共10分)
二. 计算题(3小题,每小题5分,共15分)
三. 数据库设计(2小题,每小题10分,共20分)
四. 规范化分析与设计题(2小题,每小题10,共20分)
五. 编程应用题(本大题共6小题,共35分)
考点:
① 关系模子,DBMS,数据库系统发展阶段 (人工管理、文件系统、数据库系统)
② 主键,外健,域,check,关系的范例
③ 关系代数:π s ⋈查询结果
④ E-R图转换成关系模式、关系的函数依靠集
⑤ 范式
⑥ 查询:Select ,in ,Year, GetDate, DateDiff, 聚集函数,Like
⑦ Create database 、alter database、Create table
⑧ Insert, Update,Delete
⑩ 视图view和索引index
⑫ Create proc as 实行:exec proc1(存储过程和触发器)
数据库设计综合实验
本篇完。
题型:
一. 概况分析题(5小题,每小题2分,共10分)
填空,例:该信息属于哪种数据模子:关系模子。数据?
二. 计算题(3小题,每小题5分,共15分)
三. 数据库设计(2小题,每小题10分,共20分)
四. 规范化分析与设计题(2小题,每小题10,共20分)
函数依靠集、部分函数依靠集、传递函数依靠集、候选码
五. 编程应用题(本大题共6小题,共35分)
考点:
① 关系模子,DBMS,数据库系统发展阶段 (人工管理、文件系统、数据库系统)
② 主键,外健,域,check,关系的范例
③ 关系代数:π s ⋈查询结果
④ E-R图转换成关系模式、关系的函数依靠集
⑤ 范式
⑥ 查询:Select ,in ,Year, GetDate, DateDiff, 聚集函数,Like
任务:查询学生表中全体学生的全部信息。
任务:检索全体学生的学号、姓名、年龄。
Tips:其中年龄要由DateDiff(year,birthday,GETDATE( ))来求
- select sno,sname,DateDiff(year,birthday,GETDATE( )) as 年龄
- from student
复制代码 任务:查询成绩大于80分的学生的学号及课程号、成绩
- select sno,cno,grade
- from sc
- where grade >80
复制代码 任务:从学生表中分别检索着名字的第二个字是“甜”或“小”的所有同砚的信息。
- select *from student
- where sname like '_[小,甜]%'
复制代码 任务:统计女学生人数。
- select count(distinct sno) as 女生人数 from student
- where sex='女'
复制代码 任务:从表sc中查询所有成绩中的最高分和最低分。
- select max(grade) as 最高分, min(grade) as 最低分
- from sc
复制代码 任务:统计学号为‘0601110101’的学生的总成绩宁静均成绩。
- select sum(grade) as 总成绩,avg(grade) as 平均成绩
- from sc
- where sno='0601110101'
复制代码 任务:查询各个课程号相应的选课人数。
- select count(*) as 选课人数 from sc
- group by cno
复制代码 任务:查询平均年龄大于18岁的系宁静均年龄
Tips: 使用DATEDIFF(Year,birthday,GetDate( ))计算年龄
- select sdept,avg(DATEDIFF(Year,birthday,GetDate( ))) as 平均年龄
- from student
- group by sdept
- having avg(DATEDIFF(Year,birthday,GetDate( )))
复制代码 任务:汇总总分大于150分的学生的学号及总成绩。
- select sno,sum(grade) as 汇总总成绩
- from sc
- group by sno
- having sum(grade)>150
复制代码 任务:查询所有学生的学号、姓名、选修课程号和成绩(用where和join on分别实现)。
- select student.sno,sname,cno,grade
- from student,sc
- where student.sno = sc.sno
复制代码- select student.sno,sname,cno,grade
- from student join sc
- on student.sno = sc.sno
复制代码 任务:查询所有年龄比张甜甜大的学生的姓名、性别和年龄。
Tips:可以使用自查询也可以使用子查询
- select sname,sex,DATEDIFF(Year,birthday,GetDate( )) as age
- from student
- where DATEDIFF(Year,birthday,GetDate( )) >
- (
- select DATEDIFF(Year,birthday,GetDate( ))
- from student
- where sname = '张甜甜'
- )
复制代码 任务:查询比‘软件技术’系的任一学生年龄都大的非‘软件技术’系的学生的姓名,年龄,所在系名。
- select sname,DATEDIFF(Year,birthday,GetDate( )) as age,sdept
- from student
- where sdept != '软件技术' and DATEDIFF(Year,birthday,GetDate( )) >= (
- select MAX(DATEDIFF(Year,birthday,GetDate( )))
- from student
- where sdept = '软件技术'
- )
复制代码 任务:查询尚没有学生选修的课程信息。
- select sname,DATEDIFF(Year,birthday,GetDate( )) as age,sdept
- from student
- where sdept != '软件技术' and DATEDIFF(Year,birthday,GetDate( )) >= (
- select MAX(DATEDIFF(Year,birthday,GetDate( )))
- from student
- where sdept = '软件技术'
- )
复制代码 任务:将选修了“数据库应用技术”课程的学生成绩增长5分。
- UPDATE sc
- SET grade = grade + 5
- FROM sc
- JOIN course ON sc.cno = course.cno
- WHERE course.cname = '数据库应用技术'
复制代码 ⑦ Create database 、alter database、Create table
任务:创建一个学生成绩管理数据库XSCJ,存储在D:\software文件夹下,该数据库的主数据文件的逻辑名称为xscj_data,物理文件名为xscj.mdf,初始存储空间巨细为20MB,最大存储空间为500MB,自动增长量为10%;日志文件的逻辑名称为xscj_log,文件名为xscj.ldf,初始存储空间巨细为10MB,最大存储空间为100MB,存储空间自动增长量为1MB。
- create database XSCJ
- ON(NAME=xscj_data,
- filename = 'C:\mysoftware\xscj.mdf',
- size=20,
- maxsize=500,
- filegrowth=10%
- )
- log on(NAME=xscj_log,
- filename='C:\mysoftware\xscj.ldf',
- size=10,
- maxsize=100,
- filegrowth=1
- )
复制代码 任务:用SQL下令修改数据库XSCJ,添加一个次要数据文件,逻辑名称为XSCJ_Datanew,存放在D:\software下,文件名为XSCJ_Datanew.ndf。数据文件的初始巨细为100MB,文件自动增长容量为10MB。
- alter database XSCJ
- add file(name=XSCJ_Datanew,
- filename='C:\mysoftware\XSCJ_Datanew.ldf',
- size=100,
- filegrowth=10
- )
复制代码 任务:按下表的逻辑布局创建student表。
列名称
| 范例
| 宽度
| 允许空值
| 缺省值
| 约束
| 主键
| 说明
| sno
| char
| 10
| 否
|
|
| 是
| 学号
| sname
| varchar
| 15
| 否
|
|
|
| 学生姓名
| sex
| char
| 2
| 否
| 男
|
|
| 性别
| birthday
| smalldatetime
|
| 是
|
|
|
| 出生年月
| sdept
| varchar
| 15
| 是
|
|
|
| 班级号
|
- use XSCJ
- create table student
- (
- sno char(10) not null primary key,
- sname varchar(15) not null,
- sex char(2) not null default '男',
- birthday smalldatetime,
- sdept varchar(15)
- )
复制代码 ⑧ Insert, Update,Delete
任务:向student表添加以下数据。
sno
| sname
| sex
| birthday
| sdept
| 0601110101
| 张甜甜
| 女
| 1986-05-05
| 计算机应用技术
| 0601110102
| 陈强
| 男
| 1986-01-06
| 计算机应用技术
|
- insert into student(sno,sname,sex,birthday,sdept) values('0601110101','张甜甜','女','1986-05-05','计算机应用技术')
复制代码- insert into student(sno,sname,sex,birthday,sdept) values('0601110102','陈强','男','1986-01-06','计算机应用技术')
复制代码 任务:在student表中,将张甜甜同砚,转到软件技术系。
- update student
- set sdept='软件技术'
- where sname='张甜甜'
复制代码 任务:将course表中课程号为 16020011的课程名改为Java语言,学分改为4.0.
- update course
- set cname='Java语言',credit=4.0
- where cno='16020011'
复制代码 任务:在sc表中删除学号为0604150101的所有选课记载。
- delete from sc where sno='0604150101'
复制代码 ⑨ Create login, ceate user, grant to
⑩ 视图view和索引index
任务: 创建视图view_grade,查询张甜甜同砚的学号,姓名及成绩,并表现视图view_grade结果。
- create view view_grade
- as
- select student.sno,sname,sc.grade
- from student,sc
- where student.sno=sc.sno and student.sname='张甜甜'
- go
- select *from view_grade
复制代码 任务: 创建视图view_sc_count,统计课程号为’16020010’的课程的选修人数,并对视图文本加密。表现视图结果(Tips:使用 with encryption子句加密)
- create view view_sc_count(课程号,人数)
- with encryption
- as
- select cno,count(cno)
- from sc
- group by cno having cno='16020010'
- go
- select *from view_sc_count
复制代码 任务: 修改视图view_bysex, 查询student表中所有的女同砚信息
- alter view view_bysex
- as
- select *from student
- where sex='女'
- go
- select *from view_bysex
复制代码 任务: 删除视图view_grade。
任务: 运行以下代码仔细观察运行结果,试解释产生结果的原因。
第一行,是利用视图sub_student向Student表插入数据,视图本身没有发生变化
第二行,是查询视图里有没有这个数据,因为视图并没有插入有,以是没有数据表现
第三行,是查询Student表,因为插入有,以是有数据表现
任务: 为student表创建一个以sname为索引关键字的非聚集索引。 索引名称是index_sname。
- use xscj
- create nonclustered index index_sname on student(sname)
复制代码 任务: 删除索引index_sname。
- drop index student.index_sname
复制代码 ⑪ Backup database Teach to disk=” restore database Teach from disk=’’
⑫ Create proc as 实行:exec proc1(存储过程和触发器)
任务: 创建一个无参存储过程pro1,用于返回大于18岁学生的信息
- use xscj
- go
- create procedure pro1
- as
- select *from student where datediff(year,birthday,getdate())>18
- go
- exec pro1
复制代码 任务: 创建一个带参存储过程pro2,当用户输入一个学生姓名时,若该学生存在,就表现该学生的学号、姓名、性别,年龄、系部。若该学生不存在,则返回“查无此人”的提示信息。实行pro2,举行测试。
- use xscj
- go
- create proc pro2 @name char(6)
- as
- if exists(select *from student where sname=@name)
- select sno 学号,sname 姓名,sex 性别,datediff(year,birthday,getdate()) 年龄,sdept 系部
- from student
- where sname=@name
- else
- print'查无此人!'
- go
- exec pro2 '张甜甜'
复制代码 任务: 创建一个存储过程pro3,要求带一个输入参数和两个输出参数,当用户输入一个学生学号时,输出该学生的姓名和所在系部。实行pro3,举行测试。
- use xscj
- go
- if exists(select *from sys.procedures where name ='pro3')
- drop proc pro3
- go
- create proc pro3
- @no char(10),@name char(6) output,@sdept char(10) output
- as
- select @name=sname,@sdept=sdept
- from student
- where sno=@no
- go
- declare @name char(6),@sdept char(10)
- exec pro3 '0601110101',@name output,@sdept output
- select @name as 姓名,@sdept as 系部
复制代码 任务: 创建在SC表中添加一条新选课记载的存储过程pro4,新记载的值由参数提供,请使用pro4添加一条新的选课记载,学号为S6,课程号为C3。
- create proc pro4(@sno char(10) ,@cno char(8),@grade float='0')
- as
- insert into sc values(@sno,@cno,@grade)
- go
- exec pro4 '0601110101','16020015'
- select *from sc
复制代码
⑬ Create trigger
⑭ Create function fun(@ t datetime) returns table Return
⑮ Case when while
⑯ Cast(@num as char(2))
数据库设计综合实验
实验内容:设某学校建立图书管理系统,需要存储学生、图书及借阅记载的基本信息。其中,学生信息包括学号、姓名、性别及系别,图书信息包括图书编号、图书名称、出版日期及库存数目,借阅记载包括学号、图书编号、借出时间及还书时间。学生可以通过该系统查察图书信息,借阅后生成借阅记载,并提交给图书馆。根据该系统的要求完成下列操作。
任务1:根据上面的业务逻辑画出全局E-R图
任务2:根据任务1的E-R图转换成关系模式,并标出每个模式的主码和外码。
学生信息(学号,姓名,性别,系别)
图书(图书编号,图书名称,库存数目,出版日期)
借阅(学号,图书编号,还书时间,借书时间)
任务3:创建图书管理数据库LMS,指定数据文件和日志文件都放在D:\LMSDB文件下。
- create database LMS
- on
- (
- name=LMS_data,
- filename='D:\LMSDB\LMS.mdf',
- SIZE=20,
- MAXSIZE=500,
- FILEGROWTH=10%
- )
- LOG ON (
- NAME=LMS_log,
- filename='D:\LMSDB\LMS.ldf',
- SIZE=10,
- MAXSIZE=100,
- FILEGROWTH=1
- );
复制代码 实验结果:
任务4:创建图书表book。( tips:表的数据范例设计按应用本身设计,需要主键)
- CREATE TABLE BOOK(
- Bid char(10)not null PRIMARY KEY,
- Bname varchar(20) not null,
- Bate smalldatetime,
- Bnumber int not null
- )
复制代码 实验结果:
任务5:创建一个SQL Server登录帐户U1,密码为123,并指定这个登录名的默认数据库为LMS。
- create login U1 with password='123',default_database=LMS
复制代码
任务6:为登录帐户U1创建数据库(LMS)数据库用户admin1,为数据库用户admin1授权查察book表.
- create user admin1 for login[U1]
- grant select on book to admin1
复制代码
本篇完。
emmmmmmmmm。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |