SQL语句(二)数据排序和单行函数
一、排序查询
SELECT 查询列表
FROM 表
WHERE 条件
ORDER BY 排序列表 [ASC|DESC]
注意:
- ①
ASC升序|DESC降序默认升序 - ②
ORDER BY子句可以支持单个字段,多个字段,表达式,函数,别名 - ③
ORDER BY子句一般是放在查询语句最后,LIMIT子句除外
1. 基本排序
查询所有员工信息,工资从高到低:
SELECT * FROM employees
ORDER BY salary DESC;
部门编号>=90的员工信息,按入职时间先后排序
SELECT *
FROM employees
WHERE department_id >= 90
ORDER BY hiredate ASC;
按年薪高低显示员工的信息和 年薪【按表达式排序】
SELECT *, salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
按年薪高低显示员工的信息和 年薪【按别名】
SELECT *, salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY 年薪 DESC;
按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT LENGTH(last_name) AS 名字字节长度, last_name, salary
FROM employees
ORDER BY LENGTH(last_name);

【按字典序】
SELECT last_name, salary
FROM employees
ORDER BY last_name;
2. 多条件排序
查询员工信息,先按工资升序,再按员工编号降序【多个字段】
SELECT salary, employee_id
FROM employees
ORDER BY salary ASC,employee_id DESC;
二、单行函数
调用方法
SELECT 函数名()
[FROM 表]
字符函数
①LENGTH函数
作用:获取参数值的字节个数
例:
SELECT LENGTH('john');
SELECT LENGTH('中文hhh');


②CONCAT函数
SELECT CONCAT(last_name,'_',first_name)
FROM employees;
- 在数据库中新建临时列
CONCAT(last_name,'_',first_name) - 将记录映射到该列中取出

③upper 和 lower
SELECT UPPER('name');
SELECT LOWER('NAME');
姓变大写,名变小写,再拼接:
SELECT CONCAT(UPPER(last_name),'_',LOWER(first_name)) 姓名
FROM employees;

④substr
tips:这里的字符串的索引不同于一般的编程语言,它是从1开始的。
SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put;

SELECT SUBSTR('李莫愁爱上了陆展元',4,3) out_put; #[4,4+3)

⑤instr
INSTR(str,substr):当substr为str子串时返回开始的索引,若不存在则返回0
SELECT INSTR('123456','456') AS out_put;

⑥trim
TRIM([remstr FROM] str)
- 当填入一个字符串时,返回去掉前后空白字符后的字符串
- 可填入
[remstr FROM],可以去掉自定义字符
SELECT TRIM(' ave ') AS out_put;
SELECT TRIM('*' FROM '********ave*****') AS out_put;

⑦lpad 和 rpad
作用:凑字符个数
SELECT LPAD('殷素素',10,'*');
SELECT RPAD('殷素素',10,'*');
⑧replace替换
REPLACE(str,from_str,to_str)
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏');
数学函数
①round,ceil 和 floor
round:四舍五入
ROUND(X)
ROUND(X,D)
第二个参数是精确到D位小数
SELECT ROUND(1.65);
SELECT ROUND(2.4);
SELECT ROUND(1.65,2);
ceil:向上取整
floor:向下取整
②truncate截断
TRUNCATE(X,D):截断x到d位小数
SELECT TRUNCATE(1.69999,1);
③mod取模
MOD(a,b): a-a/b*b;
流程控制函数
①IF函数
IF(expr1,expr2,expr3)
expr1是判断条件,当其为真时取expr2的值,否则取expr3的值。
例:
SELECT
last_name,
commission_pct,
IF(commission_pct IS NOT NULL,"有奖金,嘻嘻","没奖金,呵呵")
FROM
employees;

②CASE函数
用法1:
case 判断的字段或表达式
when 常量1 then 要显示的值1或语句1;
when 常量2 then 要显示的值2或语句2;
...
else 要显示的值n或语句n;
end
习题:查询员工的工资
部门号=30,显示1.1倍
部门号=40,显示1.2倍
部门号=50,显示1.3倍
其他原工资
SELECT department_id, salary 原始工资,
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
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;

