MySql存储过程简单总结
2018-02-01 14:00
411 查看
MySql存储过程简单总结。
CREATE TABLE `STUDENT`
(
`ID` VARCHAR(50) NOT NULL,
`NAME` VARCHAR(50) NOT NULL,
`AGE` INT(3) NOT NULL,
`CITY` VARCHAR(100) NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'李四',20,'广东深圳1');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'王五',22,'广东深圳2');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'张三',23,'广东深圳3');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'刘星',24,'广东深圳4');
-- 1, 创建不带参数的存储过程
DROP PROCEDURE IF EXISTS select_students_count; -- 没有括号()
CREATE PROCEDURE `select_students_count`()
BEGIN
SELECT count(*) from STUDENT;
END;
-- 调用
call select_students_count();
-- 2, 创建带参数的存储过程
DROP PROCEDURE IF EXISTS select_students_count; -- 没有括号()
CREATE PROCEDURE `select_students_count`(
in _name varchar(225)
)
BEGIN
SELECT count(*) from STUDENT WHERE `NAME` =_NAME;
END;
-- 调用
call select_students_count('李四');
-- 3, 带有输出参数的存储过程
DROP PROCEDURE IF EXISTS select_students_by_name; -- 没有括号()
CREATE PROCEDURE `select_students_by_name`(
in _name varchar(225),-- 输入参数
out _city varchar(225),-- 输出参数
INOUT _age int(3) -- 输入输出参数
)
BEGIN
SELECT city from STUDENT WHERE `NAME` =_NAME AND `AGE` = _age INTO _city;
END;
-- 调用
set @_age = 20;
set @_name = '李四';
call select_students_by_name(@_name, @_city, @_age);
select @_city as city, @_age as age;
-- 4 ,带有通配符的存储过程
DROP PROCEDURE IF EXISTS SELECT_STUBY_LIKENAME;
CREATE PROCEDURE `SELECT_STUBY_LIKENAME`
(
IN _LIKENAME VARCHAR(20)
)
BEGIN
SELECT * FROM STUDENT WHERE NAME LIKE _LIKENAME;
END;
call SELECT_STUBY_LIKENAME('%王%');
-- 存储过程增删改查
-- 1,增加
DROP PROCEDURE IF EXISTS `INSERT_STUDENT`;
CREATE PROCEDURE `INSERT_STUDENT`(
_ID VARCHAR(50),
_NAME VARCHAR(50),
_AGE INT(3),
_CITY VARCHAR(50)
)
BEGIN
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(_ID,_NAME,_AGE,_CITY);
END;
CALL INSERT_STUDENT(UUID(),'王小二',36,'东莞');
-- 2,修改学生信息
DROP PROCEDURE IF EXISTS UPDATE_STUDENT;
CREATE PROCEDURE UPDATE_STUDENT(
_ID VARCHAR(50),
_NAME VARCHAR(50),
_AGE INT(3),
_CITY VARCHAR(50)
)
BEGIN
UPDATE STUDENT SET NAME=_NAME,AGE=_AGE,CITY=_CITY WHERE ID =_ID;
END;
CALL UPDATE_STUDENT('c1a5ed9f-0713-11e8-951d-f48e387783d2','王五',18,'北京');
SELECT * FROM STUDENT;
-- 3, 删除
DROP PROCEDURE IF EXISTS DELETE_STUDENT;
CREATE PROCEDURE DELETE_STUDENT(
_ID VARCHAR(50)
)
BEGIN
DELETE T FROM STUDENT T WHERE T.ID=_ID;
END;
CALL DELETE_STUDENT('26b78a86-0704-11e8-951d-f48e387783d2');
CREATE TABLE `STUDENT`
(
`ID` VARCHAR(50) NOT NULL,
`NAME` VARCHAR(50) NOT NULL,
`AGE` INT(3) NOT NULL,
`CITY` VARCHAR(100) NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'李四',20,'广东深圳1');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'王五',22,'广东深圳2');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'张三',23,'广东深圳3');
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(UUID(),'刘星',24,'广东深圳4');
-- 1, 创建不带参数的存储过程
DROP PROCEDURE IF EXISTS select_students_count; -- 没有括号()
CREATE PROCEDURE `select_students_count`()
BEGIN
SELECT count(*) from STUDENT;
END;
-- 调用
call select_students_count();
-- 2, 创建带参数的存储过程
DROP PROCEDURE IF EXISTS select_students_count; -- 没有括号()
CREATE PROCEDURE `select_students_count`(
in _name varchar(225)
)
BEGIN
SELECT count(*) from STUDENT WHERE `NAME` =_NAME;
END;
-- 调用
call select_students_count('李四');
-- 3, 带有输出参数的存储过程
DROP PROCEDURE IF EXISTS select_students_by_name; -- 没有括号()
CREATE PROCEDURE `select_students_by_name`(
in _name varchar(225),-- 输入参数
out _city varchar(225),-- 输出参数
INOUT _age int(3) -- 输入输出参数
)
BEGIN
SELECT city from STUDENT WHERE `NAME` =_NAME AND `AGE` = _age INTO _city;
END;
-- 调用
set @_age = 20;
set @_name = '李四';
call select_students_by_name(@_name, @_city, @_age);
select @_city as city, @_age as age;
-- 4 ,带有通配符的存储过程
DROP PROCEDURE IF EXISTS SELECT_STUBY_LIKENAME;
CREATE PROCEDURE `SELECT_STUBY_LIKENAME`
(
IN _LIKENAME VARCHAR(20)
)
BEGIN
SELECT * FROM STUDENT WHERE NAME LIKE _LIKENAME;
END;
call SELECT_STUBY_LIKENAME('%王%');
-- 存储过程增删改查
-- 1,增加
DROP PROCEDURE IF EXISTS `INSERT_STUDENT`;
CREATE PROCEDURE `INSERT_STUDENT`(
_ID VARCHAR(50),
_NAME VARCHAR(50),
_AGE INT(3),
_CITY VARCHAR(50)
)
BEGIN
INSERT INTO STUDENT(ID,NAME,AGE,CITY) VALUES(_ID,_NAME,_AGE,_CITY);
END;
CALL INSERT_STUDENT(UUID(),'王小二',36,'东莞');
-- 2,修改学生信息
DROP PROCEDURE IF EXISTS UPDATE_STUDENT;
CREATE PROCEDURE UPDATE_STUDENT(
_ID VARCHAR(50),
_NAME VARCHAR(50),
_AGE INT(3),
_CITY VARCHAR(50)
)
BEGIN
UPDATE STUDENT SET NAME=_NAME,AGE=_AGE,CITY=_CITY WHERE ID =_ID;
END;
CALL UPDATE_STUDENT('c1a5ed9f-0713-11e8-951d-f48e387783d2','王五',18,'北京');
SELECT * FROM STUDENT;
-- 3, 删除
DROP PROCEDURE IF EXISTS DELETE_STUDENT;
CREATE PROCEDURE DELETE_STUDENT(
_ID VARCHAR(50)
)
BEGIN
DELETE T FROM STUDENT T WHERE T.ID=_ID;
END;
CALL DELETE_STUDENT('26b78a86-0704-11e8-951d-f48e387783d2');
相关文章推荐
- mysql 5.0存储过程学习总结
- mysql 5.0存储过程学习总结 (经典)
- mysql 5.0存储过程学习总结http://www.ccvita.com/100.html
- mysql 5.0存储过程学习总结
- Mysql存储过程的简单使用
- mysql 5.0存储过程学习总结
- MySQL存储过程学习总结
- MySQL存储过程和函数简单写法
- MySQL 存储过程游标的简单用法
- 关于mysql的存储过程的学习与总结
- mysql 5.0存储过程学习总结(上)
- mysql存储过程循环语句简单例子
- MySql 中游标,事务,终止存储过程方法总结
- mysql 5.0存储过程学习总结
- mysql 5.0存储过程学习总结
- mysql 存储过程学习总结
- mysql 5.0存储过程学习总结
- mysql 存储过程简单例子
- mysql 5.0存储过程学习总结(下)
- Mysql inndodb 存储引擎的简单总结(组成结构,锁,事务,备份,优化)