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

相关文章

Spring Boot 整合 MyBatis 连接数据库及常见问题

《SpringBoot整合MyBatis连接数据库及常见问题》MyBatis是一个优秀的持久层框架,支持定制化SQL、存储过程以及高级映射,下面详细介绍如何在SpringBoot项目中整合My... 目录一、基本配置1. 添加依赖2. 配置数据库连接二、项目结构三、核心组件实现(示例)1. 实体类2. Ma

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

Oracle存储过程里操作BLOB的字节数据的办法

《Oracle存储过程里操作BLOB的字节数据的办法》该篇文章介绍了如何在Oracle存储过程中操作BLOB的字节数据,作者研究了如何获取BLOB的字节长度、如何使用DBMS_LOB包进行BLOB操作... 目录一、缘由二、办法2.1 基本操作2.2 DBMS_LOB包2.3 字节级操作与RAW数据类型2.

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接