SQL语句(二)数据排序和单行函数的更多相关文章
- SQL语句检索数据排序及过滤
阅读目录 一:排序检索数据 二:过滤数据 三:高级数据过滤 四:用通配符进行过滤 回到顶部 一:排序检索数据 1.1 排序数据 比如查询数据库中表数据的时候,我们使用如下语句: select * fr ...
- PHP如何通过SQL语句将数据写入MySQL数据库呢?
1,php和MySQL建立连接关系 2,打开 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?phpmysql_connect(&qu ...
- 通过Sql语句导数据
在通过SQL Server向导中的SQL语句导数据时,默认情况下源表中的nvarchar字段类型会变成202,解决此问题的方法是,要重新选择一下对应的数据接收表.
- SQL语句之 数据约束
SQL语句之 数据约束 什么是数据约束 数据约束用来限制用户对数据的非法的修改操作. 1.约束字段的默认值 如果插入记录时,没有给某个字段赋值,那么我们可以设置它的默认值 关键字:default CR ...
- 使用SQL语句进行数据复制
使用SQL语句对数据或者表进行复制,一般用于两张表结构相同的时候使用. SQL Server中,如果目标表存在: insert into 目标表 select * from 原表; SQL Serve ...
- sql语句百万数据量优化方案
一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max( ...
- Oracle01——基本查询、过滤和排序、单行函数、多行函数和多表查询
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7272236.html Oracle的集群 Oracle的体系结构 SQL> --当 ...
- 2.1 Oracle之DML的SQL语句之单表查询以及函数
1.SQL简介 对于不同的数据库来说,SQL语句是相通的,关系型数据库都以SQL语句为操作的标准,只是相应的数据库对应的函数不相同. SQL(Structured Query Language,结构化 ...
- mysql详解常用命令操作,利用SQL语句创建数据表—增删改查
关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...
随机推荐
- Linux网络命令与脚本使用
作为系统管理员,经常需要诊断和解决网络问题,而配置.监控与保护网络有助于发现问题并在事情范围扩大前得意解决,并且网络的性能与安全也是管理与诊断网络的重要部分.这里总结一下常用与Linux网络管理的命令 ...
- kubelet分析-csi driver注册源码分析
kubelet注册csi driver分析 kubelet注册csi driver的相关功能代码与kubelet的pluginManager有关,所以接下来对pluginManager进行分析.分析将 ...
- Redis 雪崩、穿透、击穿、并发、缓存讲解以及解决方案
1.缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程 1.redis集群大面积故障 2.缓存 ...
- POJ 1556 计算几何 判断线段相交 最短路
题意: 在一个左下角坐标为(0,0),右上角坐标为(10,10)的矩形内,起点为(0,5),终点为(10,5),中间会有许多扇垂直于x轴的门,求从起点到终点在能走的情况下的最短距离. 分析: 既然是求 ...
- 【玩转 WordPress】基于 Serverless 搭建个人博客图文教程,学生党首选!
以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 01. 什么是 Serverless? 1. Serverless 官方定义 Serverless 中的 Server是服务器的意思,less 是 ...
- 架构之:serverless架构
目录 简介 什么是serverless serverless的例子 简单的三层服务 消息驱动 FaaS FaaS的缺点 FaaS的优点 总结 简介 不知道什么时候,出现了一个叫做Serverless架 ...
- Spring:Spring优势——分层架构简介
Spring框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration.Web.AOP.Aspects.Messaging.Instrume ...
- Java实验项目三——宠物商店
Program:宠物商店的设计(继承,接口,线性线性表) Description:本题未实现图形用户界面,项目结构描述如下: classes.Pet:定义宠物接口,只要实现该接口的宠物类,都可存储进宠 ...
- C#下通过wbemtest和WMI Code Cretor更加高效的访问WMI
能找到这篇博客的,相信都是有操作WMI需求的了.但是不知道如何快速验证.并集成到C#来操作WMI.我们分为3步: ##第一步:官网(或跟硬件开发WMI的人沟通你需要的接口和参数定义,如果是和硬件开发的 ...
- C语言:文件
文件是数据源的一种,最主要的作用是保存数据.在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件.对这些文件的操作,等同于对磁盘上普通文件的操作.例如: 通常把显示器称为 ...