条件查询

#条件查询
/*
条件查询:根据条件过滤原始表的数据,查询到想要的数据
语法:
select
 要查询的字段|表达式|常量值|函数
from
 表
where
 条件 ;

 

分类:
一、条件表达式
案例:salary>10000
条件运算符:
> < >= <= = != <> <=>

 

二、逻辑表达式
案例:salary>10000 && salary<20000

 

逻辑运算符:
 and(&&):两个条件如果同时成立,结果为true,否则为false
 or(||):两个条件只要有一个成立,结果为true,否则为false
 not(!):如果条件成立,则not后为false,否则为true
 
 优先级:not>and>or
  !>&&>||

 

三、模糊查询
案例:last_name like 'a%'

 

*/

 

#一、按条件表达式查询

 

#案例1:查询部门编号是30的员工信息
SELECT *
FROM employees
WHERE department_id = 30;

 


#案例2:查询部门编号不是30的员工信息
SELECT *
FROM employees
WHERE department_id <> 30;

 

#案例3:查询工资<=20000的员工姓名和工资
SELECT
 last_name,salary
FROM
 employees
WHERE
 salary<=20000;

 


#二、按逻辑表达式查询

 

#案例1:查询 工资10000和20000之间的员工信息

 

SELECT
 *
FROM
 employees
WHERE
 salary >=10000 AND salary<=20000;
 
#案例2:查询job_id=AD_VP或 department_id>80的员工信息

 

SELECT
 *
FROM
 employees
WHERE
 job_id='AD_VP' OR department_id > 80;

 


#案例3:查询部门编号不是在80-100之间的员工信息
SELECT
 *
FROM
 employees
WHERE
 NOT(department_id>=80 AND department_id<=100);

 

#案例4:查询工资>10000或者 department_id在30-80之间的员工信息
SELECT
 *
FROM
 employees
WHERE
 salary>10000
OR
 department_id>=30
AND
 department_id<=80;

 

#三、模糊查询
/*
1.like
特点: 与通配符搭配判断 字符型的数据

 

通配符:
 % 任意多个字符,包含0个
 _ 任意单个字符
2.between and
3.in
4.is null

 

*/

 

#1.like

 

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

 

SELECT
 *
FROM
 employees
WHERE
 last_name LIKE '__a%';

 

#案例3:查询姓名中第二个字符为_的员工信息
/*
update employees set last_name='a_xx' where employee_id=102;
*/

 

SELECT * FROM employees WHERE last_name LIKE '_\_%';

 

SELECT
 *
FROM
 employees
WHERE
 last_name LIKE '_a_%' ESCAPE 'a';
 
#2.between and
/*
在...之间
① 等价于 使用逻辑运算符and的使用,但简化了代码,提高了阅读性
②包含两个临界值
③较小值方前面,较大值放后面
*/

 

#案例:选择工资在5000到12000的员工的姓名和工资
SELECT
 last_name,salary
FROM
 employees
WHERE
 salary BETWEEN 12000 AND 5000;
等价于
SELECT
 last_name,salary
FROM
 employees
WHERE
 salary >= 12000 AND salary<=5000;

 

#3.in关键字
/*
在...里面
特点:
① 等价于 使用逻辑运算符or连接条件,好处 提高代码的简洁度和可读性
②列表值的类型必须是同一的类型
③不支持通配符
*/

 

#案例1:查询部门编号位30、50、90的员工信息
SELECT
 *
FROM
 employees
WHERE
 department_id IN(30,50,90);

 

 

 

等价于

 


SELECT
 *
FROM
 employees
WHERE
 department_id =30 OR department_id = 50 OR department_id=90;
 
#案例2:查询 job_id是ST_MAN或ST_CLERK或FI_ACCOUNT的员工信息
SELECT
 *
FROM
 employees
WHERE
 job_id IN ('ST%','FI_ACCOUNT');  #×

 

#4.is null | is not null

 

/*
判断是否为空,用=或<>无法判断

 

补充:
<=> 安全等于,既可以判断是否为null,也可以判断普通类型的数据是否相等,但可读性较差

 


*/

 

#案例1:查询 没有奖金的员工
SELECT
 *
FROM
 employees
WHERE
 commission_pct IS  NULL;

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值