【Mysql数据库基础02】单行函数、排序

单行函数、排序

  • 1 单行函数
    • 1.1 常用函数
      • 1.1.1 length 字符串的长度
      • 1.1.2 ifnull 判断表达式是否为空
    • 1.2 字符函数
      • 1.2.1 substr 提取自串
      • 1.2.2 转换大小写
      • 1.2.3 instr 返回起始索引
      • 1.2.4 trim 去除两端指定字符
      • 1.2.5 lpad 左填充指定长度
    • 1.3 数学函数
      • 1.3.1 round 四舍五入
      • 1.3.2 ceil 向上取整
      • 1.3.3 floor 向下取整
      • 1.3.4 truncate 截断
      • 1.3.5 mod 取余
    • 1.4 日期函数
      • 1.4.1 now 返回当前日期+时间
      • 1.4.2 curdate 返回当前日期
      • 1.4.3 curtime 返回当前时间
      • 1.4.4 year month day获取时间的指定部分
      • 1.4.5 str_to_date 通过字符转换为日期
      • 1.4.6 date_format 将日期转换为字符
    • 1.5 流程控制函数
      • 1.5.1 if
      • 1.5.2 case
    • 1.6 其他函数
    • 1.7 练习
  • 2 排序查询
    • 2.1 练习

1 单行函数

1.1 常用函数

1.1.1 length 字符串的长度

LENGTH() 函数用于返回一个字符串的字符数(即字符串的长度)
例如:姓名字节长度

length(last_name)

1.1.2 ifnull 判断表达式是否为空

IFNULL() 函数用于判断一个表达式是否为 NULL,如果为 NULL,则返回指定的替代值;如果不为 NULL,则返回原始值。
例如:如果奖金率的值为 NULL,那么返回 0;否则返回奖金率的实际值。

ifnull(commission_pct,0)

1.2 字符函数

1.2.1 substr 提取自串

SUBSTR() 函数用于提取字符串的子串(子序列)。
例如:提取从第7位开始的5个字符,结果为 ‘World’

substr('Hello World', 7, 5); 

1.2.2 转换大小写

  1. LOWER() 函数:将字符串转换为小写。
SELECT LOWER('Hello World'); -- 输出 'hello world'
  1. UPPER() 函数:将字符串转换为大写。
SELECT UPPER('Hello World'); -- 输出 'HELLO WORLD'

1.2.3 instr 返回起始索引

INSTR() 函数用于返回一个字符串在另一个字符串中第一次出现的位置。
例如:'World’在’Hello World’中从第7个位置开始,返回 7

SELECT INSTR('Hello World', 'World'); 

1.2.4 trim 去除两端指定字符

TRIM() 函数用于去除字符串开头、结尾或两端指定字符(或空格)。
例如:

SELECT LTRIM('   Hello   '); -- 输出 'Hello',去除了开头和结尾的空格
SELECT LTRIM('x' FROM 'xxxHelloxxxxxx'); -- 输出 'Hello',去除了开头和结尾的 'x'

1.2.5 lpad 左填充指定长度

LPAD() 函数用于向字符串的左侧填充指定的字符,使字符串达到指定的长度。
例如:

SELECT LPAD('hello', 10, '*'); -- 输出 '*****hello'

1.3 数学函数

1.3.1 round 四舍五入

ROUND() 函数用于对一个数进行四舍五入,可以指定保留小数点后的位数。
例如:

SELECT ROUND(3.14159); -- 输出结果为 3,将小数部分四舍五入
SELECT ROUND(3.14159, 2); -- 输出结果为 3.14,将小数部分四舍五入保留两位

1.3.2 ceil 向上取整

CEIL(x):向上取整,返回大于或等于x的最小整数。

1.3.3 floor 向下取整

FLOOR(x):向下取整,返回小于或等于x的最大整数。

1.3.4 truncate 截断

TRUNCATE(x, d):截断,将x保留到指定小数位数d

1.3.5 mod 取余

MOD(x, y):取余,返回x除以y的余数。


SELECT CEIL(3.14); -- 输出 4
SELECT FLOOR(3.14); -- 输出 3
SELECT TRUNCATE(3.14159, 2); -- 输出 3.14
SELECT MOD(10, 3); -- 输出 1

