数据库实验书sql

  • 格式:doc
  • 大小:156.50 KB
  • 文档页数:23

数据库实验 (SQL SERVER 2000)

目录

实验一 数据库和表的简单操作

实验二 数据操纵语言的使用(一)

实验三 数据操纵语言的使用(二)

实验四 数据操纵语言的使用(三)

实验五 变量与数据类型的使用

实验六 运算符的使用

实验七 流程控制语句的使用

实验八 函数的使用

实验九 数据库和表的操作语句

实验十 索引和视图的使用

实验十一 存储过程的使用

实验十二 存储过程的高级操作及触发器的使用

实验十三 数据库的备份、还原与转换

实验十四 完整数据库产品设计

本目录中,蓝色显示标题实验一--四,实验九、十、十三、十四为必做实验,其余红色标题显示实验为附加实验,扩展知识实验,为选作实验。

附录

学生管理数据库简介

此数据库为实验所用的主要数据库,有三张表,基本情况如(其中记录情况可自定):

表一 学生表

学号 姓名 性别 年龄 系别 班级

0001 郑宝娟 女 18 计算机 02219

0002 黄乐文 男 20 计算机 02219

0003 林华兰 女 19 电子 电子051

0004 杨静炜 男 21 电子 电子051

0005 王小丫 女 80 经管 商务042

0006 李勇 男 21 经管 商务042

注:学生表各字段类型如下:学号 char(4),姓名 varchar(10),性别 char(2),年龄 smallint ,系别

varchar(12),班级 varchar(12)。

表二 课程表

注:课程表各字段类型如下:课程号 char(2),课程名称 varchar(20),学分 smallint,课时 smallint ,授课教师 varchar(10)。

表三 成绩表

学号 课程号 成绩

0001 02 98

0001 04 80

0002 03 85

0002 02 58

0002 05 84

0003 01 95

注:成绩表的学号和课程号字段类型同上,成绩字段的类型为real。

课程号 课程名称 学分 课时 授课教师

01 SQL Server 4 72 夏老师

02 VB 3 108 李老师

03 Java 4 108 张老师

04 网络 5 108 吴老师

05 单片机 2 72 江老师

06 CAD 3 72 钱老师 实验一

实验题目:数据库和表的简单操作

实验目的:熟练使用企业管理器对数据库和表进行简单操作

实验内容:

一、使用企业管理器新建一个数据库,名称为“学生管理数据库”,其主要数据文件大小为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课程表. 课程号=成绩表. 课程号)

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

六.查询课程名称中含有‘a’的课程的课程号、课程名称以及学习该课程的学生的学号和成绩。

select学号,成绩表.课程号,课程名称,成绩

from 成绩表,课程表

where 成绩表.课程号=课程表.课程号 and 课程名称 like '%a%'

七.查询姓名中第三个字符是‘平’的学生的学号、姓名、系以及所学课程的课程号和成绩。

select 学生表.学号,姓名,系,课程号,.成绩

from 学生表,成绩表

where 学生表.学号=成绩表.学号 and 姓名 like '__平’

八.查询成绩在60~80之间,或者课程号为‘c03’的学生的学号、姓名、性别(用四种方法实现)。

方法一: select 学号,姓名,性别

from 学生表

where 学号 in (select 学号 from 成绩表 where 成绩 >=60 and 成绩<=80 or 课程号='c03')

方法二:select 学号,姓名,性别

from 学生表

where EXISTS (select * from 成绩表 where 学生表.学号=成绩表.学号 and (成绩 BETWEEN

60 AND 80 or 课程号='c03'))

方法三:select 学生表.学号,姓名,性别

from 学生表,成绩表

where 学生表.学号=成绩表.学号 and (成绩 BETWEEN 60 AND 80 or 课程号='c03'))

方法四:select 学生表.学号,姓名,性别

from 学生表 inner join 成绩表 on学生表.学号=成绩表.学号

where 成绩 BETWEEN 60 AND 80 or 课程号='c03'

选做题:

查询选修课程的学分为4并且考试成绩大于80的学生的学号、姓名、性别。

select 学生表.学号,姓名,性别

from 学生表 inner join (成绩表 inner join 课程表 on 成绩表.课程号=课程表.课程号)on 学生表.学号=成绩表.学号

where学分=4 and成绩>80

实验课时:1节课

实验要求:当堂抽查,提问