Oracle表复杂查询 --合并查询

59 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第26天,点击查看活动详情

6 Oracle 表的管理

6.5 oracle表的管理 -表查询(重点)

6.5.5 Oracle表复杂查询 --合并查询

·合并查询

有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符号 union,union all,intersect,minus

1)union

该操作符用于取得两个结果集的并集,当使用该操作符时,=

 select ename,sal,job from emp where sal>2500 union select ename,sal,job from emp where job='manager';

2)union all

该操作与union相似,但是它不会取消重复行,而且不会排序。

select ename,sal,job from emp where sal>2500 union all select ename,sal,job from emp where job='MANAGER';

该操作符用于取得两个结果集的并集,当使用该操作符时,不会自动去掉结果集中重复行。

3)intersect

使用该操作符用于取得两个结果集的交集。

select ename,sal,job from emp where sal>2500 intersect select ename,sal,job from emp where job='MANAGER';

4)minus

使用该操作符用于取得两个结果集的差集,它只会显示存在第一个集合中,而不存在第二个集合中的数据。

select ename,sal,job from emp where sal>2500 minus select ename,sal,job from emp where job='MANAGER';

集合操作远远比and和or操作速度快的多

6.6 oracle表的管理 -添加数据

·所有字段都插入

insert into student values('A001','张三','男','01-5月-05',10);

·Oracle中默认的日期格式“DD-MON-YY” dd日子(天) mon 月份 yy2位的年 ‘09-6月-99’ 1999年6月9日

·修改日期的默认格式

alter session set nls_date_format ='yyyy-mm-dd';

国家语言支持(National Language Support)

修改后,可以用我们熟悉的格式添加日期类型:

insert into student values('A002','MIKE','男','1905-05-06',10);

·插入部分字段

insert into student(xh,xm,sex) values('A003','JOHN','女');

·插入空值

 insert into student(xh,xm,sex,birthday) values('A004','MARTIN','男',null);

·查询没有生日的学生

select * from student where birthday is null;

6.7 oracle表的管理 -修改数据

·改一个字段

update student set sex='女' where xh='A001';

·修改多个字段

 update student set sex='男',
​
 birthday='1980-04-01' where xh='A001'

·修改含有null值的数据

6.8 oracle表的管理 -删除数据

·删除数据

 delete from student;

删除所有记录,表结构还在,写日志,可以恢复的

 ·恢复被删除的数据的方法:

savepoint aa;//在删除之前先保存一个点delete from student;//删除student中数据
​
rollback to aa;//回滚数据

·删除表的结构和数据(不能恢复数据)

drop table student;

·删除一条记录

delete from student where xh='A001';

·删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度快

truncate table student;