语法
select
查询列表
from
表明
where
筛选条件
先执行from 表明
再执行筛选条件
再执行查询列表
分类
1.按条件表达式筛选
条件运算符: > < = != <> <= >=
2.按逻辑表达式筛选(用于连接条件表达式)
逻辑运算符:
&& and
|| or
! not
3.模糊查询
like
between and
in
is null
is not null
like:
通配符
% 任意多个字符(0个到多个)
_ 任意单个字符
如果查询的字符中需要使用 % _ 等, 可以使用 \ 来进行转义
也可以自己来指定转义的字符
查询名字中第二个字符是下划线的员工
select * from employees
where
last_name like '_$_%' ESCAPE '$';
这里就是指定'$'为转义符
3-1.png
3-2.png
between and
包含左右的临界值 [100,120]
两个临界值不能换位置, 必须是小的在前面
in 特点
1. 使用 in 提高语句的简介度
2. in 列表的值类型必须统一或者兼容
= 或者<> 不能用于判断null值
is null 或 is not null 可以判断null值
安全等于 <=>
可以用来判断null 也可以用来判断数值。 可读性不好
# 没有奖金的员工
SELECT *
from employees
where commission_pct <=> null;
# 工资为12000的员工
select *
from employees
where salary <=> 12000;
案例
查询工资>12000的员工信息
SELECT
*
FROM
employees
WHERE
salary > 12000;
查询部门编号不等于90号的员工名和部门编号
SELECT
concat(first_name, ' ', last_name) `name`,
department_id
FROM
employees
WHERE
department_id <> 90
查询工资在10000到20000之前的员工名,工资以及奖金
SELECT
concat(first_name, ' ', last_name) `name`,
salary,
commission_pct
FROM
employees
WHERE
salary >= 10000
AND salary <= 20000
查询部门编号不是在90到110之间的,或者工资高于15000的员工信息
SELECT
*
FROM
employees
WHERE
salary > 15000
OR department_id < 90
OR department_id > 110;
SELECT
*
FROM
employees
WHERE
salary > 15000
OR NOT (
department_id >= 90
AND department_id <= 110
);
SELECT
*
FROM
employees
WHERE
salary > 15000
OR (
department_id < 90
OR department_id > 110
);
查询员工名字中包含字符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到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120;
in 查询员工的工种编号是 IT_PROG AD_VP AD_PRES 中的一个员工名和工种编号
SELECT last_name, job_id
from employees
where job_id in ('IT_PROG', 'AD_VP', 'AD_PRES')
网友评论