mysql_存储过程教程、实例
mysql存储过程实例附答案

存储过程与存储函数概念题1 存储过程与存储函数的概念2 存储过程与存储函数联系与区别实践题在teacher表上创建名为teacher_info1的存储过程,要求:teacher_info1有3个参数。
输入参数为teacher_id和type,输出参数为info。
存储过程的作用是根据编号teacher_id 来查询teacher表中的记录。
如果type的值为1时,将姓名name传给输出参数info;如果type的值为2时,将年龄传给输出参数info;如果type的值为其他值,则返回字符串”Error”。
Teacher表的定义如下所示Teacher表的定义需要插入到teacher表的记录步骤1 创建teacher表并插入记录2 创建存储过程teacher_info13 调用存储过程,teacher_id为2,type为14 删除存储过程。
概念题1 存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。
存储过程和函数可以避免开发人员重复的编写相同的SQL 语句。
而且,存储过程和函数是在MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输。
2 存储过程与存储函数一样,都是由sql语句和过程式语句所组成的代码片段,并且可以被应用程序和其他sql语句调用。
区别:存储函数不能拥有输出参数,因为存储函数自身就是输出参数;而存储过程可以拥有输出参数。
存储函数可以直接对存储函数进行调用,而不需要使用call语句;而对存储过程的调用,需要使用call语句。
存储函数中必须包含一条return语句,而这条特殊的sql语句不允许包含于存储过程中。
实践题1 CREATE TABLE teacher(id INT(4) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT,num INT(10) NOT NULL UNIQUE ,name VARCHAR(20) NOT NULL ,sex VARCHAR(4) NOT NULL ,birthday DATETIME ,address VARCHAR(50));INSERT INTO teacher VALUES(1, 1001, '张三','男' ,'1984-11-08' ,'北京市昌平区');INSERT INTO teacher VALUES(2, 1002, '李四','女' ,'1970-01-21' ,'北京市海淀区') ,(NULL, 1003, '王五','男' ,'1976-10-30' ,'北京市昌平区') ,(NULL, 1004, '赵六','男' ,'1980-06-05' ,'北京市顺义区') ;2 DELIMITER &&CREATE PROCEDUREteacher_info1(IN teacher_id INT, IN type INT,OUT info VARCHAR(20))READS SQL DATABEGINCASE typeWHEN 1 THENSELECT name INTO info FROM teacher WHERE id=teacher_id;WHEN 2 THENSELECT YEAR(NOW())-YEAR(birthday) INTO infoFROM teacher WHERE id=teacher_id;ELSESELECT ‘ERROR’ INTO info;END CASE;END &&DELIMITER ;3 CALL teacher_info1(2,1,@info);SELECT @info;4 DROP PROCEDURE teacher_info1;欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。
mysql查询存储过程sql语句

mysql查询存储过程sql语句MySQL查询存储过程是一种存储在MySQL服务器中的SQL代码段,可以被多个客户端多次调用。
它们被用来简化复杂的SQL查询,执行常见的任务,以及实现数据逻辑。
通过存储过程,我们可以在一次操作中,执行多个SQL语句和逻辑。
以下是一些MySQL查询存储过程SQL语句样例:创建存储过程:创建存储过程需要使用CREATE PROCEDURE语句。
以下是一个创建存储过程的示例:CREATE PROCEDURE GetCustomerOrders(IN customerId INT)CALL GetCustomerOrders(1234);存储过程中使用变量:可以在存储过程中声明变量,以便进行多次查询。
以下是一个在存储过程中使用变量的例子:SELECT orderTotal;END;IF orderStatus = 'pending' THENSELECT 'Order is pending';ELSEIF orderStatus = 'shipped' THENSELECT 'Order has shipped';ELSESELECT 'Order is complete';END IF;END;BEGINDECLARE orderId INT;DECLARE i INT DEFAULT 1;DECLARE idListLength INT;DECLARE idList VARCHAR(255);SET i = i + 1;END WHILE;END;OPEN orderCursor;以上是一些MySQL查询存储过程SQL语句的样例。
存储过程在开发过程中可以节省很多代码和时间,提高了开发效率,并且可以增强SQL的灵活性和可重复性。
MySQL自定义函数和存储过程示例详解