1.4 日期函数

1.4.1 now 返回当前日期+时间

NOW():返回当前日期和时间。

select now();

1.4.2 curdate 返回当前日期

CURDATE():返回当前日期。

1.4.3 curtime 返回当前时间

CURTIME():返回当前时间。

1.4.4 year month day获取时间的指定部分

YEAR(date):返回日期date的年份部分。
MONTH(date):返回日期date的月份部分。
DAY(date):返回日期date的日份部分。

1.4.5 str_to_date 通过字符转换为日期

例如:

select str_to_date('2001-2-28','%Y-%c-%d') as output;

在这里插入图片描述

1.4.6 date_format 将日期转换为字符

1.5 流程控制函数

1.5.1 if

例如:

select if(10>5,'big','small');

1.5.2 case

基本语法:

CASE case_expression
    WHEN when_expression_1 THEN result_1
    WHEN when_expression_2 THEN result_2
    ...
    ELSE else_result
END

案例1:
查询员工的工资,要求:
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其他部门,显示的工资为原工资

select 
	salary as 原始工资,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;

案例2:
查询员工的工资的情况
如果工资>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.6 其他函数

  1. version( ) 查看版本号
  2. database( ) 查看数据库
  3. user( ) 查看用户

1.7 练习

在这里插入图片描述
一、

select now();

二、

select
	employee_id,last_name,salary,salary*(1+0.2) as "new salary"
from
	employees;

三、

select
	last_name,length(last_name) as 姓名的长度
from
	employees
order by
	substr(last_name,1,1) asc;

四、

select
	concat(last_name," earns ",salary," monthly but wants ",salary*3) as "Dream Salary"
from
	employees
where
	salary = 24000;

五、

select
	last_name,job_id,
	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;

在这里插入图片描述

2 排序查询

在MySQL中,ORDER BY 子句用于对查询结果进行排序。可以按照一个或多个列对结果进行排序,以便以特定的顺序呈现数据。
升序asc 降序desc

2.1 练习

一、查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序

