mysql条件查询和排序查询

一、条件查询

根据条件过滤来查询语句。

语法:

select xxx from xxxx where 条件;
SELECT * FROM employees WHERE salary >= 12000;

执行顺序是,先查询from,找到表,然后对虚拟的结果表进行where筛选,最后进行select。

在where语句中,有如下关系运算符及关键字:

  • >、<、>=、<=、=(只需要一个)、<>(不等于,写!=也行)。
  • AND、OR、NOT。
  • BETWEEN...AND、IN、LIKE、IS NULL。(模糊查询)
# 1. 关系运算
SELECT * FROM employees WHERE department_id <> 100;
SELECT first_name,last_name FROM employees WHERE salary < 15000;

# 2. 逻辑运算
SELECT 
  first_name,
  last_name,
  department_id,
  email 
FROM
  employees 
WHERE NOT (
    department_id >= 50 
    AND department_id <= 100
  ) ;
###
SELECT 
  * 
FROM
  employees 
WHERE commission_pct > 0.03 
  OR (
    employee_id >= 60 
    AND employee_id <= 110
  ) ;

# 模糊查询
/* 
  3. like
  一般与通配符进行匹配,对字符型数据进行部分匹配查询
  常见的通配符:_ 表示任意单个字符
             % 表示任意多个字符(0个也行)
  当要查询下划线时,不把它当做通配符时,需要加转义符'\'
  同样可以使用sql语句设置某个字符为转义符,escape 'x'
*/ 
SELECT * FROM employees  WHERE last_name LIKE '%a%'; #查找lastname中有a的数据
SELECT * FROM employees  WHERE last_name LIKE '__e%';#查找lastname第三个字符为e的数据
SELECT * FROM employees  WHERE last_name LIKE '_$_%' ESCAPE '$';
# 将'$'设置为转义符,查询时'$_'表示查询下划线。

/*
    4. in
    查询某字段的值,是否属于指定的列表之内。
    a in (常量值1,常量值2,......) 查询a字段的值是否在几个常量值中
    a not in ...是否不在...
*/
SELECT * FROM employees WHERE department_id IN (30,50,90);
SELECT * FROM employees WHERE job_id NOT IN ('SH_CLERK','IT_PROG');

/*
    5. between and
    判断某字段的值,是否在某个区间之内
    也有not between and
*/
SELECT * FROM employees WHERE department_id  BETWEEN 30 AND 90;

/*
    6. is null/is not null
    查询是不是null

*/
SELECT * FROM employees WHERE commission_pct IS NULL;

二、 排序查询

语法与上面的查询语句一样,后面加上order by (排序列表)即可。

select 查询列表 from 表名 (where 筛选条件可有可无) order by 排序列表

执行顺序是:

  • 先进行from查询
  • 然后where筛选
  • 然后select查出来
  • 最后order by进行排序
SELECT last_name,salary FROM employees ORDER BY salary;
/*
    1.排序列表可以是单个字段、多个字段、别名、表达式、函数、列数(常量)、以及这几个的组合。
    2.默认升序排序,asc
      降序排序,使用desc
*/
SELECT * FROM employees ORDER BY salary ASC;
SELECT * FROM employees ORDER BY salary DESC;
# 使用别名"年薪"进行排序
SELECT 
  * , salary * 12 * (1+ IFNULL(commission_pct, 0)) 年薪
FROM
  employees 
ORDER BY  年薪 DESC ;

#函数LENGTH(xx),可以获取xx字符的长度
SELECT last_name FROM employees ORDER BY LENGTH(last_name) ;

#按照多个字段进行排序,先按照工资降序排序,同样工资的按照姓名长度升序
SELECT last_name,salary FROM employees ORDER BY salary DESC , LENGTH(last_name) ;

#按照选择的第2列,即email进行排序
SELECT first_name,email FROM employees ORDER BY 2 ;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值