数据库应用实验报告视图存储过程触发器等的建立与维护范文

合集下载

存储过程及触发器实验报告

存储过程及触发器实验报告

存储过程及触发器实验报告实验目的:1、了解存储过程及其应用;2、了解触发器及其应用;3、掌握使用存储过程及触发器完成数据操作的方法。

实验过程:1、存储过程存储过程是指一组为了完成特定功能的SQL语句集合。

存储过程可以接收传入参数并返回处理结果。

存储过程的好处是可以减少网络流量,提高性能,增加安全性。

在本次实验中,我们将学习如何创建存储过程。

首先,在MySQL中打开MySQL Workbench,进入我们的实验数据库。

然后我们就可以创建一个存储过程了。

创建存储过程的语法如下:CREATE PROCEDURE procedure_name ()BEGIN-- SQL statementsEND;在这个语法中,procedure_name是我们想要创建的存储过程的名称。

在BEGIN和END 之间,我们可以输入一组SQL语句,这些语句将组成存储过程的主体内容。

我们可以以一个创建一个简单的存储过程作为例子,这个存储过程的作用是输出一条信息。

我们将这个存储过程命名为print_message。

在上面的语句中,我们定义了一个存储过程,它被命名为print_message。

它只包含一条SELECT语句,这条语句将输出Hello, World!这个字符串。

创建完存储过程之后,我们可以通过CALL语句来调用它:CALL print_message();执行这个语句后,我们将会看到Hello, World!这个字符串输出到屏幕上。

2、触发器触发器是一种被动的对象,它是由数据库管理系统在数据表上自动执行的一些操作。

当数据表中发生某些指定的操作时,触发器就会被调用执行。

触发器通常用于数据表中的数据变更操作,比如插入、更新和删除。

在本次实验中,我们将学习如何创建和使用触发器。

在MySQL中创建触发器的语法如下:CREATE TRIGGER trigger_name{BEFORE | AFTER} trigger_event ON table_nameFOR EACH ROW trigger_body;在这个语法中,trigger_name是我们想要创建的触发器的名称。

数据库原理课程设计报告报告实验创建存储过程与触发器

数据库原理课程设计报告报告实验创建存储过程与触发器

存储过程与触发器实验日期和时间:2016 年 5 月13 日、星期五第节实验室:DJ2-信息管理实验室班级:学号:姓名:实验环境:1.硬件:笔记本电脑2.软件:SQL Server 2012实验原理:存储过程概念:存储过程是事先编好的,存储在数据库中的一组被编译了的T-SQL命令集合,这些命令用来完成对数据库的指定操作。

存储过程可以接受用户的输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言(DDL)和数据操作语言(DML)语句,然后返回输入参数。

触发器概念:触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。

触发器经常用于加强数据的完整性约束和业务规则等。

实验任务:此作业成绩得分根据你完成的任务的难度和数量评分,完成后在实验室给老师演示验收,课后提交电子版报告。

如额外完成自拟题目应当事先将所拟题目提交给老师或在报告中明确标注题意。

假定有学校的图书馆管理信息系统,可以用于日常管理书库和同学们的借还书工作。

以下列出参考的库表情况:根据管理的业务需求来分析,该管理信息系统的数据库应至少包括如下数据表:(打★号的是必须有的表)1.★图书现有库存表。

作用:记录图书的现有库存情况。

至少包括:书号、书名、作者、简介、类别、价格、出版社、出版日期、现有库存数量、最小库存量、库存总量、库存位置等。

2.★读者信息表。

作用:记录读者信息。

至少包括:读者编号、证件类型、证件号码、姓名、性别、职业(可填写教师、学生、教工、其它……)、所属单位、地址、联系电话等。

3.★借书记录表。

作用:记录借书情况,以及是否归还。

至少包括:借阅ID(主键,可设置为自动编号)、书号、读者编号、借阅数量、借阅日期、是否归还、管理员编号……等。

数据库实验实训报告范文

数据库实验实训报告范文

一、实验背景与目的随着信息技术的飞速发展,数据库技术在各行各业中的应用越来越广泛。

为了使同学们更好地掌握数据库的基本原理、设计方法和应用技术,提高动手能力,本次实验实训旨在通过一系列的数据库实验,使同学们熟悉数据库管理系统的使用,掌握数据库设计、创建、查询、维护等基本操作,提高数据库应用能力。

二、实验环境与工具1. 实验环境:Windows 10操作系统,SQL Server 2019数据库管理系统。

2. 实验工具:SQL Server Management Studio(SSMS)。

三、实验内容与步骤1. 数据库设计(1)分析业务需求:根据实验要求,设计一个学生信息管理系统,包含学生、课程、成绩等实体。

(2)确定实体关系:分析实体之间的联系,确定实体之间的关系,如一对多、多对多等。

(3)设计数据表结构:根据实体关系,设计数据表结构,包括字段名、数据类型、约束等。

2. 数据库创建(1)创建数据库:使用SSMS连接到本地SQL Server实例,创建一个新的数据库。

(2)创建数据表:在数据库中创建学生、课程、成绩等数据表,并设置相应的字段和约束。

3. 数据插入与查询(1)插入数据:向数据表中插入数据,包括学生信息、课程信息、成绩信息等。

(2)查询数据:使用SELECT语句进行数据查询,包括简单查询、条件查询、连接查询等。

4. 数据更新与删除(1)更新数据:使用UPDATE语句更新数据表中指定的记录。

(2)删除数据:使用DELETE语句删除数据表中指定的记录。

5. 视图与存储过程(1)创建视图:根据实际需求,创建视图,简化查询操作。

(2)创建存储过程:编写存储过程,实现数据的批量插入、更新、删除等操作。

四、实验结果与分析1. 数据库设计本次实验中,我们成功设计了一个学生信息管理系统,包括学生、课程、成绩等实体,并确定了实体之间的关系。

数据表结构设计合理,满足业务需求。

2. 数据库创建成功创建了数据库和数据表,并设置了相应的字段和约束。

存储过程和触发器(实验报告)

