oracle 11g 条件查询

oracle 11g 条件查询

限定查询

限定查询

比较运算符

IS NULL 和 IS NOT NULL 的使用

AND OR 的使用

使用NOT对条件整体取反

BETWEEN…AND…的使用

字符串的比较

IN NOT…IN 的使用

LIKE的使用

对查询结果进行排序

1. 限定查询(查询满足条件的行)

带where条件查询语句的基本条件

select  *  |  列名
from   表名
where  条件
查询工资大于1500的员工信息,显示员工编号,显示员工姓名,工资,部门编号,年龄
select  empno,ename,sql  from   bank_emp;
—查询工资大于10000的有哪些人
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 
```




 













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值