数据库实验报告(完整版)

  • 格式:doc
  • 大小:1.65 MB
  • 文档页数:24

数据库实验报告

班级:07111103

学号:**********

姓名:***

实验一:

[实验内容1 创建和修改数据库]

分别使用SQL Server Management Studio和Transact-SQL语句,按下列要求创建和修改用户数据库。

1. 创建一个数据库,要求如下:

(1) 数据库名"testDB"。

(2) 数据库中包含一个数据文件,逻辑文件名为 testDB_data,磁盘文件名为testDB_data.mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB。

(3) 事务日志文件,逻辑文件名为TestDB_log, 磁盘文件名为TestDB_log.ldf,文件

初始容量为5MB, 最大容量为10MB,文件容量递增值为1MB。

2. 对该数据库做如下修改:

(1) 添加一个数据文件,逻辑文件名为TestDB2_data,实际文件为TestDB2_data.ndf,文件初始容量为1MB,最大容量为6MB,文件容量递增值为1MB。

(2) 将日志文件的最大容量增加为15MB,递增值改为2MB。

方法一:使用SQL Server Management Studio创建和修改数据库TestDB

方法二:使用Transact-SQL语句创建和修改数据库TestDB

方法一过于简单,暂不做讨论。

下面学习方法二。

首先,在sql sever 2008中单击新建查询。

然后键入下面的代码。

建立新的数据库。

1. 创建一个数据库,要求如下:

2.对该数据库做如下修改:

对刚刚的操作进行验证

数据均已更新完毕。

[实验内容2 数据表的创建、修改和查询]

1. 熟悉有关数据表的创建和修改等工作,并了解主键、外键以及约束的创建和应用,熟练掌握使用SQL Server Management Studio和CREATE TABLE、ALTER TABLE等Transact-SQL语句对数据表的操作方法

项目表(Project)

字段名 数据类型 字段长度 注释

项目编码 char 10 主键

名称 varchar

负责人编码 char 10

客户 int

开始日期 datetime

结束日期 datetime

员工数据表(Employee)

字段名 数据类型 字段长度 注释 员工编码 char 10 主键

姓名 varchar

性别 varchar

所属部门 varchar

工资 money

方法一:使用SQL Server Management Studio创建数据表并添加约束

方法二:使用Transact-SQL语句创建数据表并添加约束

2. 向数据库TestDB中的两个数据表"项目数据表"和"员工数据表"中添加记录

3. 在查询分析器中书写Transact-SQL语句完成数据查询。

(1) 查询项目数据表中客户字段的唯一值,并查看查询结果。

(2) 查询工资高于2000的项目部的人员的姓名。

(3) 查询来自CCH公司的项目名称(以CCH开始)和负责人姓名

(4) 查询每个部门的平均工资,结果按照平均工资的多少排序

(5) 查询所有的员工姓名和负责人的项目名称

(6) 使用子查询输出所有负责 CCH公司项目(以CCH开始)的员工姓名,以及没有负责REALIDEA公司(以REALIDEA开始)项目的员工姓名

(7) 将所有REALIDEA公司的项目的结束日期更改为2011年1月8日

(8) 录入部的张晓峰决定辞职,请将员工数据库中有关他的记录删除,并将他负责的项目移交给杨亭亭。书写语句对数据表做相应的更改

4. 掌握使用T -SQL语句创建视图的方法,包括视图的建立、删除、修改;了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。

(1) 基于表"项目数据表"和"员工数据表"创建视图,要求为:

➢ 视图名为"员工项目"。

➢ 包含字段"编号"、"姓名"、"名称"和"开始日期"。

➢ 字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开始日期"。

(2) 使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值为"马中兴"。

(3) 建立适当的视图,将所有的表连接起来,观察数据,体会建立多个表的好处

下面演示建立表的过程:

1.首先运行涂蓝代码,建立员工数据表,并设立主键。

因为在项目数据表中需要添加员工数据表的主键为外键。

二.建立项目数据表:

然后向两表中添加元素。

注:在这里有血的教训,没有给varchar限定值的范围导致数据录入不了。。。。。好悲惨,又推到重写的一遍。

下面是建好的表:

员工数据表

项目数据表

三、

1.查询项目数据表中客户字段的唯一值,并查看查询结果。

2.查询工资高于2000的项目部的人员的姓名。

3. 查询来自CCH公司的项目名称(以CCH开始)和负责人姓名

4.查询每个部门的平均工资,结果按照平均工资的多少排序

5.查询所有的员工姓名和负责人的项目名称

6. 使用子查询输出所有负责 CCH公司项目(以CCH开始)的员工姓名,以及没有负责REALIDEA公司(以REALIDEA开始)项目的员工姓名

*由于编造数据的疏忽,没有加入REALIDEA公司,这时希望改为以KK开头的公司的项目

注意到这张表中没有了负责KKK项目的王一飞这个人,现在表有9个元素,原表有10个元素。

7.将所有REALIDEA公司的项目的结束日期更改为2011年1月8日

先建立试图,然后在视图上操作,经验证结果完全正确(下图第二行)

练习一下视图的建立,哈哈

8.录入部的张晓峰决定辞职,请将员工数据库中有关他的记录删除,并将他负责的项目移交给杨亭亭。书写语句对数据表做相应的更改

/*录入部的张晓峰决定辞职,请将员工数据库中有关他的记录删除,

并将他负责的项目移交给杨亭亭。书写语句对数据表做相应的更改*/

UPDATE 项目数据表

SET 负责人编码 =

(

SELECT 员工编码

FROM 员工数据表

WHERE 姓名='刘楠'

)

WHERE 负责人编码

IN

(

SELECT 员工数据表.员工编码

FROM 员工数据表

WHERE 员工数据表.姓名='刘哲'

)

{消息2627,级别14,状态1,第1 行

违反了PRIMARY KEY 约束'表一约束'。不能在对象'dbo.项目数据表' 中插入重复键。

语句已终止。

}

DELETE FROM 员工数据表 WHERE 姓名='刘哲'

{消息547,级别16,状态0,第1 行

DELETE 语句与REFERENCE 约束"表一约束"冲突。该冲突发生于数据库"testDB",表"dbo.项目数据表", column '负责人编码'。

语句已终止。

}

由于设定主键时将员工编码和负责人编码均为主键,且员工编码为负责人编码的外键,导致要想修改负责人编码只能先删除于是不能完成这一操作。。。。

四、掌握使用T -SQL语句创建视图的方法,包括视图的建立、删除、修改;了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。

1.基于表"项目数据表"和"员工数据表"创建视图,要求为:

➢ 视图名为"员工项目"。

➢ 包含字段"编号"、"姓名"、"名称"和"开始日期"。

➢ 字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开始日期"。

下面打开视图界面

2.使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值为"马中兴"。

以下是查看图

3.建立适当的视图,将所有的表连接起来,观察数据,体会建立多个表的好处

下面是效果图:

[实验内容3创建触发器和存储过程]

理解触发器的触发过程和类型,掌握创建触发器的方法。

1. 创建触发器,将插入员工的工资额限制在 5000以内。

2. 创建触发器,将员工工资修改变动额限制在2000以内。

3. 删除员工数据表数据时,判断该员工是否有负责的项目,如果有,则不允许删除、并给出提示“将负责项目移交后再删除”的提示信息。

4. 在视图基础上创建instead of 触发器,实现通过视图修改数据的功能,具体题目自拟。

5. 创建存储过程,要求返回某一特定部门所有员工的工资总和,其中特定部门的名称以存储过程的输入参数进行传递。

6. 创建函数,题目自拟。

7. 创建带有游标的存储过程,题目自拟。