存储过程和触发器(实验报告)
CREATE PROCEDURE stu_en
WITH ENCRYPTION AS
SELECT*
FROM student_info
WHERE性别='男'
EXEC stu_en
DROP PROCEDURE stu_en
4.使用grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生各门课程的平均成绩。
CREATE PROC stu_g_r @stu_no varchar(8)=NULL,
@stu_score real OUTPUT
AS
SELECT@stu_score=AVG(分数)
FROM grade
WHERE (学号=@stu_no)
(2)执行存储过程stu_g_r,输入学号0002。
DECLARE @score real
WHERE (a.姓名=@stu_name)
EXEC stu_g_p ‘刘卫平’
sp_helptext stu_g_p
3.使用student_info表。
(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。
(2)执行存储过程stu_en,查看返回学生的情况。
(3)使用Transact-SQL语句DROP PROCEDURE删除存储过程stu_en。
(3)掌握通过SQL Server管理平台和Transact-SQL语句Alter procedure修改存储过程的方法;
(4)掌握通过SQL Server管理平台和Transact-SQL语句Drop procedure删除存储过程的方法;
(5)掌握通过SQL Server管理平台和Transact-SQL语句Create trigger创建触发器的方法和步骤;

存储过程-触发器-ODBC数据库编程-实验报告

存储过程-触发器-ODBC数据库编程-实验报告

《数据库系统概论》实验报告题目:实验四存储过程/触发器/ODBC 数据库编程姓名 班级学号 日期2010-10-25一. 实验内容和步骤结果1. 使用系统存储过程(sp_rename)将视图“V_SPJ ”更名为“V_SPJ_三建”: sp_rename 'V_SPJ','V_SPJ_三建'2.存储过程的创建与使用:(共计45分)(1) 使用SPJ 数据库中的S 表、P 表、J 表、SPJ 表,创建一个带参数的存储过程—jsearch 。

该存储过程的作用是:当任意输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME)以及工程的名称(JNAME)。

执行jsearch 存储过程,查询“J1”对应的信息。

(10分)CREATE Procedure jsearch (@SPJ_JNO char (10)) AS BEGINSELECT SNAME ,PNAME ,JNAME FROM SPJ ,S 表,P 表,J 表WHERE @SPJ_JNO =SPJ .JNO AND SPJ .JNO =J 表.JNO ANDSPJ.PNO=P表.PNO AND SPJ.SNO=S表.SNO END;jsearch'J1'(2)创建一个带有输出游标参数的存储过程jsearch2,功能同1),执行jsearch2,查询“J1”对应信息,并且将得到的结果用print语句输出到控制台。

(10分)CREATE PROCEDURE jsearch2(@jno char(10),@SPJ_CURSOR CURSOR VARYING OUTPUT)ASset @SPJ_CURSOR=CURSORFORSELECT J表.JNAME,P表.PNAME,S表.SNAMEfrom S表,P表,J表,SPJwhere SPJ.JNO=@jno andS表.SNO=SPJ.SNO andJ表.JNO=SPJ.JNO andP表.PNO=SPJ.PNOopen @SPJ_CURSORdeclare @jname char(10),@sname char(10),@pname char(10)declare @SPJ_CURSOR cursorexec jsearch2 'J1',@SPJ_CURSOR outputfetch next from @SPJ_CURSOR into @jname,@pname,@snamewhile(@@FETCH_STATUS=0)beginprint(@jname+@pname+@sname)fetch next from @SPJ_CURSOR into @jname,@pname,@sname endclose @SPJ_CURSORdeallocate @SPJ_CURSORgo(3)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。

数据库应用实验报告视图存储过程触发器等的建立与维护

数据库应用实验报告视图存储过程触发器等的建立与维护

内蒙古工业大学信息工程学院实验报告课程名称:数据库应用实验名称:视图存储过程触发器等的建立与维护实验类型:验证性□ 综合性□ 设计性□实验室名称:班级:学号:姓名:组别:同组人:成绩:实验日期:预习报告成绩:指导教师审核(签名):年月日预习报告一、实验目的1.学会使用企业管理器建立视图,应用视图插入、删除、修改数据;2.掌握存储过程的使用方法;3.掌握触发器的使用方法。

二、实验内容此实验是综合视图、存储过程、触发器等知识应用的一个综合性实验。

实验要求:1.利用所创建的数据库和数据表,综合应用视图、存储过程、触发器等知识完善数据库;2.掌握应用更新视图数据可以修改基本表数据的方法;3.熟练掌握添加、修改、删除记录的存储过程的定义及调用;4.掌握通过触发器来实现数据的参照完整性。

实验内容要求:利用员工管理数据库YGGL中 3个表:Employees:员工自然信息表、Departments:部门信息表、Salary:员工薪水情况表。

(1)利用YGGL各表建立视图实现各种连接查询。

建立视图view1,查询所有职工的员工编号、姓名、部门名和收入,并按部门名顺序排列。

建立视图view2,查询所有职工的员工编号、姓名和平均工资。

建立视图view3,查询各部门名和该部门的所有职工平均工资。

(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后编写程序,调用这些存储过程。

创建一个为Employees表添加员工记录的存储过程addEmployees。

创建一个存储过程delEmployees删除Employees表中指定员工编号的记录。

(3)对于YGGL数据库,请用触发器实现两个表间的参照完整性。

在表Departments上创建一个触发器Departments _update,当更改部门编号时同步更改Employees表中对应的部门编号。

在表Employees上创建一个触发器Employees _delete,当删除员工记录时同步删除salary表中对应的工资收入记录。

存储过程与触发器实验报告

存储过程与触发器实验报告

存储过程与触发器实验报告一、引言存储过程和触发器是数据库中常用的高级功能,它们能够提高数据库的性能、数据一致性和安全性。

本实验报告将详细介绍存储过程和触发器的概念、用途以及实际应用。

二、存储过程2.1 概念存储过程是一组预定义的SQL语句集合,它们被命名并存储在数据库中,可以作为一个单元来调用和执行。

存储过程可以接受参数,并返回一个或多个结果集。

存储过程可以在应用程序层面减少网络传输,提高数据库性能。

2.2 用途存储过程的应用非常广泛,主要用于以下几个方面: 1. 数据库业务逻辑封装:将复杂的业务逻辑封装到存储过程中,使应用程序只需调用存储过程而不需要编写大量的SQL语句,简化应用程序的开发。

2. 数据库性能优化:通过存储过程可以减少网络传输,提高数据库性能。

3. 数据库安全性:通过存储过程,可以实现对数据库的访问权限控制,提高数据库的安全性。

2.3 示例下面以一个简单的示例来说明存储过程的使用。

2.3.1 创建存储过程CREATE PROCEDURE `get_employee_by_department` (IN department_id INT)BEGINSELECT * FROM employee WHERE department_id = department_id;END2.3.2 调用存储过程CALL `get_employee_by_department`(1);2.4 优化技巧为了进一步提高存储过程的性能,可以采用以下优化技巧: 1. 减少存储过程的参数:过多的参数会增加网络传输的负担,应尽量减少存储过程的参数数量。

2. 避免长时间占用资源:存储过程应尽量快速执行,避免长时间占用数据库资源。

三、触发器3.1 概念触发器是与表相关联的特殊类型的存储过程,它在表的数据发生变化时自动执行。

触发器可以监视INSERT、UPDATE或DELETE等操作,并在这些操作发生时自动触发执行一段预定义的代码。

存储过程及触发器实验报告

存储过程及触发器实验报告

数据库技术与应用实验报告七班级:机械因材学号: 16 姓名:高永吉一:实验名称:存储过程及触发器二,实验目的:⑴ 使用系统常用的存储过程;⑵ 掌握存储过程的创建及应用(3) 理解触发器的概念;(4) 掌握触发器的创建及应用。

三.实验内容、过程和结果:存储过程1创建一个存储过程,查看学号为1(根据实际情况取)的学生的信息,包括该学生的学号,班级编号,姓名。

(提示:查询涉及到表Student)2执行1中创建的存储过程。

3使用输入参数创建题1中的存储过程。

题1中所创建的存储过程只能学号为1的学生信息进行查看,要想对其他学生进行查看,需要进行参数传递。

4执行3中创建的存储过程,(1)按位置传递参数;(2)通过参数名传递参数;5触发器1)在课程表Course上创建一个触发器,该触发器被操作DELETE所触发,且要求触发触发器的DELETE语句在执行被取消。

