实验指导书


SQL语言是数据库学习的重点之一,也是学生将来从事数据库编程的基础。通过实验的学习,使学生使用一种支持三级模式的RDBMS,用SQL语言完成下述操作:

  1. 建立基本表及视图;
  2. 在基本表上作数据加载;
  3. 在基本表上作各类查询;
  4. 对基本表和满足一定条件的视图作存储操作;
  5. 实现数据的完整性约束。

为了加深学生对关系数据库概念的理解,也为将来使用大型的RDBMS打下基础,建议使用比较正规的RDBMS,例如:Oracle,Informix,Sybase,Rdb等。
本实验指导书使用的是SQL Server 2000。之所以选者它,是因为:

  1. SQL Server 2000是Microsoft公司推出的一大型关系型DBMS;
  2. SQL Server 2000能安装在windows98/2000上,方便实践;
  3. SQL Server 2000的Query Analyzer组建能运行全部的SQL语句。

 

教材中介绍的SQL语言是标准的SQL语言,而每一个数据库厂家所使用的SQL语言,在标准SQL基础上都进行了扩充。SQL Server使用的SQL语言又叫作Transaction—SQL(事务SQL,简称T—SQL),在具体的SQL语句的细节上,与标准SQL略有不同。建议同学们在上机前,仔细阅读本指导书。(本实验指导书使用的是SQL Server 2000)

实验一 安装和了解SQL Server 2000
实验二 创建SQL Server数据库和表
实验三 基本表的建立和修改
实验四 SELECT 语句的使用(一)
实验五 SELECT 语句的使用(二)
实验六 SQL的存储操作
实验七 视图的建立及操作
实验八* 完整性约束的实现


实验一   安装和了解SQL Server 2000

一、实验目的
学会安装SQL Server 2000,能运行SQL Server 2000,了解其组成部件的功能。
二、实验准备
安装前,首先要了解SQL Server 2000的各种版本和支持它的操作系统版本,检查计算机的软件和硬件,保证能满足安装的最小需求。

1.版本及软硬件要求

版本名

操作系统平台

内存要求

企业版

Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Windows NT Server 4.0(SP5)或更高版本

64MB
建议128MB

标准版

Microsoft Windows 2000 Professional
Windows NT Workstation 4.0(SP5)或更高版本

64MB

个人版

Windows NT Workstation
Windows9X/Me/2000或更高版本

32MB

2.安装SQL Server

实验的主要目的是使学生掌握SQL语句的使用。下面的安装过程将以在Windows 2000环境下从本地CD-ROM上安装SQL Server 2000个人版为例。
具体步骤为:

  1. 插入SQL Server个人版光盘。
  2. 在屏幕上,选择“安装SQL Server 2000组件”选项,选择“安装数据库服务器”。
  3. 接着出现SQL Server 2000的安装向导,它将引导用户安装SQL Server的新实例或修改现有实例。实例名必须以字母或符号(&)或下划线(_)开头,可以包含数字、字母或其他字符。SQL Server系统名称和保留名称不能用作实例名称。
  4. 接下来,系统将询问用户是否同意软件协议、收集有关用户、用户的计算机和用户公司等情况,并需要键入用户的CD KEY。
  5. 接着是选择“安装类型”
  6. 进入到服务器账户配置界面,账户的选择和配置是一个非常重要的步骤,应为它直接决定了SQL Server的启动账号和访问账号。
  7. 进入身份验证模式界面,在选择身份模式时,为方便配置,建议用户均采用“混合模式”。
  8. 点击“下一步”按钮后进入文件复制阶段。SQL Server安装向导便开始拷贝文件。

重新启动服务器,SQL Server安装完成。

3.SQL Server的组成

正确安装SQL Server2000后,可以在windows的“开始”菜单中看到“Microsoft SQL Server”组。下面对实验中常用的几个工具介绍。
1)服务器管理(Service Manager)
服务器管理用来启动、暂停、停止MS SQL Server服务、SQL Server Agent服务、MS DTC服务以及Microsoft Search服务,是SQL Server的一个必要组成部分。这些服务一般作为应用程序在服务器的后台运行。实验中,我们只是用MS SQL Server服务
服务器有三个不同状态:

    1. 开始/继续(Started/Continue)——这种服务状态表示服务正在正常运行。当MS SQL Server服务处于这种状态时,服务器课接受用户连接并处理数据。
    2. 停止(Stopped)——当MS SQL Server服务处于这种状态时,任何连接到服务器上的客户连接都会被断开,并且他们所有的过程都将终止。在此种状态的其他服务和处理会被中断。
    3. 暂停(Paused)——这种状态只对MS SQL Server服务有效。当MS SQL Server服务暂停时,以连接到服务器上的用户将被允许继续保持连接,但新的用户连接将被拒绝。

