内容提要
• if函数
• case语句
Mysql系列的⽬标是:通过这个系列从⼊门到全⾯掌握⼀个⾼级开发所需要的全部技能。• if结构
• while循环
• repeat循环
• loop循环
• 循环体控制语句
准备数据
/*建库javacode2018*/
drop database if exists javacode2018;
create database javacode2018;
/*切换到javacode2018库*/
use javacode2018;
/*创建表:t_user*/
DROP TABLE IF EXISTS t_user;
CREATE TABLE t_user(
id int PRIMARY KEY COMMENT '编号',
sex TINYINT not null DEFAULT 1 COMMENT '性别,1:男,2:⼥',
name VARCHAR(16) not NULL DEFAULT '' COMMENT '姓名'
)COMMENT '⽤户表';
/*插⼊数据*/
INSERT INTO t_user VALUES
(1,1,'路⼈甲Java'),(2,1,'张学友'),(3,2,'王祖贤'),(4,1,'郭富城'),(5,2,'李嘉
欣');
SELECT * FROM t_user;
DROP TABLE IF EXISTS test1;
CREATE TABLE test1 (a int not null);
DROP TABLE IF EXISTS test2;
CREATE TABLE test2 (a int not null,b int NOT NULL );if函数
语法
if(条件表达式,值1,值2);
if函数有3个参数。
当参数1为true的时候,返回值1,否则返回值2。
示例
需求:查询t_user表数据,返回:编号、性别(男、⼥)、姓名。
分析⼀下:数据库中性别⽤数字表⽰的,我们需要将其转换为(男、⼥),可以
使⽤if函数。
mysql> SELECT id 编号,if(sex=1,'男','⼥') 性别,name 姓名 FROM t_user;
+--------+--------+---------------+
| 编号 | 性别 | 姓名 |
+--------+--------+---------------+
| 1 | 男 | 路⼈甲Java |
| 2 | 男 | 张学友 |
| 3 | ⼥ | 王祖贤 |
| 4 | 男 | 郭富城 |
| 5 | ⼥ | 李嘉欣 |
+--------+--------+---------------+
5 rows in set (0.00 sec)
CASE结构
2种⽤法。
第1种⽤法
类似于java中的switch语句。
case 表达式
when 值1 then 结果1或者语句1(如果是语句需要加分号)
when 值2 then 结果2或者语句2
...else 结果n或者语句n
end [case] (如果是放在begin end之间需要加case,如果在select后则不需要)
示例1:select中使⽤
查询t_user表数据,返回:编号、性别(男、⼥)、姓名。
/*写法1:类似于java中的if else*/
SELECT id 编号,(CASE sex WHEN 1 THEN '男' ELSE '⼥' END) 性别,name 姓名
FROM t_user;
/*写法2:类似于java中的if else if*/
SELECT id 编号,(CASE sex WHEN 1 then '男' WHEN 2 then '⼥' END) 性
别,name 姓名 FROM t_user;
示例2:begin end中使⽤
写⼀个存储过程,接受3个参数:id,性别(男、⼥),姓名,然后插⼊到t_user
表