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 ...
随机推荐
- Java IO教程
1 Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: S ...
- Windows Store App JavaScript 开发:选取文件和文件夹
前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSing ...
- TabActivity 切换Activity界面
TAB切换先上图,tab标题没有添加样式,因为setIndicator可以直接接收View,所以可以自己编辑样式: 也可以实现OnTabChangeListener监听tab的点击,改变tab点击后的 ...
- 解析Hibernate中的持久化—ORM(转载)
最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的, ...
- docker定制化镜像的构建及基于该定制的镜像创建容器
1.在项目里创建Dockerfile(注意大小写)文件,执行构建命令:docker build -t tiny-node-1 /root/tiny-node-docker 其中tiny-node ...
- hadoop运行原理之Job运行(四) JobTracker端心跳机制分析
接着上篇来说,TaskTracker端的transmitHeartBeat()方法通过RPC调用JobTracker端的heartbeat()方法来接收心跳并返回心跳应答.还是先看看这张图,对它的大概 ...
- 项目中常用的linux命令
1. du -sm * | sort -n 把当前目录下的文件(或目录)按大小排序,看下哪个地方占用最多: 2. pwd 获取当前目录路径 3. tail -f ...
- Maven搭建SSH环境
一.新建maven项目 选中maven-aechetype-webapp group Id一般为公司域 :Artifact Id相当于项目名称 :version不需要更改:Package不使用默认,手 ...
- Plupload上传组件 + javaweb实现上传源码以及DEMO
Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件: 上网找了很多Plupload的DEMO都无法正常使用, 而且Pluploa ...
- gnome3.X添加开机启动项
背景:升级gnome后发现gnome-session-properties不见了,想把sslocal随机启动遇到了麻烦... 特别说明:此为图形桌面开机启动项,因此只有通过图形桌面登陆用户后才能启动. ...