在我们的实验中将使用MS SQL Server服务,他实际上是数据库服务器,当用户要访问数据库时,必须先启动它。

2)企业管理器(Enterprise Manager)
它是SQL Server中用户用得最多的一个工具,也是SQL Server提供的用户管理界面。在这里,用户可以以图形化方式管理所能访问的全部SQL服务器,包括数据库(Database)、数据装换服务(Data Transformation Services)、管理(Managerment)、安全(Security)等管理

3)查询分析器(Query Analyzer)
SQL Server Query Analyzer是用来管理服务器的一个工具。与企业管理器不同,使用该工具时,必须键入SQL命令和SQL脚本程序。但与企业管理器相比,允许用户对DBMS用更多的控制。

4)运行SQL Server
a、启动MS SQL Server服务
操作:开始→MS SQL Server→服务管理器→开始/继续
b、关闭“服务管理器”窗口,打开“企业管理器”。
操作:开始→MS SQL Server→企业管理器。


实验二   创建SQL Server数据库和表

一、实验目的
通过实验使学生了解SQL Server系统数据库和用户数据库,掌握SQL Server数据库的创建方法和数据库对象,了解SQL Server2000的数据类型,掌握创建SQL Server表的方法。
二、实验准备
1、了解SQL Server数据库的结构
在SQL Server中,所有信息都存储在数据库中。每个数据库都由物理和逻辑组件两部分组成。逻辑组件是用户在使用SQL Server图形操作界面看到的,或在程序中访问的数据和数据对象。比如:数据库名和表名、视图名、存储过程名等数据库对象。而数据库的物理组件——文件,对用户是透明的,一般只用系统管理员才直接对数据库文件进行操作。
每个数据文件由以下三种组成:

  1. 主数据文件(文件名后缀:.mdf)。该文件时数据库的基础,每个数据库有且仅有一个主要数据文件。
  2. 次要数据文件(文件名后缀:.ndf)。该文件存储着主数据文件没有包括的内容。它不是每个数据库都必须的。简单的数据库可以没有次要数据文件,复杂数据库可以有多个次要数据文件。
  3. 日志文件(文件名后缀:.ldf)。日志文件记录着事务日志信息,每个数据库必须至少有一个日志文件。

2、了解SQL Server的四个系统数据库及其作用
四个系统数据库为:Master、Model、Tempdb、Msdb,它们是正常运行SQL Server所必需的,不能删除和随意修改。其中:

    1. Master:是SQL Server的主数据库,保存着SQL Server所有的系统的信息,包括登录信息,所有的系统配置信息。它还记录着所有用户数据库和主数据文件的位置,确保用户数据库的初始化。
    2. Model:是创建新数据库的模版数据库。当用户新建数据库时,首先将model数据库拷贝到新数据库中。Model数据库可以自定义,任何对model数据库的修改,都将在新建数据库时体现出来。
    3. Tempdb:临时数据库,为临时表和其他临时工作提供一个临时的存储区。每次打开SQL Server,tempdb数据库都会重建。
    4. Msdb:是SQL Server Agent的主要数据库,用于复制、任务调度、报警、系统操作员信息以及备份信息。

3、了解SQL Server的两个示例数据库
两个示例数据库为:Pubs数据库和Northwind数据库,是微软为学习SQL Server的用户准备的例子数据库。熟练的用户可以删除这两个数据库。

三、实验内容

  1. 启动MS SQL Server服务,打开“企业管理器”。
  2. 单击“企业管理器”左边“控制台根目录”树结构中的SQL Server Group(服务组)使其展开;再展开服务组下面的SQL Server服务器。
  3. 展开“数据库”,用户可见SQL Server自带的两个四个系统数据库和两个示例数据库。
  4. 在“企业管理器”中创建名为GradeManager的数据库。

实验步骤:

      1. 选中“数据库”,单击鼠标右键,在其弹出菜单中选择“新建数据库”。
      2. 在随后出现的“新建数据库”对话框的“名称”一栏中,输入数据库名:GradeManager,也可通过“新建数据库”对话框更改该数据库文件的存放路径。
      3. 展开新建的数据库,会发现数据库中已有了一下目录结构,称之为数据库对象。

        关系图(Digram)

        表(Table)

        视图(View)

        存储过程(Stored Procedure)

        用户(User)

        角色(Role)

        规则(Ruler)

        默认(Default)

        用户定义的数据类型(User Defined Data Type)

        用户定义的函数(Function)

        打开“查询分析器”。

        在“查询分析器”的工具栏中的数据库下拉选择框中,选中GradeManager,使之成为当前操作的数据库,在编辑框中键入下列SQL语句,创建表:

Create table worker
(wno char(4) primary key,
wname char(8) not null,
sex char(2) not null,
birthday datetime)

          1. 按编辑框上方图形菜单中的绿色按钮,执行编辑框中的SQL语句。
          2. 清空上面的SQL语句,然后输入:

select * from worker

          1. 按编辑框上方图形菜单中的绿色箭头按钮,执行select语句,结果为空。
          2. 在“企业管理器”中展开数据库→展开GradeManager数据库→选中Table,右击鼠标→选择刷新,可见右边出现新建的worker表。
          3. 选中worker表,右击鼠标→打开表,可见worker表中记录为空。

四、实习报告内容
(1)写出在“企业管理器”中的一般步骤;
(2)写出在“查询分析器”中创建表的一般步骤。

五、思考题
(1)SQL Server的数据库文件有几种?后缀名分别是什么?
(2)SQL Server 2000中,有哪几种整型数据类型?占用的存储空间多大?


实验三   基本表的建立和修改

一、实验目的
通过建立基本表和向表中输入记录,加深学生对关系数据模型中型和值概念的理解;学会对基本表进行修改、删除和建立索引等基本操作。

二、实验准备

      1. 复习理论课中基本表、索引的创建、删除和修改操作;
      2. 复习Create table、Create Index、Alter table 、Drop table等命令;
      3. 复习Insert 、Update 、Delete命令的使用;
      4. 创建student、course、class、grade基本表。

student (sno, sname, ssex, sage, clno)??
course (cno, cname, credit)
class (clno, speciality, inyear, number, monitor)
grade (sno, cno, gmark)

三、实验内容

  1. 启动MSSQL Server服务,打开Enterprise Manager 和 Query Analyzer。
  2. 在Query Analyzer 中用CREATE TABLE 命令在实验一创建的GradeManager数据库中定义基本表:学生表(Student)、课程表(Course),利用Enterprise Manager 的图形化功能建立班级(Class)以及成绩表(Grade)。
  3. 给学生表增加一属性Nation(民族),数据类型为varchar(20)
  4. 删除学生表中新增的属性nation;
  5. 想成绩表中插入记录(”200101”,”3”,80);
  6. 修改学号为“2001110”的学生的成绩为70分;
  7. 删除学号为“2001110”的学生成绩记录;
  8. 为学生表创建一个名为IX_Class的索引,以班级号排序;
  9. 删除IX_Class索引;

四、实验报告内容

  1. 写出用CREATE TABLE 语句对四个基本表的定义;
  2. 写出各项操作的SQL语句。

五、思考题
在定义基本表语句时,NOT NULL参数的使用有何作用?


实验四   SELECT 语句的使用(一)

一、实验目的
掌握SELECT的基本使用格式,能使用SQL Server对表的简单查询。

二、实验准备

  1. 复习理论课中SELECT语句的基本使用格式。
  2. 复习SQL中五种库函数:AVG、SUM、MAX、MIN、COUNT。

三、实验内容

      1. 找出所有被学生选修了的课程号;
      2. 找出01311班女学生的个人信息;
      3. 找出01311、01312班学生的姓名、性别、出生年份;
      4. 找出所有性李的学生的个人信息;
      5. 找出学生李勇所在班级的学生人数;
      6. 找出课程名为操作系统的平均成绩、最高分、最低分;
      7. 找出选修了课程的学生人数;
      8. 找出选修了课程操作系统的学生人数;
      9. 找出2000级计算机软件班的成绩为空的学生姓名
      10. 试一下以下语句是否正确:

SELECT eno , basepay , service
FROM salary
WHERE basepay<AVG(basepay)

四、实验报告内容

  1. 写出各项操作的SQL语句。
  2. 实验内容二的SQL语句是否正确?如果不正确,请写出正确的语句。

五、思考题
什么情况下需要使用关系别名?别名的作用范围是什么?


实验五   SELECT 语句的使用(二)

一、实验目的
掌握SELECT 语句的嵌套使用方法,能使用SQL Server对表的复杂查询。

二、实验准备

  1. 复习理论中SELECT语句的较高级格式的使用。
  2. 了解库函数在分组查询中的使用规则;