MySQL⾃定义函数和存储过程⽰例详解前⾔本⽂主要给⼤家介绍的是关于MySQL⾃定义函数和存储过程的相关内容,分享出来供⼤家参考学习,下⾯话不多说了,来⼀起看看详细的介绍吧1、前置条件MySQL数据库中存在表user_info,其结构和数据如下:mysql> desc user_info;+-----------+----------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-----------+----------+------+-----+---------+-------+| id | int(10) | NO | PRI | NULL | || name | char(20) | NO | | NULL | || passwd | char(40) | NO | | NULL | || email | char(20) | NO | | NULL | || phone | char(20) | NO | | NULL | || role | char(10) | NO | | NULL | || sex | char(10) | NO | | NULL | || status | int(10) | NO | | NULL | || createAt | datetime | NO | | NULL | || exprAt | datetime | NO | | NULL | || validDays | int(10) | NO | | NULL | || delAt | datetime | YES | | NULL | |+-----------+----------+------+-----+---------+-------+12 rows in set (0.10 sec)mysql> select * from user_info;+----+--------------+----------+------------+-------------+--------+------+--------+---------------------+---------------------+-----------+-------+| id | name | passwd | email | phone | role | sex | status | createAt | exprAt | validDays | delAt |+----+--------------+----------+------------+-------------+--------+------+--------+---------------------+---------------------+-----------+-------+| 1 | StephenWang7 | py123456 | 123@ | 151******** | admin | male | 200 | 2019-04-12 20:11:30 | 2019-04-19 20:11:30 | 30 | NULL || 2 | StephenWang8 | 123456 | 123@ | 151******** | viewer | male | 200 | 2019-04-12 20:11:30 | 2019-04-19 20:11:30 | 30 | NULL |+----+--------------+----------+------------+-------------+--------+------+--------+---------------------+---------------------+-----------+-------+2 rows in set (0.00 sec)2、⾃定义函数函数:可以完成特定功能的⼀段SQL集合。
mysql存储过程删除数据的方法

在MySQL中,你可以使用存储过程来删除数据。
存储过程是一组预编译的SQL语句,可以在数据库中进行存储和调用。
以下是一个示例,展示如何使用存储过程删除数据:在这个示例中,我们创建了一个名为delete_data的存储过程。
它接受一个名为param_id的输入参数,用于指定要删除的记录的ID。
在存储过程的主体部分,我们使用DELETE FROM语句来删除指定ID的记录。
要调用这个存储过程并删除数据,你可以使用以下语句:将your_id替换为要删除的实际记录的ID。
请注意,这只是一个简单的示例,你需要根据你的实际需求进行适当的修改。
确保在删除数据之前备份你的数据,以防止意外删除。
MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等

