Mysql进阶四:常见函数-流程控制函数

2023-11-15

进阶四:流程控制函数

  • 作者:alicomon
  • 寄语读者:
    博客为学习记录,目的有二:
  1. 记录知识点,方便温故知新;
  2. 为读者提供帮助,用于交流,共同提高。

流程控制函数,可好玩了~

1. if函数 if else 函数
SELECT IF(10>5,'大','小');
此项输出为: 大
SELECT last_name,commission_pct,IF(commission_pct IS NULL,'没奖金,呜呜呜','有奖金,嘻嘻') AS 是否有奖金
FROM employees;

在这里插入图片描述

2. case函数(case控制结构)
使用一:switch case
switch(变量或表达式)
{
	case 常量1:语句1;break;
	case 常量2:语句2;break;
	
	...
	case 常量n: 语句n;break;
}
在mysql中:
case 要判断的字段或者表达式
when 常量1 then 要显示的值1或语句; 
when 常量2 then 要显示的值2或语句;
...
else 要显示的值n或语句;
end

案例描述:

企业要发年终奖,全年表现优异的部门将会提高工资待遇,具体如下:
部门编号department_id为30的,原始工资的1.1倍作为发放工资;
部门编号department_id为40的,原始工资的1.2倍作为发放工资;
部门编号department_id为50的,原始工资的1.3倍作为发放工资;
其余部门照旧发放工资。
请使用数据库语言,进行实现。

实现语句:

SELECT salary 原始工资,department_id 部门编号,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;

使用二: 类似于 多重if
在mysql中:

CASE
WHEN 条件1 THEN 要显示的值1或语句1
WHEN 条件2 THEN 要显示的值2或语句2
...
ELSE 要显示的值n或语句n
END

案例描述:

某公司由于业务需要,现需要查询员工的工资情并分设等级,要求如下:
如果工资大于20000,显示为A级别
如果工资大于15000,显示为B级别
如果工资大于10000,显示为C级别
否则,显示为D级别。
请运用数据库语言,进行实现。

SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END AS 等级
FROM employees;

在这里插入图片描述


测试题:


1.显示系统当前时间(注意:日期+时间)
2.查询员工号、姓名、工资、以及工资提高百分之十后的结果(NEW salary)
3.注意分析、区别
(1)将员工的姓名按照首字母排序,并写出姓名的长度(LENGTH)
(2)将员工的姓名按名字排序,并写出姓名的长度(LENGTH)

4.做一个查询,产生下面的结果:
<last_name> earns monthly but wants <salary*3>
限制查询15人。

5.使用CASE-WHEN,按照下面的条件:
job grade
AD_PRES A
ST_MAN B
IT_PROG C
SA_REP D
ST_CLERK E
产生下面的结果
Last_name Job_id Grade
king AD_PRES A


答案:


SELECT NOW();

SELECT employee_id,first_name,salary,salary*1.2 AS "new salary"
FROM employees;

(1)

SELECT SUBSTR(last_name,1,1) 首字符,last_name,LENGTH(last_name)
FROM employees
ORDER BY 首字符 ASC;

(2)

SELECT first_name AS 名字,LENGTH(first_name)
FROM employees
ORDER BY 名字 ASC;

两者区别在于,如果按照首字母排序,则排序不会考虑其余字符情况,即仅是首字母排序
按照姓名字符串排序的话,会从名字的第一个字符开始一直排序到名字最后一个字符,是严格意义上的字符排序


SELECT CONCAT(last_name,' earns ',salary,' monthly but wants ',salary*3) AS 输出
FROM employees
LIMIT 15;

在这里插入图片描述


SELECT 
	last_name,
	job_id AS job,
	CASE job_id 
	 WHEN 'AD_PRES' THEN 'A'
	 WHEN 'ST_MAN' THEN 'B'
	 WHEN 'IT_PROG' THEN 'C'
	 WHEN 'SA_REP' THEN 'D'
	 WHEN 'ST_CLERK' THEN 'E'
	 END AS Grade
FROM employees
WHERE job_id = 'AD_PRES';