2)在表Student中建立插入触发器, 插入一条记录时,若年龄>100或者年龄<=0,拒绝插入记录并显示:“年龄不符合规定,无法插入此记录!”;3)创建一个触发器,如果在Student表中添加或更改数据,向客户端显示一条消息“你正在插入或修改学生表的数据”,要求触发触发器的DELETE、UPDATE语句被执行。

4 )为Course表创建一个名称为my_trig的触发器,当用户成功删除该表中的一条或多条记录时,触发器自动删除Student表中与之有关的记录。

5 )使用系统存储过程查看创建的触发器。

图一:创建一个存储过程,查看Tno为1(根据实际情况取)的教师的信息,包括该教师的姓名,sal图二执行1中创建的存储过程。

图三使用输入参数创建题1中的存储过程。

图四执行3中创建的存储过程,(按位置传递参数)图五执行3中创建的存储过程通过参数名传递参数;图六使用系统存储过程查看3中创建的存储过程图七删除3中创建的存储过程。

图八在Teacher上创建一个触发器,该触发器被操作DELETE所触发,且要求触发触发器的DELETE语句在执行被取消。

数据库实验报告3

数据库实验报告3

数据库实验报告课程:数据库原理及应用正文:一、实验目的1.理解索引和视图的概念。

2.掌握索引的使用方法。

3.掌握视图的定义和使用方法。

4.理解存储过程的概念,掌握存储过程的使用方法。

5.学习触发器的使用,体会触发器执行的时机,加深对触发器功能和作用的理解。

6.理解SQL Server2000验证用户身份的过程,掌握设置身份验证模式的方法。

7.理解登陆账号的概念,掌握混合认证模式下登陆账号的建立与取消方法。

8.掌握混合认证模式下数据库用户的建立与取消。

9.掌握数据库用户权限的设置方法。

10.理解角色的概念,掌握管理角色技术。

11.学会配制ODBC数据源。

了解使用ODBC来进行数据库应用程序设计,通过ODBC接口访问数据库并对数据库进行操作。

学习在Visual Basic中使用ADO控件访问后台的SQL Server数据库。

二、实验内容1.建立索引。

对JWGL数据库的学生选课表SC建立索引,要求按照Cno升序、Grade降序建立一个名为SC_ind的索引。

USE JWGLIF EXISTS(SELECT name FROM sysindexes WHERE name = 'SC_ind')DROP INDEX SC.SC_ind;GOUSE JWGLCREATE INDEX SC_ind ON SC (Cno,Grade DESC);2.视图的定义和操作,(1)在JWGL数据库里,完成第三章例3.54~例3.61例题中视图的定义和视图上的查询、更新操作。

(2)在Market数据库中,完成第三章习题11中(1)中建立视图的操作,然后在视图上完成第三章习题11(2)的查询操作。

3.在数据库JWGL中,完成第四章例1,例3~7中例题的创建存储过程的操作,并使用EXEC语句调用这些存储过程执行,观察他们的执行结果。

4.在Market数据库中,完成第四章习题5中(1)~(4)创建存储过程的操作。

数据库触发器实验实训报告

数据库触发器实验实训报告

一、实验背景随着信息技术的飞速发展,数据库技术在各行各业中的应用越来越广泛。

数据库触发器作为数据库管理系统的重要组成部分,具有强大的功能,能够帮助用户实现复杂的数据操作和业务逻辑。

为了提高学生对数据库触发器的理解与应用能力,我们开展了数据库触发器实验实训。

二、实验目的1. 掌握触发器的概念、作用及分类;2. 熟悉触发器的创建、修改和删除操作;3. 学会使用触发器实现业务规则和数据完整性;4. 提高数据库编程能力,为以后的实际工作打下基础。

三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:Python四、实验内容1. 触发器的基本概念触发器是一种特殊的存储过程,它在特定事件发生时自动执行。

触发器可以分为两大类:DML触发器和DDL触发器。

DML触发器包括INSERT、UPDATE和DELETE触发器,用于在数据操作时执行特定的逻辑;DDL触发器用于在数据定义语言操作时执行特定的逻辑。

2. 触发器的创建以MySQL为例,创建触发器的语法如下:DELIMITER //CREATE TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;//DELIMITER ;例如,创建一个名为before_insert_trigger的触发器,在向bookinfo表插入数据之前执行:DELIMITER //CREATE TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 100 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 100';END IF;END;//DELIMITER ;3. 触发器的修改修改触发器的语法与创建触发器类似,只需要使用ALTER TRIGGER语句:ALTER TRIGGER 触发器名称BEFORE|AFTER INSERT|UPDATE|DELETE ON 表名BEGIN-- 触发器逻辑END;例如,修改上述触发器,限制书籍价格不超过50元:DELIMITER //ALTER TRIGGER before_insert_triggerBEFORE INSERT ON bookinfoFOR EACH ROWBEGINIF NEW.price > 50 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Book price should not exceed 50';END IF;END;//DELIMITER ;4. 触发器的删除删除触发器的语法如下:DROP TRIGGER IF EXISTS 触发器名称;例如,删除上述触发器:DROP TRIGGER IF EXISTS before_insert_trigger;5. 触发器与存储过程的区别触发器和存储过程都是数据库编程的重要工具,但它们之间存在一些区别:(1)触发器在特定事件发生时自动执行,而存储过程需要手动调用;(2)触发器只能包含一个语句块,而存储过程可以包含多个语句块;(3)触发器不能返回结果集,而存储过程可以返回结果集。

