mysql创建存储过程

mysql之存储过程和函数

走远了吗. 提交于 2019-11-26 19:39:18
/*--> */ /*--> */ 1. 变量 系统变量:   定义: 变量由系统提供,不是用户定义,属于服务器层面   查看所有变量: SELECT global | session variables;       查看满足条件的部分系统变量: SELECT global | session variables like '%char%';    查看某个系统变量: select @@系统变量名 或者 select @@[session]global.系统变量名;如select @@tx_isolation查看事务隔离级别       为变量赋值: set 系统变量名=值    系统全局变量(GLOBAL): # 查看全部的系统全局变量 SELECT GLOBAL VARIABLES; # 查看部分系统全局变量 SELECT GLOBAL VARIABLES LIKE '%char%';# 其他同上方式   作用域:服务器每次启动将为所有的全局变量赋初值,针对于所有会话有效,但不能跨重启; 会话变量(SESSION):   作用域:变量仅对于当前会话连接有效。 自定义变量:   使用步骤:声明、赋值、使用(查看,比较,运算符)   作用域:针对于当前会话有效。 # 赋值操作符:=或:= SET @用户变量名=值; SET @用户变量名:=值; SElECT @用户变量名:=值;

MySQL之自定义函数与存储过程

对着背影说爱祢 提交于 2019-11-26 19:37:56
MySQL数据库常用函数与自定义函数 1 SELECT ABS(-8);#绝对值 2 SELECT MOD(10,9); #取模 3 SELECT FLOOR(12.99); #地板 4 SELECT CEILING(10.01);#天花板 5 SELECT ROUND(12.99);#随机数,看第一个小数点数 6 SELECT CONCAT('i','love','java');#拼接 7 SELECT * FROM t_user t WHERE t.`uname` LIKE CONCAT('%','a','%'); #拼接应用 8 SELECT LENGTH('ilovejava'); #字符串长度,从1开始 9 SELECT INSTR('ilovejava','java');#取字符所在的位置,从1开始 10 SELECT LEFT('ilovejava',4); #左边开始取4位 11 SELECT RIGHT('ilovejava',4); #右边开始取4位 12 SELECT SUBSTRING('ilovejava',5); #包括第5个,后面的截取; 13 SELECT SUBSTRING('ilovejava',6,2); #从6开始,取2个字符; 14 SELECT LENGTH(' java '); #12 15 SELECT LENGTH(TRIM('

mysql-储存过程_已迁移

元气小坏坏 提交于 2019-11-26 18:29:11
我们大家都知道 MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程。 在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。 特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。 无 实例一:无参的存储过程 $conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!"); mysql_select_db('test',$conn); $sql = " create procedure myproce() begin INSERT INTO user (id, username, sex) VALUES (NULL, 's', '0'); end; "; mysql_query($sql);//创建一个myproce的存储过程 $sql = "call test.myproce();"; mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。 实例二:传入参数的存储过程 $sql

MySQL存储过程教程

你说的曾经没有我的故事 提交于 2019-11-26 18:28:16
在本节中,您将逐步学习如何在MySQL中开发存储过程。 首先,我们向您 介绍存储过程概念 ,并讨论何时应该使用它。然后,我们向您演示如何使用过程代码的基本元素,例如: 创建存储过程 , if-else语句 , case语句 , 循环语句 , 存储过程的参数 。 下面的每个教程都包含了易于理解的示例和详细的解释。 如果您认真学习了所有的教程,那么您能够比较容易地在MySQL中开发简单到复杂的存储过程了。 MySQL存储过程简介 - 本教程介绍了MySQL存储过程,以及它们的优缺点。 MySQL存储过程入门 - 在本教程中,我们将逐步介绍如何使用 CREATE PROCEDURE 语句来开发第一个MySQL存储过程。 此外,还将展示如何从SQL语句调用存储过程。 MySQL存储过程变量 - 您将了解MySQL存储过程中的变量,如何声明和使用变量。 此外也介绍了变量的范围。 MySQL存储过程参数 - 本教程介绍如何在存储过程中定义参数,并介绍不同的参数模式,包括: IN , OUT 和 INOUT 。 MySQL存储过程返回多个值 - 本教程介绍如何开发返回多个值的存储过程。 MySQL IF语句 - 本教程介绍如何使用MySQL IF 语句根据条件来执行一段SQL代码。 MySQL CASE语句 - 将学习如何使用MySQL CASE 语句来构建复杂的条件。

MySQL 存储过程的基本用法

