Oracle数据库之——分组查询,子查询及添加,更新,删除


分组查询

这里写图片描述


这里写图片描述

写的顺序:

select...from...where...
group by...having...order
by...

执行顺序:

from...where...group by....
having ... select ...order  by ....

实例练习:

-- existes : 用它来找寻满足一个条件的信息
-- 找寻多表中存在关联关系或不存在关联关系的数据
--查询部门当中没有员工的部门
select d.* from dept d 
where not EXISTS(select * from emp e where e.deptno=d.deptno)

子查询

子查询=简单查询+限定查询+多表查询+统计查询的综合体;

多表查询性能差,替代方案:子查询,

所谓的子查询指的就是在一个查询之中嵌套了其他的若干查询.

语法:
这里写图片描述

如果现在的子查询返回的是多行单列数据的话,这个时候就需要使用三种判断符判断了:IN、ANY、ALL。

子查询相关操作符

ANY操作符:与每一个内容相匹配,有三种匹配形式:

=ANY:功能与IN操作符是完全一样的;

>ANY:比子查询中返回记录最小的还要大的数据。

<ANY:比子查询中返回记录的最大的还要小;

这里写图片描述

实例练习:

select * from emp where sal in(select sal from emp where job='MANAGER')

-- =anyin作用一样
select * from emp where sal=any(select sal from emp where job='MANAGER')

-- >any 比子查询中返回的最小结果要大
select * from emp where sal>any(select sal from emp where job='MANAGER')

-- <any 比子查询中返回的最大结果要小
select * from emp where sal<any(select sal from emp where job='MANAGER')

-- >all 比子查询中返回的最大结果还要大
select * from emp where sal>all(select sal from emp where job='MANAGER')

-- <all 比子查询中返回的最小结果还要小
select * from emp where sal<all(select sal from emp where job='MANAGER')

DML(数据操作语言)

添加

– 添加

–insert into 表名称 (字段1,字段2,字段3……) values (值1,值2,值3….)

– 只能添加一次,第二次添加提示错误:违反唯一约束条件

insert into dept (deptno,dname,loc) values (50,’DEVELOP’,’BeiJing’);

– 简写,必须保持顺序跟表的字段顺序一样

insert into dept values(60,’DESIGN’,’ShangHai’);

– 提交事务. 引申一个事务概念:DML(数据操作语言)没有自动提交事务,DDL(数据定义语言)有自动提交事务能力

COMMIT;

更新

– update 更新

– update 表名称 set (字段1=值1,字段2=值2,字段3=值3,……) update dept set loc=’YanTai’ where deptno=50;

–rollback;回滚刚才没有提交的事务的操作

–提交事务:持久化。 COMMIT;

删除

– 删除 delete

– delete from 表名称 where delete from dept where deptno in(50,60);

–持久化:提交commit commit;

–除了DML(数据操作语言),其他都不需要提交事务

原文地址:https://www.cnblogs.com/aixing/p/13327706.html