2024年数据库实习报告范文5篇

2024年数据库实习报告范文5篇

2024年数据库实习报告范文2024年数据库实习报告范文精选5篇(一)以下是一个关于2024年数据库实习报告的范文:2024年数据库实习报告一、实习内容和目标作为2024年暑期实习的一部分,我参加了一家互联网科技公司的数据库实习。

实习期间,我主要负责数据库的管理和优化工作。

我的目标是通过实习体验,提升自己在数据库领域的理论知识和实际操作技能。

二、实习过程和收获1. 熟悉数据库系统在实习开始之前,我对数据库系统进行了较为深入的学习,包括关系数据库、SQL语言和数据库设计原则等方面的知识。

这为我后续的实习工作打下了良好的基础。

2. 数据库管理在实习过程中,我负责了公司数据库的日常管理工作。

包括数据库的备份、恢复以及性能监控等。

通过实际操作,我更加深入地了解了数据库管理的重要性,也学会了如何处理一些常见的数据库问题。

3. 数据库优化在实习期间,我也参与了数据库的优化工作。

通过分析系统运行情况和数据库性能指标,我提出了一些优化建议,如索引的创建和优化、SQL语句的优化等。

这些优化措施有效地提升了系统的性能和响应速度。

4. 项目实践除了日常的数据库管理和优化工作,我还参与了一个数据库相关的项目。

在这个项目中,我负责设计和实现数据库的结构,并编写相关的SQL语句。

通过这个实践项目,我在数据库设计和开发方面获得了更多的实际经验。

三、实习总结和反思通过这次数据库实习,我不仅提升了自己的理论知识,还学会了如何将这些知识应用到实际工作中。

同时,我也意识到数据库管理和优化工作的重要性,以及在项目中正确使用数据库的必要性。

在未来的学习和工作中,我将继续加强对数据库领域的学习和探索,不断提升自身的能力。

四、感谢与致谢在实习期间,我得到了公司和导师的大力支持和帮助,特此表示衷心的感谢。

感谢他们为我提供了这次宝贵的实习机会,并给予了我充分的指导和鼓励。

同时,也要感谢我的同事们,在他们的帮助下我能够更快地适应团队工作,并取得了一定的成绩。

数据库触发器实验报告

数据库触发器实验报告

数据库触发器实验报告一、引言随着信息技术的发展,数据处理已经成为了各种科学技术领域中至关重要的一环。

在数据处理系统中,数据库是必不可少的组成部分之一。

而数据库中的触发器就是实现数据库自动化的重要手段之一。

本文对数据库触发器的实验进行了详细的分析和总结,以期为大家提供一些有关数据库的实际应用经验和理论指导。

二、实验开展过程本次实验选择的是MySQL 5.0版本数据库,我们通过多个实验案例来了解和掌握触发器的实际应用。

1.定义触发器我们首先通过定义触发器的方法来了解触发器的基本概念和语法结构。

通过设置一些触发器的触发条件和执行程序,我们可以实现对数据库的自动化维护和更新。

2. 插入触发器然后我们通过插入触发器的实验案例来掌握数据库自动插入数据的具体实现方法。

这样,无须手动输入每一条数据,数据库就可以自动将新的数据插入到数据库中去。

这样做的好处在于可以减少人为错误的发生,并且提高了数据处理的效率。

3. 修改触发器接下来,我们又进行了修改触发器的实验案例。

通过设置一些修改触发器的触发条件和执行程序,可以在数据库中修改一些指定数据,或者将一些数据更新到数据库中。

4. 删除触发器最后,我们还进行了删除触发器的实验案例。

通过设置一些删除触发器的触发条件和执行程序,可以将数据库中的指定数据逐一删除掉,从而实现数据库的自动化维护和更新。

三、实验结果分析通过本次实验,我们加深了对数据库触发器的理解和掌握。

同时,我们也发现在实际应用中,触发器设计的精细度和实现的合理度对于数据库的使用效果有着十分重要的影响。

因此,我们应该在实际操作过程中,注重考虑实际应用场景和条件,来设计和优化触发器的应用方案。

四、总结本文主要介绍了数据库触发器的基本概念、使用步骤和实验案例。

触发器的应用范围非常广泛,在实际应用中有着极为重要的作用。

通过对本次实验的掌握和总结,我们可以更好地理解并掌握数据库触发器的应用方法和原理,为后续在实际工作中使用数据库打下了基础。

数据库原理实验指导书(含触发器及存储过程)范文

数据库原理实验指导书(含触发器及存储过程)范文

数据库原理实验指导实验 1 SQL Server2000管理工具的使用一、目的与要求1.掌握SQL Server服务器的安装2.掌握企业管理器的基本使用方法3.掌握查询分析器的基本使用方法4.掌握服务管理器的基本使用方法5.对数据库及其对象有一个基本了解6.掌握用企业管理器和查询分析器创建数据库,修改数据库和删除数据库的方法。

二、实验准备1.了解SQL Server各种版本安装的软、硬件要求2.了解SQL Server支持的身份验证模式3.了解SQL Server各组件的主要功能4.对数据库、表和数据库对象有一个基本了解5.了解在查询分析器中执行SQL语句的方法三、实验内容1.安装SQL Server 2000 根据软硬件环境,选择一个合适版本的SQL Server 2000。

2.利用企业管理器访问系统自带的pubs数据库。

(1)启动SQL Server服务管理器。

通过“开始=>程序=>Microsoft SQL Server=>服务管理器”打开“SQL Server服务管理器”,启动“SQL Server服务管理器”,并记录当前运行的服务器名。

图1.1 启动SQL Server服务管理器(2)启动企业管理器。

通过“开始=>程序=>Microsoft SQL Server=>企业管理器”打开“SQL Server Enterprise Manager”图1.2 启动企业管理器(3)在企业管理器的树形目录中展开数据库,找到pubs并展开,则列出该数据库的所有对象,如表、视图、存储过程、默认和规则等。

(4)选中“表”,将列出pubs数据库的所有表(包括系统表和用户表),在此以用户表publishers为例,选中该表,单击鼠标右键,弹出快捷菜单,执行“打开表—返回所有行”菜单项,打开该表,查看其内容。

(5)在表的尾部插入记录(9943,zhang,Beijing,null,china)和记录(1408,li,shanghai,null,china)。

《SQL Server 数据库》数据库存储过程、触发器的创建于管理实验报告

《SQL Server 数据库》数据库存储过程、触发器的创建于管理实验报告

北华航天工业学院《数据库系统管理》实验报告报告题目:存储过程、触发器的创建于管理所在系部:计算机科学与工程系所在专业:网络工程专业学号:姓名:教师姓名:完成时间:2011 年10 月19 日北华航天工业学院教务处制存储过程、触发器的创建与管理一、实验目的1、掌握存储过程的概念、优点、特点及用途;2、掌握创建、执行、查看、修改和删除存储过程的方法;3、了解触发器和一般存储过程的区别、概念及优点;4、掌握创建、查看、修改和删除触发器的方法。

二、实验内容(一)附加上次实验所创建的数据库“db_Library”,并回顾该数据库的数据表信息。

(二)练习创建和管理存储过程1、使用管理控制台创建一个名为“计算机系借阅信息_PROC”的无参存储过程,要求显示计算机系读者2011-1-1以后借阅的图书信息,包括“读者姓名”、“图书编号”和“借阅日期”三个字段,并执行该存储过程,查看显示结果。

2、使用T-SQL语句创建一个名为“读者借阅信息_PROC”的带参数的存储过程,要求根据输入的读者的编号显示读者的所有借阅信息,包括“读者编号”、“姓名”、“系部”、“图书编号”、“图书名称”和“借阅日期”等字段,并执行该存储过程,查看显示结果。

create proc读者借阅信息_PROC1@dzbh char(10)asbeginselect tb_reader.读者编号,姓名,系部,tb_book.图书编号,书名,借阅日期from tb_book,tb_reader,tb_borrowwhere tb_book.图书编号=tb_borrow.图书编号and tb_reader.读者编号=tb_borrow.读者编号and tb_reader.读者编号=@dzbhend--declare @srcs char(10),@fhzt intset @srcs='R10009'exec @fhzt=读者借阅信息_PROC1 @srcsprint'执行状态值为'+cast(@fhzt as varchar(10))3、使用T-SQL语句创建一个名为“图书借阅信息_PROC”的带参数的存储过程,要求根据输入的图书编号计算该图书的借阅数量,并根据程序执行结果返回不同的值,执行成功返回0,不成功返回错误号,并执行该存储过程,输出图书编号、借阅数量和程序结果返回值。

存储过程与触发器实验报告

存储过程与触发器实验报告

存储过程与触发器实验报告本实验旨在探究存储过程与触发器的概念、作用、使用范围和创建过程,并且通过编写相关的示例代码来展示它们的实际应用。

一、实验原理1. 存储过程存储过程是一组预定义好的 SQL 语句,可以重复使用并且可以直接被调用。

它类似于程序中的函数,可以接受参数、返回值、流程控制等。

2. 触发器触发器是与数据库表相关的事件响应机制,可以在数据库表上定义一些触发条件,当满足这些条件时就会触发执行一些操作,比如插入、更新或删除数据。

二、实验步骤1. 存储过程的创建与使用(1)创建一个用于统计某个用户的订单数量的存储过程。

```DELIMITER //CREATE PROCEDURE `getOrderCount`(IN p_userid INT, OUTp_count INT)BEGINSELECT COUNT(*) INTO p_count FROM orders WHERE user_id = p_userid;END//DELIMITER ;```(2)调用这个存储过程,并输出结果。

```CALL getOrderCount(123, @count);SELECT @count AS 'order_count';```2. 触发器的创建与使用(1)创建一个在用户表中插入新记录时自动生成一个账户记录的触发器。

```DELIMITER //CREATE TRIGGER `insert_user_account` AFTER INSERT ON `users` FOR EACH ROWBEGININSERT INTO accounts (user_id, balance) VALUES (NEW.id, 0);END//DELIMITER ;```(2)在用户表中插入一条新记录,触发器会自动执行并在账户表中生成一条新记录。

```INSERT INTO users (name, email) VALUES ('Alice','***************');SELECT * FROM accounts WHERE user_id =LAST_INSERT_ID();```三、实验结论通过实验我们发现,存储过程可以将一些常用的 SQL 语句封装为一个可以重复调用的函数,使得程序更加简洁和高效。

存储过程实验报告_总结(3篇)

存储过程实验报告_总结(3篇)

第1篇一、实验背景随着数据库技术的不断发展,存储过程在数据库管理中的应用越来越广泛。

存储过程是一组为了完成特定功能的SQL语句集合,它具有提高数据库性能、增强安全性、简化应用开发等优点。

为了更好地掌握存储过程的应用,我们进行了本次实验。

二、实验目的1. 理解存储过程的概念、特点和应用场景。

2. 掌握存储过程的创建、执行、修改和删除方法。

3. 学习使用存储过程实现常见的数据库操作,如数据插入、查询、更新和删除。

4. 熟悉存储过程中的流程控制语句、循环语句和游标操作。

三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 开发工具:MySQL Workbench四、实验内容1. 创建存储过程2. 执行存储过程3. 修改存储过程4. 删除存储过程5. 存储过程中的流程控制语句6. 存储过程中的循环语句7. 存储过程中的游标操作五、实验步骤1. 创建存储过程首先,我们创建一个简单的存储过程,用于查询特定部门的所有员工信息。

```sqlCREATE PROCEDURE GetEmployeeInfo(IN dept_id INT)BEGINSELECT FROM employees WHERE department_id = dept_id;END;```在此过程中,我们使用了`IN`参数,表示该参数在调用存储过程时传入。

2. 执行存储过程创建存储过程后,我们可以通过以下命令执行它:```sqlCALL GetEmployeeInfo(10);```这将查询部门ID为10的所有员工信息。

3. 修改存储过程如果需要修改存储过程,可以使用`ALTER PROCEDURE`语句。

