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

相关文章

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

通过DBeaver连接GaussDB数据库的实战案例

《通过DBeaver连接GaussDB数据库的实战案例》DBeaver是一个通用的数据库客户端,可以通过配置不同驱动连接各种不同的数据库,:本文主要介绍通过DBeaver连接GaussDB数据库的... 目录​一、前置条件​二、连接步骤​三、常见问题与解决方案​1. 驱动未找到​2. 连接超时​3. 权限不

Navicat连接Mysql8.0.11出现1251错误的解决方案

《Navicat连接Mysql8.0.11出现1251错误的解决方案》在重装电脑并安装最新版MySQL后,Navicat和Sqlyog连接MySQL时遇到的1251和2058错误,通过将MySQL用户... 目录Navicat连接mysql8.0.11出现1251错误原因分析解决问题方法有两种总结Navic

Python连接Spark的7种方法大全

《Python连接Spark的7种方法大全》ApacheSpark是一个强大的分布式计算框架,广泛用于大规模数据处理,通过PySpark,Python开发者能够无缝接入Spark生态系统,本文给大家介... 目录第一章:python与Spark集成概述PySpark 的核心优势基本集成配置步骤启动一个简单的

mysql笛卡尔积怎么形成以及怎么避免笛卡尔积详解

《mysql笛卡尔积怎么形成以及怎么避免笛卡尔积详解》笛卡尔积是指两个集合中所有可能的有序对的集合,在数据库中它表示两个表的每一行都与另一个表的每一行组合,:本文主要介绍mysql笛卡尔积怎么形成... 目录第一部分:什么是笛卡尔积,它是如何形成的?1. 定义2. 在 mysql 中如何形成3. 笛卡尔积的

sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符

《sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符》:本文主要介绍sqlserver、mysql、oracle、pgsql、sqlite五大... 目录一、转义符1.1 oracle1.2 sqlserver1.3 PostgreSQL1.4 SQLi

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