参考链接
- https://www.bilibili.com/video/BV12b411K7Zu?p=31
条件查询
语法
SELECT
查询列表
FROM
表名
WHERE
筛选条件;
分类
按条件表达式筛选
简单条件运算符:>、<、=、!=、<>、>=、<=
例如,“查询工资>12000的员工信息”
SELECT
*
FROM
employees
WHERE
salary>12000
又如,“查询部门编号不等于90号的员工名和部门编号”
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id<>90;
按逻辑表达式筛选
逻辑运算符:&&、||、!、and、or、not,用于连接条件表达式
例如,“查询工资在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;
模糊查询
like、between and 、in、is null
like
特点:一般和通配符搭配使用。
通配符:
- %:任意多个字符,包含0个字符
- _:任意单个字符
比如,“查询员工名中包含字符a的员工信息”
SELECT
*
FROM
employees
WHERE
last_name LIKE '%a%';
又如,“查询员工名中第三个字符为e,第五个字符为a的员工名和工资”
SELECT
last_name,
salary
FROM
employees
WHERE
last_name LIKE '__e_a%';
再如,“查询员工名中第二个字符为_的员工名”
可以使用许多语言通用的转义字符“\”:
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_\_%';
也可以使用MySQL中的ESCAPE将任意字符声明为转义字符:
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '_$_%' ESCAPE '$';
between and
- 可以提高语句的简洁度
- 包含临界值
- 两个临界值不要调换顺序
比如,“查询员工编号在100到120之间的员工信息”
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120;
in
判断某字段的值是否属于in列表中的某一项
- 提高语句简洁度
- in列表的值类型必须一致或兼容
- in列表里的值不支持通配符
比如,“查询员工的工种编号是IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号”
SELECT
last_name,
job_id
FROM
employees
WHERE
job_id IN('IT_PROT','AD_VP','AD_PRES');
is null
- =或<>不能用于判断null值
- is null或is not null可以判断null值
比如,“查询没有奖金的员工名和奖金率”
SELECT
last_name,
commission_pct
FROM
employees
WHERE
commission_pct IS NULL;