例如,将查询条件修改为按姓名查询:```sqlALTER PROCEDURE GetEmployeeInfo(IN emp_name VARCHAR(50))BEGINSELECT FROM employees WHERE name = emp_name;END;```4. 删除存储过程删除存储过程可以使用`DROP PROCEDURE`语句。

实验八存储过程与触发器的应用实验报告

实验八存储过程与触发器的应用实验报告

实验八:存储过程与触发器的应用实验报告实验任务:1、存储过程的创建、执行和删除。

(1)使用学生选课数据库中的student 表、course 表;sc 表创建一个带参数的存储过程—cjjicx 。

该存储过程的作用是:该存储过程的作用是:当任意输入一个学生的姓名时,当任意输入一个学生的姓名时,当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、将从三个表中返回该学生的学号、将从三个表中返回该学生的学号、选选修的课程名称和课程成绩。

Cjjicx 的创建语句:create procedure [dbo].[cjjicx]@sname nchar (1010) ) asselect s .sno ,c .cname ,sc .gradefrom student as s inner join sc as sc on s .sno =sc .sno inner join course as c on c .cno =sc .cno wheresname =@sname(2)执行cjjicx 存储过程,查询“XXX XXX””(自己选个名字)的学号、选修课程和课程成绩。

执行语句:execute cjjicx '李勇'结果描述:(3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。

使用系统存储过程sp_depends查看存储过程cjjicx中所涉及的对象信息。

中所涉及的对象信息。

执行语句:执行语句:(i)EXEC sp_helptext cjjicx(ii)EXEC sp_depends cjjicx查看结果描述:查看结果描述:(i)(ii)(4)使用学生选课数据库中的student表,为其创建一个存储过程—jmxs。

该存储过程的作用是:当执行该存储过程时,将返回计算机系学生的所有信息。

是:当执行该存储过程时,将返回计算机系学生的所有信息。

Jmxs创建语句:创建语句:CREATE PROCEDURE jmxsASSELECTStudent.Sno,Student.Sname,Student.Ssex,Student.Sage,Student.Sdept FROM StudentWHERE Sdept='CS'GO结果描述:存储过程jmxs已成功建立:右侧“系统存储过程”下拉列表中显示(5)执行jmxs存储过程,查看计算机系学生的情况。

存储过程与触发器实验报告

存储过程与触发器实验报告

存储过程与触发器实验报告存储过程与触发器实验报告概述:本实验旨在探究数据库中存储过程与触发器的概念、作用以及使用方法。

通过编写实例代码并进行实验,深入理解存储过程与触发器在数据库管理系统中的重要性和应用场景。

一、存储过程存储过程是一组预定义的SQL语句集合,可以被多次调用。

存储过程通常用于执行一系列复杂的数据库操作,如数据的插入、更新、删除等。

它们可以被视为一种封装了业务逻辑的数据库对象,提供了更高效、更安全的数据处理方式。

在实验中,我首先创建了一个名为"AddEmployee"的存储过程,用于向员工表中插入新的员工信息。

该存储过程接受参数,包括员工姓名、性别、年龄等。

在存储过程中,我使用了INSERT INTO语句将参数值插入到员工表中。

通过调用该存储过程,可以方便地插入新员工的信息,减少了编写重复SQL语句的工作量。

二、触发器触发器是与数据库表相关联的特殊类型的存储过程,当表中的数据发生变化时,触发器会自动执行相应的操作。

触发器可以在数据的插入、更新、删除等操作前后触发,用于实现数据的自动验证、补充以及其他业务逻辑的处理。

在本次实验中,我创建了一个名为"UpdateStock"的触发器,用于在产品表中更新库存信息时自动更新库存变动记录表。

当产品表中的库存字段发生变化时,触发器会自动将相关信息插入到库存变动记录表中。

这样,无论是手动更新库存还是通过其他方式更新库存,库存变动记录都能够及时准确地被记录下来,方便后续的数据分析和追溯。

三、实验结果与总结通过本次实验,我深入学习了存储过程与触发器的概念、作用和使用方法。

通过编写实例代码并进行实验验证,我进一步认识到存储过程与触发器在数据库管理系统中的重要性和应用场景。

存储过程的使用可以提高数据库操作的效率和安全性,尤其适用于需要执行复杂业务逻辑的场景。

通过将一系列SQL语句封装成存储过程,可以减少网络传输的开销,提高数据库操作的性能。

数据库原理实验报告S11-数据库触发器的创建.

数据库原理实验报告S11-数据库触发器的创建.

实验主要任务:导入学生成绩数据库,并建立相关表的关系,对数据库实施如下操作:一、利用SQL Server管理控制台创建DML触发器中的INSERT触发器的后(AFTER)触发器1. 利用SQL-SERVER管理控制台:创建一个INSERT触发器“TR_Course_Insert”,当在课程表中插入一条新记录时,触发该触发器,并给出“你插入了一条新的课程记录!”的提示信息。

2.创建了TR_Course_Insert触发器后,查看向课程表中插入数据时,此触发器所完成的功能。

二、使用Transact-SQL语句创建DML的后(FOR、AFTER)触发器(一)实现检查约束3. 创建一个AFTER触发器,要求实现以下功能:在成绩表上创建一个插入、更新类型的触发器TR_ScoreCheck,当在成绩字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间。

create trigger TR_ScoreCheckon成绩for insert,updateasif(select成绩from inserted)between 0 and 100beginprint'你成功的对成绩表插入(更新)了一条记录'endelsebeginprint'(插入)更新的成绩数据错误'rollback transactionend在创建了TR_ScoreCheck触发器之后,在查询窗口中输入以下SQL语句验证:(独立完成:4.创建一个AFTER触发器,要求实现以下功能:在2003学生名单表上创建一个插入、更新类型的触发器TR_Sex_Check,当在性别字段中插入或修改性别后,触发该触发器,检查性别是否是‘男’或‘女’,并验证)set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER trigger [TR_Sex_Check]on [dbo].[学生名单]for insert,updateasif(select性别from inserted)in('男','女')beginprint'插入(更新)数据'endelsebeginprint'插入或更新的性别错误'rollback transactionend(二)实现层叠修改5.创建一个AFTER触发器,要求如下:在学生表上创建一个删除类型的触发器TR_Stu_Delete,当在学生表中删除某一条记录后,触发该触发器,在成绩表中删除与此学号对应的记录。

数据库实验6触发器实验报告

数据库实验6触发器实验报告

淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:存储过程和触发器班级:软件132学号: 2013122907姓名:孙莹莹一.目的与要求1.掌握存储过程的创建方法;2.掌握存储过程的执行、修改和删除等操作;3.掌握触发器的创建方法;4.掌握触发器的使用、修改和删除等相关内容二.实验内容基于前面建立的factory数据库,使用T-SQL语句完成如下各小题的功能:1.创建一个为worker表添加职工记录的存储过程Addworker;2.创建一个存储过程Delworker删除worker表中指定职工号的记录。

3.显示存储过程Delworker;4.删除存储过程Addworker和Delworker.三.实验步骤1 .(1)建立存储过程USE factoryGOCREATE PROCEDURE Addworker@no int=NULL,@name char(10)=NULL,@sex char(2)=NULL,@birthday datetime=NULL,@na char(2)=NULL,@wtime datetime=NULL,@depno int=NULLASIF @no IS NULL OR @name IS NULL OR @sex IS NULL OR@birthday IS NULL OR @depno IS NULLBEGINPRINT '请重新输入该职工信息!'PRINT '你必须提供职工号、姓名、性别、出生日期、部门号'RETURNENDBEGIN TRANSACTIONINSERT INTO workerVALUES(@no,@name,@sex,@birthday,@na,@wtime,@depno)IF @@error<>0BEGINROLLBACK TRANRETURNENDCOMMIT TRANSACTIONPRINT '职工'+@name+'的信息成功添加到表worker中'(2)验证存储过程USE factoryGOAddworker 20,'陈立','女','55/03/08','否','75/10/10',4GOSELECT 职工号,姓名,性别,党员否 FROM workerGO2.(1)建立存储程序USE factoryGOCREATE PROCEDURE Delworker@no int=NULLASIF @no IS NULLBEGINPRINT '必须输入职工号!'RETURNENDBEGIN TRANSACTIONDELETE FROM worker WHERE 职工号=@noIF @@error<>0BEGINROLLBACK TRANRETURNENDCOMMIT TRANSACTIONPRINT '成功删除职工号为'+CAST(@no AS CHAR(2))+'的职工记录' 执行下列语句,可验证存储过程的正确性:USE factoryGODelworker 20GOSELECT 职工号,姓名,性别,党员否 FROM workerGO3.USE factoryGOEXEC sp_helptext DelworkerGO4.USE factoryGOIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'Addworker' AND type ='P') DROP PROCEDURE AddworkerGOIF EXISTS (SELECT name FROM sysobjectsWHERE name = 'Delworker' AND type ='P') DROP PROCEDURE DelworkerGO5.建立触发器depart_update的程序如下:USE factoryGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='depart_update')DROP TRIGGER depart_updateGOCREATE TRIGGER depart_update ON departAFTER UPDATEASDECLARE @olddepno int,@newdepno intSELECT @olddepno=部门号FROM deletedSELECT @newdepno=部门号FROM inserted UPDATE workerSET 部门号=@newdepnoWHERE 部门号=@olddepnoGO执行下列语句,可验证存储过程的正确性:USE factoryGOPRINT '将部门号改为'UPDATE departSET 部门号=105WHERE 部门号=101GOSELECT 职工号,姓名,部门号FROM workerGOPRINT '将部门号改为'UPDATE departSET 部门号=101WHERE 部门号=105GOSELECT 职工号,姓名,部门号FROM workerGO6.建立触发器worker_delete的程序如下:USE factoryGOIF EXISTS(SELECT name FROM sysobjectsWHERE type='TR'AND name='worker_delete')DROP TRIGGER worker_deleteGOCREATE TRIGGER worker_delete ON workerFOR DELETEASDECLARE @no intSELECT @no=职工号FROM deletedDELETE FROM salaryWHERE职工号=@noGO执行下列语句,可验证存储过程的正确性:USE factoryGOPRINT'删除前的工资记录'SELECT*FROM salaryGODELETE FROM workerWHERE职工号=15GOPRINT'删除职工号为的职工记录后的工资记录'SELECT*FROM salaryGO7.删除触发器depart_update的程序如下:USE factoryGODROP TRIGGER depart_updateGO8.删除触发器worker_delete的程序如下:USE factoryGODROP TRIGGER worker_deleteGO四.测试数据与实验结果第1题图第2题图第3题图第5题图第6题图五.结果分析与实验体会CREATE PROCEDURE语句允许创建、编译并在MS-SQL Server上保存存储过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

