进阶2:
条件查询语法:
select
查询列表
from
表名
where
筛选条件;

分类
一、按照条件表达式筛选
条件运算符:< > = != <> >= <=
二、按照逻辑表达式查询
逻辑运算符:
&& || !
and or not
&&和and:两个条件都为true,结果为true,反之为false
||和or:只要有一个条件为true,结果为true,反之为false
!和not:如果连接的条件本身为false,结果为true,反之为false

三、模糊查询
like
between and
in
is null

一、按条件表达式筛选
#一、按条件表达式筛选
#案例1:查询工资>12000的员工工资。

SELECT *
FROM employees
WHERE salary > 12000;

案例2、:查询部门编号不等于90号的员工名和部门编号
SELECT
last_name,department_id
FROM
employees
WHERE
department_id<>90;

按照逻辑表达式运算

案例1:查询工资在1w~2w的员工名、工资以及奖金。

SELECT *
FROM employees;

SELECT last_name,salary,commission_pct
FROM employees
WHERE salary>10000 AND salary<20000;

案例2:查询部门编号不是在90到110之间的,或者工资高于1.5w的员工信息。
#翻译:部门编号小于90的或大于110的或工资高于1.5w的

/select

from
employees
where
department_id not “>=90 and department_id <=90” or salry>15000;

/
SELECT

FROM employees
WHERE department_id<90 OR department_id>110 OR salary>15000;

SELECT

FROM
employees
WHERE
NOT
(department_id>=90 AND department_id<=110)
OR salary>15000;
#三、模糊查询
/

like
特点:
①一般和通配符搭配使用
通配符:
%代表任意多个字符,包含0个字符
_任意单个字符

between and
in
is null|is not null
*/

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

SELECT
*
FROM employees
WHERE
last_name LIKE ‘%a%’ #%代表通配符

案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
/select last_name,salary
from employees
where last_name like ‘a%’ or last_name like ‘__a%’;
/

SELECT last_name,salary
FROM employees
WHERE last_name LIKE ‘__e_a%’ ;

案例3:查询员工名中,第二个字符为的员工名
SELECT lastname
FROM employees
WHERE last_name LIKE ‘
%’ ;# \为转义字符

SELECT lastname
FROM employees
WHERE last_name LIKE ‘
#_%’ ESCAPE ‘#’ ;# escape 转义

https://www.bilibili.com/video/BV12b411K7Zu?p=32

9/20学习笔记

案例3:查询员工名中,第二个字符为的员工名
SELECT
lastname
FROM
employees
WHERE
lastname
LIKE ‘/%’ ESCAPE ‘a’;
SELECT lastname
FROM employees
WHERE lastname LIKE ‘#%’ ESCAPE ‘#’ ;
#2、between and
/
①语句更加简单
②包含临界值,是>=
③两个临界值不可以调换顺序
/
#案例1:查询员工编号在100到200之间的员工信息
SELECT *
FROM employees
WHERE employeeid >100 AND employeeid<200;
#_

SELECT
FROM employees
WHERE employee_id BETWEEN 100 AND 200;
#3、in
/

含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in,提高语句简洁度。
②in列表的值类型,必须统一或者兼容(123与‘123’)
③in不支持通配符
/
#案例:查询员工的工种编号 是 it_prog、ad_vp、ad_press种的一个员工名和工种编号
SELECT last_name,job_id
FROM employees
WHERE job_id =’IT_PROG’ OR job_id=’ad_vp’ OR job_id=’ad_press’;
#+++++++++++++++++++++
SELECT last_name,job_id
FROM employees
WHERE job_id IN (‘IT_PROT’,’ad_vp’,’ad_pres’);
#4、is null
/

=或<>不能用于判断null值
is null 或 is not null可以。
/
#案例1:查询没有奖金的员工名和奖金率
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct=’(null)’;##xxxxxx
##++++++++++++++++++++++
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;
##安全等于 <=> 可以判断null值
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct <=> NULL;
##案例2:查询工资为12000的员工信息
SELECT last_name,salary
FROM employees
WHERE salary <=>12000;
#is null pk <=>
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用。
<=> :既可以判断NULL值,又可以判断普通的数值。可读性较低。
#2、查询员工号为176的员工的姓名和部门号和年薪
SELECT
last_name,
salary
12,
manager_id
FROM
employees
WHERE
employee_id=’176’;