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;

 1 --7 流程控制语句之选择语句
 2 DELIMITER //
 3 CREATE PROCEDURE p_test7(IN age INT)
 4 BEGIN
 5     IF age >=18 THEN SELECT ‘成年人‘;
 6     ELSE SELECT ‘未成年人‘;
 7     END IF;
 8 END
 9 //
10
11 DELIMITER ;
12 SET @age =4;
13 CALL p_test7(@age);
14
15 SELECT @age;
16
17
18 DELIMITER //
19 CREATE PROCEDURE p_test8(IN age INT)
20 BEGIN
21     IF age >=18 AND  age < 60 THEN SELECT ‘成年人‘;
22     ELSEIF age >= 60 THEN SELECT ‘老年人‘;
23     ELSE SELECT ‘未成年人‘;
24     END IF;
25 END
26 //
27
28 DELIMITER ;
29 SET @age =60;
30 CALL p_test8(@age);
31
32 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;

 1 --8 流程控制语句之选择语句CASE分支
 2
 3 --默认数据(创建工资表)
 4 CREATE DATABASE mzjj;
 5 USE mzjj;
 6
 7 CREATE TABLE salaries(
 8 emp_no INT KEY NOT NULL AUTO_INCREMENT,
 9 salary INT,
10 from_data DATE DEFAULT ‘2015-04-01‘,
11 to_data DATE DEFAULT ‘2015-05-01‘
12 )AUTO_INCREMENT=1001;
13
14
15
16
17 DELIMITER //
18 CREATE PROCEDURE p_addsalary(IN v_empno INT)
19 BEGIN
20     DECLARE addS int;
21     CASE v_empno
22     WHEN 1001 THEN SET addS = 1500;
23     WHEN 1002 THEN SET addS = 2500;
24     WHEN 1003 THEN SET addS = 3500;
25     ELSE SET adds =1000;
26     END CASE;
27     UPDATE salaries SET  salary = addS WHERE emp_no= v_empno;
28 END
29 //
30
31 DELIMITER ;
32 SET @v_empno =1001;
33 CALL p_addsalary(@v_empno);
34
35 SELECT @v_empno;
36
37 --默认数据(创建员工信息表)
38 CREATE TABLE employees(
39 emp_no INT KEY NOT NULL AUTO_INCREMENT,
40 birth_data DATE DEFAULT ‘2015-04-01‘,
41 first_name VARCHAR(20),
42 last_name VARCHAR(20),
43 gender ENUM(‘M‘,‘F‘),
44 hire_data DATE DEFAULT ‘2015-05-01‘
45 )AUTO_INCREMENT=1001;
46
47 SELECT emp_no,first_name,last_name,
48 (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,‘不是空‘);

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

IFNULL函数测试

循环语句:

WHILE语句:

语法规则:

WHILE 条件 DO

内容

END WHILE;

 1 --9 流程控制(WHILE循环语句)
 2 --计算1加到100
 3 DELIMITER //
 4 CREATE PROCEDURE p_addnum()
 5 BEGIN
 6     DECLARE i int DEFAULT 1;
 7     DECLARE addresult int DEFAULT 0;
 8     WHILE i<= 100 DO
 9     SET addresult = addresult +i;
10     SET i = i+1;
11     END WHILE;
12     SELECT addresult;
13 END
14 //
15
16 DELIMITER ;
17 CALL p_addnum();
18
19 --向表中加入1000条数据
20 DELIMITER //
21 CREATE PROCEDURE p_insertEmp()
22 BEGIN
23     DECLARE maxempno int DEFAULT 0;
24     DECLARE i int DEFAULT 1;
25     WHILE i<= 1000 DO
26     SELECT MAX(emp_no) into maxempno FROM employees;
27     SET maxempno = maxempno+1;
28     INSERT INTO employees(emp_no,birth_data, first_name,last_name, gender,hire_data)
29         VALUES(maxempno,‘1990-1-1‘,‘jim‘,‘ju‘,‘M‘,‘2000-1-1‘);
30     SET i =i+1;
31     END WHILE;
32 END
33 //
34
35 DELIMITER ;
36 CALL p_insertEmp();

