admin 管理员组

文章数量: 887021


2023年12月23日发(作者:throwable是啥意思)

项目5

一、选择题

1、 c

2、 B

3、 D

4、 A

5、 C

6、 A

7、 B

8、 C

9、 B

10、 D

二、 填空题

1、 系统变量

2、 BEGIN--END

3、 DELIMITER

4、 FOR EEACH ROW

5、 自动事务 手动事务

COMMIT

用户变量 局部变量

6、 START TRANSACTION

三、 判断题

1、 对

2、 对

3、 对

4、 错

5、 对

6、 对

四、 简答题

1、

答:存储过程具有如下优点:(1)模块化编程,代码可复用性好。(2)具有更快的执行

速度。(3)减少网络通信量。(4)增强系统的安全性。

存储过程与存储函数的区别如下4点:

(1) 语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTIONo

(2) 存储过程在创建时没有返回值,而函数在定义时必须设置返回值。

(3) 存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置

返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。

(4) 存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT

语句中直接使用。

2、

答:游标的作用:游标提供了一种对SELECT语句结果集进行访问的机制。可以将游

标理解为一个在结果集中可以逐行移动的指针,它指向结果集中的某一行,用户可以用SQL

语句逐一从游标中获取记录,从而有选择地按行进行操作,而不是只能对整个结果集进行操

作。

游标的使用主要包括声明游标、打开游标、移动游标指针并从游标结果集中读取数据和

关闭游标4个步骤。

3、

答:触发器是一种特殊的存储过程,主要用于保证数据的完整性和强制使用业务规则。

触发器具有以下优点:(1)触发器可以实现对数据库中的相关表的级联操作;(2)触发

器可以用来定义比CHECK约束更复杂的限制;(3)触发器可以用来定义错误信息;(4)触

发器可以用来实现更精细和更复杂的数据操作。

4、

答:根据激活触发器时机的不同,MySQL触发器可以分为BEFORE触发器和AFTER

触发器两种类型。其区别为:BEFORE表示触发器是在激活它的语句之前触发,如果想要

验证新数据是否满足使用的限制,则使用BEFORE触发器;AFTER表示触发器是在激活它

的语句之后触发,如果想要在激活触发器的语句执行之后执行触发器指定的动作,通常使用

AFTER触发器。

5、 什么是事务?它有何作用?

答:所谓事务,是指一个单元的工作,其中包括一系列的更新操作,这些操作要么全做,

要么全部不做。事务是并发控制的基本单位,它对维护数据库的数据一致性非常重要。

五、项目实践(训)题

1、

Use People

SET @num

二(SELECT Count(employeeld) FROM bemployee WHERE deptId='2003‘);

成.

SELECT @num := Count(employeeld) FROM bemployee WHERE deptId=,2OO3,;

2、

DELIMITER $$

CREATE PROCEDURE dept_information(IN Varchar(4))

BEGIN

SELECT * FROM bdept WHERE deptid = deptjd;

END $$

DELIMITER ;

调用存储过程为:

CALL dept_information('200r);

3、

DELIMITER $$

CREATE PROCEDURE employee_salary(employee_id Char( 10))

BEGIN

SELECT eeld, name, sex, total_salary, deduct, final_salary

FROM bemployee Cl JOIN bsalary C2

ON eeid =eeid

WHERE Cl .employeeid = employee_id;

END $$

DELIMITER ;

DELIMITER $$

CREATE PROCEDURE reason_num(mreason Varchar(50), OUT num Int)

BEGIN

SELECT num=Count(*) FROM bleave

WHERE reason = mreason;

END $$

DELIMITER ;

DELIMITER $$

CREATE TRIGGER del_salary AFTER DELETE

ON bemployee FOR EACH ROW

BEGIN

DELETE FROM bsalary WHERE employeeid = eeid;

END$$

DELIMITER ;

DELIMITER $$

CREATE TRIGGER leave_sum AFTER INSERT, UPDATE

ON bleave FOR EACH ROW

BEGIN

SELECT employeeid, Sum(days) AS 总天数 FROM bleave

WHERE employeeid = eeid

GROUP BY employeeid;

END$$

DELIMITER ;


本文标签: 游标 触发器 使用 结果 过程