数据库原理实验报告学院计算机学院专业计算机科学与技术班级2011 级7 班学号3111XXXX姓名XXX指导教师明俊峰(2013 年11 月)计算机学院计算机专业2011(7)班学号:3111 姓名:协作者:________ 教师评定:实验__一__题目__ 数据库及基本表的建立 _实验__二__题目__ 设计数据完整性 __实验__三__题目__ 查询数据库 __实验平台:SQL Server 2005计算机学院计算机专业2011(7)班学号:3111姓名:协作者:________ 教师评定:实验题目一、数据库及基本表的建立一、实验目的1、掌握SQL SERVER的查询分析器和企业管理器的使用;2、掌握创建数据库和表的操作;二、实验内容和要求1、分别使用SQL语句、企业管理器(Enterprise Manager)创建数据库;2、使用SQL语句、企业管理器(Enterprise Manager)创建数据库表;三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL sever 2000/2003/2005;四、实验方法、步骤及结果测试创建一个教学管理数据库SC,其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。
创建:student表(学生信息表)、course表(课程信息表)、teacher表(教师信息表)、student _course表(学生选课成绩表)、teacher_course表(教师上课课表)等。
1、创建数据库:确定数据库名称;数据库用于学生管理,命名为SC确定数据库的位置;要求:数据文件和日志文件分别存储在E盘自己的目录下。
确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB,日志文件的初始大小为3MB。
确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB增长。
(1)、利用查询分析器(Query Analyzer),使用SQL语句指定参数创建数据库;1利用查询分析器,使用SQL语句方式创建方式将下面各表建立到教学管理数据库中。
(1)创建student表(3)创建student _course表23455、利用查询分析器修改上述各表。
(1)、用INSERT语句向各个表中插入数据录入5 条记录。
录入时注意体会外键约束。
678(2)、用UPDATE语句更改student表中数据;表中数据;五、实验中出现的问题及解决方案插入专业(speciality)的时候以为是课程,所以有的专业名称就写成课程名了。
六、思考题1、说明数据库中的表和数据文件的关系。
表(table)为数据库中数据存储的基本单位,其数据按行、列存储。
每个表具有一表名和列的集合。
每一列有一个列名、数据类型、宽度或精度、比例。
一行是对应单个记录的列信息的集合。
数据文件存放着在数据库中存储的数据,且一个数据库只有一个数据文件。
表作为数据库中的数据存储单位,存储在数据文件中。
2、数据库中的日志文件能否单独修改?能。
计算机学院计算机专业2011(7)班学号:3111姓名:协作者:________ 教师评定:实验题目二、设计数据完整性一、实验目的1、掌握使用约束实现数据完整性的方法;2、掌握使用触发器实现数据完整性的方法;二、实验内容和要求1、设置主键约束、设置唯一约束、设置外键约束、设置检查约束、设置默认值约束;2、使用企业管理器创建触发器、使用SQL语音创建触发器;三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL sever 2000/2003/2005;四、实验方法、步骤及结果测试(一)、使用约束实现数据的完整性(针对实验一中的所建的基本表)要求:1、定义:student表、course表、student_course表、teacher表、department表、teacher表Speciality表Student_course表为专业表Speciality的spname列建立唯一约束,并通过插入新的数据记录对新建的为student_course表的Score列设置检查约束条件,并通过插入新的数据记录来检(二)、利用企业管理器,使用约束实现数据的完整性方法1、启动企业管理器,利用表设计器分别定义:student表、course表、student_course 表、teacher表、department表、speciality表、teacher_course表、class表的主键。
student表:course表:student_course表:teacher表:department表:speciality表:teacher_course表:class表:2、表设计器中,单击工具栏中的‚表和索引属性‛按钮,打开‚属性‛对话框,在‚关系‛选项卡中定义外键约束。
(实验截图)student表、course表、student_course表、teacher表、department表、speciality表、teacher_course表、class 表、3、在表设计器中,单击工具栏中的‚表和索引属性‛按钮,打开‚属性‛对话框,在‚索引/键‛选项中定义专业信息表speciality的spname字段唯一约束。
(实验截图)4、在表设计器中,单击工具栏中的‚表和索引属性‛按钮,打开‚属性‛对话框,在‚CHECK 约束‛选项中,为student_course表中的score列设置检查约束。
例如:输入表达式:score>=0 and score<=100。
(实验截图)(三)、使用触发器实现数据的完整性1、使用企业管理器创建触发器在student表中创建触发器,实现student和student_course表的级联删除。
步骤:1)打开企业管理器,展开SC数据库;2)在SC数据库的列表中选择‚表‛并展开;3)右击想要创建触发器的表,执行‚所有任务‛/‚管理触发器‛命令;4)在打开的‚触发器属性‛对话框中,在‚名称‛下拉列表框中选择‚新建‛;5)在‚文本‛编辑框中,输入创建触发器的代码;6)单击‚检查语法‛按钮,检查代码的语法是否正确;7)单击‚确定‛按钮,则完成触发器创建。
8)检查触发器;在查询分析器中,输入相应的语句,并执行,查看定义的触发器是否起作delete from student3111005981lixinghaowhere s_no='xh04'五、实验中出现的问题及解决方案基本没太大问题,有问题都看书查相关资料解决了。
六、思考题1、利用INSERT语句向表中插入数据应该注意什么?答:注意插入属性的顺序。
计算机学院计算机专业2011(7)班学号:3111姓名:协作者:________ 教师评定:实验题目三、查询数据库一、实验目的熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询1、掌握基本的SELECT查询及其相关子句的使用;2、掌握复杂的SELECT查询,如多表查询、子查询、连接查询和嵌套查询。
二、实验内容和要求使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法,掌握存储查询结果的方法,体会各种查询的异同及相互之间的转换,体会各种查询的执行过程,为简单综合应用打下良好的基础。
三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL sever 2000/2003/2005;四、实验方法、步骤及结果测试要求用SELECT完成以下查询,1、对实验一建立的数据库表进行查询简单查询:(1)、查询全部学生的学号、姓名、性别和出身年月日。
(2)、查询全体学生的学号、姓名和年龄实现代码及查询结果截图:(3)、查询院系编号为‘510000’(计算机学院)的全部学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:(4)、查询‚计算机科学与技术‛专业(专业代码为‘080605’)并且班级代码为‘0201’的学生的学号、姓名和出生日期。
实现代码及查询结果截图:(5)、查询在‘1983/01/10’以后出生的计算机学院(院系编号为‘510000’)学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:(6)、查询全部学生的学号、姓名、性别和出身日期结果按照出生日期的升序排列。
实现代码及查询结果截图:连接查询:(1)、查询全部学生的学号、姓名、性别、所在院系名称和专业名称实现代码及查询结果截图:(2)、查询选修了课程1(上课编号)的学生的学号、姓名、专业名称和这门课的成绩实现代码及查询结果截图:(3)、查询学生不及格的情况列出不及格学生的学号、姓名和不及格的课程名称。
实现代码及查询结果截图:嵌套查询:(1)、查询没有选修了课程1的学生,列出学生的学号和姓名。
实现代码及查询结果截图:(2)、查询每门课都是80分以上的学生的学号与姓名。
实现代码及查询结果截图:2、选用Northwind数据库进行查询(1)、对NothWind. Products表进行简单查询;在查询分析器在窗口下用SELECT语句完成单表查询:查询所有Products的详细记录;实现代码及查询结果截图:查询单价(UnitPrice)小于20的Products;实现代码及查询结果截图:查询Products中最高单价(UnitPrice)是多少;实现代码及查询结果截图:(2)、在查询分析器在窗口下用SELECT语句完成连接(嵌套)查询:查询所有被订购过得Products的ProductsID和ProductName;实现代码及查询结果截图:查询所有被CustomerID为AROUT客和订购过的ProductsID和ProductName;实现代码及查询结果截图:查询所有被CustomerID为AROUT客和订购过,且单价在20 以上的ProductsID 和ProductName;实现代码及查询结果截图:2930 查询Products中单价(UnitPrice)最高的Products的资料;实现代码及查询结果截图:五、实验中出现的问题及解决方案Northwind数据库不知是什么,安装了好久。
六、思考题1、连接查询分哪几类?各有什么特点?答:一、等值与非等值连接查询;二、自身连接;三、外连接;四、复合条件连接;2、进行连接查询时应注意哪些问题?答:进行多表连接时,要注意查询条件。