Oracle 集合

-- 与数学有关系的集合()

-- 单条语句

select * from t_ke

where ke_name like '%数学%' or ke_name='马克思主义'

select * from t_ke where ke_name like '%数学%'

union all

select * from t_ke where ke_name='马克思主义'

-->>

select * from t_ke where ke_name like '%数学%'

select * from t_ke where ke_name='离散数学'

select * from t_ke

where ke_name like '%数学%' or ke_name='离散数学'

select * from t_ke where ke_name like '%数学%'

union all

select * from t_ke where ke_name='离散数学'

union all

select 88 id,'城市建设' ke_name from dual

select * from t_ke where ke_name like '%数学%'

union 

select * from t_ke where ke_name='离散数学'

union 

select 88 id,'城市建设' ke_name from dual

create table t_stu2(

   id number primary key,

   user_name varchar2(10),

   sex varchar2(10)

);

insert into t_stu2 values(1,'小军','男');

insert into t_stu2 values(2,'小黄','女');

insert into t_stu2 values(3,'小陈','男');

insert into t_stu2 values(4,'小姚','女');

commit

create table t_yigong(

   id number primary key,

   user_name varchar2(10)

);

insert into t_yigong values(1,'小陈');

insert into t_yigong values(2,'小姚');

insert into t_yigong values(3,'小K');

insert into t_yigong values(4,'小T');

commit

select * from t_stu2

select * from t_yigong

-- 想看看学生中,有那些是义工

-- 思维1:条件查询

select * from t_stu2

  where user_name in (select user_name from t_yigong)

-- 想看看义工中,有那些是学生

-- 思维1:条件查询

select * from t_yigong

  where user_name in (select user_name from t_stu2)

  

  

-- 问题未必看交集的名字,只是我们要用到交集这个概念。

-- 有可能,我查询的内容根本与学生或这义工的名字毫无联系

-- 学生这个群体,愿意当义工的,女孩子多还是男孩子多?

select sex,count(1) from t_stu2 where user_name in(

  select user_name from t_stu2

  intersect

  select user_name from t_yigong

) group by sex

insert into t_stu2 values(5,'小冰','女');

insert into t_yigong values(5,'小冰');

Commit

-- 学生这个群体,不愿意当义工的,女孩子多还是男孩子多?

--错误示范(99%大学生会犯的错误)

select sex,count(1) from t_stu2 where user_name not in(

  select user_name from t_stu2

  intersect

  select user_name from t_yigong

) group by sex

--  not in就是一种排除法

-- 学习英语A,B,C,D (要排除3个才能得到正确答案)

-- 对in操作:打开书本,在目录里面查询

-- 对not in操作:打开书本,800页也需要一页一页看

select * from t_stu2

select sex,count(1) from t_stu2 where user_name in(

  select user_name from t_stu2

  minus

  select user_name from t_yigong

) group by sex

 熟练掌握:union all 、intersect 、minus 
 大脑建立除了条件查询外的另外一个重要概念:集合运算
 要点:1、画韦恩图帮助思考何种集合运算
           2、把not in 转义为in避免损害系统性能 
原文地址:https://www.cnblogs.com/sheying/p/8571896.html