WHILE语句测试

 1 --任务作业
 2 --更新编号为偶数的gender字段为M
 3
 4 DELIMITER //
 5 CREATE PROCEDURE changeEmp()
 6 BEGIN
 7
 8     DECLARE maxempno int DEFAULT 0;
 9     DECLARE sex VARCHAR(2) DEFAULT ‘M‘;
10     DECLARE minempno int DEFAULT 1;
11     SELECT MAX(emp_no) into maxempno FROM employees;
12     SELECT MIN(emp_no) into minempno FROM employees;
13     WHILE minempno <= maxempno DO
14         CASE minempno%2
15         WHEN 0 THEN SET sex = ‘M‘;
16         ELSE SET sex = ‘M‘;
17         END CASE;
18     UPDATE employees SET  gender = sex WHERE emp_no= minempno;
19     SET minempno =minempno+1 ;
20     END WHILE;
21 END
22 //
23 DELIMITER ;
24 CALL changeEmp();
25
26 SELECT * FROM employees;
27
28 DELIMITER //
29 CREATE PROCEDURE changeEmp2()
30 BEGIN
31
32     DECLARE maxempno int DEFAULT 0;
33     DECLARE minempno int DEFAULT 1;
34     SELECT MAX(emp_no) into maxempno FROM employees;
35     SELECT MIN(emp_no) into minempno FROM employees;
36     WHILE minempno <= maxempno DO
37         IF minempno%2=0  THEN UPDATE employees SET  gender = ‘F‘ WHERE emp_no= minempno;
38         END IF;
39     SET minempno =minempno+1 ;
40     END WHILE;
41 END
42 //
43 DELIMITER ;
44 CALL changeEmp2();

任务作业

   REPEAT语句:

语法规则:

REPEAT

内容

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

END REPEAT;

 1 --rapeat测试
 2 DELIMITER //
 3 CREATE PROCEDURE changeEmp1()
 4 BEGIN
 5
 6     DECLARE maxempno int DEFAULT 0;
 7     DECLARE sex VARCHAR(2) DEFAULT ‘M‘;
 8     DECLARE minempno int DEFAULT 1;
 9     SELECT MAX(emp_no) into maxempno FROM employees;
10     SELECT MIN(emp_no) into minempno FROM employees;
11     REPEAT
12         if minempno%2 =0 then update employees SET gender=‘F‘ WHERE emp_no = minempno;
13         END IF;
14         SET minempno = minempno+1;
15         UNTIL minempno>maxempno
16     END REPEAT;
17 END
18 //
19 DELIMITER ;
20 CALL changeEmp1();

REPEAT语句测试

    LOOP语句:

语法规则:

LOOP名字:LOOP

内容

IF 条件 THEN

LEAVE LOOP名字;

END IF;

END LOOP;

 1 --loop测试
 2 DELIMITER //
 3 CREATE PROCEDURE changeEmp3()
 4
 5 BEGIN
 6     DECLARE maxempno int DEFAULT 0;
 7     DECLARE minempno int DEFAULT 1;
 8     SELECT MAX(emp_no) into maxempno FROM employees;
 9     SELECT MIN(emp_no) into minempno FROM employees;
10
11     myloop:loop
12         if minempno%2 =1 then update employees SET hire_data=‘1900-12-11‘ WHERE emp_no = minempno;
13         END IF;
14         SET minempno = minempno+1;
15         IF minempno>maxempno THEN LEAVE myloop;
16         END IF;
17     END loop;
18 END
19 //
20
21 DELIMITER ;
22 CALL changeEmp3();

LOOP语句测试

原文地址:https://www.cnblogs.com/darwinli/p/9032828.html

时间: 2024-11-12 23:12:34

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

Jmeter进阶学习笔记(对性能、接口测试的进阶学习)