三、实验内容

  1. 找出李勇所在勇一个班级的学生信息;
  2. 找出所有以学生李勇有相同选修课程的学生信息;
  3. 找出年龄介于学生李勇和25岁之间的学生信息;
  4. 找出选修了课程操作系统的学生学号和姓名;
  5. 找出所有没有选1号课程的学生姓名;
  6. 找出选修了全部课程的学生姓名;
  7. 查询选修了3号课程的学生学号及其成绩,并按成绩降序排列;
  8. 查询全体学生信息,要求查询结构按班级号升序排列,同一班级学生按年龄降序排列;
  9. 求每个课程号及相应的学课人数;

查询选修了3门以上课程的学社学号;

四、实验报告内容

  1. 写出各项操作的SQL语句。
  2. 使用存在量词[NOT]EXISTS的嵌套查询时,何时外层查询的WHERE条件为真,何时为假。

五、思考题

  1. 用UNION或UNION ALL将两个SELECT命令结合为一个时,结果有何不同?
  2. 当既能用连接词查询又能用嵌套查询时,应该选择哪种查询较好?为什么?
  3. 库函数能否直接使用在:SELECT选取目标、HAVING子句、WHERE子句、GROUP BY列名中?

 


实验六   SQL的存储操作

一、实验目的
掌握用交互式SQL语句对已建基本表进行存储操作:修改、删除、插入,加深对数据库的完整性的理解。

二、实验准备

  1. 复习数据的完整性,在进行数据的修改、删除、插入时,要注意保持数据的一致性。
  2. 复习UPDATE、DELETE、INSERT语句与子查询的结合使用。

三、实验内容

  1. 对每个班,求学生的平均年龄,并把结果存入数据库;
  2. 将01311班的全体学生的成绩置零;
  3. 删除2001击计算机软件班全体学生的选课记录;
  4. 学生李勇已退学,从数据库中删除有关它的记录;
  5. 把所有工程师的基本工资(Basepay)增加100,试一试以下的UPDATE语句对不对;

UPDATE salary
SET basepay=basepay+100
WHERE eno in
(SELECT eno
FROM employee
WHERE title =‘工程师')

四、实验报告内容

      1. 写出各项操作的SQL语句。
      2. 实验内容的SQL语句是否正确?如果不正确,请写出正确的语句表达式。

五、思考题
DROP命令和DELETE命令的本质区别是什么?


实验七   视图的建立及操作

一、实验目的

掌握创建、删除和查询视图的方法,验证可更新视图和不可更新视图。

二、实验准备

1.复习视图。

2.了解可更新视图和不可更新视图。

三、实验内容

      1. 建立01312班选修了1号课程的学生视图stu_01312_1;

        建立01312班选修了1号课程并且成绩不及格的学生视图stu_01312_2;

        建立视图stu_year,由学生学号、姓名、出生年月组成;

        查询1983年以后出生的学生姓名;

        查询01312班选修了1号课程并且成绩不及格的学生学号、姓名、出生年月。

        建立一视图Class_grade,用来反映每个班级的所有选修课的平均成绩,并对其进行更新操作。

四、实验报告内容

    1. 写出各项操作的SQL语句。
    2. 实验内容二创建的视图能否进行更新?为什么?

实验八*   完整性约束的实现

一、实验目的

掌握SQL中实现数据完整性的方法,加深理解关系数据模型的三类完整性约束。

二、实验准备

复习 “完整性约束SQL定义”。

了解SQL Server 中实体完整性、参照完整性和用户自定义完整性的实现手段。

三、实验内容

用完整性约束定义四个表:
表一 student


属性名

数据类型

可否为空

含义

完整性约束

Sno

Char(7)

学号

主码

Sname

Varchar(20)

学生姓名

Ssex

Char(2)

性别

男或女,默认为男

Sage

Smallint

年龄

大于14,小于65

Clno

Char(5)

学生班级

外部码

表二course


属性名

数据类型

可否为空

含义

完整性约束

Cno

Char(1)

课程号

主码

Cnam

Varchar(20)

课程名称

credit

Smallint

学分

1、2、3、4、5、6之一

表三class


属性名

数据类型

可否为空

含义

完整性约束

Clno

Char(5)

班级号

主码

Speciality

Varchar(20)

班级所在专业

Inyear

Char(4)

入校年份

Number

Integer

班级人数

小于1,小于100

Monitor

Char(7)

班长学号

外部码

表四grade


属性名

数据类型

可否为空

含义

完整性约束

Sno

Char(7)

学号

主属性,外部码

Cno

Char(7)

课程号

主属性,外部码

Gmark

Numeric(4,1)

成绩

大于0,小于100

    四、实验报告内容

    写出习题二第20题中四个表结构的SQL定义语句。

    SQL Server中提供了哪些方法实现实体完整性、参照完整性和用户自定义完整性?