mysql 模糊查询并排序,MySQL学习笔记(二)—条件查询,模糊查询,排序查询

MySQL学习笔记(二)—条件查询,模糊查询,排序查询

做者:就叫易易好了

日期:2020/10/24 程序员节

注:如下案例均基于myemployees数据库,获取方式能够看我MySQL学习笔记(一)程序员

1、条件查询

语法:web

​ select数据库

​ 查询列表svg

​ from函数

​ 表名学习

​ where.net

​ 筛选条件;code

执行顺序:xml

先执行的是表名,由于要先看数据库里面是否有这个表,再根据条件来筛选,再查询该列表,也就是说书写顺序与查询顺序不同。blog

分类:

按条件表达式筛选

条件运算符:

< > = ! = <> >= <=

按逻辑表达式筛选

逻辑运算符:

&& || !

and or not

&&和and:两个条件都为true,结果为true,反之则为false

||或or:只要有一个条件为true,结果为true,反之则为false

!或not:若是;链接的条件自己为fasle,结果为true,反之为false

一、按条件表达式筛选

#案例1:查询工资>12000的员工

SELECT

*

FROM

employees

WHERE

salary>12000;

(此语句用到的条件运算符为">")

#案例2:查询部门编号不等于90号的员工名和部门编号

SELECT

last_name,

department_id

FROM

employees

WHERE

department_id!=90;

(此指令用到的条件运算符为"!=",在MySQL中,不等号最好用"<>"代替)

二、按逻辑表达式筛选

#案例1:查询工资在10000到20000之间的员工名,工资以及奖金

SELECT

last_name,

salary,

commission_pct

FROM

employees

WHERE

salary>=10000

AND

salary<=20000

#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息

SELECT

*

FROM

employees

WHERE

department_id<=90 OR department_id>=110

OR

salary>15000

也能够将WHERE语句写成

WHERE

NOT(department_id>=90 AND department_id<=110)

2、模糊查询

须要用到的语句:

like

between and

in

is null|is not null

like

特色:通常与通配符搭配使用

通配符:

“%”表示任意多个字符,包含0个字符(以该字符开头的关键词)

“_”表示任意单个字符

#案例1:查询员工名中包含字符a的员工信息

SELECT

*

FROM

employees

WHERE

last_name

LIKE

'%a%';

#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资

SELECT

last_name,

salary

FROM

employees

WHERE

last_name

LIKE

'__e_a%';

#案例3:查询员工名中第二个字符为_的员工名

SELECT

last_name

FROM

employees

WHERE

last_name

LIKE

'_/_%';

(此时/为转义字符,将第二个下划线从通配符转移成普通字符)

这里也能够自定义转移符,用ESCAPE函数

LIKE

'_#_%' ESCAPE '#';

between and

使用between and能够提升语句简洁度

包含and先后的临界值

两个临界值的顺序不能颠倒

#案例:查询员工编号在100到120之间的员工信息

SELECT

*

FROM

employees

WHERE

employee_id BETWEEN 100 AND 120

in

用于判断某字段的值是否属于in列表中的某一项

使用in比使用or更提升了语句简洁性

in列表的类型必须统一或兼容

#案例:查询员工的工种编号是IT_PROG、AD_VP、AD_PRES

中的一个员工名和工种编号

SELECT

last_name,

job_id

FROM

employees

WHERE

job_id IN('IT_PROG','AD_VP','AD_PRES');

注意:in语句不支持通配符,好比上面的那个语句,若是为了省事将’AD_VP’,‘AD_PRES’写成’AD_%’,该语句是识别不了的。

is null|is not null

=或者<>不能用于判断null值

#案例1:查询没有奖金的员工名和奖金率

SELECT

last_name,

commission_pct

FROM

employees

WHERE

commission_pct is NULL;

#案例2:查询有奖金的员工名和奖金率

SELECT

last_name,

commission_pct

FROM

employees

WHERE

commission_pct is NOT NULL;

3、排序查询

SELECT * FROM employees

该语句查询出来的结果顺序与数据库里面的如出一辙,但在实际应用中,多数要对查询的数据进行排序,因此此时咱们要引入一个排序的条件。

SELECT * FROM employees

order by 排序列表 asc/desc

asc为升序,desc为降序,若是不写,默认是升序

order by子句中能够支持单个字段,多个字段,表达式,函数,别名

order by语句通常放在查询语句的最后边

#案例1:查询员工信息,要求工资从高到低排序

SELECT

*

FROM

employees

ORDER BY

salary DESC;

#案例2:查询部门编号>=90的员工信息,按入职时间的前后排序

SELECT

*

FROM

employees

WHERE

department_id>=90

ORDER BY

hiredate ASC;

#案例3:按年薪的高低显示员工的信息和年薪

法一:

SELECT

*,

salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM

employees

ORDER BY

salary*12*(1+IFNULL(commission_pct,0)) DESC;

(此案例用到的方法是按表达式排序)

#案例4:按年薪的高低显示员工的信息和年薪

法二:

SELECT

*,

salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM

employees

ORDER BY

年薪 DESC;

(此案例用到的方法是按别名排序)

#案例5:根据员工姓名的长度来显示员工姓名和工资

SELECT

LENGTH(last_name) as 字节长度,

last_name,

salary

FROM

employees

ORDER BY

LENGTH(last_name) DESC;

(按函数排序)

#案例6:查询员工信息,要求先按工资排序,再按员工编号排序

SELECT

*

FROM

employees

ORDER BY

salary ASC,employee_id DESC;

(按多个字段排序)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值