0

0

mysql存储程序相关用法总结_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:18:24

|

1055人浏览过

|

来源于php中文网

原创

bitsCN.com 存储函数 存储函数将向调用者返回结果
存储函数创建实例 mysql> delimiter $ //设置$为分隔符 mysql> create function get_carname(car_id int) //创建函数 参数为car_id -> returns varchar(100) //函数返回值 -> reads sql data -> begin -> return (select name from car_info where id = car_id); -> end$ //结束符 Query OK, 0 rows affected mysql> delimiter ; mysql> select get_carname(100); //调用函数getcarname(100); +------------------------------------------------+ | get_carname(100) | +------------------------------------------------+ | 起亚K2 2012款 两厢 1.6L AT Premium纪念版111122 | +------------------------------------------------+ 1 row in set
存储函数查看 show function status; show create function get_carname; show function status like 'get_car%';
存储函数删除 drop function get_carname;

存储过程 存储过程创建实例 mysql> create procedure show_name(car_id int) -> begin -> select name from car_info where id = car_id; -> update car_info set name = '123456' where id = car_id; -> end$ 1304 - PROCEDURE show_name already exists mysql> create procedure show_carname(car_id int) -> begin -> select name from car_info where id = car_id; -> update car_info set name = '123456' where id = car_id; -> end$ Query OK, 0 rows affected mysql> call show_carname(100); -> $ +------------------------------------------------+ | name | +------------------------------------------------+ | 起亚K2 2012款 两厢 1.6L AT Premium纪念版111122 | +------------------------------------------------+ 1 row in set
存储过程的参数类型 IN参数:调用者把IN参数传值给过程 OUT参数:过程把值赋值给OUT参数
mysql> create procedure get_carname(in car_id int,out car_name varchar(100)) -> begin -> select name into car_name from car_info where id = car_id; -> end$ Query OK, 0 rows affected mysql> delimiter ; mysql> call get_carname(100,@car_name); Query OK, 0 rows affected mysql> select @car_name; +-----------+ | @car_name | +-----------+ | 123456 | +-----------+ 1 row in set
存储过程特征值介绍

language sql 默认,routine_boyd由sql组成

[NOT]DETERMINISTIC 指明存储过程的执行结果是否是确定的,默认不确定

CONSTAINS SQL 子程序包含SQL,但不包含读写数据的语句,默认

NO SQL 子程序中不包含SQL语句

READS SQL DATA 子程序中包含读数据的语句

MODIFIES SQL DATA 子程序中包含了写数据的语句

知鹿匠
知鹿匠

知鹿匠教师AI工具,新课标教案_AI课件PPT_作业批改

下载

SQLSECURITY {DEFINER|INVOKER} 指明谁有权限执行。

DEFINER 只有定义者自己才能够执行,默认

INVOKER 表示调用者可以执行


存储过程中变量的使用 变量定义:declare procedure_temp varchar(100); 变量赋值:set procedure_temp = 'hello';也可以将查询结果赋值给变量: select name into procedure_temp ;
mysql> create procedure procedure_test() -> begin -> declare continue handler for sqlstate '23000' set @x1 = 1; -> set @x2 = 2; -> insert into web_car_brands(name) values('dazhong'); -> set @x2 = 3; -> end$ 红色部分表示mysql执行是遇到错误、异常、警告时采取的方式,目前支持continue 和exit两种方式错误类别包括:sqlwarning,not found ,sqlstate
存储过程中流程控制语句的使用,待完善......
存储过程中光标的使用 create procedure curser_test() -> begin -> declare count int; -> declare car_name varchar(100); -> declare cur cursor for select name from car_info where id declare exit handler for not found close cur; -> -> set @x1 = 0; -> set @x2 = 0; -> -> open cur; /打开光标 -> -> repeat -> fetch cur into car_name; // fetch 光标 -> if(car_name == '凯迪拉克') -> then set @x1 = 1; -> else -> set @x2 = 1; -> end if; -> until 0 end repeat; -> close cur; //关闭光标 -> end$

