SQL数据库原理实验指导书及答案
- 格式:doc
- 大小:95.00 KB
- 文档页数:23
1
数 据 库 原 理
SQLServer
实
验
指
导
书
2 数据库系统原理实验
一、基本操作实验
实验1:数据库的定义实验
本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser
Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:
l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法
具体实验任务如下。
1.基本提作实验
1)使用Enterpriser Manager建立图书读者数据库
2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,
其结构为:
图书(书号,类别,出版社,作者,书名,定价,版次);
读者(编号,姓名,单位,性别,电话):
借阅(书号,读者编号,借阅日期人)
要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和
Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey(主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码) 3 约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check(检查)约束。
2.提高操作实验
建立学生_课程库操作,在查询分析器中用SQL命令实现。库中表结构为:
Student(sno,sname,sage,ssex,sdept):
course(cno,cname,cpno,ccredit);
sc(sno,cno,grade)。
要求:
l)建库、建表、建立表间联系。
2)选择合适的数据类型。
3)定义必要的索引、列纽约束和表级约束。
3选择操作实验
将自设计的数据库应用系统中的数据库、库中的表、索引和约束用T-SQL表达,并通过Enterpriser Manager或Query Analyzer实现建库、建表、建立表间联系和建立必要的索引、列级约束和表级约束的操作。
实验2:数据库的建立和维护实验
本实验的目的是要求学生熟练掌握使用SQL、T-SQL和SQL Server Enterpriser Manager向数据库输入数据、修改数据和删除数据的操作。
1.基本操作实验 4 1)通过 Enterpriser Manager,在图书借阅数据库的图书、读者和借阅3个表中各输入10条记录。要求记录不仅满足数据约束要求,还要有表间关联的记录。2)图书借阅数据库的三个基本表为图书(书号,类别,出版社,作者,书名,定价, 版次);读者(编号,姓名,单位,性别,电话);借阅(书号,读者编号,借阅日期)。对通过 Enterpriser Manager实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入、删除和修改操作。
3)通过 Enterpriser Manager实现对学生选课库的数据增加、数据删除和数据修改操作。
要求学生、课程和选课表中各有10条以上记录。
2.提高操作实验
向自设计的数据库应用系统的库中的各表,输入多条实际数据,并实现数据的增、删。改操作。
3选择操作实验
将用数据修改语句和数据删除语句通过Query Analyzer。输入给SQL Server数据库,并查看、分析执行的结果,实现正确操作。
①UPDATE 读者 SET 借阅册数=(SELECT COUNT(*) FROM 读者,借阅
WHERE 读者.编号=借阅.读者编号 AND 借阅日期
BETWEEN ‘2001-01-01’ AND ‘2001-12-31’0
②DELETE 借阅 WHERE 读者编号 IN (SELECT 编号 FROM 读者 WHERE 单位=’计算机’)
实验3:数据库的简单查询和连接查询实验
本实验的目的是使学生掌握SQL Server Query Analyzer的使用方法,加深对SQL和T-SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据联结广询的操作方法。
本实验的主要内容是: 5 1)简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。
2)连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接。
内连接、左连接、右连接和自连接等。
实验方法:将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区中输入T-SQL查询语句;设置 Query Analyzer的结果区为Standard Execute(标准执行)或Execute
to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。
1.基本操作实验
(1)简单查询实验
1) 在学生选课库中实现其数据查询操作。
① 求数学系学生的学号和姓名
select sno,sname
from student
where sdept='ma'
② 求选修了课程的学生学号
select sno
from sc
where grade is not null;
③ 求选修C1课程的学生学号和成绩,结果按成绩降序排列,如成绩同按学号升序排列
select sno,grade
from sc
where cno='1'
order by grade desc,sno asc; 6 ④ 求选修课程C1成绩在80~90之间的学生学号和成绩,并将成绩乘以0.8输出
select sno,grade*0.85
from sc
where cno='1' and grade between 80 and 90;
⑤ 求数学或计算机系姓张的学生的信息
select *
from student
where sdept in ('ma','is') and sname like '张%'
⑥ 求缺少了成绩的学生的学号和课程号
select sno,cno
from sc
where grade is null;
2) 在图书借阅库中实现其查询操作。
① 将计算机类的书存入永久的计算机图书表
insert
into yongjiu
select *
from tushu
where leibie='小说';
②将借阅日期在99年以前的借阅记录存入\临时的超期借阅表
(2)连接查询实验
1) 在学生选课库中实现其数据连接查询操作。 7 ① 查询每个学生的情况以及他(她)所选修的课程
select student.*,o
from student,sc
where student.sno=sc.sno;
② 求学生的学号、姓名、选修的课程及成绩
select student.sno,sname,cno,grade
from student,sc
where student.sno=sc.sno;
③ 求选修课程C1且成绩在90分以上的学生学号、姓名及成绩
select student.sno,sname,grade
from student,sc
where student.sno=sc.sno and grade>90 and o='1';
④ 查询每一门课的间接先行课(即先行课的先行课)
select o,second.cpno
from course first,course second
where first.cpno=o;
2)在图书借阅库中实现其连接查询操作。
①查询借书者的编号、姓名、单位、所借书号、书名和借阅日期
select duzhe.bianhao,xingming,danwei,shuhao,riqi
from duzhe,jieyue
where duzhe.bianhao=jieyue.bianhao
2.提高操作实验
l)建立职工部门库和职工、部门表,并向表中输入数据 8 职工表
create table 职工表
(
职工号 char(20) primary key,
姓名 char(20) unique,
性别 char(20),
年龄 smallint,
部门 char(20)
);
部门表
部门号 部门名称 电话
11 生产科 566
12 计划科 578
13 一车间 467
14 科研所
create table 部门表
(
部门号 char(20) primary key, 职工号 姓名 性别 年龄 所在部门
1010 李勇 男 20 11
1011 刘晨 女 19 14
1012 王敏 女 22 12
1014 张立 男 21 13