1.在进行测试的时候,可以采用fildler进行捕捉:如果需要在手机上操作的话,可在fildler option设置下,然后再手机的wifi中设置代理即可: 1.登录测试 登录的话,肯定是存在两个参数的,用户名与密码,且使用的方法应是Post; PS:登录此处还可以使用断言去判断是否登录正确: 2.获取列表系统(可以看下加载此列表需要多少时间),使用的get方法即可: 3.在列表中选择某一条记录进行发送信息操作(如果10万用户都同时发送信息,服务器是否正常工作): ...... 未完待续~ Jm

MySQL学习笔记之一 MySQL入门

本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会很费劲,在总结的时候可能更多的把关注点放在它与oracle的不同之处. 一.简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言.MySQL是一个客户端/服务器结构的实现, 它由一个服务器守护程序mysqld和很多不同的客户程序和库组成. MySQL的普及并不局限于

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

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4085684.html 联系方式:[email protected] [正文] 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续. 我们在之前的几篇文章中学习了JDBC对数据库的增删改查.其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的

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

首先需要回顾一下上一篇文章中的内容:MySQL数据库学习笔记(九)----JDBC的PreparedStatement接口重构增删改查 一.JDBC事务处理: 我们已经知道,事务的概念即:所有的操作要么同时成功,要么同时失败.在MySQL中提供了Commit.Rollback命令进行事务的提交与回滚.实际上在JDBC中也存在事务处理,如果要想进行事务处理的话,则必须按照以下的步骤完成. JDBC中事务处理的步骤: 1.要取消掉JDBC的自动提交:void setAutoCommit(boolea

Mysql Cookbook学习笔记第二章

1,使用python链接mysql + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # -*- coding: utf-8 -*- # connect.py --连接到MySQL服务器 import sys import MySQLdb try:     conn = MySQLdb.connect(db = "cookbook",                            host = "localhost"

MYSQL数据库学习笔记1

MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 修改表 表的增删查改 查询 数据库概念 数据库是一种对大量信息进行管理的一种方法. 数据库系统从结构上看,也是可以分为三层的: 物理层:数据实际如何存储 逻辑层:存储的是什么数据,以及数据间是什么关系 试图层:提供给用户的部分数据 关系数据库 目前关于数据库模型最主流的有两种, 一种叫做关系型数据库,这

【MySQL】《高性能MySQL》学习笔记,第四章,Schema与数据类型优化

[MySQL]<高性能MySQL>学习笔记,第四章,Schema与数据类型优化 良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema. 反范式的设计可以加快某些类型的查询,单同时可能使另一类型的查询变慢,比如添加计数表和汇总表是一种很好的优化查询的方式,但这些表的维护成本可能会很高. 1.选择优化的数据类型 更小的通常更好. ? 应该尽量使用可以正确存储数据的最小类型,更小的数据类型通常更快,因为他们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周

Spring Batch学习笔记三:JobRepository

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用HSQLDB,也就是说在Job的运行过程中,所有的元数据都被储存在内存中,在Job结束后会随着进程的结束自动消失:在这里我们推荐配置JobRepository去使用MySQL. 在这种情况下,Spring Batch在单次执行或者从一个执行到另外一个执行的时候会使用数据库去维护状态,Job执行的信息包

HTML5独家分享:原生JavaScript学习笔记2——程序流程控制

当当当当 .....楼主又来了!新一期的JS学习笔记2--程序流程控制更新了! 当当当当 .....楼主又来了!新一期的JS学习笔记2--程序流程控制更新了! 想一键获取全部JS学习笔记的可以给楼主留言哦! js中的程序控制语句 常见的程序有三种执行结构: 1. 顺序结构 2. 分支结构 3. 循环结构 顺序结构:程序从第一行开始执行,按顺序执行到最后一行 分支结构:就像一条岔路口,必须选择且只能选择其中一条道路继续走下去,不能同时执行两个分支里的代码. 我们可以使用如下三种方式来实现程序的分支