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

相关文章

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

SpringBoot连接Redis集群教程

《SpringBoot连接Redis集群教程》:本文主要介绍SpringBoot连接Redis集群教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 依赖2. 修改配置文件3. 创建RedisClusterConfig4. 测试总结1. 依赖 <de

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

java连接opcua的常见问题及解决方法

《java连接opcua的常见问题及解决方法》本文将使用EclipseMilo作为示例库,演示如何在Java中使用匿名、用户名密码以及证书加密三种方式连接到OPCUA服务器,若需要使用其他SDK,原理... 目录一、前言二、准备工作三、匿名方式连接3.1 匿名方式简介3.2 示例代码四、用户名密码方式连接4

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed