首页 > GAME > 游戏 > 正文

海北憾毡泛会展服务有限公司,黄冈陌钠蛹房产交易有限公司,昌都晃涂捅装饰工程有限公司

MySQL 存储过程的简单使用


首先创建一张 students 表

SQL脚本如下:

create table students(
    id int primary key auto_increment,
    age int,
    name varchar(20),
    city varchar(20)
) character set utf8;

insert into students values(null, 22, "lisa", "杭州");
insert into students values(null, 16, "rock", "上海");
insert into students values(null, 20, "jack", "深圳");
insert into students values(null, 21, "rose", "北京");

不带参数的存储过程

-- 查询学生个数
drop procedure if exists select_students_count;

delimiter ;; -- 替换分隔符
    create procedure select_students_count() 
        begin 
            select count(id) from students; 
        end ;;
delimiter ;

执行存储过程:

call select_students_count();

带参数的存储过程

-- 根据城市查询总数
delimiter ;;
    create procedure select_students_by_city_count(in _city varchar(255))
        begin
            select count(id) from students where city = _city;
        end;;
delimiter ;

执行存储过程:

call select_students_by_city_count("上海");

带有输出参数的存储过程

MySQL 支持 in (传递给存储过程),out (从存储过程传出) 和 inout (对存储过程传入和传出) 类型的参数。存储过程的代码位于 begin 和 end 语句内,它们是一系列 select 语句,用来检索值,然后保存到相应的变量 (通过 into 关键字)

-- 根据姓名查询学生信息,返回学生的城市
delimiter ;;
create procedure select_students_by_name(
    in _name varchar(255),
    out _city varchar(255), -- 输出参数
    inout _age int(11)
)
    begin 
        select city from students where name = _name and age = _age into _city;
    end ;;
delimiter ;

执行存储过程:

set @_age = 20;
set @_name = "jack";
call select_students_by_name(@_name, @_city, @_age);
select @_city as city, @_age as age;

带有通配符的存储过程

delimiter ;;
create procedure select_students_by_likename(
    in _likename varchar(255)
)
    begin
        select * from students where name like _likename;
    end ;;
delimiter ;

执行存储过程:

call select_students_by_likename("%s%");
call select_students_by_likename("%j%");

使用存储过程进行增加、修改、删除

增加

delimiter ;;
create procedure insert_student(
    _id int,
    _name varchar(255),
    _age int,
    _city varchar(255)
)
    begin
        insert into students(id,name,age,city) values(_id,_name,_age,_city);
    end ;;
delimiter ;

执行存储过程:

call insert_student(5, "张三", 19, "上海");

执行完后,表中多了一条数据,如下图:

修改

delimiter ;;
create procedure update_student(
    _id int,
    _name varchar(255),
    _age int,
    _city varchar(255)
)
    begin
        update students set name = _name, age = _age, city = _city where id = _id;
    end ;;
delimiter ;

执行存储过程:

call update_student(5, "amy", 22, "杭州");

删除

delimiter ;;
create procedure delete_student_by_id(
    _id int
)
    begin
        delete from students where id=_id;
    end ;;
delimiter ;

执行存储过程:

call delete_student_by_id(5);

students 表中 id 为5的那条记录成功删除。如下图:

查询存储过程

查询所有的存储过程:

select name from mysql.proc where db="数据库名";

查询某个存储过程:

show create procedure 存储过程名;


本文永久更新地址:https://github.com/nnngu/LearningNotes/blob/master/MySQL/01%20MySQL%20%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B%E7%9A%84%E7%AE%80%E5%8D%95%E4%BD%BF%E7%94%A8.md

当前文章:http://mabebox.com/38958.html

发布时间:2018-11-17 00:38:50

花呗的钱怎么提现 粉猫全民网赚攻略 日赚兼职不是彩票 赚钱买衣服小游戏 互联网公司挣钱项目 优界网靠什么挣钱的 自动阅读赚钱 挂机流量网赚可信吗 日赚千元群8197771 18年用手机赚钱门路

编辑:乙董卓乙


声明:所发布的内容均来源于互联网,目的在于传递信息,但不代表本站赞同其观点及立场,版权归属原作者,如有侵权请联系删除。
中学生如何攒钱

蹦极项目投资成本

在家打字赚钱项目