select empno,ename,sql,age,deptno from bank_emp where sql>10000;
```
#### 比较运算符
```
运算符 | 说明
> | 大于
< | 小于
= | 等于
>= | 大于等于
<= |小于等于
!= 或<> | 不等于
```
### 2.限定查询is null 和is not null 的使用
#### 查询每个月可以得到奖金的员工信息 -- IS NULL为空 IS NOT NULL 不为空
```
select empno,ename,sql,comm,age,deptno
from bank_emp where comm is not null ----不为空
```
#### 查询每个月可以得不到奖金的员工信息-----is null 为空
```
select empno,ename,comm,age,deptno
from bank_emp where comm is null ----为空
```
#### 3.限定查询-------AND的使用
```
查询工资大于1500,并且可以领取奖金的员工信息
select empno,ename,sql,comm,age,deptno from bank_emp
where sql>10000 and comm is not null;
```
#### AND 代表什么运算 交集 intersect(交集)
#### 4.限定查询-----OR的使用 OR 代表什么运算 或者
```
查询工资大于10000和可以领取奖金的员工信息
select empno,ename,sql.age,comm,deptno from bank_emp
where sql>10000 OR IS NOT NULL
```
#### 5.并集union 和 union all
```
select empno,ename,sql.age,comm,deptno from bank_emp
where sql>10000 ----533条数据
union --1253 合并去重
select empno,ename,sql.age,comm,deptno from bank_emp
where comm is not null --1106
```
```
select * from (
select empno,ename,sql.age,comm,deptno from bank_emp
where sql>10000 ----533条数据
union all --1639 --- 合并不去重
select empno,ename,sql.age,comm,deptno from bank_emp
where comm is not null) --1106
order by 1;
```
### 6.限定查询-----使用NOT对条件整体取反 NOT 取反
```
查询工资不大于10000并且不能领取奖金的雇员
select empno,ename,sql,comm,age
from bank_emp
where not (sql>10000 OR comm is not null);
```
### 7.差集Minux
```
--差集 minux
取两个集合的差集,A集合中村在,B集合中不存在的数据。
(取A集 合中B集合不存在的数据)去重
--20,30 A结果集
select empno,ename,deptno from bank_emp where deptno=20 OR deptno=30 --509条数据
20 B结果集
minux --作差集 ,A集合中村在,B集合中不存在的数据。
select empno,ename,deptno from bank_emp where deptno=20 --446条数据
select 509-446 from dual; -- 63条数据
**注意:交集、并集、差集 ,两个查询的结果的字段要一致否则会报错
```
#### 8. 逻辑运算的优先顺序 NOT >AND >OR
#### 9.限定查询 BETWEEN.....AND的使用 区间的使用
```
查询基本工资大于等于10000并且小于等于15000的雇员
select empno,ename,sql from bank_emp where sql>=10000 and sql<=15000;
select empno,ename,sql from bank_emp between 10000 and 15000;
查询1991年雇佣的员工
select empno,ename,sql,,hirdate from bank_emp
where hirdate between to_date('2013/01/01','yyyy/mm/dd')
and to_date('2013/12/31','yyyy/mm/dd');
```
#### 10.限定查询字符串的比较
```
查询姓名为王宇晨的员工所有信息
select * from bank_emp where ename='王宇晨' --如果是字母的话,区分大小写
select * from bank_emp where ename='SMITH'
```
### 11.限定查询-----IN 和NOT IN的使用
```
查询雇员编号是137,158,190的雇员的所有信息
select * from bank_emp where empno=137 OR empno=158 OR empno=190
select * from bank_emp where empno IN(137,158,190);
查询雇员编号不是137,158,190的雇员的所有信息
select * from bank_emp where empno NOT IN(137,158,1900)
```
### 12.限定查询-------LIKE的使用 LIKE是模糊匹配 说明:_匹配一个字符,%匹配0个或多个字符 to_char是将日期转换为字符串
```
1.查询雇员的名字第二字符是'雨 的雇员信息
select empno,ename from bank_emp
where ename LIKE '_雨%';
2.LIKE 匹配日期
查询2013年入职的雇员的所有信息
select empno,ename,hirdate from bank_emp
where to_char(hirdate,'yyyy-mm-dd') LIKE '%2013%' ------to_char是将日期转换为字符串
3.LIKE匹配数字
查询工资中包含8的雇员信息
select empno,ename,sql from bank_emp
where sql like '%8%';
```
### 13.对结果进行排序.......ORDER_BY desc 是降序排序 asc加和不加都是升序排序
```
带有ORDER BY子句的sql语句基本格式
select 列 from 表 where order by 列
1.查询工资大于10000的信息,按工资进行排序
selct empno,ename,sql from bank_emp
where sql>10000
order by sql asc ------默认是升序排序
select empno,ename,sql from bank_emp
where sql>10000
order by sql desc; ----desc是降序排序
2.查询工资大于1500的员工信息,按工资降序排序,按雇佣日期升序排序
select empno,ename,sql,hirdate from bank_emp
where sql>10000
order by sql DESC ,hirdate ASC
```