在这里插入图片描述


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql进阶四:常见函数-流程控制函数 的相关文章

  • SQL UPDATE 语句根据另一个现有行更新列

    基本上我有一个与下表具有相似格式的表格 我想做的是根据这个逻辑更新 Col4 如果 Col2 为空 则用 Col3 更新 Col4 如果 Col2 不为 null 则在 Col1 中查找与 Col2 中的值匹配的值 使用 col3 中的相应
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • 我可以将 MAMP (MySQL) 或 XAMPP (MySQL) 与 Ruby on Rails 3 一起使用吗?

    我可以将 MAMP MySQL 或 XAMPP MySQL 与 Ruby on Rails 3 一起使用吗 我从 MYSQL com 安装了 MySQL 但遇到了很多麻烦 所以我喜欢使用 MAMP XAMPP Mysql 有人这样做吗 另外
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩
  • 如何将 MySQL 查询输出保存到 Excel 或 .txt 文件? [复制]

    这个问题在这里已经有答案了 如何将 MySQL 查询的输出保存到 MS Excel 工作表 即使只能将数据存储在 txt文件 就可以了 From 将 MySQL 查询结果保存到文本或 CSV 文件中 http www tech recipe
  • 无法在 .net core 2 中从 MySQL 构建“日期”类型列

    我已经开始了一个新的 net core 2 项目 我正在尝试将 MySQL 数据库导入实体框架 我使用此命令来搭建数据库 Scaffold DbContext server localhost port 3306 user id user
  • mysql表中的数据非常大。即使 select 语句也需要很多时间

    我正在开发一个数据库 它是一个相当大的数据库 有 13 亿行和大约 35 列 这是我检查表状态后得到的结果 Name Table Name Engine InnoDB Version 10 Row format Compact Rows 1
  • MySQL 将表从 Latin1 转换为 utf8

    我需要将包含大量数据的表从 Latin1 转换为 utf8 以便它可以接受韩语字符 如何更改该表而不损坏其中的数据 我的 SQL 语句是什么 最好的方法是什么 ALTER TABLE database name table name CON
  • 使用连接池后如何处理过多的并发连接?

    Scenario 假设您有一个拥有大量流量的网站或应用程序 即使使用数据库连接池 性能也会受到真正的打击 站点 应用程序甚至可能崩溃 因为并发连接太多 Question 人们有什么选择来处理这个问题 我的想法 我在想有这个问题的人可以创建多
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • MySQL 可选的带有 MATCH 的 LEFT JOIN

    我有以下查询 它对 MySQL Innodb 数据库中同一搜索词的两个不同表中的两列执行全文搜索 SELECT Id MATCH tb1 comment tb2 comment AGAINST search term IN BOOLEAN
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不
  • JDBC 错误:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我在 Java Eclipse 中收到错误消息 我在 MySql 中有一个数据库 它有列 String user name int id time int id desk int user password 我想
  • 将IP保存到数据库中

    当用户登录时 我想将他们的 IP 保存在数据库中 我该怎么做呢 MySQL 字段最适合使用哪种类型 获取IP的PHP代码是什么样的 我正在考虑将其用作登录 会话内容的额外安全功能 我正在考虑使用用户现在拥有的 IP 检查用户从数据库登录的
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in

