常量

  数值

  字符串:单引号或者双引号括起来。包括普通字符串或者日期格式的字符串。

  布尔值: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个@@开头。

  1. mysql> select @@version;

获得系统变量列表  

  1. mysql> show variables;
  2. mysql> show variables like '%test%';

 

 

算数运算符

  + - * / %

   +和-还可以用来计算日期;  

  1. mysql> select now(),now() + interval 22 day;
  2. +---------------------+-------------------------+
  3. | now() | now() + interval 22 day |
  4. +---------------------+-------------------------+
  5. | 2018-06-19 22:55:02 | 2018-07-11 22:55:02 |
  6. +---------------------+-------------------------+
  7. 1 row in set (0.00 sec)  

  

比较运算符

  在mysql里面,判断等于只用一个等号=,不像其他编程语言一样使用双等或者三等。判断不等使用!=和<>。

  其他比较运算符和其他编程语言一样使用。

逻辑运算符和位运算符

  和其他语言一样。注意or比and的优先级低,所以在where子句中进行判断时,为了保证准确性,尽量使用()保证顺序。

选择判断

  mysql的选择判断一般是使用case,格式如下:

  1. case
  2. when 条件1 then 表达式1
  3. when 条件2 then 表达式2
  4. else 表达式n
  5. end

  示例:

  1. mysql> select id,name,
  2. -> case
  3. -> when price>10 then "expensive"
  4. -> when price>0 then "cheap"
  5. -> else "free"
  6. -> end as level
  7. -> from cate;

  

循环结构

  while

  1. delimiter $$
  2. create procedure test_while()
  3. begin
  4. declare sum int default 0;
  5. declare t int default 5;
  6. while t>0 do
  7. set sum=sum+1;
  8. set t=t-1;
  9. end while;
  10. select sum;
  11. end $$
  12. delimiter ;

  

  repeat

  1. delimiter $$
  2. create procedure _repeat()
  3. begin
  4. declare a int default 10;
  5. repeat
  6. set a=a-1;
  7. until a<5
  8. end repeat;
  9. select a;
  10. end $$
  11. delimiter ;

  注意使用repeat的时候,在判断条件(until 条件)的那一行句末不加分号,这个很容易出错! 

  loop

  1. delimiter $$
  2. create procedure test_loop()
  3. begin
  4. declare t int default 0;
  5. label:loop
  6. set t=t+1;
  7. if t>10 then leave label;
  8. end if;
  9. end loop label;
  10. select t;
  11. end $$
  12. delimiter ;

注意 loop 一般要和一个标签(此处为label,名称可以自定义,不过要保证前后一致)一起使用,且在 loop 循环中一定要有一个判断条件,能够满足在一定的条件下跳出 loop 循环(即 leave )!

存储过程

  创建和使用存储过程

  1. mysql> create procedure insert_into_two_table(in id int, in name char(30), out res char(10))
  2. -> begin
  3. -> insert into user values (id,name);
  4. -> insert into person values (id, name);
  5. -> set res = "success";
  6. -> select res;
  7. -> end $$
  8. Query OK, 0 rows affected (0.00 sec)
  9.  
  10. mysql> call insert_into_two_table(1,"aaaaa",@res);
  11. +---------+
  12. | res |
  13. +---------+
  14. | success |
  15. +---------+
  16. 1 row in set (0.03 sec)
  17.  
  18. mysql> select @res;
  19. +---------+
  20. | @res |
  21. +---------+
  22. | success |
  23. +---------+
  24. 1 row in set (0.00 sec)

  删除存储过程

  1. mysql> drop procedure if exists insert_into_two_table;

  

  

存储函数

  存储过程不能有输出参数;不用call调用,而是使用select来调用 ;必须包含return语句,存储过程不能有return。

  1. delimiter $$
  2. create function find_stu(s_id int)
  3. returns boolean
  4. begin
  5. declare cnt int;
  6. select id into cnt from user where id=s_id;
  7. if cnt > 0 then
  8. return true;
  9. else
  10. return false;
  11. end if;
  12. end $$
  13. delimiter ;

  测试:

  1. mysql> select * from user;
  2. +----+-------+
  3. | id | name |
  4. +----+-------+
  5. | 1 | aaaaa |
  6. +----+-------+
  7. 1 row in set (0.00 sec)
  8.  
  9. mysql> select find_stu(1);
  10. +-------------+
  11. | find_stu(1) |
  12. +-------------+
  13. | 1 |
  14. +-------------+
  15. 1 row in set (0.00 sec)
  16.  
  17. mysql> select find_stu(2);
  18. +-------------+
  19. | find_stu(2) |
  20. +-------------+
  21. | 0 |
  22. +-------------+
  23. 1 row in set (0.00 sec)

  删除函数

  1. mysql> drop function if exists find_stu;

  

