MySQL中的while、repeat、loop循环
常量
数值
字符串:单引号或者双引号括起来。包括普通字符串或者日期格式的字符串。
布尔值:false(FALSE)对应数字值为0、true(TRUE)对应数字值为1。
NULL:可以参考http://www.cnblogs.com/-beyond/p/8554483.html
变量
定义用户变量
mysql中变量分为用户变量和系统变量。
用户变量要先定义和初始化赋值,否则变量的值为NULL。
用户变量只在本次连接阶段有效,其他用户的连接不能使用另外一个用户定义的变量,并且当连接释放后,变量就会销毁。
声明变量格式:set @key = value,可以一次性声明多个。
如果变量名中有特殊符号,那么可以用引号将变量名括起来,比如 set @'abc def' = 123;
访问用户变量
select @name;
系统变量
系统变量是以2个@@开头。
mysql> select @@version;
获得系统变量列表
mysql> show variables;
mysql> show variables like '%test%';
算数运算符
+ - * / %
+和-还可以用来计算日期;
mysql> select now(),now() + interval 22 day;
+---------------------+-------------------------+
| now() | now() + interval 22 day |
+---------------------+-------------------------+
| 2018-06-19 22:55:02 | 2018-07-11 22:55:02 |
+---------------------+-------------------------+
1 row in set (0.00 sec)
比较运算符
在mysql里面,判断等于只用一个等号=,不像其他编程语言一样使用双等或者三等。判断不等使用!=和<>。
其他比较运算符和其他编程语言一样使用。
逻辑运算符和位运算符
和其他语言一样。注意or比and的优先级低,所以在where子句中进行判断时,为了保证准确性,尽量使用()保证顺序。
选择判断
mysql的选择判断一般是使用case,格式如下:
case
when 条件1 then 表达式1
when 条件2 then 表达式2
else 表达式n
end
示例:
mysql> select id,name,
-> case
-> when price>10 then "expensive"
-> when price>0 then "cheap"
-> else "free"
-> end as level
-> from cate;
循环结构
while
delimiter $$
create procedure test_while()
begin
declare sum int default 0;
declare t int default 5;
while t>0 do
set sum=sum+1;
set t=t-1;
end while;
select sum;
end $$
delimiter ;
repeat
delimiter $$
create procedure _repeat()
begin
declare a int default 10;
repeat
set a=a-1;
until a<5
end repeat;
select a;
end $$
delimiter ;
注意使用repeat的时候,在判断条件(until 条件)的那一行句末不加分号,这个很容易出错!
loop
delimiter $$
create procedure test_loop()
begin
declare t int default 0;
label:loop
set t=t+1;
if t>10 then leave label;
end if;
end loop label;
select t;
end $$
delimiter ;
注意 loop 一般要和一个标签(此处为label,名称可以自定义,不过要保证前后一致)一起使用,且在 loop 循环中一定要有一个判断条件,能够满足在一定的条件下跳出 loop 循环(即 leave )!
存储过程
创建和使用存储过程
mysql> create procedure insert_into_two_table(in id int, in name char(30), out res char(10))
-> begin
-> insert into user values (id,name);
-> insert into person values (id, name);
-> set res = "success";
-> select res;
-> end $$
Query OK, 0 rows affected (0.00 sec) mysql> call insert_into_two_table(1,"aaaaa",@res);
+---------+
| res |
+---------+
| success |
+---------+
1 row in set (0.03 sec) mysql> select @res;
+---------+
| @res |
+---------+
| success |
+---------+
1 row in set (0.00 sec)
删除存储过程
mysql> drop procedure if exists insert_into_two_table;
存储函数
存储过程不能有输出参数;不用call调用,而是使用select来调用 ;必须包含return语句,存储过程不能有return。
delimiter $$
create function find_stu(s_id int)
returns boolean
begin
declare cnt int;
select id into cnt from user where id=s_id;
if cnt > 0 then
return true;
else
return false;
end if;
end $$
delimiter ;
测试:
mysql> select * from user;
+----+-------+
| id | name |
+----+-------+
| 1 | aaaaa |
+----+-------+
1 row in set (0.00 sec) mysql> select find_stu(1);
+-------------+
| find_stu(1) |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec) mysql> select find_stu(2);
+-------------+
| find_stu(2) |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)
删除函数
mysql> drop function if exists find_stu;
触发器
事件
MySQL中的while、repeat、loop循环的更多相关文章
- MySql中游标使用总是多循环一次的解决方法
CREATE DEFINER = 'root'@'%' PROCEDURE deyestest.procedure2() BEGIN DECLARE v_id INT; DECLARE v_userN ...
- MySQL 中的三中循环 while loop repeat 的基本用法
-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...
- MySQL中的三中循环 while 、 loop 、repeat 求 1~n 的和
-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和/* while循环语法:while 条件 DO 循环体 ...
- MySQL 中while loop repeat 的基本用法
-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...
- MySQL中 while loop repeat 的用法
-- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...
- MySQL学习笔记:repeat、loop循环
一.repeat循环 # ---- repeat ---- DELIMITER $$ CREATE PROCEDURE test_repeat() BEGIN ; REPEAT ; UNTIL a E ...
- MySql中循环的使用
一.while循环 语法:WHILE [条件] DO [逻辑] END WHILE; delimiter $$ DROP FUNCTION IF EXISTS `fn_findCharCount` $ ...
- MySQL中的循环
MySQL中的三中循环 while . loop .repeat 求 1-n 的和第一种 while 循环 : /* while循环语法: while 条件 DO 循环体; end while; */ ...
- PL/SQL中LOOP循环控制语句
在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...
随机推荐
- hg0088新2网址
封装通俗的说,就是我有一些秘密不想让人知道,就通过私有化变量和私有化方法,这样外界就访问不到了.hg0088新2网址然后如果你有一些很想让大家知道的东西,你就可以通过this创建的属性看作是对象共有属 ...
- 关于CDN下查找网站真实ip
关于CDN下查找网站真实ip From t00ls.net -----雨苁收集 杂乱无章,自己慢慢看,有问题加Q2359795780~~~~~~噗 先来几张t00lslogo ...
- 限制textarea输入内容长度(多浏览器兼容、鼠标操作可控)
限制textarea的输入内容长度,当从键盘输入,内容长度达到最大值时,只有输入Backspace.Delete.左移动.右移动有效,当用鼠标粘贴内容,则只保留最大值长度的内容.从而控制textare ...
- dstoon系统中学习
$r = $db->get_one("SELECT * FROM {$DT_PRE}company WHERE username='$pay_user'");注意:usern ...
- 6、HTML5表单提交和PHP环境搭建
---恢复内容开始--- 1.块元素 块元素在显示的时候,通常会以新行开始 如:<h1> <p> <ul> <!-- 块—>注释 <p>he ...
- [深度优先搜索] POJ 1426 Find The Multiple
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28550 Accepted: 118 ...
- HDU 4951 Multiplication table(2014 Multi-University Training Contest 8)
思路 如果进制为p 那么当x<p时 (p-1)*(p-x)=(p-(x+1)) *p +x 因为x<p 所以没有进位 所以高位上的数字为 p-(x+1). 根 ...
- 【转】MySQL中varchar最大长度是多少?
一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无 ...
- S3C6410开发板开发环境的搭建
本节主要介绍了S3C6410开发板及OK6410开发板.OK6410开发板是基于ARM11处理器的S3C6410,采用“核心版+底板”结构 主要步骤如下:. OK6410开发板自带一个串口,PC也需要 ...
- java 中的SimpleDateFormat、Date函数以及字符串和Date类型互转
SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本).解析(文本 -> 日期)和规范化. SimpleDateFor ...