/*
语法:
select
查询列表
from
表名
where
筛选条件;
分类:
一.按条件表达式筛选
> < = != >= <=
二. 逻辑表达式筛选 用于连接表达式
&& || !
and or not
三. 模糊查询
like
between and
in
is null
is not null
*/
SELECT *
FROM employees
WHERE salary>12000;
SELECT last_name,department_id
FROM employees
WHERE department_id!=90;
#工资在10000到20000之间的员工名,工资以及奖金
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary>=10000 AND salary<=20000;
#部门编号不是在90-110 或者工资高于15000
SELECT *
FROM employees
WHERE NOT(department_id<90 OR department_id>110) OR salary>15000;
#模糊查询
/*
like :
% 任意多个字符 包含0个字符
_ 任意单个字符
字符型或正数型都可
*/
# 员工名字中带a的
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
# 员工名字第三个字符为的e,第五个字符为a的员工名和工资
SELECT *
FROM employees
WHERE last_name LIKE '__e_a%';
#员工名字第二个为_
SELECT *
FROM employees
WHERE last_name LIKE '_\_%';
#查询员工部门编号在100以上的
SELECT *
FROM employees
WHERE department_id LIKE '1__';
#转义
SELECT *
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';
/*
between and 区域 包含临界值
*/
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
salary BETWEEN 10000 AND 20000;
/*
in
类型必须一致 相当于=
*/
SELECT
last_name,
salary,
commission_pct,
job_id
FROM
employees
WHERE
job_id IN ('IT_PROT','AD_VP','AD_PRES');
/*
is null
is not null
*/
# 没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees;
WHERE commission_pct IS NULL;
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
/*
安全等于<=>
null 或者普通值都可以判断
*/
SELECT last_name,commission_pct
FROM employees;
WHERE commission_pct <=>NULL;
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct <=>0.1;
#练习
SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees;
#练习
SELECT salary,last_name
FROM employees
WHERE commission_pct IS NULL AND salary<18000;
#练习 jod_id 不为'IT'
SELECT *
FROM employees
WHERE job_id != 'IT' OR salary<=>12000;
#练习 为null的全部没有了
SELECT *
FROM employees
WHERE commission_pct LIKE '%%';