数据库实验书sql
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库实验(SQL SERVER 2000)
目录
实验一数据库和表的简单操作
实验二数据操纵语言的使用(一)
实验三数据操纵语言的使用(二)
实验四数据操纵语言的使用(三)
实验五变量与数据类型的使用
实验六运算符的使用
实验七流程控制语句的使用
实验八函数的使用
实验九数据库和表的操作语句
实验十索引和视图的使用
实验十一存储过程的使用
实验十二存储过程的高级操作及触发器的使用
实验十三数据库的备份、还原与转换
实验十四完整数据库产品设计
本目录中,蓝色显示标题实验一--四,实验九、十、十三、十四为必做实验,其余红色标题显示实验为附加实验,扩展知识实验,为选作实验。
附录
学生管理数据库简介
此数据库为实验所用的主要数据库,有三张表,基本情况如(其中记录情况可自定):
表一学生表
注:学生表各字段类型如下:学号 char(4),姓名 varchar(10),性别 char(2),年龄 smallint ,系别varchar(12),班级 varchar(12)。
表二课程表
注:课程表各字段类型如下:课程号 char(2),课程名称 varchar(20),学分 smallint,课时 smallint ,授课教师 varchar(10)。
表三成绩表
实验题目:数据库和表的简单操作
实验目的:熟练使用企业管理器对数据库和表进行简单操作
实验内容:
一、使用企业管理器新建一个数据库,名称为“学生管理数据库”,其主要数据文件大小为2M,次要数据
文件大小为1M,日志文件大小为1M,存放位置为“D:\SQLServer”,其他选项都采用默认值。
二、在“学生管理数据库”中新建三张表,表名分别为:学生表、课程表和成绩表;其中各表结构如附录;
要求:在上述三张表中建立主键约束(PK),各表主键分别为红色显示字段;
在上述三张表中建立外键约束(FK),成绩表的学号字段外键参照学生表的学号字段,课程号字段外键参照课程表的课程号字段,并在设置约束时,选择级联删除和级联更新方式对主键表与外键表相互制约;(外键的含义是什么?审查时提问)
在上述三张表中建立自定义约束(CK),性别字段和年龄字段的默认值分别为‘男’和18,性别取值为’男’或’女’,年龄取值范围18~30。
三、向各表中输入如附录的记录
四、实践一下级联删除,即,在主键表学生表中删除‘0001‘号学生的记录,观察外见表成绩表中相应该
学生记录是否自动删除;
五、将“学生管理数据库”与服务器分离。
六、将已分离的“学生管理数据库”附加到服务器上。
实验课时:1节课
实验要求:当堂抽查,提问
实验题目:数据操纵语言的使用(一)
实验目的:熟练使用数据操纵语言对数据库进行操作
实验内容:
在课本实例“学生管理”数据库的三张表(学生表、课程表、成绩表)中进行查询。(本实验前提:“学生管理”数据库已经建立好,并且三张表中均已有数据记录。
一.询学生表中学号是‘0004’或者系别为‘计算机’的学生的所有信息。
select *
from 学生表
where 学号=‘0004’or 系别=‘计算机’
二.询成绩表中成绩不小于80的学号,课程号和成绩,并按成绩降序排列,然后显示前5条记录。
select top 5 学号,课程号,成绩
from 成绩表
where 成绩>=80
order by 成绩desc
三.查询成绩表中每位学生的学号和各科的总成绩,并按总成绩降序排列。
select 学号,成绩as 总成绩
from 成绩表
group by 学号
order by 总成绩desc
四.查询成绩表中成绩不及格的学号,课程号和成绩,并且为不及格的成绩都加20分。
select 学号,课程号,成绩=成绩+20
from 成绩表
where 成绩<60
五.查询学生表中姓名含有‘华’的学生的所有信息
select *
from 学生表
where 姓名like '%华%'
六.查询学生表的姓名中倒数第三个字符是‘f’的学生的所有信息。
select *
from 学生表
where 姓名like '%f _ _'
七.查询学生表的姓名中第三个字符是‘f’或‘h’或‘m’或‘s’的学生的所有信息。
select *
from 学生表
where 姓名like '_ _[fhms] %'
八.查询学生表的系中第二个字符是‘算’的学生的所有信息。
select *
from 学生表
where 班级like ' _算%'
选做题:
查询考试成绩大于90的学生的学号、姓名、性别和班级。
select学生表.学号,姓名,性别,班级
from 学生表,成绩表
where学生表.学号=成绩表.学号and 成绩>90
实验课时:1节课
实验要求:当堂抽查,提问
实验三
实验题目:数据操纵语言的使用(二)
实验目的:熟练使用数据操纵语言对数据库进行操作
实验内容:
提示:在做以下内容之前先将学生管理数据库附加到服务器。
一.查询课程表中学分不在2~4之间的课程号、课程名称。
方法一:SELECT 课程号,课程名称
from 课程表
where 学分>4 or 学分<2
方法二:SELECT 课程号,课程名称
from 课程表
where 学分not between 2 and 4
二.查询学号是‘0002’或‘0003’或‘0005’或‘0027’的学生的基本信息(用两种方法实现)。方法一:select *
from 学生表
where 学号='0002' or 学号='0003'or 学号='0005'or 学号='0027'
方法二:select *
from 学生表
where 学号in ('0002','0003','0027','0005')
三.查询系别为‘计算机’的学生的学号、课程号和成绩(用两种方法实现)。
方法一:select 学号,课程号,成绩
from 成绩表
where 学号in (select 学号from 学生表where 系别='计算机')
方法二:select 学号,课程号,成绩
from 成绩表
where exists (select * from 学生表where 学生表.学号=成绩表.学号and 系别='计算机') 四.查找课程表中没有学生选修的课程的课程号和课程名称(用两种方法实现)。
方法一:select 课程号,课程名称
from 课程表
where 课程号NOT IN (select 课程号from 成绩表)
方法二:select 课程号,课程名称
from 课程表
where NOT exists (select * from 成绩表where课程表. 课程号=成绩表. 课程号)
五.查找学生表中没有选修课程的学生的学号、姓名和系(用两种方法实现)。