理论
一、语法
select 查询列表 from 表名 where 筛选条件
二、筛选条件的分类
1、简单条件运算符
> < = <> != >= <= <=>#安全等于
2、逻辑运算符
&& and
|| or
! Not
3、模糊查询
like:#一般搭建通配符使用,可以判断字符型数值或数值型
通配符:%任意多个字符,_任意单个字符
between and
in
is null/is not null
is null PK <=>
普通类型的数值 | Null | 可读性 | |
---|---|---|---|
Is null | × | √ | √ |
<=> | × | √ | √ |
案例
语法:
select 查询列表
from 表名
where 筛选条件; 分类:一、按条件表达式筛选 条件运算符:> < = != <> >= <= 二、按逻辑表达式筛选 逻辑运算符: 作用:用于连接条件表达式 && || ! and or not %%和and:两个条件都为true,结果为true,反之为false ||或or:只要有一个条件为true,结果为true,反之为false !或not:如果连续的条件本身为falase,结果为true,反之为false 三、模糊查询 like beteen and in is null
一、按条件表达式筛选
#案例1;工资大于12000的员工信息
SELECT *
FROM employees
WHERE salary>12000;
#案例2:部门编号不等于90的员工和部门编号
SELECT
`last_name` AS 名字,
`department_id` AS 部门编号
FROM employees
WHERE department_id <> 90;
二、按逻辑表达式筛选
#案例1:查询工资在10000到20000之间的员工和奖金
SELECT
last_name AS 名字,
salary AS 工资,
`commission_pct` AS 奖金
FROM employees
WHERE salary>=10000 AND salary<=20000
#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT *
FROM employees
WHERE
NOT(`department_id`>=90 AND `department_id`<=100) OR salary>15000
三、模糊查询
like 特点: ①一般和通配符使用
通配符:
% 任意多个字符
_ 任意单个字符 between and in is null | is not null
#1.like
#案例1:查询员工中包含字符a的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
#案例2:查询员工名中第三个字符为u,第五个字符为l的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '__u_l%'
#案例3:查询员工中第二个字符为_的员工名(escape 转意字符)
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';
#2.between and
①使用between and可以提高语句的简洁度
②包含临界值
③两个临界值不能调换顺序employees
#案例1:查询员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE `department_id`>=100 AND `department_id`<=120;
#-------------------------------
SELECT *
FROM employees
WHERE `department_id` BETWEEN 100 AND 120;
#3.in
含义:判断某字段的值是否属于in列表中的某一项 特点:
①使用in提高语句简洁度
②in列表的值类型必须一致或兼容
#案例:查询工种编号AD_VP、IT_PROG的员工信息
SELECT *
FROM employees
WHERE `job_id`= 'AD_VP' OR `job_id`= 'IT_PROG';
#----------------------------------------
SELECT *
FROM employees
WHERE `job_id` IN ('AD_VP' , 'IT_PROG');
#4.is null
#案例1:查询没有奖金的员工名和奖金率
SELECT last_name ,`commission_pct`
FROM employees
WHERE `commission_pct` IS NULL;
#-------------不为0----------
SELECT last_name ,`commission_pct`
FROM employees
WHERE `commission_pct` IS NOT NULL;
#案例2:查询工资为12000的员工信息
SELECT last_name ,`commission_pct`
FROM employees
WHERE salary <=> 12000;
#-----------错误示范—----------
SELECT last_name ,`commission_pct`
FROM employees
WHERE `commission_pct` IS 12000;
#is null pk <=>
IS NULL:仅可以判断NULL值,可读性较高,建议使用
<=> :既可以判断NULL值,又可以判断普通的数值,可读性较低
#案例讲解
#2.查询员工号为123的员工的姓名和部门号和年薪
SELECT last_name, `department_id`,`salary`
FROM employees
WHERE `manager_id` <=> 123;