Oracle笛卡尔积,分组,多表连接

2024-03-09 22:32

本文主要是介绍Oracle笛卡尔积,分组,多表连接,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一  oracle的单行函数 

      转换函数 

      to_date(日期字符串,日期格式)  字符串的格式必须由第二个参数来判断 

                         日期格式 : 

                         年 yyyy,月mm,日dd,小时(hh12小时制,hh24 24小时制) 分钟 mi 秒 ss 

          举例 :select to_date('2015/03/09','yyyy/mm/dd') from dual 

      to_char(数字) 将数字转换成char类型 

      to_char(日期,日期格式)  将日期转换成char类型  日期格式 可以任意 输出的内容 根据日期的格式而定 

             举例   select to_char(sysdate,'hh24')  输出24小时制的当前时间的hour 

      to_number(字符串数字) 将字符串的数字转换成number类型 

                       举例    to_number('123')输出数字 123        

   聚合函数 

        组函数会忽略空值。 
 
                  组函数可以用于任何有效的表达式。 

       如:可以对数字、字符串和日期使用COUNT、MAX、MIN。 

       组函数会忽略空值。 

       避免使用 COUNT(*) ,而使用 COUNT(ROWID) 

       count(*|1|列名|rowid) 统计总行数  

       sum(列名) 求总和 

       max(列名) 求最大值 

       avg(列名) 求平均值 

       min(列名) 求最小值 

   分组(group by)      

         语法: 

   SELECT [DISTINCT] *|[列名 别名,…]  

    FROM 表名 

   [WHERE 条件] 

    [GROUP BY 分组条件] 

    [ORDER BY 列名 [ASC]|[DESC], ...]; 

    注意: 

   如果查询中包含一个聚合函数,而所选择的列不在聚合函数中,那么这些列就必须出现在GROUP BY子句中。 

   聚合函数不能出现在WHERE子句中。 

    举例 

    id,name,dept,sal 

     1  test  10  100 

     2  test1 10  200 

     3  test2 20  300 

     4  test3 30  1000 

     如果按照部门分组  相同的值被分为一组  分组的结果为三组:10,20,30 

     分组的组的数量 也就是最终输出的结果的数量 最终的结果   
 
     dept max(sal)     其他的列 如果需要使用 必须使用聚合函数 聚合为一条记录 
 
      10   200                          分组聚合 也就是找出组中 最大或者最小或者平均值 输出 最终聚合的结果只有一条记录 
 
      20   300 

     30   1000 
 
     select deptno,count(*) from emp group by deptno having count(*)>3; 
 
     将分组后的结果 在进行条件过滤 having中的条件必须是在列中能够出现 
 
    where 是在分组之前对数据进行过滤输出后  在分组 输出 
 
    having条件 是在分组之后 对分组的结果进行过滤输出 
 
  表关联 
 
    笛卡尔方式的连接 
 
    select e.ename,d.dname  
 
    from emp e,dept d 
 
     where e.deptno=d.deptno and ename='SMITH' order by ename; 
     
  内连接 
 
    语法: 
 
   SELECT [DISTINCT] *|[列名 别名,…]  
 
    FROM 主表名 别名 
 
   [INNER] JOIN 从表名 别名 ON 连接条件 
 
   [WHERE 条件]; 

    列出所有连接表中与连接条件相匹配的数据行。 
 
   使用表别名,可以简化语句。 
 
   内连接分类 
 
   等值连接:在连接条件中使用等号(=)运算符来比较被连接列的列值 
 
   连接条件的列名相同时,可以使用USING (列名)来简化。 
 
   非等值连接:在连接条件中使用除等号运算符以外的其它比较运算符来比较被连接的列的列值。 

   !=、>、>=、<、<=、LIKE、BETWEEN AND、 
 
   内连接 是主表和从表的数据都匹配之后 输出 不匹配抛弃 
 
   A                           B 
 
    id name   deptno              deptno  name 
 
    1  test            1                    1                 研发部 
 
    2  jiaozi          2                   2                测试部 
 
    3  cherry        2                 
 
    4  qian          3             
 
    select * from A a inner join B b on a.deptno=b.deptno         
 
        输出结果为 
 
       1  test   1    研发部 
 
       2  jiaozi  2 测试部 
 
       3  cherry  2测试部 
 
       4的记录因为在从表B中找不到所以被抛弃  
 
    select * from A a left join B b on a.deptno=b.deptno          
 
        1  test   1    研发部 

       2  jiaozi  2 测试部 
 
       3  cherry  2测试部 
 
       4  qian    3 (空) 

       4 的记录因为在从表B中找不到   所以只有主表的记录被输出 
 


     
 


 


   




 

这篇关于Oracle笛卡尔积,分组,多表连接的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792154

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9