一、排序查询

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;
  1. 在数据库中新建临时列CONCAT(last_name,'_',first_name)
  2. 将记录映射到该列中取出

③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):当substrstr子串时返回开始的索引,若不存在则返回0

SELECT INSTR('123456','456') AS out_put;

⑥trim

TRIM([remstr FROM] str)

  1. 当填入一个字符串时,返回去掉前后空白字符后的字符串
  2. 可填入[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语句(二)数据排序和单行函数的更多相关文章

  1. SQL语句检索数据排序及过滤

    阅读目录 一:排序检索数据 二:过滤数据 三:高级数据过滤 四:用通配符进行过滤 回到顶部 一:排序检索数据 1.1 排序数据 比如查询数据库中表数据的时候,我们使用如下语句: select * fr ...

  2. PHP如何通过SQL语句将数据写入MySQL数据库呢?

    1,php和MySQL建立连接关系 2,打开 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?phpmysql_connect(&qu ...

  3. 通过Sql语句导数据

    在通过SQL Server向导中的SQL语句导数据时,默认情况下源表中的nvarchar字段类型会变成202,解决此问题的方法是,要重新选择一下对应的数据接收表.

  4. SQL语句之 数据约束

    SQL语句之 数据约束 什么是数据约束 数据约束用来限制用户对数据的非法的修改操作. 1.约束字段的默认值 如果插入记录时,没有给某个字段赋值,那么我们可以设置它的默认值 关键字:default CR ...

  5. 使用SQL语句进行数据复制

    使用SQL语句对数据或者表进行复制,一般用于两张表结构相同的时候使用. SQL Server中,如果目标表存在: insert into 目标表 select * from 原表; SQL Serve ...

  6. sql语句百万数据量优化方案

    一:理解sql执行顺序 在sql中,第一个被执行的是from语句,每一个步骤都会产生一个虚拟表,该表供下一个步骤查询时调用,比如语句:select top 10 column1,colum2,max( ...

  7. Oracle01——基本查询、过滤和排序、单行函数、多行函数和多表查询

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7272236.html Oracle的集群 Oracle的体系结构 SQL> --当 ...

  8. 2.1 Oracle之DML的SQL语句之单表查询以及函数

    1.SQL简介 对于不同的数据库来说,SQL语句是相通的,关系型数据库都以SQL语句为操作的标准,只是相应的数据库对应的函数不相同. SQL(Structured Query Language,结构化 ...

  9. mysql详解常用命令操作,利用SQL语句创建数据表—增删改查

    关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...

随机推荐

  1. http强制缓存、协商缓存、指纹ETag详解

    目录 实操目录及步骤 缓存分类 强制缓存 对比缓存 指纹 Etag 摘要及加密算法 缓存总结 每个浏览器都有一个自己的缓存区,使用缓存区的数据有诸多好处,减少冗余的数据传输,节省网络传输.减少服务器负 ...

  2. .NET 云原生架构师训练营(Identity Server)--学习笔记

    目录 OAuth 2.0 OpenID Connect QuickStart OAuth 2.0 概念 过程 通信 组件 示例代码 概念 OAuth 2.0 是一个授权协议,它允许软件应用代表(而不是 ...

  3. 第三方API对接如何设计接口认证?

    一.前言 在与第三方系统做接口对接时,往往需要考虑接口的安全性问题,本文主要分享几个常见的系统之间做接口对接时的认证方案. 二.认证方案 例如订单下单后通过 延时任务 对接 物流系统 这种 异步 的场 ...

  4. 升级openssl并重新编译Nginx

    在漏洞扫描的时候出现"启用TLS1.0"的安全漏洞,描述为:不被视为 PCI 数据安全标准,推荐使用TLS1.2及以上版本: 我这边服务器使用的是CentOS7,默认自带的open ...

  5. Linux 中的 AutoHotKey 键映射替代方案

    1. Windows 之 AutoHotKey 初次了解AutoHotKey,是在Win 下最爱效率神器:AutoHotKey | 晚晴幽草轩这篇博客中,博主有对AutoHotKey作详细介绍,这里不 ...

  6. js 实时监听滚动条状态 判断滚动条位置

      var scrollFunc = function (e) {    e = e || window.event; var t = document.documentElement.scrollT ...

  7. MPP大规模并行处理架构详解

    面试官:说下你知道的MPP架构的计算引擎? 这个问题不少小伙伴在面试时都遇到过,因为对MPP这个概念了解较少,不少人都卡壳了,但是我们常用的大数据计算引擎有很多都是MPP架构的,像我们熟悉的Impal ...

  8. 暑假自学java第三天

    1,java中有个c++中没有的数据类型 bite:byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) 在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个 ...

  9. mongodb主从复制(读写分离)

    1.[启动主服务器]mongod --port 1111 --dbpath D:\Program Files\Mongodb\master --logpath D:\Program Files\Mon ...

  10. maven与eclipse的集成

    由于篇幅问题,本文将不介绍maven的安装和配置. 一.maven的概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平 ...