DQL之条件查询、排序查询

二、条件查询

语法

select 查询列表
from  表名
where 筛选条件;

执行顺序:

  • ①from子句
  • ②where子句
  • ③select子句

具体应用

1、按关系表达式筛选

关系运算符:> 、 <、 >=、 <=、 = 、 <>
补充:也可以使用!=,但不建议
举例:查询年龄大于25的员工信息

SELECT *
FROM employees
WHERE age  > 25;

2、按逻辑表达式筛选

逻辑运算符:and 、 or 、 not
补充:也可以使用&& 、 || 、 ! ,但不建议
举例:查询部门编号不是 50-100之间员工姓名

SELECT name
FROM employees
WHERE department_id <50 OR department_id>100;

3、模糊查询

  1. like/not like
    功能:一般和通配符搭配使用,对字符型数据进行部分匹配查询
    常见的通配符
    _ 任意单个字符
    % 任意多个字符,支持0-多个
    举例:查询姓名中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
  1. in/not in
    功能:查询某字段的值是否属于指定的列表之内
    in(常量值1,常量值2,常量值3,…)
    not in(常量值1,常量值2,常量值3,…)
    举例:查询部门编号是30/50/90的员工名、部门编号
SELECT last_name,department_id
FROM employees
WHERE department_id IN(30,50,90);
  1. between and/not between and
    功能:判断某个字段的值是否介于xx之间
    举例:查询部门编号是30-90之间的部门编号、员工姓名
SELECT department_id,last_name
FROM employees
WHERE department_id BETWEEN 30 AND 90;
  1. is null
    功能:判断某个字段的值是否为空
    举例:查询没有奖金的员工信息
SELECT *
FROM employees
WHERE commission_pct IS NULL;

三、排序查询

语法:

select 查询列表
from 表名
【where 筛选条件】
order by 排序列表

执行顺序

  • ①from子句
  • ②where子句
  • ③select子句
  • ④order by 子句

具体应用:

  1. 排序列表可以是单个字段多个字段表达式函数列数、以及以上的组合
  2. 升序 ,通过 asc ,默认行为
    降序 ,通过 desc

举例

1、按单个字段排序

将员工编号>120的员工信息进行工资的升序

SELECT * 
FROM employees 
ORDER BY salary ;
2、按表达式排序

对有奖金的员工,按年薪降序

SELECT *,salary*12*(1+IFNULL(commission_pct,0))  年薪
FROM employees
WHERE commission_pct IS NOT NULL
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
3、按别名排序

对有奖金的员工,按年薪降序

SELECT * ,salary*12*(1+IFNULL(commission_pct,0))  年薪
FROM employees
ORDER BY 年薪 DESC;

注意,如果需要使用条件查询,where不能用别名,因为查询语句的执行顺序是from、where、select、order by,别名是在select处起的,此时where的别名还没定义

4、按函数的结果排序

按姓名的字数长度进行升序

SELECT last_name
FROM employees
ORDER BY LENGTH(last_name);
5、按多个字段排序

查询员工的姓名、工资、部门编号,先按工资升序,再按部门编号降序

SELECT last_name,salary,department_id
FROM employees
ORDER BY salary ASC,department_id DESC;

注意,这里的第二条件是在第一条件相同的情况下才会执行第二条件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值