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