mysql:条件查询

  • 语法:
    select
          查询列表
    from
          表名
    where
          筛选条件

  • 分类:
    1.按条件表达式筛选:
          条件运算符:> < = <>
    2.按逻辑表达式筛选:
          逻辑运算符: and or not
    3.模糊查询: like between and in is null
          like:一般和通配符一起使用,
                通配符:%任意多个字符(包含0个字符) _ 任意单个字符

一.按条件表达式筛选

#案例1:查询工资大于12000的员工信息
SELECT 
  * 
FROM
  employees 
WHERE salary > 12000 ;

在这里插入图片描述

#案例2:查询部门编号不等于90号的员工的名和部门编号
SELECT 
  first_name,
  `department_id` 
FROM
  employees 
WHERE department_id <> 90 ;

在这里插入图片描述

二.按逻辑表达式筛选

#案例1:查询工资1000~2000之间的员工名和奖金
SELECT
	last_name,
	salary,
	commission_pct
FROM
	employees
WHERE
	salary>=1000 AND salary<=20000;

在这里插入图片描述

#案例2:部门编号不是90~110之间,或者工资高于15000的员工信息
SELECT
	*
FROM
	employees
WHERE
        department_id <90 OR department_id>110 OR salary>15000;
   
   #方式二:     
SELECT
	*
FROM
	employees
WHERE
        NOT(department_id >=90 AND department_id<=110) OR salary>15000;

在这里插入图片描述

三.模糊查询

1. like:

#案例1:查询员工名中包含字符“a"的员工信息
SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '%a%';

在这里插入图片描述

#案例2:查询员工名中第三个字符为e,第五个字符为a的员工信息
SELECT
	*
FROM
	employees
WHERE
	last_name LIKE '__n_l%';

在这里插入图片描述
案例3:查询员工名中第二个字符为_的员工名

  • 我们知道,在sql语言中 表示任意单个字符,但是现在我们要查询员工名中包含“"的员工,所以要用到转义

转义有两种方式:使用“\”或者使用“~”

	#方式一:使用\
SELECT
	last_name
FROM 
	employees
WHERE
	last_name LIKE '_\_%';

	#方式二:使用“~”
SELECT
	last_name
FROM 
	employees
WHERE
	last_name LIKE '_~_%' ESCAPE '~';

在这里插入图片描述

2. between and

#案例:查询员工编号在100到120之间的员工信息
SELECT
	*
FROM
	employees
WHERE
	employee_id BETWEEN 100 AND 120;

在这里插入图片描述

3. in

#案例:查询员工的工种编号是IT_PROG AD_VP AD_PRES中任意一个的员工名和工种编号
SELECT
	job_id AS '工种编号', last_name AS '名'
FROM
	employees
WHERE
	job_id IN ('IT_PROG','AD_VP','AD_PRES');

在这里插入图片描述

4. is null ,is not null

#案例:查询有奖金的员工信息,即commission_pct不为null的员工
SELECT
	*
FROM
	employees
WHERE
	commission_pct IS NOT NULL;

在这里插入图片描述

5. 安全等于 <=>

普通“=”不能判断null,需要用“is null” 或者“is not null”来判断;但是安全等于<=>,可以直接用来判断null

#案例1:查询没有奖金的员工信息
SELECT
	last_name,commission_pct
FROM
	employees
WHERE
	commission_pct <=> NULL;

在这里插入图片描述

#案例2:查询工资等于12000的员工
SELECT
	last_name,salary
FROM
	employees
WHERE
	salary <=> 12000;

在这里插入图片描述

四.条件查询例题:

#查询没有奖金,工资小于18000的salary、last_name
SELECT
	last_name,salary
FROM 
	employees
WHERE
	commission_pct IS NULL AND salary<18000;

在这里插入图片描述

#查询job_id不为‘IT’ 或者工资为12000的员工信息
SELECT
	*
FROM 
	employees
WHERE
	job_id <> 'IT' OR salary=12000;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了43 篇原创文章 · 获赞 1 · 访问量 747

猜你喜欢

转载自blog.csdn.net/weixin_41391619/article/details/104812598
今日推荐