嵌套集合

1.去重复 instinct (可以理解为分组)

select instinct 列 from 表名;//列相同的 合并只显示一条

select instinct 列1,列2 from 表名;//如果是两个列  两个列的组合当做整体 只有当两个列同时满足值相同才合并显示

select 列1,instinct 列2 from 表名;//语法错误

2.分组 group by

想要显示的最终结果只能是两种情况    分组条件   分组函数

分组时候可能会产生与条件筛选相关的操作
   如果先进行条件筛选 后分组 where group-by   ,where优先级高于group by
   如果先进行分组 后进行筛选 group-by having,having用法与where一样,但优先级低于group by
   如果分析之后还需要进行排序 order-by 最后处理 

3.嵌套
将一条完整的SQL嵌套在另一条完整的SQL内部
*1.可以将查询的结果当做条件 再次查询
select * from student where chinese = (select max(chinese) from student);
在这种情况下有可能 嵌套的子SQL查询的表格与当前的SQL不一致
2.可以将查询的结果当做一张新的表格 表格基础上再次查询
select * from (select sid,sname,ssex,sage from student) xxx;
需要注意from后面的表格需要有名字 给表格起别名

4.in,any,some,all     是否满足子集中的条件

in(包含):where条件之后,列 in(值,值,值)。只要满足括号里的一个值就可以,默认=比较

括号里可以是常量,也可以是sql查询到的结果

select * from 表名 where 列 (not)in(值1,值2,。。。);

select * from 表名 where 列 (not)in(select 列 from 表名);

not in(不包含)

 

以下三个关键字都只能用子集,不能用常量。

any:满足查询子集中的某一个即可 >any   <any    =any(结果与in)   !=any

some:与any完全一致
all :满足查询子集中的全部才可以 >all <all =all !=all(结果与not in)

 

5.集合 union 、union all

集合操作 并集 (oracle数据库有-->交集intersect 差集minus)
union(结合 合并的意思 并集)

select t1.列,t1.列 from 表1 union select t2.列,t2.列 from 表2;

将两张表的数据合并在一起显示出来,查询的列个数需要一致。

union跟union all区别在于,union查询结果会去重复,union all不会,哪怕两条相同的数据也会显示,

因此性能上union all更好,建议用union all。

 

posted on 2020-11-27 17:57  刀锋93  阅读(108)  评论(0编辑  收藏  举报

导航