内蒙古工业大学信息工程学院实验报告课程名称:数据库应用实验名称:视图存储过程触发器等的建立与维护实验类型:验证性□ 综合性□ 设计性□实验室名称:班级:学号:姓名:组别:同组人:成绩:实验日期:预习报告成绩:指导教师审核(签名):年月日预习报告一、实验目的1.学会使用企业管理器建立视图,应用视图插入、删除、修改数据;2.掌握存储过程的使用方法;3.掌握触发器的使用方法。

二、实验内容此实验是综合视图、存储过程、触发器等知识应用的一个综合性实验。

实验要求:1.利用所创建的数据库和数据表,综合应用视图、存储过程、触发器等知识完善数据库;2.掌握应用更新视图数据可以修改基本表数据的方法;3.熟练掌握添加、修改、删除记录的存储过程的定义及调用;4.掌握通过触发器来实现数据的参照完整性。

实验内容要求:利用员工管理数据库YGGL中 3个表:Employees:员工自然信息表、Departments:部门信息表、Salary:员工薪水情况表。

(1)利用YGGL各表建立视图实现各种连接查询。

建立视图view1,查询所有职工的员工编号、姓名、部门名和收入,并按部门名顺序排列。

建立视图view2,查询所有职工的员工编号、姓名和平均工资。

建立视图view3,查询各部门名和该部门的所有职工平均工资。

