1、关系数据库与 SQL实验指导书盐城工学院 信息学院计算机工程系目 录实验 1 SQL Server2000 管理工具的使用1实验 2 创建数据库和表3实验 3 表数据插入、修改和删除7实验 4 数据库的查询11实验 5 T-SQL 编程17实验 6 索引和数据完整性的使用20实验 7 存储过程和触发器的使用22实验 8 数据库的安全性27实验 9 备份恢复与导入/导出31实验 1 SQL Server2000管理工具的使用目的与要求(1)掌握 SQL Server 服务器的安装。(2)掌握企业管理器的基本使用方法。(3)掌握查询分析器的基本使用方法。(4)对数据库及其对象有基本了解。实验准备(
2、1)了解 SQL Server2000 各种版本安装的软硬要求。(2)了解 SQL Server 支持的身份验证模式。(3)SQL Server 各组件的主要功能。(4)对数据库、表、数据库对象有基本了解。(5)了解在查询分析器中执行 SQL 语句的方法。实验内容1.利用企业管理器访问系统自带的 pubs数据库(1)启动 SQL Server 服务管理器。(2)以系统管理员身份登录到企业管理器并访问 pubs 数据库。(3)在企业管理器的目录树中展开文件夹展开 pubs 数据库图标,则将列出该数据库的所有对象,如:表、视图、存储过程、默认、规则等。(4)选中 pubs 的“表”图标,将列出 p
3、ubs 数据库所有的表(系统表和用户表) ,在此我们以用户表 publishers 为例,打开该表,查看其内容。(5)在表的尾部插入记录(9943,zhang,Beijing,null,china)和记录(1408,li,shanghai,null,china) 。会发生什么情况?(6)在表中删除步骤(5)插入的记录。2.查询分析器的使用(1)在分析器对象浏览器的目录树中展开 pubs 数据库图标,则将列出该数据库的所有对象,如:表、视图、存储过程等。(2)以 pubs 数据库的用户表 authors 为例,选中该表的图标右击,出现一个快捷菜单,执行“打开”菜单项,打开该表,查看其内容。(3)
4、在表的尾部插入 1 条记录。(4)在查询分析器的输入窗口,输入如下 T-SQL 语句:use pubs select * from authors go 看看执行结果是什么?【思考与练习】用查询分析器查询 pubs 数据库 publishers 表的所有记录。实验 2 创建数据库和表目的和要求(1)了解 SQL Server 数据库的逻辑结构和物理结构。(2)了解表的结构特点。(3)了解 SQL Server 的基本数据类型。(4)了解空值概念。(5)学会在企业管理器中创建数据库和表。(6)学会使用 T-SQL 语句创建数据库和表。实验内容1.实验题目创建用于企业管理的员工管理数据库,数据库名
5、为 YGGL,包含员工的信息、部门信息以及员工的薪水信息。数据库 YGGL 包含下列 3 个表。(1)Employees:员工自然信息表。(2)Departments:部门信息表。(3)Salary:员工薪水情况表。各表的结构分别如表 T2.1,表 T2.2,表 T2.3 所示。表 T2.1 Employees表结构列名 数据类型 长度 是否允许为空值 说明EmployeeID Char 6 员工编号,主键Name Char 10 姓名Birthday Datetime 8 出生日期Sex Bit 1 性别Address Char 20 地址zip Char 6 邮编PhoneNumber C
6、har 12 电话号码EmailAddress Char 30 电子邮件地址DepartmentID Char 3 员工部门号,外键表 T2.2 Departments表结构列名 数据类型 长度 是否允许为空值 说明DepartmentID Char 3 部门编号,主键DepartmetnName Char 20 部门名Note text 16 备注表 T2.3 Salary表结构列名 数据类型 长度 是否允许为空值 说明EmployeeID Char 6 员工编号,主键Income Float 8 收入Outcome float 8 支出2.实验准备首先要明确能够创建数据库的用户必须是系统管
7、理员,或是被授权使用 CREATE DATABASE 语句的用户。其次创建数据库必须要确定数据库名、所有者(即创建数据库的用户) 、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。然后,确定数据库包含哪些表以及所包含的各表的结构,还要了解 SQL Server 的常用数据类型,以便创建数据库的表。此外,还要了解 2 种常用的创建数据库、表的方法,即在企业管理器中创建和使用 T-SQL 的 CREATE DATABASE 语句创建。实验步骤1.在企业管理器中创建数据库 YGGL要求:数据库 YGGL 初始大小为 10MB,最大大小为 50MB,数据库自动增长,增长
8、方式是按 5%比例增长;日志文件初始为 2MB,最大可增长到 5MB(默认为不限制) ,按 1MB 增长(默认是按 5%比例增长) 。数据库的逻辑文件名和物理文件名均采用默认值,分别为YGGL_data 和 e:sqldataMSSQLDataYGGL.mdf,其中 e:sqldataMSSQL 为 SQL Server的系统安装目录;事务日志的逻辑文件名和物理文件名也均采用默认值分别为 YGGL_LOG 和e: sqldataMSSQLDataYGGL_LOG.ldf。以系统管理员 Administrator 是被授权使用 CREATE DATABASE 语句的用户登录 SQL Server
9、 服务器,启动企业管理器在服务器上单击鼠标右键新建数据库输入数据库名“YGGL”选择“数据文件”选项卡设置增长方式和增长比例选择“事务日志”选项卡设置增长方式和增长比例。注意:在“数据文件”选项卡和“事务日志”选项卡中可以分别指定数据库文件和日志文件的物理路径等特性。2.在企业管理器中删除创建的 YGGL数据库在企业管理器中选择数据库 YGGL在 YGGL 上单击鼠标右键删除。3.使用 T-SQL语句创建数据库 YGGL按照实验步骤 1 中的要求创建数据库 YGGL。启动查询分析在“查询”窗口中输入以下 T-SQL 语句:CREATE DATABASE YGGLON( NAME=YGGL_Da
10、ta,FELENAME=e:sqldataMSSQLDataYGGL.mdf,SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=5%)LOG ON( NAME=YGGL_LOG,FELENAME=e:sqldataMSSQLDataYGGL_LOG.ldf,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)GO单击快捷工具栏的执行图标,执行上述语句,并在企业管理器中查看执行结果。4.在企业管理器中分别创建表 Employees,Departments 和 Salary在企业管理器中选择数据库 YGGL在 YGGL 上单击鼠标右键新建表输入Employee
11、s 表各字段信息单击保存图标输入表名 Employees,即创建了表 Employees。按同样的操作过程创建表 Departments 和 Salary。5.在企业管理器删除创建的 Employees,Departments 和 Salary 表在企业管理器中选择数据库 YGGL 的表 Employees在 Employees 上单击鼠标右键删除,即删除了表 Employees。按同样的操作过程删除表 Departments 和 Salary 表。6.使用 T-SQL语句创建表 Employees,Departments 和 Salary启动查询分析器在“查询”窗口中输入以入 T-SQL 语
12、句:USE YGGLCREATE TABLE Employees( EmployeeID char(6) NOT NULL,Name char(10) NOT NULL,Birthday datetime NOT NULL,Sex bit NOT Null,ddress char(20) NOT NULL,Zip char(6) NULL,phoneNumber char(12) NULL,EmailAddress char(20) NULL,DepartmentID char(3) NOT NULL)GO单击快捷工具栏的执行图标,执行上述语句,即可创建表 Employees。按同样的操作过程
13、创建表 Departments 和 Salary,并在企业管理器中查看结果。实验 3 表数据插入、修改和删除目的和要求(1)学会在企业管理器中对数据库表进行插入、修改和删除数据操作。(2)学会使用 T-SQL 语句对数据库表进行插入、修改和删除数据操作。(3)了解数据更新操作时要注意数据完整性。(4)了解 T-SQL 语句对表数据操作的灵活控制功能。实验内容1.实验题目分别使用企业管理器和 T-SQL 语句,向在以下实验步骤 1 建立的数据库 YGGL 的 3 个表Employees,Departments 和 Salary 中插入多行数据记录,然后修改和删除一些记录。使用T-SQL 进行有限
14、制的修改和删除。2.实验准备首先了解对表数据的插入、删除、修改都属于表数据的更新操作。对表数据的操作可以在企业管理器中进行,也可以由 T-SQL 语句实现。其次要掌握 T-SQL 中用于对表数据进行插入、修改和删除的命令分别是INSERT、UPDATE 和 DELETE(或 TRANCATE TABLE) 。要特别注意在执行插入、删除、修改等数据更新操作时,必须保证数据完整性。此外,还要了解使用 T-SQL 语句在对表数据进行插入、修改及删除时,比在企业管理器中操作表数据更为灵活,功能更强大。实验步骤1.在企业管理器中向数据库 YGGL表加入数据(1)在企业管理器中向表 Employees 中
15、加入如表 T3.1 所示的记录。表 T3.1 数据记录编号 姓名 地址 邮编 电话 电子邮件 部门号 出生日期 性别000001 王林 中山路 32-1-508 210003 3355668 NULL 2 1956-1-23 1010008 伍容华 北京东路 100-2 210001 3321321 NULL 1 1966-3-28 1020010 王向容 四牌楼 10-10-108 210006 3792361 NULL 1 1972-12-9 1020018 李丽 中山东路 102-2 210002 3413301 1 1950-7-30 0102201 刘明 虎距路 100-2 210
16、013 3606608 NULL 5 1962-10-18 1102208 朱俊 牌楼巷 5-3-1806 210004 4708817 5 1955-9-28 1108991 李敏 中山路 108-3-105 210003 3346722 3 1969-8-10 0111006 张石兵 解放路 34-9-1 210010 4563418 Zhangchinacom 5 1964-4-10 1210678 林涛 中山北路 247-2 210008 3456336 NULL 3 1967-4-2 1302566 叶凡 热和路 209-3 210018 8765991 4 1958-9-20
17、 0308759 陈林林 北京西路 3-72 210001 3308901 NULL 4 1968-11-18 1在企业管理器中选择表 Employees在其中单击鼠标右键选择“返回所有行”逐字段输入各记录值,输入完后,关闭表窗口。(2)在企业管理器向表 Departments 中插入如表 T3.2 所示的数据记录。表 T3.2 数据记录编号 部门名称 备注1 财务部 NULL2 人力资源部 NULL3 经理办公室 NULL4 研发部 NULL5 市场部 NULL(3)在企业管理器中向表 Salary中插入如表 T3.3所示的数据记录。表 T3.3 数据记录编号 收入 支出000001 210
18、0.8 123.09010008 1582.62 88.03020010 2569.88 185.65020018 1987.01 79.58102201 2066.15 108.0102208 2980.7 210.2108991 3259.98 281.52111006 2860.0 198.0210678 2347.68 180.0302566 2531.98 199.08308759 2240.0 121.02.在企业管理器中修改数据库 YGGL表数据(1)在企业管理器中删除表 Employees 的第 2、8 行和 Salary 的第 2、11 行。注意进行删除操作时,作为两表主键的
19、 EmployeeID 的值,以保持数据完整性。在企业管理器中选择表 Employees在其上单击鼠标右键选择“返回所有行”选择要删除的行单击鼠标右键删除关闭表窗口。(2)企业管理器中删除表 Departments 的第 2 行,同时也要删除表 Employees 的第 2行。操作方法同(1) 。(3)在企业管理器中将表 Employees 中编号为 020018 的记录的部门号改为 4。在企业管理器中选择表 Employees在其上单击鼠标右键选择“返回所有行”将光标定位至编号为 020018 的记录的 DepartmentID 字段,将值 1 改为 4。3.使用 T-SQL命令修改数据库
20、YGGL表数据(1)使用 T-SQL 命令分别向 YGGL 数据库 Employees,Departments 和 Salary 表中插入1 行记录。启动查询分析器在“查询”窗口中输入以下 T-SQL 语句:USE YGGLINSERT INTO EmployeesVLUES(011112,罗林,1973-5-3, 解放路 100 号 , 210002,4055663,NULL,5)GOINSERT INTO DepartmentsVALUES(2, 人力资源部,NULL)GOINSERT INTO SalaryVALUES(011112,1200.09,50)GO单击快捷工具栏的执行图标,执
21、行上述语句。注意:在企业管理器中分别打开 YGGL 数据库 Employees,Departments 和 Salary 表,观察数据变化。(2)使用 T-SQL 命令修改表 Salary 中的某个记录的字段值。启动查询分析器在“查询”窗口中输入以下 T-SQL 语句:USE YGGLUPDATE SalarySET Income=2890WHERE EmployeeID=011112GO单击快捷工具栏的执行图标,执行上述语句,将编号为 011112 的职工收入改为 2890。注意:在企业管理器中分别打开 YGGL 数据库 Salary 表,观察数据变化。(3)修改表 Employees 和
22、Departments 的记录值,仍要注意完整性。操作过程同(2) 。(4)使用 T-SQL 命令修改表 Salary 中的所有记录的字段值。启动查询分析器在“查询”窗口中输入以下 T-SQL 语句:USE YGGLUPDATE SalarySET Income=Income+100GO单击快捷工具栏的执行图标,执行上述语句,将所有职工的收入增加 100。可见,使用 T-SQL 语句操作表数据比在企业管理器中操作表数据更为灵活。注意:输入以下 T-SQL 语句,观察数据变化。SELECT * FROM Salary(5)使用 TRANCATE TABLE 语句删除表中所有行。启动查询分析器在“
23、查询”窗口中输入以下 T-SQL 语句:USE YGGLTRANCATE TABLEGO单击快捷工具栏的执行图标,执行上述语句,将删除 Salary 表中的所有行。注意:实验时一般不轻易做这个操作,因为后面实验还要用到这些数据。如果试验该命令的效果,可建一个临时表,输入少量数据后进行。实验 4 数据库的查询目的与要求(1)掌握 SELECT 语句的基本语法。(2)掌握子查询的表示。(3)掌握连接查询的表示。(4)掌握数据汇总的方法。(5)掌握 SELECT 语句的 GROUP BY 子句的作用和使用方法。(6)掌握 SELECT 语句的 ORDER BY 子句的作用和使用方法。实验准备(1)了
24、解 SELECT 语句的基本语法格式。(2)了解 SELECT 语句的执行方法。(3)了解子查询的表示方法。(4)了解连接查询的表示。(5)了解数据汇总的方法。(6)了解 SELECT 语句的 GROUP BY 子句的作用和使用方法。(7)了解 SELECT 语句的 ORDER BY 子句的作用。实验内容1.SELECT语句的基本使用(1)对于实验 2 给出的数据库表结构,查询每个雇员的所有数据。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT *FROM EmployeesGO【思考与练习】用 SELECT 语句查询 Departments 和 Salary 表的所有记录
25、。(2)查询每个雇员的地址和电话。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address,PhoneNumberFROM Employees GO【思考与练习】用 SELECT 语句查询 Departments 和 Salary 表的一列或若干列。(3)查询 EmployeeID 为 000001 的雇员的地址和电话。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address,PhoneNumberFROM EmployeesWHERE EmployeeID=000001GO【思考与练习】用 SELECT 语句查询 Departments
26、 和 Salary 表中满足指定条件的 1 列或若干列。(4)查询 Employees 表中女雇员的地址和电话,使用 AS 子句将结果中各列的标题分别指定为地址、电话。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address AS 地址,PhoneNumber AS 电话FROM EmployeesWHERE Sex=0GO注意:使用 AS 子句可指定目标列的位置。(5)计算每个雇员的实际收入。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT EmployeeID,实际收入=Income-OutcomeFROM SalaryGO(6)找出所有姓王
27、的雇员的部门号。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT DepartmentIDFROM EmployeesWHERE name LIKE 王%GO【思考与练习】找出所有其地址中含有“中山”的雇员的号码及部门号。(7)找出所有收入在 20003000 之间的雇员号码。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT EmployeeID FROM SalaryWHERE Income BETWEEN 2000 AND 3000GO【思考与练习】找出所有在部门“1”或“2”工作的雇员的号码。注意:在 SELECT 语句中 LIKE、BETWEEN
28、AND,IN,NOT 及 CONTAIN 谓词的作用。2.子查询的使用(1)查找在财务部工作的雇员的情况。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT * FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName=财务部 )GO【思考与练习】用子查询的方法查找所有收入在 2500 元以下的雇员的情况。(2)查找财务部年龄不低于研发部雇员年龄的雇员的姓名。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Name FROM Empl
29、oyeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName=财务部 )ANDBirthday!ALL (SELECT BirthdayFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName=研发部)GO【思考与练习】用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。(3)查找比所有财务部的雇员收入都高的雇员的姓名。在查询分析器的窗口输入如下的语句并执行
30、:USE YGGLSELECT Name FROM EmployeesWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE IncomeALL (SELECT IncomeFROM Salary WHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName=财务部) ) ) )GO【思考与练习】用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员
31、的姓名。3.连接查询的使用(1)查询每个雇员的情况以及薪水的情况。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeIDGO【思考与练习】查询每个雇员的情况以及其工作部门的情况。(2)查找财务部收入在 2200 元以上的雇员姓名及其薪水详情。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Name,Income,OutcomeFROM Employees,Salary,Deparments
32、WHERE Employees. .EmployeeID=Salary.EmployeeID AND Employees.DepartmentID=Departments.DepartmentID AND DepartmentName=财务部 AND Income2000GO【思考与练习】查询研发部在 1966 年以前出生的雇员姓氏及其薪水详情。4.数据汇总(1)求财务总雇员的平均收入。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT AVG(Income) AS 财务部平均收入FROM SalaryWHERE EmployeeID IN(SELECT EmployeeID
33、FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName=财务部 )GO【思考与练习】查询财务部雇员的最高和最低收入。(2)求部雇员的最高和最低收入。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT AVG(Income-Outcome) AS 财务部平均实际收入FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT Departme
34、ntIDFROM DepartmentsWHERE DepartmentName=财务部 ) )GO【思考与练习】查询财务部雇员的最高和最低实际收入。(3)求财务部雇员的总人数。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT COUNT(EmployeeID)FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName=财务部 )GO【思考与练习】统计财务部收入在 2500 元以上的雇员的人数。5.GROUP BY,ORDER BY 子句的使用 (1)求各
35、部门的雇员数。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT COUNT(EmployeeID)FROM EmployeesGROUP BY DepartmentIDGO【思考与练习】统计各部门收入在 2000 元以上雇员的人数。(2)将各雇员的情况按收入由低到高排列。在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeIDORDER BY IncomeGO【思考与练习】将各雇员的情况按出生
36、时间先后排列。实验 5 T-SQL编程目的与要求(1)进一步巩固第 2 章到第 4 章所学内容。(2)掌握用户自定义类型的使用。(3)掌握变量的分类及其使用。(4)掌握各种运算符的使用。(5)掌握各种控制语句的使用。(6)掌握系统函数及用户自定义函数的使用。实验准备(1)了解 T-SQL 支持的各种基本数据类型。(2)了解自定义数据类型使用的一般步骤。(3)了解 T-SQL 各种运算符、控制语句的功能及使用方法。(4)了解系统函数的调用方法。(5)了解用户自定义函数使用的一般步骤。实验内容1.自定义数据类型的使用(1)对于实验 2 给出的数据库表结构,自定义 1 个数据类型 ID_type,用
37、于描述员工编号。在查询分析器编辑窗口输入如下程序并执行:USE YGGLEXEC sp_addtype ID_type,char(6),not nullGO注意:不能漏掉单引号。(2)重新创建 YGGL 数据库的 Employees 表。在查询分析器编辑窗口输入如下程序并执行:USE YGGLIF EXITS (SELECT name FROM sysobjectsWHERE type=U and name=Employees)DROP table employees/*首先在系统表中查看 Employees 表是否存在,若存在,删除该表CREATE TABLE Employees( Empl
38、oyeeID ID_type, /*定义字段 EmployeeID 的类型为 ID_typeName char(10) NOT NULL,Birthday datetime NOT NULL,Sex bit NOT Null,ddress char(20) NOT NULL,Zip char(6) NULL,phoneNumber char(12) NULL,EmailAddress char(20) NULL,DepartmentID char(3) NOT NULL)GO2.自定义函数的使用(1)定义一函数实现如下功能。对于 1 个给定的 DepartmentID 之值,查询该值在Depa
39、rtments 表中是否存在,若存在返回 0,否则返回-1。在查询分析器的编辑窗口输入如下程序并执行:CREATE FUNCTION CHECK_ID(departmentid char(3)RETURNS integer ASbeginDeclare num intIF EXISTS (SELECT departmentID FROM departmentsWHERE departmentid=departmentID)Select num=0ELSE select num=-1return numendGO(2)写一段 T-SQL 脚本程序调用上述函数。当向 Employees 表插入 1
40、 条记录时,首先调用函数 CHECK_ID 检索该记录的 DepartmentID 之值在表 Departments 的 DepartmentID 字段中是否存在对应值,若存在,则将记录插入 Employees 表。在查询分析器编辑窗口输入如下程序并执行:USE YGGLDeclare num intSelect num=dbo.check_id(2)If num=0Insert employeesValues(990210,张文, 1982-3-24,0,南京镇江市 2 路,210009 ,3497534,zhangjlonline,2)GO【思考与练习】编写如下程序:(1)自定义 1 个数
41、据类型,用于描述 YGGL 数据库中的 DepartmentID 字段,然后编写代码重新定义数据库的各表。(2)当对 Departments 表的 DepartmentID 字段值修改时,对 Employees 表中对应的DepartmentID 字段值也进行相应修改。(3)对 Employees 表进行修改时,不允许对 DepartmentID 字段值进行修改。实验 6 索引和数据完整性的使用目的与要求(1)掌握索引的使用方法。(2)掌握数据完整性的实现方法。目的与要求(1)了解索引的作用与分类。(2)掌握索引的创建方法。(3)理解数据完整性的概念及分类。(4)掌握各种数据完整性的实现方法。
42、实验内容1.建立索引(1)对 YGGL 数据库的 Employees 表中的 DepartmentID 列建立索引。在查询分析器编辑窗口输入如下程序并执行:USE YGGLIF EXISTS (SELECT name FROM sysindexesWHERE name=depart_ind)DROP INDEX employees.depart_ind /*应使用表名.索引名的形式GOUSE YGGLCREATE INDEX depart_indON Employees(departmentID)【思考与练习】(1)对 XSCJ 数据库的 XS_KC 表中的学号列和课程号列建立复合索引。(2)
43、什么情况下可以看到建立索引的好处?2.数据完整性在查询分析器编辑窗口输入如下程序并执行:-定义表CREATE TABLE book(Book_id char(6),Name varchar(20) NOT NULL,Hire_date datetime NOT NULL,Cost CHECK(cost=0 and cost0UPDATE EmployeesSET DepartmentID=(SELECT ins.DepartmentID from INSERTED ins)WHERE DepartmentID=(SELECT DepartmentID from deleted)ENDGO删除
44、Departments 表中 1 条记录的同时删除该记录 departmentID 字段值在Employees 表中对应的记录。USE YGGLGOCREATE TRIGGER Departmentsdelete on dbo.DepartmentsFOR DELETEASBEGINDELETE FROM EmployeesWHERE DepartmentID=(SELECT DepartmentID FROM deleted)ENDGO【思考与练习】上述触发器的功能用完整性的方法完成。2.创建存储过程在查询分析器编辑窗口输入各存储过程的代码并执行以下程序。(1)添加职员记录的存储过程 Emp
45、loyeeAdd:USE YGGLGOCREATE PROCEDURE EmployeeAdd(emppoyeeid char(6),name char(10),birthday datetime,sex bit,address char(20),zip char(6),phonenumber char(12),emailaddress char(20),departmentID char(3)ASBEGININSERT INTO EmployeesVALUES(employeeid,name,birthday,sex,address,zip,phonenumber,emailaddress,
46、departmentID)ENDRETURNGO(2)修改职员记录的存储过程 EmployeeUpdate:USE YGGLGOCREATE PROCEDURE EmployeeUpdate(empid char(6),emppoyeeid char(6),name char(10),birthday datetime,sex bit,address char(20),zip char(6),phonenumber char(12),emailaddress char(20),departmentID char(3)ASBEGINUPDATE EmployeesSET Employeeid=e
47、mployeeid,Name=name,Birthday=birthday,Sex=sex,Address=address,Zip=zip,Phonenumber=phonenumber,Emailaddress=emailaddress,DepartmentID=departmentID,WHERE Employeeid=empidENDRETURNGO(3)删除职员记录的存储过程 EmployeeDelete:USE YGGLGOCREATE PROCEDURE EmployeeDelete(employeeid char(6)ASBEGINDELETE FROM EmployeesWHERE Employeeid=employeeidENDRETURNGO3.调用存储过程USE YGGLEXEC EmployeeADD 990230,刘朝, 890909,1,武汉小洪山 5 号, ,3GOUSE YGGLEXEC Employeeupdate 990230,990230,刘平 ,890909,1,武汉小洪山 5 号, ,3GOUSE YGGLEXEC EmployeeDelete 990230GO分析一下此段程序执行时可能出现哪几种情况。【思考与练习】编写如下 T-S