数据库实验书sql

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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课程表. 课程号=成绩表. 课程号)

五.查找学生表中没有选修课程的学生的学号、姓名和系(用两种方法实现)。

相关文档
最新文档