随机推荐

  • 记录QString的StartsWith()错误使用引发的问题

    一 问题现象 在QT开发的即时通信软件中发送图片看不到缩略图和原图 二 解决方法 在下载图片时会去检擦图片URL开头的服务器地址是否正确 使用了startsWith 去判断 但是这个函数在fileServerUrl为空的情况下也会返回tru
  • git push origin与git push -u origin master的区别

    git push origin 上面命令表示 将当前分支推送到origin主机的对应分支 如果当前分支只有一个追踪分支 那么主机名都可以省略 git push 如果当前分支与多个主机存在追踪关系 那么这个时候 u选项会指定一个默认主机 这样
  • 什么是区块链?

    原文出处 https mp weixin qq com s uzPoQBVkEy WVVS 1DFDoA 在今天 无论商业圈 科技圈还是金融圈 最热的词汇无非只有一个 那就是 区块链 我是黑马程序员的 无崖子 老师 下面我来介绍一下区块链的
  • Sentinel做服务熔断与限流,服务能被监控,但是监控列表为空的问题思考

    首先我觉得 服务和Sentinel不在同一台机器上面 本身是能够正常监控的 只要保证两台机器能够在一个内网中 能够互相连通即可 我在学习Sentinel的时候 我盲目使用云服务器的docker拉取Sentinel镜像 但是我开启了服务后 服
  • CV学习笔记 — 数据集预处理常用脚本总结

    笔者在学习计算机视觉时 需要经常借助脚本对数据集进行预处理 现将常用的脚本总结如下 1 批量修改文件后缀名 批量修改 import os import sys 需要修改后缀的文件目录 os chdir r H 葡萄 datasets JPE
  • 17.subplot():绘制网格区域中的几何形状相同的子区布局

    文章目录 1 函数subplot 的使用方法 2 在极坐标轴上绘制折线图 3 在极坐标轴上绘制散点图 4 在非等分画布的绘图区域上实现图形展示 subplot C R P 表示在C行R列的网格布局上 子区subplot 会被放置到第p个位置
  • 如何用Python提升未来竞争力?十年工作经验老程序员来告诉你。一般人我都不告诉他

    今年很多人在问一个问题 到底什么才是抗风险能力 稳定的工作 存款 理财 有人预测 到2030年 今天一半的工作岗位都将消失 关于哪些工作最先消失 李开复提出过 五秒钟准则 一项工作如果可以在5秒钟内作出相应决定 那就非常可能被人工智能取代
  • 【iOS】【最新】2023苹果开发者账号注册流程(公司类型)

    一 Apple Developer 申请开发者账号 Apple Developer 点击 Account 创建 Apple ID 最好新注册一个新的 专门用做开发 需要注意的是 开发者的名字和 ID 想好在填写 注册成功后 不能自己修改 需
  • Netty网络编程(一):初步了解

    文章目录 简介 netty介绍 netty的第一个服务器 netty的第一个客户端 运行服务器和客户端 总结 简介 我们常用浏览器来访问web页面得到相关的信息 通常来说使用的都是HTTP或者HTTPS协议 这些协议的本质上都是IO 客户端
  • Javaweb的request请求

    1请求数据 request getMethod 获取请求方法 request getContextPath 获取虚拟路径 request getRequestURI 获取url String类型 request getRequestURL
  • Linux环境下安装Hadoop(完全分布式)

    切换到安装目录 解压Hadoop压缩包 修改软件名称 hadoop配置 切换目录 将以下配置文件放在usr app hadoop2 7 3 etc hadoop 目录下 这里 的文件是老师配好的 配置hadoop环境 让hadoop环境配置
  • msvcp120.dll丢失的解决方法?哪种解决方法比较推荐?

    关于msvcp120 dll丢失的解决方法这个问题 小编最近也经常看到有人在提问 可能这是一个比较容易丢失的文件 小编就来给大家详细的分析一下 说说它的三种解决方法 方便大家以后遇到这种问题 自己知道怎么处理 msvcp120 dll丢失的
  • mc服务器server文件夹位置,MC server.properties文件详解

    注 这里true为开启 false为关闭 Minecraft server properties 标题注释 Wed Sep 05 19 27 44 CST 2018 保存时间 spawn protection 16 设置为0将不会禁用出生点
  • Innovus/Encounter时序报告解读

    最近在学report timing这个命令 发现自己对timing report的认知只停留在看slack和delay数值上 于是 决定研究一下这个report Innovus Encounter的report格式确实有点不按套路出牌 初看
  • Es中索引的删除操作

    package com atguigu es test import org apache http HttpHost import org elasticsearch action admin indices delete DeleteI
  • Unity Android 安装apk后显示两个app的问题

    简介 前些天使用Unity打Android包的时候 安装到手机上 出现了两个icon一样的引用 分别点开后 启动的application不一致 原因 在项目中接入了一些SDK SDK的AndroidManifest文件中有个Applicat
  • webpack之引入css

    前言 本文演示了如何打包css文件 涉及到的loader css loader style loader css loader的任务 把css文件作为模块打包 style loader的任务 把打包好的css文件动态的插入到html文件的
  • js中获取token的函数

    1 从cookies获取 从Cookies中获取token function getToken var strcookie document cookie 获取cookie字符串 var arrcookie strcookie split
  • 功能安全专题之功能安全概念阶段

    目录 前言 1 基本概念 1 1 相关项定义 Item Definition 1 2 相关项的构成 1 3 危害分析与风险识别 Hazard Analysis Risk Assessment 1 4 危害与危害事件 Hazard and H
  • Mysql进阶四:常见函数-流程控制函数

    进阶四 流程控制函数 作者 alicomon 寄语读者 博客为学习记录 目的有二 记录知识点 方便温故知新 为读者提供帮助 用于交流 共同提高 流程控制函数 可好玩了 1 if函数 if else 函数 SELECT IF 10 gt 5