select
	last_name,department_id,salary*12*(1+ifnull(commission_pct,0) as 年薪
from
	employees
order by
	年薪 desc,last_name asc;

二、选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序

select 
	last_name,salary
from 
	employees
where 
	salary not between 8000 and 17000
order by 
	salary desc;

三、查询邮箱中包含e的员工信息,并先按邮箱的字节数降序,再按部门号升序

select
	*
from
	employees
where
	email like '%e%'
order by
	length(email) desc,department_id asc;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue.js中使用Web Workers来创建一个秒表

在Vue.js中使用Web Workers来创建一个秒表应用可以提高性能,因为Web Workers可以在后台线程中运行,不阻塞主线程。下面是一个简单的Vue.js秒表应用的示例,该应用使用Web Worker来执行计时功能。 首先,我们创建一个Web Worker文件…

【iOS】——Blocks

文章目录 前言一、Blocks概要1.什么是Blocks 二、Block模式1.block语法2.block类型变量3.截获自动变量值4._Block修饰符5.截获的自动变量 三、Blocks的实现1.Block的实质2.截获自动变量值3._Block说明符4.Block存储域 前言 一、Blocks概要 1.什么是Blocks Blocks是C语言的扩…

国创证券|超五成私募看好AI成为年度行情主线

3月18日,2024年度全球游戏开发者大会(GDC)与英伟达GPU(图形处理器)技能大会(GTC)举行,出资者关于A股商场的“人工智能”也给予了更多等待。 2月6日至3月15日期间,商场对…

使用 nsenter 排查容器网络问题

需求 我想进入容器中执行 curl 命令探测某个地址的连通性,但是容器镜像里默认没有 curl 命令。我这里是一个内网环境不太方便使用 yum 或者 apt 安装,怎么办? 这个需求比较典型,这里教大家一个简单的方法,使用 nsent…

Linux/Bizness

Enumeration nmap 用 nmap 扫描了常见的端口,发现对外开放了22,80,443 ┌──(kali㉿kali)-[~] └─$ nmap 10.10.11.252 Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-08 01:21 EST Nmap scan report for 10.10.11.252 Host is up (0.36s latency). Not…

H266开源视频编码器VVENC现状

VVenC 是由 Fraunhofer HHI 研究团队开发的,主要是视频编码系统组。HHI 是欧洲最大的研究组织 Fraunhofer 协会的成员,该协会是德国的一个大型非营利性组织。源代码在: https://github.com/fraunhoferhhi/vvenc VVenC几乎与H.266视频标准同时…

什么是VR虚拟现实防火体验馆|VR设备购买|元宇宙文旅

VR虚拟现实防火体验馆是利用虚拟现实(VR)技术打造的一个模拟火灾场景的体验空间。通过虚拟现实头盔和交互设备,参与者可以在虚拟环境中感受和学习如何正确面对火灾,并进行逃生和自救。 这种虚拟现实防火体验馆通常会模拟真实的火灾…

CPU生产的生命周期 - 回收篇

电子废物的可持续再利用和回收每年变得更加重要。随着技术在全世界范围内变得越来越普及和普及,电子垃圾的产生率也随之直接增加。计算机的心脏是中央处理单元或CPU。我们认为电子废物的许多产品都包含某种处理器。为了保护环境免受日益严重的电子废物堆积问题的影响…

在Termux中安装个人hexo博客并结合cpolar工具实现远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

fn键设置

1、起因,按F7 F8调试,总是执行Fn功能,让人反感。 2、搜索了下对应的型号Fn键设置 方法一:浮岛式键盘Fn热键切换功能 方法二:通过键盘属性设置Fn锁定功能。【方法一解决了我的问题,方法二不试了。】 3、问题…

Windows电脑上如何进行硬盘分区操作!

在Windows操作系统环境下,对电脑硬盘进行分区是一种常见的硬盘管理手段,它可以帮助用户更好地组织和管理存储空间,确保操作系统、应用程序和用户数据各有所属。本文将详细介绍在Windows PC上进行硬盘分区的步骤,适用于Windows 7到Windows 11等不同版本的操作系统。 步骤一:…

SinoDB数据库运行分析

SinoDB数据库运行主要从数据库互斥资源等待、数据库写类型、备份文件有效性、Chunk状态等15个方向进行分析,具体说明如下: 一、数据库互斥资源等待 检查项目 数据库互斥资源等待 检查命令 onstat -g con |head -20 说明 onstat -g con 查看目前数据处…

mysql的学习笔记

干前端好几年了,只会前端总感觉少了条腿,处处不自在,决定今年学习下后端的东西.以前总想着学node会更快,但是实际工作上却用不上. 出来混,总是要还的,该学的javaWeb这一套体系的东西,总是需要学习的. 那就开始啦. 一,在本地电脑mac上安装mysql 这个参考的这篇文章,照着做一次…

Python:filter过滤器

filter() 是 Python 中的一个内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,一个是函数,一个是序列,序列的每个元素作为参数传递给函数进行判定&…

Linux——进程通信(二) 匿名管道的应用:进程池

前言 之前我们学习了进程通过匿名管道进行通信,实现了两个进程的数据传输。 如果我们管理的是很多个进程,通过管道发送指令,因为如果管道中没有数据,读端必须等待,也就是被管理的进程们都在等待我发送的指令&#xf…

某东联盟js逆向

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018…

【Web技术应用基础】HTML(2)——文本练习

题目1&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>HTML链接</title><meta name"description" content"HTML链接知识讲解"><meta name"keywords" content&qu…

C语言经典算法-6

文章目录 其他经典例题跳转链接31.数字拆解32.得分排行33.选择、插入、气泡排序34.Shell 排序法 - 改良的插入排序35.Shaker 排序法 - 改良的气泡排序 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&…

HTML5+CSS3小实例:具有悬停效果的3D闪耀动画

实例:具有悬停效果的3D闪耀动画 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, init…

Python 第三方库(Tiptop\Rembg)

Tiptop 简介 tiptop:命令行系统监控工具 Tiptop 安装 1、创建虚拟环境photemaker, 并激活photemaker. 2、安装tiptop, 执行如下指令: pip install tiptop 3、执行效果 Tiptop 命令执行遇到的问题 在CMD 控制台执行tiptop 命令&#xff0c;提示如下报错&#xff1a; ──…