《MySQL技术》学习笔记——视图和存储程序

本文详细介绍了MySQL中的视图和存储程序,包括存储函数、存储过程、触发器和事件的使用。视图作为一种虚表,简化了复杂查询。存储程序则包含了存储函数和存储过程,用于执行复杂的数据库操作。文章还讨论了安全性问题,如DEFINER和SQL SECURITY特性。
摘要由CSDN通过智能技术生成

视图和存储程序

  • 存储程序
    是存储函数,存储过程,触发器和事件的总称。
  • 存储例程
    特指存储函数,存储过程。

使用视图

视图是一个虚表,它是在表或其他视图的基础上,使用 SELECT 语句来定义的。
查询视图就等效于查询定义它的那条语句,只是视图将细节隐藏了起来。
视图定义里可以包含表达式计算和连接等操作,因此查询视图更易于编写出简单的用于获得所要信息的查询。

一个基本的视图可以只选择表的部分列。

定义一个视图,让它只检索想要的那些列:

CREATE VIEW vpres AS
SELECT last_name, first_name, city, state FROM president;

在视图里也可以使用 SELECT * ,并且只会获得在视图定义里通过名字指定的那些列:

SELECT * FROM vpres;

视图是逻辑语句,逻辑语句的执行结果是一个表。
定义视图后,直接通过引用视图对象即可获得视图关联逻辑语句执行结果。
创建视图时,需拥有对于视图的CREATE VIEW权限,拥有对SELECT语句所选列的操作权限。
及拥有对该语句里其他地方所引用的所有列的SELECT权限。

使用视图时,只能引用视图结果表中存在的列。
定义视图时,显式指定结果表列名。

CREATE VIEW vpres2(ln, fn) AS
SELECT last_name, first_name FROM president;

使用存储程序

存储程序是存储函数,存储过程,触发器和事件的统称。

复合语句和语句分隔符

复合语句由一个BEGIN和END块构成,其间可以包含任意数量的语句。
对于匿名用户,则以“delimiter ”代替。

CREATE PROCEDURE greetings()
BEGIN
	DECLARE user CHAR(77) CHARACTER SET utf8;
	SET user = (SELECT CURRENT_USER());
	IF INSTR(user, '@') > 0 THEN
		SET user = SUBSTRING_INDEX(user, '@', 1);
	END IF;
	IF user = ' ' THEN         # 匿名用户
		SET user = 'earthling';
	END IF;
	SELECT CONCAT('Greetings, ', user, '!') AS greeting;
END
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值