以前在写博客中,自己感觉函数,SQL查询常用的没必要多看多学习,今天想处理一个简单笛卡尔积问题,炸了!下面聊聊解决和感觉有意义的知识点

    说问题拉点知识关于rownum的,这是Oracle系统查询返回行的记录数值(编号),那么这个其实没什么贴别好说的但是用法相当的灵活和强悍,接着说说今天用到两个非常简单函数lpad,rpad

    大家都是平常熟悉的lpad,rpad,就是咱们补齐字符串常用函数

    格式:

        select lpad(rownum,5,rownum),rownum from dual connect by rownum <=5;

    解释:

        一开始我用rownum from源dual看了一下,返回数值是1也就是一行,上面配合lpad函数意思返回其实原数据1,预期的长度5,不够5长度用rownum(1)补齐,然后connect by 条件指定列小于等于5,所以输出5行

    拉一拉这个有什么用,后面咱们就会用到!把新朋友引入进来 这个朋友就层次化查询,这个朋友厉害的狠,我们下面一起和他聊聊天,朋友名字叫Connect by,在喜欢严谨的思路,经常做父子的SQL语句,而且还有助手叫prior,他负责标识前后关系,可以放在比较符的后面。他的影子叫sys_connect_by_path(),是ORACLE中的函数,他能把自己(connect by)递归生成的结果集,为每条起始记录,将结果集的列值串联为字符串

    这样说完上面的查询语句大家算是基本了解都是啥东西,我们寻寻渐进在又认识了一个伙伴叫distinct,英语翻译过来截然不同的,就是获取唯一标识,会把重读信息过滤掉,这时候他介绍了两位关系户双胞胎union与union all,这就不得了了,我们深入一下他的大家族

    联合查询

        这个大家族我来介绍介绍,他们工作室干把两个或多个select语句并列查询,对记录查询的结果集进行操作,获得最终的记录集结果。

         先从大哥说吧(比较常用),union查询两个结果集并进行操作,删除重复的记录,相当于在获取最终的结果集之后叫过来朋友distinct,结果集去重复,那么双胞胎兄弟union all的其实功能一样就是人家喜欢单干!结果不去掉重复,再来说说其他家人intersect,这个比较厉害,我们数学中都学过交集,U的反身,他就是获取最终查询结果的交集,都有的那一部分。再来说一说minus可以当做集合减法操作第一个查询结果集是被减数,第二个减数,返回第一个结果集中存在,第二个结果集中不存在的。

那我们的铺垫算是做好了下面看看今天一个非常简单的笛卡尔积也是比较经典的例子!我结合上面的知识大家一定会很快明白

    先说说笛卡尔积是啥:

        数学上的概念,笛卡尔积又叫直职,贴上一段数学

            集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}

    今天说了那么多,以上完全个人理解和认识,有可能存在不足之处,请多多指教,今天就说笛卡尔积咱们明天说说问题!