触发器 当某个数据表被INSERT、DELETE、UPDATE时,触发器将自动执行。
触发器创建实例 mysql> delimiter $ mysql> create trigger trigger_test //触发器名称为trigger_test -> after insert on car_info for each row begin //在插入操作之后执行 -> insert into web_car_brands(name) values('dahzong'); //要执行的动作 -> end; -> $
触发器被触发的语句如下:INSERT、DELETE、UPDATE
查看触发器 show triggers; 删除触发器 drop trigger trigger_test; 触发器使用注意 触发器按照BEFORE触发器、行操作、AFTER触发器的顺序执行,其中任何一部发生错误的操作都不会继续执行剩下的操作。对于事务操作,如果期间发生错误,整个事务回滚,对于非事务,如果发生错误,那么已经执行的部分将无法回滚。

视图 视图创建实例 mysql> create view view_test as //创建视图view_test -> select name from car_info where id = 100; Query OK, 0 rows affected
查看视图 不能通过show views方式查看视图,通过show tables 可以查看到所有的表和视图 show table status like 'view%'; show create view view_test; select * from information_schema.views where table_name = 'view_test'; //通过INFORMATION_SCHEMA.VIEWS 查看
视图删除 drop view view_test;
mysql视图若干限制:
from关键字后不能包含子查询
以下类型视图补课更新:聚合函数(SUM、MIN、MAX、COUNT)、DISTINCT、GROUP BY、HAVING、UNION或者UNION ALL
SELECT中包含子查询
JION
FORM一个补课更新的视图 使用视图的优点:
数据独立:可以屏蔽表结果变化对用户的影响,源表增加列对视图没有影响,源表修改列,只需修改视图对应列即可
安全:用户只能访问视图呈现的结果集,可以限制到某个行、某个列
简单:用户使用视图不许关心其背后对应的表结果、关联条件、筛选条件,直接呈现对应条件的结果集

事件 事件调度器可以安排数据库在预订的时间执行某个事件,默认情况下事件调度器不会开启,查看事件调度器状态: show variables like 'event_scheduler'; 开启事件调度器:set global event_scheduler = ON;
事件创建实例 mysql> create event expire_web_session //创建事件expire_web_session -> on schedule every 4 hour //每四小时执行一次 -> do -> delete from car_info where publish_date 停止某个事件 mysql> alter event expire_web_session disable; 开启某个事件 alter event expire_session enable;

bitsCN.com

相关专题

更多
Golang 命令行工具(CLI)开发实战
Golang 命令行工具(CLI)开发实战

本专题系统讲解 Golang 在命令行工具(CLI)开发中的实战应用,内容涵盖参数解析、子命令设计、配置文件读取、日志输出、错误处理、跨平台编译以及常用CLI库(如 Cobra、Viper)的使用方法。通过完整案例,帮助学习者掌握 使用 Go 构建专业级命令行工具与开发辅助程序的能力。

1

2025.12.29

ip地址修改教程大全
ip地址修改教程大全

本专题整合了ip地址修改教程大全,阅读下面的文章自行寻找合适的解决教程。

162

2025.12.26

压缩文件加密教程汇总
压缩文件加密教程汇总

本专题整合了压缩文件加密教程,阅读专题下面的文章了解更多详细教程。

52

2025.12.26

wifi无ip分配
wifi无ip分配

本专题整合了wifi无ip分配相关教程,阅读专题下面的文章了解更多详细教程。

108

2025.12.26

漫蛙漫画入口网址
漫蛙漫画入口网址

本专题整合了漫蛙入口网址大全,阅读下面的文章领取更多入口。

349

2025.12.26

b站看视频入口合集
b站看视频入口合集

本专题整合了b站哔哩哔哩相关入口合集,阅读下面的文章查看更多入口。

677

2025.12.26

俄罗斯搜索引擎yandex入口汇总
俄罗斯搜索引擎yandex入口汇总

本专题整合了俄罗斯搜索引擎yandex相关入口合集,阅读下面的文章查看更多入口。

796

2025.12.26

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

64

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

31

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 776人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号