一 存储过程
1语法
CREATE PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
2举例
DROP PROCEDURE IF EXISTS pro_add;
DELIMITER //
CREATE PROCEDURE pro_add( IN p1 INT, IN p2 INT, INOUT p3 INT)
BEGIN
SET p3=p1+p2;
END
//
CALL pro_add(1,2,@abc);
SELECT @abc;
二 函数 (特殊的存储过程 暂时不支持 out)
1语法结构:
CREATE FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
2举例
DROP FUNCTION IF EXISTS fun_add;
DELIMITER //
CREATE FUNCTION fun_add(p1 INT,p2 INT)
RETURNS INT
BEGIN
RETURN p1+p2;
END
//
SET @abc=fun_add(1,2);
SELECT @abc;
三 视图
1>语法结构
create view 名称 as sql语句
--视图操作举例
CREATE TABLE `arcticle` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) DEFAULT NULL,
`content` varchar(200) DEFAULT NULL,
`createuser` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
CREATE VIEW vi_arc AS SELECT title,content FROM arcticle
SELECT * FROM arcticle
UPDATE vi_arc SET content='java永不过时' WHERE title='java是否过时'
DELETE FROM vi_arc WHERE title='java是否过时'
INSERT INTO vi_arc VALUES('abc','ccc')
四 触发器
1>语法结构
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt
2>举例:
DROP TRIGGER trg_arc
DELIMITER //
CREATE TRIGGER trg_arc
BEFORE INSERT
ON arcticle
FOR EACH ROW
BEGIN
IF new.createuser IS NULL THEN
SET new.createuser='张三';
END IF;
END
//
3>注意
delete和update 有 old对象
insert和update 有new对象
update 有old,new对象
after触发器 不能够修改new的值
相关文章
- MySQL自定义函数与存储过程的创建、使用、删除
- python 全栈开发,Day64(视图,触发器,函数,存储过程,事务)
- MySQL--视图view、触发器trigger、事务(start transaction)、存储过程(特殊的数据逻辑处理函数)、流程控制(if,case....)
- mysql数据库(六)pymysql、视图、触发器、存储过程、函数、流程控制、数据库连接池
- MySQL视图view/存储过程和函数的使用
- mysql存储过程、函数和触发器的创建 [转]
- MySQL源码:MYSQL存储过程/函数的分析原理及缓存机制 - 竹 石
- mysql存储过程及拼接字符串的用法
- MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法
- Mysql 存储过程、函数、触发器和视图的权限检查