实验5 存储过程蓝礼巍-
存储过程的使用 实验报告
USEypp7
--声明四个变量,用于保存输入和输出参数
DECLARE@KECHENGMINGvarchar(20)
DECLARE@AVGCHENGJI1tinyint
DECLARE@MAXCHENGJI1tinyint
DECLARE@MINCHENGJI1tinyint
--为输入参数赋值
SELECT@KECHENGMING='高等数学'
--声明四个变量,用于保存输入和输出参数
DECLARE@KECHENGMINGvarchar(20)
DECLARE@AVGCHENGJI1tinyint
DECLARE@MAXCHENGJI1tinyint
DECLARE@MINCHENGJI1tinyint
--为输入参数赋值
SELECT@KECHENGMING='计算机基础'
1.使用if exists语句,如果存储过程“单科成绩分析”存在,就将其删除;
2.使用create proc语句创建存储过程;
3.定义所需要的输入参数和输出参数;
4.声明4个变量来保存输入和输出参数;
5.执行存储过程并显示结果。
同时,值得注意的是,在创建存储过程时,应该注意一些细节,如单词的拼写要准确无误,程序中用的是单引号而不是双引号等等。
--执行存储过程
EXEC单科成绩分析@KECHENGMING,
@AVGCHENGJI1OUTPUT,
@MAXCHENGJI1OUTPUT,
@MINCHENGJI1OUTPUT
--显示结果
SELECT@KECHENGMINGAS课程名,@AVGCHENGJI1AS平均成绩,@MAXCHENGJI1AS最高成绩,
5 实验五 创建存储过程和触发器
实验五创建存储过程和触发器
一、实验目的
1.通过对常用系统存储过程的使用,了解存储过程的类型;通过创建和执行存储过程,了解存储过程的基本概念,掌握使用企业管理器及查询分析器执行T-SQL语句创建存储过程。
2.通过创建触发器,了解触发器的基本概念,理解触发器的功能,掌握使用企业管理器及查询分析器执行T-SQL语句创建触发器。
二、实验要求
1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
2.能认真独立完成实验内容;
3.实验后做好实验总结,根据实验情况完成总结报告。
三、实验学时
2学时
四、实验内容
1、使用sp_helptext查看byroyalty存储过程的文本,该存储过程在数据库pubs中。
2、在实验二创建的factory数据库中执行以下操作:
(1)创建一个为worker表添加职工记录的存储过程addworker。
执行并验证存储过程的正确性。
最后删除该存储过程。
(2)在depart表上创建一个触发器depart_update,当更改部门号时同步更改worker 表中对应的部门号。
执行并验证触发器的正确性。
最后删除该触发器。
(3)在worker表上创建一个触发器worker_delete,当删除职工记录时同步删除salary表中对应职工的工资记录。
执行并验证触发器的正确性。
最后删除该触发器。
存储过程实验报告
存储过程实验报告一、实验目的本次实验旨在深入了解和掌握存储过程的基本概念、功能及其在数据库管理中的应用。
通过实际操作和实践,提高对存储过程的编写、调试和优化能力,为今后在数据库相关项目中的高效开发和应用奠定坚实的基础。
二、实验环境本次实验使用的数据库管理系统为 MySQL 80,操作系统为Windows 10。
开发工具使用了 MySQL Workbench 80。
三、实验内容(一)创建简单的存储过程创建一个存储过程,用于计算两个整数的和。
以下是创建存储过程的代码:```sqlDELIMITER //CREATE PROCEDURE add_numbers(IN num1 INT, IN num2 INT, OUT sum INT)BEGINSET sum = num1 + num2;END //DELIMITER ;```(二)调用存储过程使用以下代码调用上述创建的存储过程:```sqlCALL add_numbers(5, 10, @result);SELECT @result;```(三)带有条件判断的存储过程创建一个存储过程,根据传入的学生成绩判断其等级。
如果成绩大于等于 90 为“优秀”,大于等于 80 小于 90 为“良好”,大于等于 60 小于80 为“及格”,小于 60 为“不及格”。
以下是存储过程的代码:```sqlDELIMITER //CREATE PROCEDURE grade_judge(IN score INT, OUT grade VARCHAR(10))BEGINIF score >= 90 THENSET grade ='优秀';ELSEIF score >= 80 AND score < 90 THEN SET grade ='良好';ELSEIF score >= 60 AND score < 80 THEN SET grade ='及格';ELSESET grade ='不及格';END IF;END //DELIMITER ;```调用该存储过程的代码如下:```sqlCALL grade_judge(85, @result_grade);SELECT @result_grade;```(四)带有循环的存储过程创建一个存储过程,计算 1 到 100 的整数之和。
实验存储过程实验报告
一、实验目的1. 了解存储过程的基本概念和作用。
2. 掌握存储过程的创建、执行和修改方法。
3. 学会使用存储过程进行数据库操作,提高数据库操作效率。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:MySQL Workbench三、实验内容1. 创建存储过程2. 执行存储过程3. 修改存储过程4. 删除存储过程四、实验步骤1. 创建存储过程(1)打开MySQL Workbench,连接到本地数据库。
(2)在查询窗口中输入以下SQL语句创建一个存储过程:DELIMITER //CREATE PROCEDURE SelectAllStudents()BEGINSELECT FROM students;END //DELIMITER ;(3)执行以上SQL语句,成功创建存储过程。
2. 执行存储过程(1)在查询窗口中输入以下SQL语句执行存储过程:CALL SelectAllStudents();(2)观察查询结果,确认存储过程执行成功。
3. 修改存储过程(1)打开查询窗口,输入以下SQL语句修改存储过程:DELIMITER //CREATE PROCEDURE SelectAllStudents()BEGINSELECT id, name, age FROM students;END //DELIMITER ;(2)执行以上SQL语句,成功修改存储过程。
4. 删除存储过程(1)在查询窗口中输入以下SQL语句删除存储过程:DROP PROCEDURE IF EXISTS SelectAllStudents;(2)执行以上SQL语句,成功删除存储过程。
五、实验总结1. 通过本次实验,我们了解了存储过程的基本概念和作用,学会了创建、执行、修改和删除存储过程的方法。
2. 存储过程可以提高数据库操作效率,降低代码重复性,提高代码可维护性。
3. 在实际开发过程中,合理使用存储过程可以简化数据库操作,提高应用程序的性能。
实验五存储过程、触发器的创建与管理 张俊敏
北华航天工业学院《数据库系统管理》实验报告报告题目:存储过程、触发器的创建与管理作者所在系部:计算机科学与工程系作者所在专业:计算机科学与技术作者所在班级:B08514作者姓名:张俊敏指导教师姓名:侯晓芳完成时间:2010-11-3北华航天工业学院教务处制实验五存储过程、触发器的创建与管理班级:B08514学号:10姓名:张俊敏成绩:一、实验目的1.了解存储过程的概念。
2.了解触发器与一般存储过程的区别。
3.了解存储过程、触发器的优点。
4.掌握创建、执行存储过程、触发器的方法。
5.掌握查看和修改存储过程、触发器的方法。
6.掌握删除存储过程、触发器的方法。
二、实验内容存储过程实验内容:1.新建BOOKS数据库,使用管理控制台创建名称为“图书借阅信息表”的数据表,表结构如下所示。
2.在3和借阅日期显示相应的读者借阅信息,包括读者编号、姓名、图书编码、图书状态和借阅日期。
4.执行存储过程“显示读者借阅信息”,要求显示计算机系2010-10-1的读者借阅信息。
5.使用SQL语言创建一个名为“录入学生信息”的存储过程,要求录入读者编号、姓名、性别和所在部门。
6.执行存储过程“录入学生信息”,录入的学生信息为“98418132”、“张强”、“男”、“外语”。
7.使用SQL语言创建一个名为“修改图书借阅信息”的存储过程,能够根据输入的读者姓名修改其所对应的图书借阅状态。
8.执行存储过程“修改图书借阅信息”,将读者“李明”的所有图书借阅状态修改为续借。
9.使用SQL语言创建一个名为“删除图书借阅信息”的存储过程,能够根据输入的所在部门删除该部门中所有读者的图书借阅信息。
10.执行存储过程“删除图书借阅信息”,将计算机系所有读者的图书借阅信息删除。
11.使用管理控制台查看存储过程“显示读者借阅信息”的源代码。
12.使用系统存储过程查看与存储过程“修改图书借阅信息”相关的数据库对象。
13.使用SQL语言修改存储过程“修改图书借阅信息”,能够根据输入的读者编号修改其所对应的图书借阅状态。
实验五 存储过程和触发器
实验五触发器、存储过程操作实验本实验需要2学时。
请大家先根据“触发器.doc”文档完成相关操作,再进行本次实验。
介绍完“存储过程”后,需上交本次实验报告。
一、实验目的(1)掌握SQL Server中的触发器的使用方法;(2)掌握存储过程的操作方法。
二、实验内容1. 创建、查看、修改和删除触发器。
2. 创建、查看、修改和删除存储过程。
三、实验方法1. 触发器的操作(1)建立触发器方法一:使用企业管理器首先,打开企业管理器,定位数据库并找到要创建触发器的表;然后,右击该表名,在弹出的快捷菜单中选择“设计表”,在打开的“设计表”窗口中单击按钮,打开如图1所示窗口。
图1 触发器属性窗口最后,在触发器属性窗口中输入触发器的内容,并单击“确定”按钮。
方法二:使用CREATE TRIGGER语句语法:CREATE TRIGGER <触发器名>ON { <表名> | <视图名>}{ FOR | INSTEAD OF | AFTER}{ [UPDATE] [,] [INSERT] [,] [DELETE]}AS<SQL 语句块>(2)查看触发器方法一:使用企业管理器方法二:使用T-SQL语句- sp_help <触发器名>- sp_helptext <触发器名>- sp_depends <触发器名>(3)修改触发器方法一:使用企业管理器方法二:使用ALTER TRIGGER语句语法:ALTER TRIGGER <触发器名>ON { <表名> | <视图名>}{ FOR | INSTEAD OF | AFTER}{ [UPDATE] [,] [INSERT] [,] [DELETE]} AS<SQL 语句块>(4)删除触发器方法一:使用企业管理器方法二:使用DROP TRIGGER语句语法为:DROP TRIGGER <触发器名>2. 存储过程的操作(1)建立存储过程方法一:使用建立存储过程向导方法二:使用企业管理器方法三:使用SQL语句(CREATE PROCEDURE)语法:CREATE PROC[EDURE] <存储过程名>[{@<参数名> <数据类型>}]AS {<SQL语句> | <语句块> }(2)查看存储过程方法一:使用企业管理器方法二:使用SQL语句(系统存储过程)- sp_help <存储过程名>- sp_helptext <存储过程名>- sp_depends <存储过程名>(3)修改存储过程方法一:使用企业管理器方法二:使用SQL语句(ALTER PROCEDURE)语法为:ALTER PROC[EDURE] <存储过程名>[{@<参数名> <数据类型>}]AS {<SQL语句>| <语句块> }(4)删除存储过程方法一:使用企业管理器方法二:使用DROP PROCEDURE语句语法为:DROP PROCEDURE <存储过程名>四、实验内容1、在学生表student上建立一个DELETE类型的触发器tr_delete,触发动作是显示信息“已删除学生表中的数据”。
存储过程实验报告_总结(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`语句。
实验五
实验五MySQL的存储过程一、实验目的:存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。
存储过程分为两类:1. 系统提供的存储过程; 2. 用户自定义存储过程。
存储过程具有的优点: 1. 存储过程允许标准组件式编程; 2. 存储过程能够实现较快的执行速度; 3. 存储过程能够减少网络流量; 4. 存储过程可被作为一种安全机制来充分利用。
存储过程是可复用的组件!想象一下如果你改变了主机的语言,这对存储过程不会产生影响,因为它是数据库逻辑而不是应用程序。
存储过程是可以移植的!本次实验了解 MySQL 存储过程的创建、修改和删除的方法和步骤,掌握在 Navicat for MySQL 中对存储过程的进行创建、修改和删除,掌握在 MySQL Command Line Client 中调用带参数和不带参数的存储过程。
二、实验要求:1、实验前:预习实验内容,学习相关知识。
2、实验中:按照实验内容要求进行实验,做好实验记录。
3、实验后:分析实验结果、总结实验知识,得出结论,按格式写出实验报告。
在整个实验过程中,要独立思考、独立按时完成实验任务。
三、实验步骤:1、创建及调用不带参数的存储过程:(1)双击桌面Navicat for MySQL 快捷方式,连接到mysql 数据库上。
点击查询->新建查询,输入如下语句,确定MySQL 数据库版本: Select VERSION();然后点击运行。
输入如下语句,创建示例数据库:CREATE DATABASE db5536; USE db5536; 点击查询->新建查询,输入如下语句,创建示例表和插入演示数据:CREATE TABLE cqupt (s1 INTEGER); INSERT INTO cqupt V ALUES (5);(2)MySQL Command Line Client 中创建存储过程:在登录界面输入密码mysql。
新编[计算机]实验五 数据完整性与存储过程
实验五数据完整性与存储过程一、数据完整性1.实验目的1)掌握域完整性的实现方法。
2)掌握实体完整性的实现方法。
3)掌握参照完整性的方法。
2.实验内容1)使用界面方式创建规则对象,并绑定到列,实现域完整性。
2)为表添加一个标识列,实现实体完整性。
3)为两表建立关联,实现参照完整性。
3.实验步骤1)实现域完整性①启动SQL Server企业管理器,打开“SQL Server Enterprise Manager”窗口。
②选择要创建规则对象的数据库文件夹,并在右边的对象窗口中选择其中的“规则”对象。
选择“操作”菜单中的“新建规则”命令,打开“规则属性”对话框。
③设置形如“(区号)电话号码”的联系电话格式检查规则,单击“确定”按钮,完成规则对象的定义。
④打开“规则”对象,并选中刚才定义的规则对象RO_联系电话格式。
选择“操作”菜单中的“属性”命令,打开“规则属性”对话框。
⑤单击“绑定列”按钮,打开“将规则绑定到列”对话框,完成到列的绑定,关闭“规则属性”对话框。
⑥在对象窗口中选择并打开其中的“表”对象,选中XSQK表并打开。
⑦在表中分别插入两行新记录,其中一行的联系电话格式为指定的格式,另一行的联系电话格式为非法格式。
当插入第一行时,系统成功地插入了新数据行,但无信息返回;而在插入第二行时系统提示错误信息,拒绝接受非法格式的联系电话,从而保证了域完整性。
⑧单击“确定”按钮,取消插入,并关闭表的数据记录窗口。
2)实现实体完整性①在对象窗口中选择并打开其中的“表”对象,选中KC表。
②选择“操作”菜单中的“设计表”命令,打开表编辑器窗口。
③添加一个标识列,种子值为1,递增量也为1。
④点击快捷工具拦上的快捷按钮,完成标识列的添加,然后关闭编辑窗口。
⑤选中KC表并打开表的数据记录窗口。
可以看到,系统自动为每行的标识列填充了值,并从1开始,依次递增,这样,表中的每一数据行都可以由标识列唯一标识,实现了实体完整性。
⑥关闭表的数据记录窗口。
实验五 存储过程
实验五存储过程一、实验背景存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
二、实验目的1.了解存储过程基本概念。
2.掌握:利用Transact-SQL编写存储过程3.掌握:存储过程的管理4.理解带参数存储过程的写法以及不同的调用方法三、实验任务与要求[1] 编写存储过程,实现任意输入三个数字,打印出三个数字中的最大值。
[2]编写存储过程,实现系统的登录验证,传入用户名和密码,返回权限字符串(已知用户表结构CREATE TABLE [dbo].[users]([seq] [int] IDENTITY(1,1) NOT NULL,[username] [varchar](20) NOT NULL,[password] [varchar](20) NULL,[rightsStr] [varchar](50) NULL,CONSTRAINT [PK_users] PRIMARY KEY([seq] ASC)) ;insert into users([username],[password],[rightsStr]) values ('lrl', '123456','11111111111');insert into users([username],[password] ,[rightsStr]) values ('test', '654321','10101010101'); insert into users([username] ,[password],[rightsStr]) values ('other', '111111','10111111111');[3] 已知表结构CREATE TABLE [student]([xh] [varchar](50) ,[name] [varchar](50) NULL ,[address] [varchar](150) NULL,[birthday] [datetime] NULL,CONSTRAINT [PK_student] PRIMARY KEY( [xh] ASC) ON [PRIMARY]) ON [PRIMARY]编写一个存储过程,实现带有条件判断的插入功能的存储过程sp_MaintainStudent,要根据学号判断该学生是否已经存在,如果存在,则更新信息,如不存在,则插入信息。
数据库系统原理实验指导书参考答案计本1电商
浙江树人大学信息科技学院《数据库系统原理》实验指导书适合专业:计算机科学与技术本科专业编写部门:电子商务教研室编写日期:2012.02实验一:SQL Server 2005服务器管理... 错误!未定义书签。
实验二:创建和管理数据库.............. 错误!未定义书签。
实验三:数据定义 .............................. 错误!未定义书签。
实验四:数据更新 .............................. 错误!未定义书签。
实验五:数据查询1——简单查询... 错误!未定义书签。
实验六:数据查询(2)—连接查询错误!未定义书签。
实验七:数据查询(3)—综合........ 错误!未定义书签。
实验八:视图 ...................................... 错误!未定义书签。
实验九:约束、默认、规则.............. 错误!未定义书签。
实验十:存储过程 .............................. 错误!未定义书签。
实验十一:触发器(1).................... 错误!未定义书签。
实验十二:触发器(2).................... 错误!未定义书签。
实验十三:安全性管理 ...................... 错误!未定义书签。
实验十四:数据库的备份与还原...... 错误!未定义书签。
实验一:SQL Server 2005服务器管理一、实验目的通过实验使学生掌握SQL Server 2005数据库服务器启动、暂停、停止的方法;掌握SQL Server 2005数据库服务器的注册方法。
二、原理解析1、SQL Server 2005服务器注册注册服务器就是在SQL Server Management Studio中登记服务器,然后把它加入到一个指定的服务器组中,并在SQL Server Management Studio中显示SQL Server服务器的运行状态和在SQL Server Management Studio连接时自动启动SQL Server服务器。
网络存储过程实验报告(3篇)
第1篇一、实验背景随着互联网技术的快速发展,数据存储和传输已成为网络通信中的关键环节。
网络存储过程是数据库中的一种高级应用,它可以将多个SQL语句封装成一个存储过程,从而实现数据库的自动化管理和提高数据库的执行效率。
本实验旨在通过实践,掌握网络存储过程的创建、调用和优化方法。
二、实验目的1. 了解网络存储过程的基本概念和特点。
2. 掌握网络存储过程的创建方法。
3. 熟悉网络存储过程的调用和优化技巧。
4. 通过实验,提高数据库管理能力。
三、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 实验工具:MySQL Workbench四、实验内容1. 创建网络存储过程(1)创建一个名为“select_user_info”的存储过程,用于查询用户信息。
```sqlDELIMITER //CREATE PROCEDURE select_user_info(IN user_id INT)BEGINSELECT FROM users WHERE id = user_id;END //DELIMITER ;```(2)创建一个名为“update_user_info”的存储过程,用于更新用户信息。
```sqlDELIMITER //CREATE PROCEDURE update_user_info(IN user_id INT, IN user_name VARCHAR(50), IN user_age INT)BEGINUPDATE users SET name = user_name, age = user_age WHERE id = user_id;END //DELIMITER ;```2. 调用网络存储过程(1)调用“select_user_info”存储过程,查询用户ID为1的用户信息。
```sqlCALL select_user_info(1);```(2)调用“update_user_info”存储过程,更新用户ID为1的用户信息。
实验五 存储过程运用答案.doc
试验五存储过程应用1.创建一存储过程xscj_show,显示每个学生的学号、姓名、课程名、成绩,然后执行该存储过程。
set serveroutput on;create or replace procedure xscj_showisv_xh char(6);v_name char(8);v_kcm char(20);v_cj number;cursor bf isSelect xs. xh, xm, kcm, cjFrom xs, kc, xs_kcWhere xs. xh=xs_kc. xh and kc. kch=xs_kc. kch;beginopen bf;fetch bf into v_xh, v_name, v_kcm, v_cj;while bf%FOUNDloopdbms_output. put_line (v_xh | |' | | v_name | |' | |v_kcm | |,,||to_char(v_cj));fetch bf into v_xh, v_name, v_kcm, v_cj;end loop;end xscj_show;exec xscj_show;2.创建一存储过程proc2,显示指定学生指定课程的成绩,然后执行该存储过程.CREATE OR REPLACE PROCEDURE proc2(v_xh IN varchar2,v_kcm in varchar2,v_cj OUT number )ASBEGINSELECT cjINTO v_cjFROM XS, KC, XS_KCWHERE XS. XH=XS_KC. XH and kc. kch=xs_kc. kch and xs. xh=v_xh and kcm=v_kcm;END proc2;DECLAREv_cj number;beginproc2 (J 200901,,'计算机网络',v_cj);dbms_output. put_line (to_char (v_cj));end;3.创建一存储过程proc3,显示其指定课程的成绩在指定范围内的学生学号、姓名、课程名和成绩,并返回其人数,然后执行该存储过程。
实验五 存储过程和触发器的定义和使用资料
实验五存储过程和触发器的定义和使用一、实验目的1、掌握局部变量、全局变量、流程控制语句的使用方法2、了解存储过程的类型和作用,并掌握使用对象资源管理器和Transact-SQL语句创建存储过程的方法及使用方法。
3、理解触发器的特点和作用,并掌握使用Transact-SQL语言创建触发器的方法二、实验内容1. 在学生成绩库中中有如下各表:学生表(Student)学号姓名性别出生日期专业所在系联系电话020101 杨颖0 1980-7-20 计算机应用计算机88297147 020102 方露露0 1981-1-15 信息管理计算机88297147 020103 俞奇军 1 1980-2-20 信息管理计算机88297151 020104 胡国强 1 1980-11-7 信息管理计算机88297151 020105 薛冰 1 1980-7-29 水利工程水利系88297152 020201 秦盈飞0 1981-3-10 电子商务经济系88297161 020202 董含静0 1980-9-25 电子商务经济系88297062 020203 陈伟 1 1980-8-7 电子商务经济系88297171 020204 陈新江 1 1980-7-20 房建水利系88297171 create database学生成绩数据库create table Student(学号Char(6)not null,姓名Char(8)not null,性别Bit not null,出生日期smalldatetime,专业Char(10),所在系Char(10),联系电话Char(11)null)课程表(Course)课程号课程名教师开课学期学时学分101 计算机原理陈红 2 45 3102 计算方法王颐 3 45 3103 操作系统徐格 2 60 4104 数据库原理及应用应对刚 3 75 5105 网络基础吴江江 4 45 3106 高等数学孙中文 1 90 6107 英语陈刚 1 90 6108 VB程序设计赵红韦 3 70 5create table Course(课程号Char(3)not null,课程名Char(20)not null,教师Char(10),开课学期Tinyint,学时Tinyint,学分Tinyint not null,)学生选课成绩表(SC)学号课程号成绩020101 101 85020101 102 87020101 103 88020102 101 58020102 102 63020104 107 76020202 103 55020202 107 80020203 103 57020204 103 71create table SC(学号Char(6)not null,课程号Char(3)not null,成绩Smallint,)对三个表格分别导入,截图如下:2、T-SQL语句中流程控制语句的使用(1)全局变量的使用。
实验5 存贮过程
【实验内容】1.创建一个存储过程stugradeinfo,查询班级、学号、姓名、性别、课程名称、分数create procedure stugradeinfoasselect 班级=substring(pupil.sno,1,len(pupil.sno)-2),pupil.sno as 学号,sname as 姓名,ssex as 性别,cname as课程名称,grade as 分数from pupil,sc,coursewhere pupil.sno=sc.sno and o=o2.利用企业管理器创建一个存储过程stu_info,根据传入的编号,查询某学生的基本信息。
代码如下:create procedure stu_info@stunum char(10)asif not exists(select * from pupil where sno=@stunum) print ‘查无此人!!!!!’elsebeginselect sno as 编号,sname as 姓名,ssex as 性别,birthday as 出生日期,polity as 政治面貌from pupilwhere sno=@stunumend3.创建一个存储过程stu_age,根据输入的学生姓名,计算该学生的年龄。
Create procedure stu_age@stuname char(10)asif not exists(select * from pupil where sname=@stuname)print ‘查无此人!!!!!’elsebegindeclare @age intselect @age=floor(datediff(day,birthday,getdate())/365)from pupilwhere sname=@stunameend4.创建一个存储过程stu_grade,根据输入的学生编号,返回其选课及其成绩。
第5章 实验
第5章实验
set serveroutput on;
1.存储过程(in参数)
⏹创建一个带输入参数的存储过程:根据给定的部门号,输出该部门的所有员工姓名。
⏹调用此存储过程:输出30部门的员工姓名。
2.存储过程(in,out参数)
⏹创建一个带输入与输出参数的存储过程:根据给定的职员号,返回该职员的姓名与部门名。
⏹调用此存储过程:并输出2001职员的员工姓名与部门名。
3.存储过程
⏹创建存储过程:根据给定的员工编号,删除该员工的信息。
若该职员不存在,则触发自定义异常,异常触发时,输出“不存在该员工”。
⏹调用此存储过程:删除编号5002的雇员信息。
(运行两次看结果)
4.存储函数
⏹创建一个存储函数:根据给定的学号,返回该学生的总成绩。
⏹调用此存储函数:输出“05880102”学生的总成绩。
5.存储函数
⏹创建一个存储函数:根据给定的系别名称,返回该系别的学生总人数。
⏹调用此存储函数:输出“计算机系”学生的总人数。
6.存储函数
⏹创建一个存储函数:实现随机输入学生学号,返回该学生的详细信息。
⏹调用此存储函数:输出学号为‘05880101’的详细信息。
存储过程设计实验报告
一、实验目的1. 掌握存储过程的基本概念、语法和创建方法;2. 学会使用存储过程进行数据的增、删、改、查操作;3. 理解存储过程在提高数据库性能、减少网络流量和代码重用性等方面的优势。
二、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 开发工具:MySQL Workbench三、实验内容1. 创建一个商品信息表(product),包含商品编号(id)、商品名称(name)、商品类别(category)和价格(price)等字段。
2. 创建一个存储过程(select_product),用于查询商品信息。
(1)存储过程代码:```DELIMITER //CREATE PROCEDURE select_product(IN category_name VARCHAR(50))BEGINSELECT FROM product WHERE category = category_name;END //DELIMITER ;```(2)调用存储过程:```CALL select_product('电器');```3. 创建一个存储过程(insert_product),用于向商品信息表中插入一条数据。
(1)存储过程代码:```DELIMITER //CREATE PROCEDURE insert_product(IN p_id INT, IN p_name VARCHAR(50), INp_category VARCHAR(50), IN p_price DECIMAL(10,2))BEGININSERT INTO product (id, name, category, price) VALUES (p_id, p_name, p_category, p_price);END //DELIMITER ;```(2)调用存储过程:```CALL insert_product(10000004, '电视', '电器', 2000);```4. 创建一个存储过程(update_product),用于修改商品信息。
存储过程和触发器(数据库实验5)
数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。
2 实验平台:操作系统:Windows xp。
实验环境:SQL Server 2000以上版本。
3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。
1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。
存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。
存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。
'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。
如果没有该专业,则显示“无此专业”。
存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。
存储过程操作实验报告
一、实验模块数据库原理与应用二、实验标题存储过程操作实验三、实验内容1. 实验目的(1)掌握存储过程的概念和作用。
(2)学会创建和使用存储过程。
(3)了解存储过程与触发器的区别。
2. 实验原理存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中供应用程序调用。
它可以提高数据库性能,简化代码编写,提高安全性。
3. 实验步骤(1)创建数据库```sqlCREATE DATABASE IF NOT EXISTS experiment;USE experiment;```(2)创建表```sqlCREATE TABLE IF NOT EXISTS employee (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,department_id INT);CREATE TABLE IF NOT EXISTS department (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50));```(3)插入数据```sqlINSERT INTO employee (name, age, department_id) VALUES ('张三', 25, 1),('李四', 30, 2),('王五', 28, 3);INSERT INTO department (name) VALUES ('技术部'),('业务部'),('售后部');```(4)创建存储过程```sqlDELIMITER //CREATE PROCEDURE get_department_name(IN emp_id INT, OUT dept_name VARCHAR(50))BEGINSELECT INTO dept_name FROM employee e INNER JOIN department d ON e.department_id = d.id WHERE e.id = emp_id;END //DELIMITER ;```(5)调用存储过程```sqlCALL get_department_name(1, @dept_name);SELECT @dept_name AS department_name;```(6)创建触发器```sqlDELIMITER //CREATE TRIGGER before_employee_insertBEFORE INSERT ON employeeFOR EACH ROWBEGINIF NEW.age < 20 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '年龄不能小于20岁'; END IF;END //DELIMITER ;```(7)尝试插入年龄小于20岁的数据```sqlINSERT INTO employee (name, age, department_id) VALUES ('赵六', 18, 1);```4. 实验结果与分析(1)成功创建存储过程和触发器。
存储过程的实验报告
一、实验目的1. 理解存储过程的概念和作用。
2. 掌握存储过程的创建、调用和修改方法。
3. 学会使用存储过程进行数据查询、插入、更新和删除等操作。
4. 熟悉存储过程中的流程控制语句和常用函数。
二、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 实验工具:MySQL Workbench三、实验内容1. 创建一个名为“dept”的表,包含以下字段:deptno(部门编号)、dname(部门名称)、loc(部门位置)。
```sqlCREATE TABLE dept (deptno INT PRIMARY KEY,dname VARCHAR(50),loc VARCHAR(50));```2. 创建一个名为“emp”的表,包含以下字段:empno(员工编号)、ename(员工姓名)、job(职位)、mgr(上级编号)、hiredate(入职日期)、sal(工资)、comm(佣金)、deptno(部门编号)。
```sqlCREATE TABLE emp (empno INT PRIMARY KEY,ename VARCHAR(50),job VARCHAR(50),mgr INT,hiredate DATE,sal DECIMAL(10, 2),comm DECIMAL(10, 2),deptno INT,FOREIGN KEY (deptno) REFERENCES dept(deptno));```3. 创建一个名为“dept_info”的存储过程,用于查询部门信息和员工信息。
```sqlCREATE PROCEDURE dept_info(IN deptno_input INT)BEGINSELECT d.dname, e.ename, e.job, e.hiredateFROM dept dJOIN emp e ON d.deptno = e.deptnoWHERE d.deptno = deptno_input;END;```4. 创建一个名为“add_dept”的存储过程,用于向“dept”表中插入一条新部门信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五存储过程
一、实验背景
存储过程是SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。
存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL语句快。
二、实验目的
1.了解存储过程基本概念。
2.掌握:利用Transact-SQL编写存储过程
3.掌握:存储过程的管理
4.理解带参数存储过程的写法以及不同的调用方法
三、实验任务与要求
[1] 编写存储过程,实现任意输入三个数字,打印出三个数字中的最大值。
create PROCEDURE my_max @a int,@b int,@c int
as
begin
declare @max int
set @max=@c
if(@a>@max)
set @max=@a
if(@b>@max)
set @max=@b
print @max
end
execute my_max 1,2 ,3
结果:3
[2]编写存储过程,实现系统的登录验证,传入用户名和密码,返回权限字符串(已知用户表结构CREATE TABLE [dbo].[users](
[seq] [int] IDENTITY(1,1) NOT NULL,
[username] [varchar](20) NOT NULL,
[password] [varchar](20) NULL,
[rightsStr] [varchar](50) NULL,
CONSTRAINT [PK_users] PRIMARY KEY
(
[seq] ASC
)
) ;
insert into users([username],[password],[rightsStr]) values ('lrl', '123456','11111111111');
insert into users([username],[password] ,[rightsStr]) values ('test', '654321','10101010101'); insert into users([username] ,[password],[rightsStr]) values ('other', '111111','10111111111');
CREATE TABLE [dbo].[users](
[seq] [int] IDENTITY(1,1)NOT NULL,
[username] [varchar](20)NOT NULL,
[password] [varchar](20)NULL,
[rightsStr] [varchar](50)NULL,
CONSTRAINT [PK_users] PRIMARY KEY
(
[seq] ASC
)
);
insert into users([username],[password],[rightsStr])values('lrl', '123456','11111111111');
insert into users([username],[password] ,[rightsStr])values('test', '654321','10101010101');
insert into users([username] ,[password],[rightsStr])values('other', '111111','10111111111');
create PROCEDURE my_select @a varchar(100),@b varchar(100),@rightsStr varchar(100)output
as
begin
select @rightsStr=rightsStr from users where username=@a and password=@b
end
declare @rightsStr varchar(100)
execute my_select 'lrl','123456',@rightsStr output
print @rightsStr
[3] 已知表结构
CREATE TABLE [student](
[xh] [varchar](50) ,
[name] [varchar](50) NULL ,
[address] [varchar](150) NULL,
[birthday] [datetime] NULL,
CONSTRAINT [PK_student] PRIMARY KEY
( [xh] ASC
) ON [PRIMARY]
) ON [PRIMARY]
编写一个存储过程,实现带有条件判断的插入功能的存储过程sp_MaintainStudent,要根据学号判断该学生是否已经存在,如果存在,则更新信息,如不存在,则插入信息。
CREATE TABLE [student](
[xh] [varchar](50),
[name] [varchar](50)NULL,
[address] [varchar](150)NULL,
[birthday] [datetime] NULL,
CONSTRAINT [PK_student] PRIMARY KEY
( [xh] ASC
)ON [PRIMARY]
)ON [PRIMARY]
create PROCEDURE usp_MaintainStudent @xh varchar(50),@name
varchar(50),@address varchar(150),@birthday datetime
as
if(exists(select*from student where xh=@xh))
update student set name=@name ,address=@address,birthday=@birthday else
insert into student values(@xh,@name ,@address,@birthday) where xh=@xh
execute usp_MaintainStudent '31301270','蓝礼巍','湖州街号','1994-12-21' select*from student
31301270 蓝礼巍湖州街51号1994-12-21 00:00:00.000。