喜你入骨 提交于 2019-11-26 18:28:07
我们大家都知道MySQL 存储过程是从 MySQL 5.0 开始逐渐增加新的功能。存储过程在实际应用中也是优点大于缺点。不过最主要的还是执行效率和SQL 代码封装。特别是 SQL 代码封装功能,如果没有存储过程。 在外部程序访问数据库时(例如 PHP),要组织很多 SQL 语句。 特别是业务逻辑复杂的时候,一大堆的 SQL 和条件夹杂在 PHP 代码中,让人不寒而栗。现在有了 MySQL 存储过程,业务逻辑可以封装存储过程中,这样不仅容易维护,而且执行效率也高。 一、MySQL 创建存储过程 “pr_add” 是个简单的 MySQL 存储过程,这个MySQL 存储过程有两个 int 类型的输入参数 “a”、“b”,返回这两个参数的和。 drop procedure if exists pr_add; 计算两个数之和 create procedure pr_add ( a int, b int ) begin declare c int; if a is null then set a = 0; end if; if b is null then set b = 0; end if; set c = a + b; select c as sum; /* return c; 不能在 MySQL 存储过程中使用。return 只能出现在函数中。 */ end; 二、调用 MySQL

mysql定时任务(event事件)

蹲街弑〆低调 提交于 2019-11-26 14:51:17
1.事件简介 事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。 事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而事件是根据调度事件来启动的。由于他们彼此相似,所以事件也称为临时性触发器。 事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。 2 事件的优缺点 2.1 优点 一些对数据定时性操作不再依赖外部程序,而直接使用数据库本身提供的功能。 可以实现每秒钟执行一个任务,这在一些对实时性要求较高的环境下就非常实用了。 2.2 缺点 定时触发,不可以调用。 3 创建事件 一条create event语句创建一个事件。每个事件由两个主要部分组成,第一部分是事件调度(eventschedule,表示事件何时启动以及按什么频率启动; 第二部分是事件动作(event action),这是事件启动时执行的代码,事件的动作包含一条SQL语句,它可能是一个简单地insert或者update语句,也可以使一个存储过程或者 benin...end语句块,这两种情况允许我们执行多条SQL。

mysql的Event

眉间皱痕 提交于 2019-11-26 11:39:46
mysql的Event Event简介 Event是mysql中的一个事件,和触发器类似,触发器是在某条sql语句执行后可能会触发,而Event是每隔一段时间或某个特定的时间点执行,可以精确到秒。 准备 在创建Event前,需要将mysql中的event_scheduler属性设置为ON。 使用命令 mysql> show variables like "%event_scheduler%"; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | OFF | +-----------------+-------+ 1 row in set (0.19 sec) mysql> set global event_scheduler = on; Query OK, 0 rows affected (0.04 sec) mysql> show variables like "%event_scheduler%"; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | ON | +--------

mysql知识点

限于喜欢 提交于 2019-11-26 10:29:13
sql注入问题 sql语句应该考虑哪些安全性问题 防止sql注入,对特殊字符进行过滤、转义或者使用预编译的sql语句绑定变量 当sql语句运行报错时,不要把数据库返回的错误信息全部显示给用户,以防止泄露服务器和数据库相关信息 sql注入 如果sql语句在拼接的情况下,使得查询永远成立,如拼接上 or '1'='1',会发生不安全问题 解决办法: 参数绑定:不拼接字符串,使用preparedStatement,参数使用set方法进行填装 检查变量的数据类型:如sql语句类似where id={$id},数据库中所有的id都是数字,那么在执行sql语句前,要保证ID是int类型 所有的sql语句都封装在存储过程中 存储过程 一些编译好的sql语句,这些sql语句代码向一个方法一样实现一些功能,然后再给这些代码块取一个名字,在用到这个功能的时候调用它即可。 优点 存储过程因为SQL 语句已经预编译过了,因此运行的速度比较快。 存储过程在服务器端运行,减少客户端的压力。 允许模块化程序设计,就是说只需要创建一次过程,以后在程序中就可以调用该过程任意次,类似方法的复用。 减少网络流量,客户端调用存储过程只需要传存储过程名和相关参数即可,与传输SQL 语句相比自然数据量少了很多。 增强了使用的安全性,充分利用系统管理员可以对执行的某一个存储过程进行权限限制,从而能够实现对某些数据访问的限制

MySQL千万级数据的查询优化

我是研究僧i 提交于 2019-11-26 08:25:43
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在 num 上设置默认值0,确保表中 num 列没有 null 值,然后这样查询: select id from t where num=0 。 应尽量避免在 where 子句中使用 != 或 < > 操作符,否则引擎将放弃使用索引而进行全表扫描。 应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20 。 in 和 not in 也要慎用,否则会导致全表扫描,如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3 。 下面的查询也将导致全表扫描: