Oracle如何利用交叉连接生成数字序列

 更新时间:2024年06月11日 09:35:01   作者:梁萌  
这篇文章主要介绍了Oracle如何利用交叉连接生成数字序列问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Oracle用交叉连接生成数字序列

建表并插入记录

CREATE TABLE t_number(n INTEGER PRIMARY KEY);
INSERT INTO t_number VALUES (0);
INSERT INTO t_number VALUES (1);
INSERT INTO t_number VALUES (2);
INSERT INTO t_number VALUES (3);
INSERT INTO t_number VALUES (4);
INSERT INTO t_number VALUES (5);
INSERT INTO t_number VALUES (6);
INSERT INTO t_number VALUES (7);
INSERT INTO t_number VALUES (8);
INSERT INTO t_number VALUES (9);

实现SQL:

SELECT hundred.n * 100 + ten.n * 10 + one.n AS n
FROM t_number hundred
CROSS JOIN t_number ten
CROSS JOIN t_number one
ORDER BY n

执行结果:

查询返回了一个0~999的数字序列。

显然,我们可以通过更多的自连接生成更大的数字序列。

还有其他生成序列的方法:

例如connect by结合rownum实现

select rownum from dual connect by rownum<=10;

使用level实现

select level from dual connect by level<=10;

Oracle表的连接(交叉连接 ,内连接,自然连接,外连接,全外连接)

核心:交叉连接

select A.column1,A.column2,B.column1,B.column2 from A cross join B;

交叉连接就是做笛卡尔积 计算 原理如下 具体原理百度

解读示例: A表有2行数据 , B表有3行数据 交叉连接后,产生一个新表 C。

A ----------B
1 a2 —1 b2
2 a4 —2 b4
------ —3 b6
C
1 a2 1 b2
1 a2 2 b4
1 a2 3 b6
2 a4 1 b2
2 a4 2 b4
2 a4 3 b6

表C左边为 A表数据, 右边为B表数据。 一共产生6行数据(2*3=6)。其实就是排列组合。

内连接

在表C中 根据on 关键字后的条件 找行数据,然后 显示出来,显示的列就是select后的指定列;

特殊点:on 的两个判断列 名字可以不同 类型大致相同

select A.column1,A.column2,B.column1,B.column2 from A inner join B on A.column1=B.column1

在C表中找 到

1 a2 1 b2
2 a4 2 b4

自然连接

就是一种内连接

select A.column1,A.column2,B.column1,B.column2 from A natural join B

特殊在于:

1、省略了 on 语句 (条件语句) 系统会自动找 判断列

2、表A和表2中 至少有各自有一列 作为判断列,名称相同,类型大致相同()

外连接(左外 右外)

先根据on 语句的条件 进行内连接 得到一个结果,然后在结果的基础上 ,添加行,把A侧没有显示的 行数据,显示出来,B侧 显示为NULL;

全外连接

此连接 先根据on 语句的条件 进行内连接 得到一个结果,然后在结果的基础上,添加行,把A侧没有显示的 行数据,显示出来,B侧 显示为NULL; 把B侧没有显示的 行数据,显示出来,A侧 显示为NULL;

感兴趣的 可以自己做几个例子写一写

on 后面 可以用大于 小于 等于做判断

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Oracle数据库:查询序列、删除序列方式

    Oracle数据库:查询序列、删除序列方式

    文章简要介绍了如何在数据库中查询和删除序列,首先,展示了如何查询当前用户下的序列,并通过示例说明了序列已创建,接着,介绍了如何查询所有序列,最后,详细说明了如何删除序列,并提供了删除命令和示例
    2025-02-02
  • Oracle 10G:PL/SQL正规表达式(正则表达式)手册

    Oracle 10G:PL/SQL正规表达式(正则表达式)手册

    Oracle Database 10g 的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正规表达式,是一种用来描述文本模式的表示方法。很久以来它已在许多编程语言和大量 UNIX 实用工具中出现过了。
    2009-06-06
  • Oracle数据库中如何按天、周、月、季、年统计数据

    Oracle数据库中如何按天、周、月、季、年统计数据

    我们经常遇到一些需求,需要我们在sql语句中对日期进行分类统计,下面这篇文章主要给大家介绍了关于Oracle数据库中如何按天、周、月、季、年统计数据的相关资料,需要的朋友可以参考下
    2024-03-03
  • Oracle 11g收集多列统计信息详解

    Oracle 11g收集多列统计信息详解

    我们在写SQL语句的时候,有的时候会碰到where子句后面有多个条件的情况,也就是根据多列的条件筛选得到数据。下面这篇文章主要给大家介绍了Oracle 11g收集多列统计信息的相关资料,文中介绍的非常详细,需要的朋友可以参考下。
    2017-03-03
  • 在Oracle数据库中添加外键约束的方法详解

    在Oracle数据库中添加外键约束的方法详解

    这篇文章主要介绍了在Oracle数据库中添加外键约束的方法,需要的朋友可以参考下
    2016-01-01
  • 如何解决Oracle数据表入库中文乱码问题

    如何解决Oracle数据表入库中文乱码问题

    Oracle数据库在处理中文数据时,经常会遇到乱码问题,导致数据无法正常显示和处理,这是因为Oracle数据库默认的字符集为US7ASCII,无法识别中文字符,通过修改数据库,客户端和应用程序字符集,将数据转换为正确的字符集,可以避免乱码问题
    2024-02-02
  • oracle中sql%rowcount的作用详解

    oracle中sql%rowcount的作用详解

    这篇文章主要介绍了oracle中sql%rowcount的作用,sql%rowcount来判断是否更新了记录的状态,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • oracle不能使用EM怎么办 oracle11g如何正确安装配置EM

    oracle不能使用EM怎么办 oracle11g如何正确安装配置EM

    这篇文章主要为大家详细介绍了oracle不能使用EM的解决方法,oracle11g如何正确安装配置EM,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Oracle基础:程序中调用sqlplus的方式

    Oracle基础:程序中调用sqlplus的方式

    今天小编就为大家分享一篇关于Oracle基础:程序中调用sqlplus的方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Oracle 8i在P4上的安装

    Oracle 8i在P4上的安装

    Oracle 8i在P4上的安装...
    2007-03-03

最新评论