文档详情

MySQL数据库基础与实践 第2版 课后习题答案 CH05课后题答案.docx

发布:2025-02-25约1.44千字共2页下载文档
文本预览下载声明

MySQL数据库基础与实践

PAGE2

STYLEREF\n标题1错误!文档中没有指定样式的文字。STYLEREF标题1错误!文档中没有指定样式的文字。

PAGE16

实践与练习答案

第5章

1.选择题

1-5DBCAA

6-10DBAAA

2.概念题

(1)视图是一个虚拟的表,其结构和数据是建立在对表的查询基础上的,也可以说视图的内容由查询定义,而视图中的数据并不像表、索引那样需要占用存储空间,视图中保存的仅仅是一条select语句,其数据来自于视图所引用的数据库表或者其他视图,对视图的操作与对表的操作一样,可以对其进行查询、修改、删除。

(2)保护数据安全、简化操作、使分散数据集中、提高数据的逻辑独立性。

(3)触发器定义了一系列操作,这一系列操作称为触发程序,当触发事件发生时,触发程序会自动运行。

触发器主要用于监视某个表的插入(insert)、更新(update)和删除(delete)等更新操作,这些操作可以分别激活该表的insert、update和delete类型的触发程序运行,从而实现数据的自动维护。

(4)触发程序是与表有关的命名数据库对象,当表上出现特定事件时,将激活该对象在MySQL中,可以使用createtrigger语句创建触发器,具体语法格式为:

createtriggertrigger_nametrigger_timetrigger_event

ontbl_nameforeachlowtrigger_stmt

与其他数据库对象一样,可以使用drop语句将触发器从数据库中删除,语法格式为:droptrigger[schema_name.]trigger_name

3.操作题

(1)创建一个表tb,其中只有一列a,在表上创建一个触发器,每次插入操作时将用户变量count值增加1。

createtabletb(aint);

set@count=0;

createtriggertb1_insertafterinsert

ontbforeachrow

set@count=@count+1;

(2)在(1)基础上,创建一个由delete触发多个执行语句的触发器tb_delete,每次删除记录时,@count记录删除的个数。

set@old_value=null,@count=0;

delimiter$$

createtriggertb_deleteafterdelete

ontbforeachrow

begin

set@old_value=old.a;

set@count=@count+1;

end$$

delimiter;

(3)定义了一个update触发程序,用于检查更新每一行时将使用的新值,并更改值,使之位于0~100内。(提示:它必须是before触发程序,因为需要将值用于更新行之前对其进行检查。)

delimiter$$

createtriggerudp_checkbeforeupdate

ontbforeachrow

begin

ifnew.a0then

setnew.a=0;

elseifnew.a1100then

setnew.a=100;

endif;

end;

$$

delimiter;

显示全部
相似文档