Administrator
Published on 2021-08-02 / 178 Visits
0
0

MySQL核心之条件查询

条件查询

语法

SELECT
	查询列表 
FROM
	表名 
WHERE
	筛选条件;

分类

按照条件表达式查询

  • >, >=
  • <, <=
  • =, <=>
  • !=, <>
#案例1:查询工资>12000的员工信息
SELECT 
	*
FROM
	employees
WHERE
	salary>12000;
	
#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT 
	last_name,
	department_id
FROM
	employees
WHERE
	department_id<>90;

按照逻辑表达式查询

  • &&, AND
  • !, NOT
  • ||, OR
#案例1:查询工资z在10000到20000之间的员工名、工资以及奖金
SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=10000 AND salary<=20000;
#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
SELECT
	*
FROM
	employees
WHERE
	NOT(department_id>=90 AND  department_id<=110) OR salary>15000;

模糊查询

LIKE

  • %匹配任意多个字符,包含 0 个字符
  • _匹配任意单个字符
#案例1:查询员工名中包含字符a的员工信息
SELECT
	* 
FROM
	employees 
WHERE
	last_name LIKE '%a%';
	
#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT
	last_name,
	salary 
FROM
	employees 
WHERE
	last_name LIKE '__n_l%';

#案例3:查询员工名中第二个字符为_的员工名
SELECT
	last_name
FROM
	employees
WHERE
	last_name LIKE '_$_%' ESCAPE '$';

BETWEEN AND

  • 包含临界值
  • 两个临界值不能调换顺序
#案例1:查询员工编号在100到120之间的员工信息
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

IN,NOT IN

  • in列表的值类型必须一致或兼容
  • in列表中不支持通配符
SELECT
	last_name,
	job_id
FROM
	employees
WHERE
	job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

IS NULL,IS NOT NULL

  • =<>不能用于判断 NULL值
  • IS NULLIS NOT NULL 可以判断 NULL值
  • 安全等于:<==>, 既可以判断 NULL值,又可以判断普通的数值
#案例1:查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NULL;

#案例2:查询有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct IS NOT NULL;	
	
#安全等于  <=>
#案例1:查询没有奖金的员工名和奖金率
SELECT
	last_name,
	commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;
		
#案例2:查询工资为12000的员工信息
SELECT
	last_name,
	salary
FROM
	employees

WHERE 
	salary <=> 12000;

IFNULL

  • 填充默认值
# 显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
SELECT
	CONCAT(`first_name`,',',`last_name`,',',`job_id`,',',IFNULL(commission_pct,0)) AS out_put
FROM
	employees;

Comment