mysql if语句

mysql——流程控制结构

浪尽此生 提交于 2020-03-17 22:15:07
流程控制结构 顺序结构:程序从上外下执行 分支结构:程序可以从两条或者多条去执行 循环结构:程序在男足一定的条件基础上重复执行一段代码 一、分支结构 1、IF函数 功能 :实现简单的双分支 语法 : SELECT IF(表达式1,表达式2,表达式3); 执行顺序 :如果表达式1成立则返回表达式2的值,否则返回表达式3的值 应用在任何地方 2、CASE结构 ( 如果THEN后面加语句则需要用分号结尾 ) ①类似于java中的switch语句,一般用于实现等值判断 语法: CASE 变量|表达式|字段 WHEN 判断值 THEN 返回值1或语句1 .......... ELSE 要返回的值n END CASE; ②类似于java中的多重IF语句,一般用于实现区间判断 CASE WHEN 判断条件1 THEN 返回值1或语句1 ......... ELSE 返回值n或语句n END CASE; 特点: ①可以作为表达式,嵌套在其他语句中使用,可以放在任何地方 ②可以作为独立的语句去使用,只能放在BEGIN END中使用 ③如果要WHEN中的值满足或条件成立则执行THEN后面的语句,并结束CASE,如果都不满足则执行ELSE中的语句或值 ④如果ELSE省略且WHEN中的所有条件都不满,则返回NULL 案例:创建存储过程,根据传入的成绩,显示等级 比如传入的90-100显示A,80

MySQL存储过程中的3种循环

梦想的初衷 提交于 2020-03-02 04:58:00
在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环。还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体介绍了。 这几个循环语句的格式如下: WHILE……DO……END WHILE REPEAT……UNTIL END REPEAT LOOP……END LOOP GOTO。 下面首先使用第一种循环编写一个例子。 mysql> create procedure pro10() -> begin -> declare i int; -> set i=0; -> while i<5 do -> insert into t1(filed) values(i); -> set i=i+1; -> end while; -> end;// Query OK, 0 rows affected (0.00 sec) 在这个例子中,INSERT和SET语句在WHILE和END WHILE之间,当变量i大于等于5的时候就退出循环。使用set i=0;语句是为了防止一个常见的错误,如果没有初始化,i默认变量值为NULL,而NULL和任何值操作的结果都是NULL。 执行一下这个存储过程并产看一下执行结果: mysql> delete from t1// Query OK, 0 rows affected (0

linux之shell脚本管理(一)

为君一笑 提交于 2020-02-29 14:05:43
在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行 不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作)。该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell 脚本中的应用。 1、条件测试操作: 需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件? 在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是表示成功执行,否则(非0值)表示执行失败。用于特定条件表达式的测试时,可以使用Linux系统中提供的专用工具——test命令、 使用test测试命令时,可以有以下两种形式。 test 条件表达式 【 条件表达式 】 这两种方式的作用完全相同,但通常后一种形式更为常用,也更贴近编程习惯。需要注意的是,方括号“[”或者“]”与条件表达式语句之间至少需要有一个空格进行分隔。 根据需要判断的条件内容不同,条件操作也不同,最常用的条件主要包括文件状态测试,比较整数值大小,比较字符串,以及同时判断多个条件时的逻辑关系,下面将分别进行讲解。以下主要采用方括号的测试形式。 1.1、测试文件状态 文件状态测试是指根据给定的路径名称,判断该名称对应的是文件还是目录,或者判断文件是否可读,可写,可执行等

SQL的IF语句

安稳与你 提交于 2020-02-21 01:43:19
MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。 SELECT IF(sva=1,"男","女") AS s FROM table_name WHERE sva != ''; 作为表达式的if也可以用CASE WHEN来实现: SELECT CASE sva WHEN 1 THEN '男'   ELSE '女' END AS s FROM table_name WHERE sva != ''; 在第一个方案的返回结果中, value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE 部分,则返回值为 NULL。 例如: SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END AS test 将输出one IFNULL(expr1,expr2) 假如expr1 不为 NULL,则 IFNULL()

条件测试操作与流程控制语句

