Mysql 存储过程,触发器,视图 学习记录

44 篇文章 0 订阅
34 篇文章 0 订阅

存储过程:是将对应的SQL查询等写到服务器中,在查询是直接调用存储过程相关数据。

1、  delimiter $$   修改执行命令符变为 $$

创建存储过程:

//procedure 
//参数   IN|OUT|INOUT
//
//特征值
//{CONTAINS SQL|NO SQL |READS SQL DATA|MODIFIES SQL DATA}:这些特征值提供子程序使用数据的内在信息,这些特征值目前只提供给服务器,并没有根据这些特征值来约束过程实际使用数据情况。CONTAINS SQL 表示子程序不包含读或写数据的语句。NO SQL表示子程序不包含SQL语句。READS SQL DATA表示子程序包含读数据的语句,但不包含写数据的语句。MODIFIES SQL DATA 表示子程序包含写数据的语句。如果特征没有明确给定,默认使用的值是CONTAINS SQL。
//
CREATE PROCEDURE findz(IN startid int,IN endid int,OUT gettotal int)
READS SQL DATA
BEGIN
select username from user where id>startid and id<endid;
select found_rows() into gettotal;
END $$
//调用procedure
//call findz(4,10,@love)
//
//select @love
//show create procedure findz
//show procedure status {like 'patter'}

定义变量

//Declare va_name type [default value]
//变量赋值1
//set var_name = expr[,var_name=expr]
//Select col_name[,] into var_name
//function  参数只能 IN
CREATE FUNCTION updates(val varchar(30),wid int)
RETURNS varchar(30)
READS SQL DATA
BEGIN
DECLARE name varchar(30);
update user set username='val' where id=wid;
select username INTO name from user where id=wid;
RETURN name;
END $$
//调用函数 
//select updates();
//show create function findz
//show function status


 触发器
  可以协助应用在数据库端确保数据的完整性。
 CREATE TRIGGGER chufa 触发时间 触发事件 ON 表 FOR EACH ROW
 触发时间:BEFORE AFTER
 触发事件:INSERT UPDATE DELETE
 
 对ON表:old.  旧表  new.  新表

create trigger yangsa before insert on user for each row
insert into user_bk (id,username) values (new.id,new.username);


 视图

//视图(view)是一种虚似存在的表
 CREATE VIEW shitu AS SELECT id,username,price FROM user;
//用视图:
  SELECT id,username FROM shitu;





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值