MYSQL-存储过程、视图、函数、触发器

存储过程

一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,比一个个执行sql语句效率高,用户通过指定存储过程的名字并给出参数来执行它。参数可以为IN, OUT, 或INOUT

  • 查看
    select * from mysql.proc where type = “PROCEDURE”

  • 例子
    delimiter 定义分割符

    delimiter c r e a t e p r o c e d u r e 存 储 过 程 名 ( [ i n o u t i n o u t ] 变 量 名 数 据 类 型 ) b e g i n s e l e c t ∗ f r o m 表 w h e r e n a m e = 变 量 名 e n d ; create procedure 存储过程名([in out inout] 变量名 数据类型) begin select * from 表 where name = 变量名 end; createprocedure([inoutinout])beginselectfromwherename=end;

  • 调用
    call 存储过程名()

  • 删除
    drop procedure 存储过程名

函数

需要sql逻辑处理,参数是IN参数,含有RETURNS字句用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。

  • 查看
    select * from mysql.proc where type = “FUNCTION”

  • 例子
    delimiter c r e a t e f u n c t i o n 函 数 名 ( 变 量 名 数 据 类 型 ) r e t u r n s < 数 据 类 型 > b e g i n r e t u r n ( s e l e c t ∗ f r o m 表 名 w h e r e 字 段 = 值 ) ; e n d ; create function 函数名(变量名 数据类型) returns <数据类型> begin return (select * from 表名 where 字段=值); end; createfunction()returns<>beginreturn(selectfromwhere=);end;

  • 调用
    select 函数名()

  • 删除
    drop function 函数名

视图

视图是存储在数据库中的查询的SQL语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据,另一原因是可使复杂的查询易于理解和使用。你可以在这个视图上使用SELECT

  • 查看
    select * from information_schema.VIEWS
  • 例子
    create view 视图名 as select * from 表名
    create or replace view 视图名
  • 删除
    drop view 视图名

触发器

与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

  • 查看
    SELECT * FROM information_schema.triggers;

变量

#查看所有全局变量
SHOW GLOBAL VARIABLES;
#查看所有会话变量
SHOW SESSION VARIABLES;

- 变量类型
	- 系统变量
		- 全局系统变量
		- 会话系统变量
		系统变量以 两个“@” 开头,其中“@@global”仅用于标记全局系统变量,“@@session”仅用于标记会话系统变量。“@@”首先标记会话系统变量,如果会话系统变量不存在,则标记全局系统变量。
	- 自定义变量
		- 用户变量
		- 局部变量
		用户变量以 一个“@” 开头

- 变量定义
	- 用户变量
		作用域:当前会话
		定义和使用的地方:会话中的任何地方
		
		SET @用户变量 = 值;
		SELECT 表达式 INTO @用户变量 [FROM 等子句];
	- 局部变量
		只在 BEGIN 和 END 语句块中有效。局部变量只能在 存储过程和函数 中使用
		
		DECLARE 变量名1 变量数据类型 [DEFAULT 变量默认值];
		SELECT 局部变量名;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值