触发器

事件

MySQL中的while、repeat、loop循环的更多相关文章

  1. MySql中游标使用总是多循环一次的解决方法

    CREATE DEFINER = 'root'@'%' PROCEDURE deyestest.procedure2() BEGIN DECLARE v_id INT; DECLARE v_userN ...

  2. MySQL 中的三中循环 while loop repeat 的基本用法

    -- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...

  3. MySQL中的三中循环 while 、 loop 、repeat 求 1~n 的和

    -- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和/* while循环语法:while 条件 DO 循环体 ...

  4. MySQL 中while loop repeat 的基本用法

    -- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...

  5. MySQL中 while loop repeat 的用法

    -- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* while循环语法: while 条件 DO 循 ...

  6. MySQL学习笔记:repeat、loop循环

    一.repeat循环 # ---- repeat ---- DELIMITER $$ CREATE PROCEDURE test_repeat() BEGIN ; REPEAT ; UNTIL a E ...

  7. MySql中循环的使用

    一.while循环 语法:WHILE [条件] DO [逻辑] END WHILE; delimiter $$ DROP FUNCTION IF EXISTS `fn_findCharCount` $ ...

  8. MySQL中的循环

    MySQL中的三中循环 while . loop .repeat 求 1-n 的和第一种 while 循环 : /* while循环语法: while 条件 DO 循环体; end while; */ ...

  9. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

随机推荐

  1. Java IO教程

    1  Java IO 教程 2 Java IO 概述 3 Java IO: 文件 4 Java IO: 管道 5 Java IO: 网络 6 Java IO: 字节和字符数组 7 Java IO: S ...

  2. Windows Store App JavaScript 开发:选取文件和文件夹

    前面提到过,文件打开选取器由FileOpenPicker类表示,用于选取或打开文件,而文件夹选取器由FolderPicker类表示,用来选取文件夹.在FileOpenPicker类中,pickSing ...

  3. TabActivity 切换Activity界面

    TAB切换先上图,tab标题没有添加样式,因为setIndicator可以直接接收View,所以可以自己编辑样式: 也可以实现OnTabChangeListener监听tab的点击,改变tab点击后的 ...

  4. 解析Hibernate中的持久化—ORM(转载)

    最近一直在学习Hibernate,首先说一下Hibernate出现的原因吧,Hibernate是因为MVC的分层体系结构的出现,即数据持久层(模型层)的出现,持久层是在MVC三层架构的基础上提出来的, ...

  5. docker定制化镜像的构建及基于该定制的镜像创建容器

    1.在项目里创建Dockerfile(注意大小写)文件,执行构建命令:docker build -t tiny-node-1 /root/tiny-node-docker    其中tiny-node ...

  6. hadoop运行原理之Job运行(四) JobTracker端心跳机制分析

    接着上篇来说,TaskTracker端的transmitHeartBeat()方法通过RPC调用JobTracker端的heartbeat()方法来接收心跳并返回心跳应答.还是先看看这张图,对它的大概 ...

  7. 项目中常用的linux命令

    1. du -sm * | sort -n 把当前目录下的文件(或目录)按大小排序,看下哪个地方占用最多: 2. pwd                     获取当前目录路径 3. tail -f ...

  8. Maven搭建SSH环境

    一.新建maven项目 选中maven-aechetype-webapp group Id一般为公司域 :Artifact Id相当于项目名称 :version不需要更改:Package不使用默认,手 ...

  9. Plupload上传组件 + javaweb实现上传源码以及DEMO

    Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件: 上网找了很多Plupload的DEMO都无法正常使用, 而且Pluploa ...

  10. gnome3.X添加开机启动项

    背景:升级gnome后发现gnome-session-properties不见了,想把sslocal随机启动遇到了麻烦... 特别说明:此为图形桌面开机启动项,因此只有通过图形桌面登陆用户后才能启动. ...