喜夏-厌秋 提交于 2020-01-10 05:22:05
在编写Shell脚本时候,经常需要判断两个字符串是否相等,检查文件状态或者是数字的测试等。Shell提供了对字符串、文件、数值等内容的条件测试以及逻辑流程控制。 条件测试操作 程序中的流程控制是由比较和测试语句来处理的,bash具备多种与UNIX系统级特性相兼容的执行测试方法。 常用测试操作 test 命令,测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数值。 格式1 test 条件表达式 格式2 [ 条件表达式 ] //常用格式,使用方括号时,要注意在条件两边加上空格。 常见测试类型 测试文件状态 字符串的比较 整数值的比较 逻辑测试 测试文件 格式 [ 操作符 文件或目录 ] 操作符: -d:测试是否为目录,是则为真(Directory) -e:测试目录或文件是否存在,存在则为真(Exist) -f:测试是否为文件,是则为真( file ) -r:测试当前用户是否有权限读取,是则为真( read ) - w :测试当前用户是否有权限写入,是这为真( write ) -x:测试当前用户是否可执行该文件,可执行则为真(Excute) -L:测试是否为符号链接文件,是则为真(Link) -nt:file1 -nt file2 如果 file1 比 file2 新(修改时间),则为真 -ot:file1 -ot file2 如果 file1 比 file2

Mysql中的存储过程

偶尔善良 提交于 2019-12-28 19:55:41
什么是存储过程 简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法; ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用; 有哪些特性 有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能; 函数的普遍特性:模块化,封装,代码复用; 速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤; 创建一个简单的存储过程 存储过程proc_adder功能很简单,两个整型输入参数a和b,一个整型输出参数sum,功能就是计算输入参数a和b的结果,赋值给输出参数sum; 几点说明: DELIMITER ;;:之前说过了,把默认的输入的结束符;替换成;;。 DEFINER:创建者; -- ---------------------------- -- Procedure structure for `proc_adder` -- ---------------------------- DROP PROCEDURE IF EXISTS `proc_adder`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE

MySQL4:存储过程和函数

你。 提交于 2019-12-27 05:11:40
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, studentPhone varchar(15) ) insert into student values(null,'Betty', '20', '00000000'); insert into student values(null,'Jerry', '18', '11111111'); insert into student values(null,'Betty', '21', '22222222'); insert into student values(null,'Steve', '27', '33333333'); insert into student values(null,'James', '22

MySql 和Server Sql的差异

雨燕双飞 提交于 2019-12-25 03:11:21
MySql 和 Server Sql 的差异 1 、自增长列的插入: SQLServer 中可以不为自动增长列插入值, MySQL 中需要为自动增长列插入值。 2 、获取当前时间函数 : SQLServer 写法: getdate() MySQL 写法: now() 3 、从数据库定位到表。 Sqlserver 写法:库名 .dbo. 表名 ;或者:库名 .. 表名 (注:中间使用两个点) select password from Info.dbo.users where userName='boss' 或者 select password from Info..users where userName='boss' mysql 写法:库名 . 表名 select password from Info.users where userName='boss' 4 、判断是否存在某个数据库,若存在,则删除 Sqlserver 写法: IF DB_ID('users') IS NOT NULL DROP DATABASE users Mysql 写法: Drop DATABASEif exists users 拓展:若 sqlserver 数据库正在使用中,删除之前,先要把数据库变成 “ 单一用户 ” ,再删除 ALTER DATABASE users SET SINGLE_USER

MySQL3:存储过程和函数

。_饼干妹妹 提交于 2019-12-22 21:35:26
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, studentPhone varchar(15) ) insert into student values(null,'Betty', '20', '00000000'); insert into student values(null,'Jerry', '18', '11111111'); insert into student values(null,'Betty', '21', '22222222'); insert into student values(null,'Steve', '27', '33333333'); insert into student values(null,'James', '22

Mysql存储过程

本秂侑毒 提交于 2019-12-20 01:36:46
Mysql存储过程 简介 优点 创建语句 删除语句`(目前 Mysql不支持修改存储过程只能删除后再创建` 三种查询语句 参数说明 参数 IN的简单例子 参数 OUT的简单例子 参数 INOUT的简单例子 变量 全局变量 局部变量 控制语句 if语句 case语句 while循环语句 repeat循环语句`(与 while类似, 但不同在于, 首次循环是无条件的执行 true体` loop循环语句`(与其它循环语句自身不带条件语句, 只有结束语句` 简介 存储过程(Stored Procedure)是封装了一些 SQL语句和控制结构的函数 优点 可以在数据库内完成较复杂的判断及运算, 且改动时无需修改项目源代码 从代码请求的 SQL语句, 每次请求都会重新进行编译, 如某一操作中有大量的 SQL语句, 可以通过存储过程实现, 因为存储过程是预编译的, 所以一次处理越多语句速度相对越快 能减少网络负载, 因为从代码请求的 SQL语句都是把整条语句通过网络传到数据库中执行, 不过存储过程是只需传相关存储过程名称和参数 可以作为一种安全机制来使用, 如对某一存储过程进行权限限制, 对特定数据的访问和改动限定指定的存储过程来操作 创建语句 CREATE PROCEDURE 存储过程名称([[IN|OUT|INOUT] 参数名称 数据类形…]) 存储过程体 删除语句 (目前