(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后编写程序,调用这些存储过程。

创建一个为Employees表添加员工记录的存储过程add Employees。

创建一个存储过程del Employees删除Employees表中指定员工编号的记录。

(3)对于YGGL数据库,请用触发器实现两个表间的参照完整性。

在表Departments上创建一个触发器Departments _update,当更改部门编号时同步更改Employees表中对应的部门编号。

在表Employees上创建一个触发器Employees _delete,当删除员工记录时同步删除salary表中对应的工资收入记录。

参考实例步骤:1.创建视图(1)班级表(U_CLASSES ):ID含义为"班号",CLASS含义为"班名",DEPARTMENT含义为所在系,各字段类型按需要设置是否允许为空,ID字段被设置为主键。

(2)成绩表(U_SCORES ):STUDENT_ID含义为学号,COURSE_ID含义为课程号,SCORE为成绩,各字段类型按需要设置是否允许为空,STUDENT_ID 、COURSE_ID字段被设置为主键。

(3)课程表(U_COURSES):COURSE含义为课程名称, ID含义为课程编号,CREDIT含义为课程学分。

(4)学生表1.用企业管理器建立一个基于学生表、课程表、成绩表的视图,要求该视图显示学号、姓名、课程、成绩。

1)启动企业管理器、注册、连接2)展开服务器、数据库、在视图上右击,在快捷菜单中执行"新建视图(V)..."3)在新视图窗口内的关系图窗格内右击鼠标,弹出的菜单即为视图设计菜单,执行"添加表(B)..."4)再在添加表对话框中选择U_SCORES表,再单击添加按钮。

5)依此操作,分别添加U_STUDENTS、U_COURSES表,单击关闭按钮。

6)再在关系窗格内,拖动U_STUDENTS表的"ID"至U_SCORES的STUDENT_ID,拖动U_COURSES表的"ID"至U_SCORES的COURSE_ID,再分别选中U_STUDENTS表的"ID","NAME"列(列前的复选框),U_COURSES表的"COURSE"列以及U_SCORES表的"SCORE"列,然后单击"!"按钮,显示视图结果。

7)单击保存按钮,将视图保存为V_SCORES,单击确定。

2.用查询分析器建立一个基于学生表、班级表的学生视图(V_STUDENTS),包括学号、姓名、班级、系,SQL语句如下:1)CREATE VIEW dbo.V_STUDENTSASSELECT dbo.U_STUDENTS.ID,dbo.U_, dbo.U_CLASSES.CLASS,dbo.U_CLASSES.DEPARTMENTFROM dbo.U_STUDENTS INNER JOINdbo.U_CLASSES ON dbo.U_STUDENTS.CLASS_ID = dbo.U_CLASSES.ID3.自己写一个SQL语句建立一个基于课程表的视图(V_COURSES),要求显示课程编号、课程名、学分。

2.创建存储过程在查询分析器编辑窗口输入各存储过程的代码并执行以下程序。

(1)添加职员记录的存储过程EmployeeAdd:USE YGGLGOCREATE PROCEDURE Emplo)reeAdd(@employeeid char6),@name char(10),@birthday datetime,@sex bit,@address char(20),@zip char(6),@phonenumber char(12),@emailaddress char(20),@departmenflD char(3))ASBEGININSERT INTO EmployeesVALUES(@employeeid,@name,@birthday,@sex,@address,@zip,@phonenumber,@emailaddress,@departmentlD)ENDRETURNGO(2)修改职员记录的存储过程EmployeeUpdate:USE YGGLGOCREATE PROCEDURE EmployeeUpdate(@empid char(6),@employeeid char(6),@name char(10),@birthday datetime, @sex bit,@address char(20),@zip chat(6),@phonenumber char(12),@emailaddress char(20),@departmentlD char(3))ASBEGINUPDATE Employees ‘SET Employeeid=@employeeid,Name=@name.Birthday=@birthday,Sex=@sex,Address=@address.Zip=@zip,Phonenumber=-@phonenumber,Emailaddree=@emailaddress.DepartmentD=@departmenflDWHERE Employeeid=@empidENDRETURNGO(3)删除职员记录的存储过程EmployeeDelete:USE YGGLGOCREATE PROCEDURE EmployeeDelete(@employeeid char(6))ASBEGINDELETE FROM EmployeesWHERE Employeeid=@employeeidENDRETURNG03.调用存储过程USE YGGLEXEC EmployeeAdd’’,’刘朝’,’’,1,’武汉小洪山5号’,”,”,”,’3’GOUSE YGGLEXEC Employeeupdate’’,’’,’刘平’,’’ ,1,’武汉小洪山5号’,”,”,”,’2’GOUSE YGGI,EXEC EmployeeDelete’’GO分析一下此段程序执行时可能出现哪几种情况。

【思考与练习】编写如下T-SQL程序:(1)自定义1个数据类型,用于描述YGGL数据库中的DepartmentlD字段,然后编写代码重新定义数据库各表。

(2)编写对YGGL各表进行插入、修改、删除操作的存储过程,然后,编写l段程序调用这些存储过程。

(3)对于YGGL数据库,表Employees的EmployeelD列与表Salary的EmployeelD列应满足参照完整性规则,请用触发器实现两个表问的参照完整性。

4.创建触发器对于YGGL数据库,表Employees的DepartmentID列与表Departments的DepartmentID列对应满足参照完整性规则,即:(1)向Employees表添加1条记录时,该记录的DepartmentID值在Departments 表中应存在。

(2)修改Departments表DepartmentID 字段值时,该字段在Employees表中的对应值也应修改。

(3)删除Departments表中1条记录时,该记录DepartmentID字段值在Employees 表中对应的记录也应删除。

对于上述参照完整性规则,在此通过触发器实现。

在查询分析器编辑窗口输入各触发器的代码并执行:①向Employees表插入或修改1条记录时,通过触发器检查记录的DepartmentID值在Departments表是否存在,若不存在,则取消插入或修改操作。

USE YGGLGOCREATE TRIGGER EmployeesIns on dbo.EmployeesFOR INSRET,UPDATEASBEGINIF((SELECT ins.departmentid from inserted ins)NOT IN(SELECT departmentid FROM departments))ROLLBACK/*对当前事务回滚,即恢复到插入前的状态END②修改Departments表departmentID字段值时,该字段在Employees表中的对应值也进行相应修改。

USE YGGLGOCREATE TRIGGER DepartmentsUpdate on dbo.DepartmentsFoR UPDATEASBEGINIF(COLUMNS_UPDATED()&01)>0UPDATE EmployeesSET DepartmentlD=(SELECT ins.DepartmentlD from INSERTED ins)WHERE DepaxtmentlD=(SELECT DepartmentlD FROM deleted)ENDGO③删除Departments表中1条记录的同时删除该记录departmentlD字段值在Employees 表中对应的记录。

USE YGGLGOCREATE TRIGGER DepartmentsDelete On db.DepartmentsFOR DELETEASBEGINDELETE FROM EmployeesWHERE DepartmentlD=(SELECT DepartmentlD FROM deleted)ENDGO【思考与练习】上述触发器的功能用完整性的方法完成。

相关文档
最新文档