知识点四:MySQL流程控制语句(7-10)

选择语句:

  (IF ELSE ELSE IF CASE 分支)IFNULL函数

IF语法:

语法规则:

IF search_condition THEN statmen_list ;

[SLSEIF search_condition THEN statmen_list];

ELSE statmen_list;

END IF;

 --7 流程控制语句之选择语句
DELIMITER //
CREATE PROCEDURE p_test7(IN age INT)
BEGIN
IF age >=18 THEN SELECT '成年人';
ELSE SELECT '未成年人';
END IF;
END
// DELIMITER ;
SET @age =4;
CALL p_test7(@age); SELECT @age; DELIMITER //
CREATE PROCEDURE p_test8(IN age INT)
BEGIN
IF age >=18 AND age < 60 THEN SELECT '成年人';
ELSEIF age >= 60 THEN SELECT '老年人';
ELSE SELECT '未成年人';
END IF;
END
// DELIMITER ;
SET @age =60;
CALL p_test8(@age); SELECT @age;

IF语句测试

CASE语法

CASE语句也用来进行条件判断,其可以实现比IF语句更复杂的条件判断。

CASE语法的基本形势如下:
            CASE case_value

WHEN when_value THEN
statement_list;

[WHEN when_value THEN
statement_list];…;

[ELSE statement_list];

END CASE;

 --8 流程控制语句之选择语句CASE分支

 --默认数据(创建工资表)
CREATE DATABASE mzjj;
USE mzjj; CREATE TABLE salaries(
emp_no INT KEY NOT NULL AUTO_INCREMENT,
salary INT,
from_data DATE DEFAULT '2015-04-01',
to_data DATE DEFAULT '2015-05-01'
)AUTO_INCREMENT=1001; DELIMITER //
CREATE PROCEDURE p_addsalary(IN v_empno INT)
BEGIN
DECLARE addS int;
CASE v_empno
WHEN 1001 THEN SET addS = 1500;
WHEN 1002 THEN SET addS = 2500;
WHEN 1003 THEN SET addS = 3500;
ELSE SET adds =1000;
END CASE;
UPDATE salaries SET salary = addS WHERE emp_no= v_empno;
END
// DELIMITER ;
SET @v_empno =1001;
CALL p_addsalary(@v_empno); SELECT @v_empno; --默认数据(创建员工信息表)
CREATE TABLE employees(
emp_no INT KEY NOT NULL AUTO_INCREMENT,
birth_data DATE DEFAULT '2015-04-01',
first_name VARCHAR(20),
last_name VARCHAR(20),
gender ENUM('M','F'),
hire_data DATE DEFAULT '2015-05-01'
)AUTO_INCREMENT=1001; SELECT emp_no,first_name,last_name,
(CASE gender WHEN 'M' THEN '男'ELSE '女' END) AS '性别' FROM employees;

CASE语句测试

   IFNULL函数:

用法:
            IFNULL(exp1,exp2)

如果exp1是NULL则返回exp2;否则返回exp1;

示例:
            SELECT IFNULL(null,'不是空');

SELECT IFNULL(123,'不是空');

 --测试IFNULL函数
UPDATE employees SET first_name=NULL WHERE emp_no =1001;
SELECT IFNULL(first_name,'无名字') FROM employees;

IFNULL函数测试

循环语句:

WHILE语句:

语法规则:

WHILE 条件 DO

内容

END WHILE;

 --9 流程控制(WHILE循环语句)
--计算1加到100
DELIMITER //
CREATE PROCEDURE p_addnum()
BEGIN
DECLARE i int DEFAULT 1;
DECLARE addresult int DEFAULT 0;
WHILE i<= 100 DO
SET addresult = addresult +i;
SET i = i+1;
END WHILE;
SELECT addresult;
END
// DELIMITER ;
CALL p_addnum(); --向表中加入1000条数据
DELIMITER //
CREATE PROCEDURE p_insertEmp()
BEGIN
DECLARE maxempno int DEFAULT 0;
DECLARE i int DEFAULT 1;
WHILE i<= 1000 DO
SELECT MAX(emp_no) into maxempno FROM employees;
SET maxempno = maxempno+1;
INSERT INTO employees(emp_no,birth_data, first_name,last_name, gender,hire_data)
VALUES(maxempno,'1990-1-1','jim','ju','M','2000-1-1');
SET i =i+1;
END WHILE;
END
// DELIMITER ;
CALL p_insertEmp();

WHILE语句测试

 --任务作业