view plaincopy to clipboardprint?drop procedure if exists pro_rep_shadow_rs;delimiter |------------------------------------ rep_shadow_rs-- 用来处理信息的增加,更新和删除-- 每次只更新上次以来没有做过的数据-- 根据不同的标志位-- 需要一个输出的参数,-- 如果返回为0,则调用失败,事务回滚-- 如果返回为1,调用成功,事务提交---- 测试方法-- call pro_rep_shadow_rs(@rtn);-- select @rtn;----------------------------------create procedure pro_rep_shadow_rs(out rtn int)begin-- 声明变量,所有的声明必须在非声明的语句前面declare iLast_rep_sync_id int default -1;declare iMax_rep_sync_id int default -1;-- 如果出现异常,或自动处理并rollback,但不再通知调用方了-- 如果希望应用获得异常,需要将下面这一句,以及启动事务和提交事务的语句全部去掉declare exit handler for sqlexception rollback;-- 查找上一次的select eid into iLast_rep_sync_id from rep_de_proc_log where tbl='rep_shadow_rs';-- 如果不存在,则增加一行if iLast_rep_sync_id=-1 theninsert into rep_de_proc_log(rid,eid,tbl) values(0,0,'rep_shadow_rs');set iLast_rep_sync_id = 0;end if;-- 下一个数字set iLast_rep_sync_id=iLast_rep_sync_id+1;-- 设置默认的返回值为0:失败set rtn=0;-- 启动事务start transaction;-- 查找最大编号select max(rep_sync_id) into iMax_rep_sync_id from rep_shadow_rs;-- 有新数据if iMax_rep_sync_id>=iLast_rep_sync_id then-- 调用call pro_rep_shadow_rs_do(iLast_rep_sync_id,iMax_rep_sync_id);-- 更新日志update rep_de_proc_log set rid=iLast_rep_sync_id,eid=iMax_rep_sync_id where tbl='rep_shadow_rs';end if;-- 运行没有异常,提交事务commit;-- 设置返回值为1set rtn=1;end;|delimiter ;drop procedure if exists pro_rep_shadow_rs_do;delimiter |----------------------------------- 处理指定编号范围内的数据-- 需要输入2个参数-- last_rep_sync_id 是编号的最小值-- max_rep_sync_id 是编号的最大值-- 无返回值---------------------------------create procedure pro_rep_shadow_rs_do(last_rep_sync_id int, max_rep_sync_id int) begindeclare iRep_operationtype varchar(1);declare iRep_status varchar(1);declare iRep_Sync_id int;declare iId int;-- 这个用于处理游标到达最后一行的情况declare stop int default 0;-- 声明游标declare cur cursor for select id,Rep_operationtype,iRep_status,rep_sync_id from rep_shadow_rs where rep_sync_id between last_rep_sync_id and max_rep_sync_id;-- 声明游标的异常处理,设置一个终止标记declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop=1;-- 打开游标open cur;-- 读取一行数据到变量fetch cur into iId,iRep_operationtype,iRep_status,iRep_Sync_id;-- 这个就是判断是否游标已经到达了最后while stop <> 1 do-- 各种判断if iRep_operationtype='I' theninsert into rs0811 (id,fnbm) select id,fnbm from rep_shadow_rs where rep_sync_id=iRep_sync_id;elseif iRep_operationtype='U' thenbeginif iRep_status='A' theninsert into rs0811 (id,fnbm) select id,fnbm from rep_shadow_rs where rep_sync_id=iRep_sync_id;elseif iRep_status='B' thendelete from rs0811 where id=iId;end if;end;elseif iRep_operationtype='D' thendelete from rs0811 where id=iId;end if;-- 读取下一行的数据fetch cur into iId,iRep_operationtype,iRep_status,iRep_Sync_id;end while; -- 循环结束close cur; -- 关闭游标end;|。
如何使用MySQL存储过程

