mysql 二阶精度_Mysql进阶二:条件查询

进阶二:条件查询

I 语法:

SELECT

查询列表 #第三步执行

FROM

表名 #第一步执行

WHERE

筛选条件; #第二步执行

II 分类:

一、按照条件表达式筛选

条件表达式:

>

<

=

!=

<=

>=

二、按照逻辑表达式筛选

逻辑运算符:

&&

||

and

or

not

三、模糊查询

like

between and

in

is null

USE myemployees;

一、按照条件表达式筛选

案例一:查询工资》12000的员工信息

SELECT

*

FROM

employees

WHERE

salary>12000;

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

SELECT

last_name,

department_id

FROM

employees

WHERE

department_id<>90;

二、按照逻辑表达式查询

案例一:查询工资z在10000到20000之间的员工名称、工资以及奖金

SELECT

last_name,

salary,

commission_pct

FROM

employees

WHERE

salary >=10000 AND salary <= 20000;

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

SELECT

*

FROM

employees

WHERE

#department_id <90 or department_id >110 or salary>15000; #第一种表达

NOT(department_id >90 AND department_id <1110 ) OR salary >15000; #第二种表达

三、模糊查询

LIKE

BETWEEN AND

IN

IS NULL

IS NOT NULL

/*

like一般和通配符一起使用;

通配符:

% 任意多个字符,包含0个字符

_ 任意单个字符

*/

1.like

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

SELECT

*

FROM

employees

WHERE

last_name LIKE '%a%';

案例二:查询员工名中第三个字符为n,且第五个字符为l的员工名和工资

SELECT

last_name,

salary

FROM

employees

WHERE

last_name LIKE '__n_l%';

案例三:查询员工名中地位个字符为_的员工名

SELECT

last_name

FROM

employees

WHERE

last_name LIKE '_$_%' ESCAPE '$'; #定义转义字符

2. between and

/*

1.提高语句简洁度

2.包含临界值

3.两个临界值不可以颠倒

*/

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

常规表达

SELECT

*

FROM

employees

WHERE

employee_id >=100 AND employee_id <=120;

between and 的等价表达

SELECT

*

FROM

employees

WHERE

employee_id BETWEEN 100 AND 120; #包含临界值 【 】

3.in

/*

含义:使用in判断字段的值是否属于in列表的某一项

1.使用in语句提高语句简洁度

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

*/

案例:查询员工的公众编号是 IT_PROG、AD_PRES中的一个员工名和工种编号

常规表达

SELECT

last_name,

joB_id

FROM

employees

WHERE

job_id = 'IT_PROG' OR job_id='AD_VP' OR job_id= 'AD_PRES';

使用in表达

SELECT

last_name,

job_id

FROM

employees

WHERE

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

4. is null

SELECT

last_name,

commission_pct

FROM

employees

WHERE

commission_pct IS NULL

安全等于 <=>

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

SELECT

last_name,

commission_pct

FROM

employees

WHERE

commission_pct <=> NULL;

案例2:查询工资为12000的员工信息

SELECT

*

FROM

employees

WHERE

salary <=> 12000;

is null 与 <=>

IS NULL 仅仅可以判断NULL值,可读性较高,建议使用

<=> 既可以判断NULL值,又可以判断普通的数值,但是可读性较差

四. 经典面试题

试问

SELECT * FROM employees;

SELECT * FROM employees WHERE commission_pct LIKE '%%' AND last_name LIKE '%%';

结果是否一样,说明理由。

答:

不一样。如果判断的字段有NULL值,就不一样。

如果将AND换成OR,则结果是一样的。

c4365e06ae57fbe7433f3b864b6ddaba.png

068be7e19a8fd7ea1cc73db7ddbb42c1.png

alicomon

发布了112 篇原创文章 · 获赞 58 · 访问量 3万+

私信

关注

标签:last,进阶,employees,查询,Mysql,WHERE,id,SELECT,name

来源: https://blog.csdn.net/QQQZSJ/article/details/104093025

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值