--更新编号为偶数的gender字段为M DELIMITER //
CREATE PROCEDURE changeEmp()
BEGIN DECLARE maxempno int DEFAULT 0;
DECLARE sex VARCHAR(2) DEFAULT 'M';
DECLARE minempno int DEFAULT 1;
SELECT MAX(emp_no) into maxempno FROM employees;
SELECT MIN(emp_no) into minempno FROM employees;
WHILE minempno <= maxempno DO
CASE minempno%2
WHEN 0 THEN SET sex = 'M';
ELSE SET sex = 'M';
END CASE;
UPDATE employees SET gender = sex WHERE emp_no= minempno;
SET minempno =minempno+1 ;
END WHILE;
END
//
DELIMITER ;
CALL changeEmp(); SELECT * FROM employees; DELIMITER //
CREATE PROCEDURE changeEmp2()
BEGIN DECLARE maxempno int DEFAULT 0;
DECLARE minempno int DEFAULT 1;
SELECT MAX(emp_no) into maxempno FROM employees;
SELECT MIN(emp_no) into minempno FROM employees;
WHILE minempno <= maxempno DO
IF minempno%2=0 THEN UPDATE employees SET gender = 'F' WHERE emp_no= minempno;
END IF;
SET minempno =minempno+1 ;
END WHILE;
END
//
DELIMITER ;
CALL changeEmp2();

任务作业

   REPEAT语句:

语法规则:

REPEAT

内容

UNTIL 条件   //推出循环的条件

END REPEAT;

 --rapeat测试
DELIMITER //
CREATE PROCEDURE changeEmp1()
BEGIN DECLARE maxempno int DEFAULT 0;
DECLARE sex VARCHAR(2) DEFAULT 'M';
DECLARE minempno int DEFAULT 1;
SELECT MAX(emp_no) into maxempno FROM employees;
SELECT MIN(emp_no) into minempno FROM employees;
REPEAT
if minempno%2 =0 then update employees SET gender='F' WHERE emp_no = minempno;
END IF;
SET minempno = minempno+1;
UNTIL minempno>maxempno
END REPEAT;
END
//
DELIMITER ;
CALL changeEmp1();

REPEAT语句测试

    LOOP语句:

语法规则:

LOOP名字:LOOP

内容

IF 条件 THEN

LEAVE LOOP名字;

END IF;

END LOOP;

 --loop测试
DELIMITER //
CREATE PROCEDURE changeEmp3() BEGIN
DECLARE maxempno int DEFAULT 0;
DECLARE minempno int DEFAULT 1;
SELECT MAX(emp_no) into maxempno FROM employees;
SELECT MIN(emp_no) into minempno FROM employees; myloop:loop
if minempno%2 =1 then update employees SET hire_data='1900-12-11' WHERE emp_no = minempno;
END IF;
SET minempno = minempno+1;
IF minempno>maxempno THEN LEAVE myloop;
END IF;
END loop;
END
// DELIMITER ;
CALL changeEmp3();

LOOP语句测试

MYSQL进阶学习笔记三:MySQL流程控制语句!(视频序号:进阶_7-10)的更多相关文章

  1. MYSQL初级学习笔记三:数据的操作DML!(视频序号:初级_24,25,36)

    知识点五:数据的操作DML(24,25,36) 插入数据: --测试插入记录INSERT CREATE TABLE IF NOT EXISTS user13( id TINYINT UNSIGNED ...

  2. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  3. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  4. 基于【 MySql 】二 || mysql详细学习笔记

    mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. SQLMAP学习笔记2 Mysql数据库注入

    SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...

  8. ref:学习笔记 UpdateXml() MYSQL显错注入

    ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...

  9. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. poj 2987 Firing

    Firing Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 10696   Accepted: 3226 Descript ...

  2. hihocoder #1290 : Demo Day

    传送门 #1290 : Demo Day 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You work as an intern at a robotics star ...

  3. android 活动

    一.Activity 声明周期 1 创建 把页面上的个元素加载到内存 onCreate 2 开始 把页面显示到屏幕 onStart 3 恢复 让页面在屏幕活动 onResume 4 暂停 停止页面动作 ...

  4. 王垠:完全用Linux工作 (2003)

    完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果你只需要处理一般的事务, ...

  5. java 文件复制操作

    本案例采用第三方 jar 包完成,commons-io-2.5.jar, 这个 jar 对文件操作非常方便,大家可以尝试使用一下. 这里贴一个简单的 demo 供大家使用 import java.io ...

  6. ubuntu下U盘变为只读

    原文地址:http://www.cnblogs.com/coding-way/p/4243331.html 首先执行命令: tail -f /var/log/syslog 然后插入有问题的U盘,tai ...

  7. Redis数据库No-SQL的介绍安装和使用

    Redis安装步骤 1.官网下载Redis压缩包http://download.redis.io/releases/redis-5.0.2.tar.gz,然后将下载的redis上传到虚拟机的/usr/ ...

  8. JQuery select 编程时选中原有的值

    js 此为核心代码 $(document).ready(function(){ $("#carTypeId").attr("value",'${carInfo. ...

  9. (转) go Cron的使用

    Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...

  10. 内核调试 SystemTap

    http://www.cnblogs.com/wangkangluo1/archive/2012/06/26/2562971.html   相关技术:utrace, probe, ftrace, dt ...