MYSQL进阶学习笔记三:MySQL流程控制语句!(视频序号:进阶_7-10)
知识点四: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)的更多相关文章
- MYSQL初级学习笔记三:数据的操作DML!(视频序号:初级_24,25,36)
知识点五:数据的操作DML(24,25,36) 插入数据: --测试插入记录INSERT CREATE TABLE IF NOT EXISTS user13( id TINYINT UNSIGNED ...
- MYSQL学习笔记三:日期和时间函数
MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...
- MySql学习笔记三
MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...
- 基于【 MySql 】二 || mysql详细学习笔记
mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- SQLMAP学习笔记2 Mysql数据库注入
SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...
- ref:学习笔记 UpdateXml() MYSQL显错注入
ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- ElasticSearch索引自定义类型
ES可以自动检测字段并设置映射类型.如果设置的索引类型不是我们所需要的,我们可以自行定义. Rest API设置自定义索引 首先通过ES自动映射一个IP地址的字段的类型: <pre name=& ...
- centos 关于防火墙的命令
CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...
- java文本文件加密解密类
原文:http://www.open-open.com/code/view/1420031154765 import java.awt.*; import java.awt.event.*; impo ...
- SUPEROBJECT序列数据集为JSON
// SUPEROBJECT 序列数据集 cxg 2017-1-12// {"data":[{"c1":1,"c2":1}]};// DEL ...
- 一张图搞清楚PMBOK所有过程的使用
很多参加PMP培训的学员大概都会有一个感受,上课时似乎每个知识点都听懂了,大的知识框架也弄明白了,但是所有这些串起来在实践中怎么用呀!说的再直接一点,在考试的时候这些过程和活动是以怎样的逻辑来应用 ...
- 【CV知识学习】神经网络梯度与归一化问题总结+highway network、ResNet的思考
这是一篇水货写的笔记,希望路过的大牛可以指出其中的错误,带蒟蒻飞啊~ 一. 梯度消失/梯度爆炸的问题 首先来说说梯度消失问题产生的原因吧,虽然是已经被各大牛说烂的东西.不如先看一个简单的网络结构 ...
- BUPT复试专题—分数加法(2014网研)
题目描述 求2^-a + 2^-b,其中a和b均为正整数,结果用最简分数表示 输入 第一行为测试数据的组数T (1~400).请注意,任意两组测试数据之间相互独立的.每组测试数据一行,包含两个整数a和 ...
- Ubuntu Desktop 常用软件
IDE: eclipse ***: firefox,登陆账号可以同步书签,我用了全球账号. firefox插件:FireGestures(手势), NoSquint(全局缩放),Url to QRco ...
- 在Nginx上部署ThinkPHP,解决Pathinfo问题
在Nginx上部署ThinkPHP,解决Pathinfo问题 事实上.要解决nginx不支持pathinfo的问题.有两个解决思路,一是不使用pathinfo模式,二是改动nginx的配置文件,使它支 ...
- Multiple analytic account plans多辅助核算方案
定义核算方案 菜单 会计/设置/辅助核算会计/多个方案 点击"创建"按钮 说明 辅助核算方案,输入方案名称 点击"添加一个 ...