如何使用MySQL存储过程随着数据量的不断增长以及复杂的业务逻辑需求,使用存储过程成为了数据库开发中的一个重要工具。
MySQL作为一种常用的关系型数据库,也提供了存储过程的支持。
本文将从存储过程的概念、创建和调用等方面展开,探讨如何使用MySQL存储过程优化数据库开发。
一、存储过程概述存储过程是一组预编译的SQL语句的集合,类似于函数,可以接受输入参数、执行查询以及返回结果等操作。
相比于单独执行SQL语句,存储过程可以提高数据库性能,减少网络流量,并简化复杂的SQL操作。
二、创建存储过程MySQL中创建存储过程需要使用CREATE PROCEDURE语句。
下面以一个简单的示例来说明如何创建存储过程。
```DELIMITER //CREATE PROCEDURE GetOrderCountByCustomer(IN customerName VARCHAR(50), OUT orderCount INT)BEGINSELECT COUNT(*) INTO orderCount FROM orders WHERE customer_name = customerName;END //DELIMITER ;```上述示例的存储过程名为GetOrderCountByCustomer,接受一个输入参数customerName和一个输出参数orderCount。
该存储过程根据输入的customerName统计订单数量,并将结果保存到orderCount中。
在创建存储过程时,需要注意以下几点:1. 使用DELIMITER语句设置分隔符。
由于存储过程中可能包含多个SQL语句,为了区分每个语句的结束,需要先设置分隔符。
示例中使用//作为分隔符。
2. 创建存储过程的语法为CREATE PROCEDURE。
在示例中,创建存储过程的语句为CREATE PROCEDURE GetOrderCountByCustomer。
mysql存储过程学习(一)
mysql存储过程学习(⼀)转载⼀、存储过程介绍: 存储过程(Stored Procedure)是⼀组为了完成特定功能的SQL 语句集,经编译后存储在数据库。
⽤户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执⾏它。
1.存储过程只在创造时进⾏编译,以后每次执⾏存储过程都不需再重新编译,⽽⼀般SQL 语句每执⾏⼀次就编译⼀次,所以使⽤存储过程可提⾼数据库执⾏速度。
2.当对数据库进⾏复杂操作时(如对多个表进⾏Update,Insert,Select,Delete时),可将此复杂操作⽤存储过程封装起来与数据库提供的事务处理结合⼀起使⽤。
3.存储过程可以重复使⽤,可减少数据库开发⼈员的⼯作量。
4.安全性⾼,可设定只有某个⽤户才具有对指定存储过程的使⽤权。
⼆、使⽤存储过程的优缺点:相对于直接使⽤SQL 语句,在应⽤程序中直接调⽤存储过程有以下好处: 1.减少⽹络通信量:调⽤⼀个⾏数不多的存储过程与直接调⽤SQL 语句的⽹络通信量可能不会有很⼤的差别,可是如果存储过程包含上百⾏SQL 语句,那么其性能绝对⽐⼀条⼀条的调⽤SQL 语句要⾼得多。
2.执⾏速度更快:有两个原因:⾸先,在存储过程创建的时候,数据库已经对其进⾏了⼀次解析和优化。
其次,存储过程⼀旦执⾏,在内存中就会保留⼀份这个存储过程,这样下次再执⾏同样的存储过程时,可以从内存中直接调⽤。
3.更强的适应性:由于存储过程对数据库的访问是通过存储过程来进⾏的,因此数据库开发⼈员可以在不改动存储过程接⼝的情况下对数据库进⾏任何改动,⽽这些改动不会对应⽤程序造成影响。
4.分布式⼯作:应⽤程序和数据库的编码⼯作可以分别独⽴进⾏,⽽不会相互压制。
5.可以防⽌sql注⼊。
缺点: 1.如果更改范围⼤到需要对输⼊存储过程的参数进⾏更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新GetValue() 调⽤,等等,这时候估计⽐较繁琐了。
MySQL存储过程的深入讲解(in、out、inout)
MySQL存储过程的深⼊讲解(in、out、inout)⼀、简介从 5.0 版本才开始⽀持,是⼀组为了完成特定功能的SQL语句集合(封装),⽐传统SQL速度更快、执⾏效率更⾼。
存储过程的优点1、执⾏⼀次后,会将⽣成的⼆进制代码驻留缓冲区(便于下次执⾏),提⾼执⾏效率2、SQL语句加上控制语句的集合,灵活性⾼3、在服务器端存储,客户端调⽤时,降低⽹络负载4、可多次重复被调⽤,可随时修改,不影响客户端调⽤5、可完成所有的数据库操作,也可控制数据库的信息访问权限为什么要⽤存储过程?1.减轻⽹络负载;2.增加安全性⼆、创建存储过程2.1 创建基本过程使⽤create procedure语句创建存储过程存储过程的主体部分,被称为过程体;以begin开始,以end$$结束#声明语句结束符,可以⾃定义:delimiter $$#声明存储过程create procedure 存储过程名(in 参数名参数类型)begin#定义变量declare 变量名变量类型#变量赋值set 变量名 = 值sql 语句1;sql 语句2;...end$$#恢复为原来的语句结束符delimiter ;(有空格)实例:mysql> delimiter $$mysql> create procedure text()-> begin-> select * from stu.a_player;-> end $$Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;调⽤存储过程call 存储过程名(实际参数);mysql> call text;+----+----------+-------+| id | name | score |+----+----------+-------+| 1 | zhangsan | 88 || 2 | lisi | 89 || 3 | wangwu | 67 || 4 | zhaoliu | 90 || 5 | xuli | 80 || 6 | keke | 75 |+----+----------+-------+6 rows in set (0.00 sec)删除存储过程mysql> drop procedure text;2.2 存储过程的参数MySQL存储过程的参数⽤在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:CREATEPROCEDURE 存储过程名([[IN |OUT |INOUT ] 参数名数据类形...])IN 输⼊参数:表⽰调⽤者向过程传⼊值(传⼊值可以是字⾯量或变量)OUT 输出参数:表⽰过程向调⽤者传出值(可以返回多个值)(传出值只能是变量)INOUT 输⼊输出参数:既表⽰调⽤者向过程传⼊值,⼜表⽰过程向调⽤者传出值(值只能是变量)传递参数实例:INmysql> create procedure test1(in in_id int(2))-> begin-> select * from stu.a_player where id=in_id;-> end $$Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;#将4传递给in_id变量,执⾏事务mysql> call test1(4);+----+---------+-------+| id | name | score |+----+---------+-------+| 4 | zhaoliu | 90 |+----+---------+-------+1 row in set (0.00 sec)#将6传递给in_id变量,执⾏事务mysql> call test1(6);+----+------+-------+| id | name | score |+----+------+-------+| 6 | keke | 75 |+----+------+-------+1 row in set (0.00 sec)OUTmysql> delimiter $$mysql> create procedure test2(out aa int)-> begin-> select aa;-> set aa=2;-> select aa;-> end $$Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;#将@aa变量传递给test2 事务mysql> call test2(@aa);+------+| aa |+------+| NULL |+------+#out向调⽤者输出参数,不接收输⼊的参数,所以aa为null1 row in set (0.00 sec)+------+| aa |+------+| 2 |+------+事务将aa变量设置为2(设置的是全局),则可进⾏输出1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql> select @aa;+------+| @aa |+------+| 2 |+------+1 row in set (0.00 sec)#事务外查询变量,已经被修改IN 、OUT、 INOUT 对⽐mysql> delimiter //mysql> create procedure test3(in num1 int,out num2 int,inout num3 int)-> begin-> select num1,num2,num3;-> set num1=10,num2=20,num3=30;-> select num1,num2,num3;-> end //Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> call test3(@num1,@num2,@num3);+------+------+------+| num1 | num2 | num3 |+------+------+------+| 1 | NULL | 3 |+------+------+------+1 row in set (0.00 sec)+------+------+------+| num1 | num2 | num3 |+------+------+------+| 10 | 20 | 30 |+------+------+------+1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)in和inout参数会将全局变量的值传⼊存储过程中,⽽out参数不会将全局变量的值传⼊存储过程中。
如何使用MySQL存储过程实现批量操作
如何使用MySQL存储过程实现批量操作引言MySQL是一种广泛使用的关系数据库管理系统,其强大的功能和灵活性使其成为开发者们首选的数据库之一。
在数据库操作中,批量操作是提高效率和性能的重要手段之一。
本文将介绍如何使用MySQL存储过程实现批量操作,以帮助开发者们更好地利用MySQL的功能。
1. 存储过程简介存储过程是一组为了完成特定功能的SQL语句集合,可以在数据库中进行定义和存储。
它可以接受参数传入,并且可以返回一个或多个结果。
存储过程的优势在于可以减少网络通信开销,提高性能,并且可以重复使用。
2. 创建存储过程要使用MySQL存储过程实现批量操作,首先需要创建存储过程。
下面是一个创建存储过程的示例:```sqlDELIMITER //CREATE PROCEDURE batch_operation()BEGIN-- 批量插入INSERT INTO table_name (column1, column2) VALUES (value1, value2);INSERT INTO table_name (column1, column2) VALUES (value3, value4);-- 批量更新UPDATE table_name SET column1 = value1 WHERE condition1;UPDATE table_name SET column1 = value2 WHERE condition2;-- 批量删除DELETE FROM table_name WHERE condition1;DELETE FROM table_name WHERE condition2;END //DELIMITER ;```以上示例中的存储过程包含了批量插入、批量更新和批量删除的操作。
根据实际需求,可以根据此模板进行修改和扩展。
3. 调用存储过程在创建存储过程后,可以通过调用存储过程来实现批量操作。
mysql的存储过程和函数
mysql的存储过程和函数MySQL的存储过程和函数是数据库中非常重要的两个概念,它们可以帮助我们更加高效地管理和操作数据库。
在本文中,我们将详细介绍MySQL的存储过程和函数,包括它们的定义、使用方法以及优缺点等方面。
一、MySQL的存储过程1. 定义MySQL的存储过程是一组预编译的SQL语句,它们被存储在数据库中,并可以被多次调用。
存储过程可以接受参数,并且可以返回结果集或者输出参数。
2. 使用方法创建存储过程的语法如下:CREATE PROCEDURE procedure_name ([IN|OUT|INOUT] parameter_name data_type [, ...])BEGIN-- 存储过程的SQL语句END;其中,procedure_name是存储过程的名称,parameter_name是存储过程的参数名称,data_type是参数的数据类型。
IN表示输入参数,OUT表示输出参数,INOUT表示既是输入参数又是输出参数。
调用存储过程的语法如下:CALL procedure_name ([parameter_value, ...]);其中,procedure_name是存储过程的名称,parameter_value是存储过程的参数值。
3. 优缺点存储过程的优点在于:(1)提高了数据库的性能,因为存储过程是预编译的,可以减少SQL语句的解析和编译时间。
(2)提高了数据库的安全性,因为存储过程可以控制对数据库的访问权限。
(3)提高了代码的可维护性,因为存储过程可以被多次调用,可以减少代码的重复性。
存储过程的缺点在于:(1)需要学习存储过程的语法和使用方法。
(2)存储过程的调试和测试比较困难。
二、MySQL的函数1. 定义MySQL的函数是一段预编译的代码,它们可以接受参数,并且可以返回一个值。
函数可以被多次调用,并且可以嵌套使用。
2. 使用方法创建函数的语法如下:CREATE FUNCTION function_name ([parameter_name data_type [, ...]])RETURNS return_typeBEGIN-- 函数的SQL语句END;其中,function_name是函数的名称,parameter_name是函数的参数名称,data_type是参数的数据类型,return_type是函数的返回值类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
mysql 5.0存储过程学习总结 一.创建存储过程 1.基本语法: create procedure sp_name() begin ……… end
2.参数传递 二.调用存储过程 1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
三.删除存储过程 1.基本语法: drop procedure sp_name// 2. 注意事项 (1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.区块,条件,循环 1.区块定义,常用 begin …… end; 也可以给区块起别名,如: lable:begin ……….. end lable; 可以用leave lable;跳出区块,执行区块以后的代码 2.条件语句 if 条件 then statement else statement end if ;
3.循环语句 (1).while循环
[ label: ] WHILE expression DO
statements END WHILE [ label ] ; (2).loop循环 [ label: ] LOOP
statements END LOOP [ label ] ; (3).repeat until循环 [ label: ] REPEAT
statements UNTIL expression END REPEAT [ label ] ; 五.其他常用命令 1.show procedure status 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等 2.show create procedure sp_name 显示某一个存储过程的详细信息
mysql存储过程中要用到的运算符 mysql存储过程学习总结-操作符 算术运算符 + 加 SET var1=2+2; 4 - 减 SET var2=3-2; 1 * 乘 SET var3=3*2; 6 / 除 SET var4=10/3; 3.3333 DIV 整除 SET var5=10 DIV 3; 3 % 取模 SET var6=10%3 ; 1
比较运算符 > 大于 1>2 False < 小于 2<1 False <= 小于等于 2<=2 True >= 大于等于 3>=2 True BETWEEN 在两值之间 5 BETWEEN 1 AND 10 True NOT BETWEEN 不在两值之间 5 NOT BETWEEN 1 AND 10 False IN 在集合中 5 IN (1,2,3,4) False NOT IN 不在集合中 5 NOT IN (1,2,3,4) True = 等于 2=3 False <>, != 不等于 2<>3 False <=> 严格比较两个NULL值是否相等 NULL<=>NULL True LIKE 简单模式匹配 "Guy Harrison" LIKE "Guy%" True REGEXP 正则式匹配 "Guy Harrison" REGEXP "[Gg]reg" False IS NULL 为空 0 IS NULL False IS NOT NULL 不为空 0 IS NOT NULL True
逻辑运算符 与 (AND)
AND TRUE FALSE NULL TRUE TRUE FALSE NULL FALSE FALSE FALSE NULL NULL NULL NULL NULL
或(OR)
OR TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NULL TRUE NULL NULL
异或(XOR)
XOR TRUE FALSE NULL TRUE FALSE TRUE NULL FALSE TRUE FALSE NULL NULL NULL NULL NULL
位运算符 | 位或 & 位与 << 左移位 >> 右移位 ~ 位非(单目运算,按位取反)
mysq存储过程中常用的函数,字符串类型操作,数学类,日期时间类。 mysql存储过程基本函数 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,... ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length个字符 LENGTH (string ) //string长度 LOAD_FILE (file_name ) //从文件读取内容 LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定开始位置 LPAD (string2 ,length ,pad ) //重复用pad加在string开头,直到字串长度为length LTRIM (string2 ) //去除前端空格 REPEAT (string2 ,count ) //重复count次 REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替换search_str RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length RTRIM (string2 ) //去除后端空格 STRCMP (string1 ,string2 ) //逐字符比较两字串大小, SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符, 注:mysql中处理字符串时,默认第一个字符下标为1 ,即参数position必须大于等于1 mysql> select substring(’abcd’,0,2); +———————–+ | substring(’abcd’,0,2) | +———————–+ | | +———————–+ 1 row in set (0.00 sec) mysql> select substring(’abcd’,1,2); +———————–+ | substring(’abcd’,1,2) | +———————–+ | ab | +———————–+ 1 row in set (0.02 sec)
TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符 UCASE (string2 ) //转换成大写 RIGHT(string2,length) //取string2最后length个字符 SPACE(count) //生成count个空格
二.数学类 ABS (number2 ) //绝对值 BIN (decimal_number ) //十进制转二进制 CEILING (number2 ) //向上取整 CONV(number2,from_base,to_base) //进制转换 FLOOR (number2 ) //向下取整 FORMAT (number,decimal_places ) //保留小数位数 HEX (DecimalNumber ) //转十六进制 注:HEX()中可传入字符串,则返回其ASC-11码,如 HEX(’DEF’)返回4142143 也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19 LEAST (number , number2 [,..]) //求最小值 MOD (numerator ,denominator ) //求余 POWER (number ,power ) //求指数 RAND([seed]) //随机数 ROUND (number [,decimals ]) //四舍五入,decimals为小数位数] 注:返回类型并非均为整数,如: (1)默认变为整形值 mysql> select round(1.23); +————-+ | round(1.23) | +————-+ | 1 | +————-+ 1 row in set (0.00 sec)
mysql> select round(1.56); +————-+ | round(1.56) | +————-+ | 2 | +————-+ 1 row in set (0.00 sec)
(2)可以设定小数位数,返回浮点型数据 mysql> select round(1.567,2); +—————-+ | round(1.567,2) |