数据库视图、索引、存储过程、触发器
一、视图(view)
视图是从一个或几个基本表(或视图)导出的表。是一个虚表。数据库中只存放视图的定义,而视图对应的数据仍存放在原来的基本表中。所以,一旦基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。视图一经定义,就可以和基本表一样被查询、被删除。也可以在一个视图之上再定义新的视图,但对视图的更新(增、删、改)操作则有一定的限制。
1、定义视图
⑴、建立视图
create view<视图名>[(<列名>[,列名]…)]
as<子查询>
[with check option];
⑵、删除视图
drop view<视图>[cascade]
2、查询视图
create view<视图名>(<列名>[,列名]…)
from 表
where 条件;
3、更新视图
更新视图是指通过视图来插入(insert)、删除(delete)和修改(update)数据。
由于识图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。为防止用户通过视图对数据进行增加、删除、修改时,有意无意地对不属于视图范围内的基本表数据进行操作,可在定义视图时加上with check option字句。
一般地,行列子集视图是可更新的,除行列子集视图外,有些视图理论上是可更新的,但尚待研究。还有些视图从理论上就是不可更新的。
4、视图的作用
⑴、试图能够简化用户的操作
⑵、使用户能以多种角度看待同一数据
⑶、对重构数据库提功了一定程度的逻辑独立性
⑷、视图能够对机密数据提供安全保护
⑸、适当利用视图可以更清晰地表达查询
二、索引(index)
创建 create
删除 drop
修改 alter
三、存储过程
事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员好多工作,减少数据在数据库与应用服务器中的传输,提高数据处理的效率。存储过程没有返回值。
四、触发器
mysql数据库对同一个表相同时间的相同触发事件只能定义一个触发器。用别名new和old来引用触发器中发生变化的记录内容。