首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Oracle数据库(三)表操作,连接查询,分页

删除表 --删除表 delete table new_table --删除表,无法找回 truncate table new_table 序列 序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动生成序列号...,笛卡尔积是关系代数的一个概念,表示两个表中每一行数据任意组合。...中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from level from p_emp e connect by prior e.empno=e.mgr start with e.ename='KING' order by level 伪列:...level rownum rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数, 而且rownum

1.9K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    connect by超乎你想象

    connect by:指定条件关系。 prior:查询上级行的限定符,格式:prior column1 = column2 or column1 = prior column2 and …。...nocycle:若数据表中存在循环行,那么不添加此关键字会报错,添加关键字后,便不会报错,但循环的两行只会显示其中的第一条循环行:该行只有一个子行,而且子行又是该行的祖先行。...connect_by_isleaf:是否是叶子节点,0表示否,1表示是。 level:level伪列,表示层级,值越小层级越高,level=1为层级最高节点。...为了看得更直观,通过lpad函数、level伪列,格式化层级,可以看到a是第一层级,b1和b2是第二层级,其他是第三层级, select id, lead_id, lpad(' ', level*2,.../oracle/oracle-database/20/sqlrf/Hierarchical-Query-Operators.html#GUID-95F6A554-C6FE-42CD-88A6-7A1C162ED964

    58710

    oracle 笔记

    你需要执行一个 SQL 语句,但是 SQL 语句语法规定需要指定一个表,为此 Oracle 设计了一个只有一行一列的表 DUAL,我们可以使用这个表来执行一些不需要表的 SQL 语句。...传统的方法就很难查询了,这时候递归查询就派上用场了,如下: SELECT -- LEVEL 是一个伪列,表示当前行所属层次,从 1 开始 LEVEL, -- CONNECT_BY_ISLEAF 表示当前行是否是叶子节点...START WITH 用来表示起始行 START WITH NAME = 'DB2' -- CONNECT BY 用来指定父子连接条件 -- PRIOR 是一个操作符,用来修饰列,表示该列是父行中的列...CONNECT BY PRIOR ID = PARENT_ID -- ORDER SIBLINGS BY 对同一层次中的行进行排序 ORDER SIBLINGS BY NAME 结果如下: # LEVEL...SELECT ROWNUM FROM DUAL CONNECT BY ROWNUM <= 100; 再如:你想生成从 1 到 100 的数字,但是要求它们用逗号分割。

    4.1K30

    Oracle 12c新特性之:APPROX_COUNT_DISTINCT 函数

    Oracle数据库12c(12.1.0.2)中,文档中已经包含了此函数,因此我们可以在应用程序中将其作为支持的SQL函数使用。...SQL> 此查询为我们提供了基于Oracle的读一致性模型的不同值的确切计数。 因此,我们可以看到所有提交的数据,以及当前会话提交的任何未提交的更改。...SQL> 性能 即使在下面的简单示例中,我们可以看到两种方法的速度的可重复的差异,但是性能差异似乎不太引人注目。...DROP TABLE t1 PURGE; CREATE TABLE t1 AS SELECT level AS data FROM dual CONNECT BY level <= 10000;...FROM t1 a CROSS JOIN t1 b; COMMIT; EXEC DBMS_STATS.gather_table_stats(USER,'T1'); 现在我们有一个表,有一个超过1亿行和

    46930

    Oracle的使用

    利用现有的表创建表 创建视图的话(可定制,某一张表的数据或者多张表的数据) 使用view create table t_test1 as select id,name,s_age from t_test1; 选择无重复的行...用来构成select的语法规则,oracle保证dual里面永远只有一条记录(1行1列) 用途: 1、查看当前用户 2、使用系统函数 3、得到序列的下一个值或当前值(查看序列值) 4、当做计算器 5、...注意:伪列 LEVEL 必须和 connect by 连用 有些时候伪列level和rownum可以做替换使用 但并不是level和rownum完全一样 测试案例 SELECT LEVEL FROM...dual CONNECT BY LEVEL <=3 -- 1 2 3 输出三行1列 --LEVEL 可以参与运算 SELECT LEVEL*5,LEVEL-9 FROM dual CONNECT BY...1 - 1 * LEVEL ), 'yyyy-mm') tenmonth FROM dual CONNECT BY LEVEL BETWEEN 1 AND 10 ORDER BY ADD_MONTHS

    28630

    Oracle 数据库常见操作技巧

    rum.ROLE_ID = ro.ID; 该查询通过内连接RESOURCE_INFO、ROLE_RESOURCE_MAP、ROLE_INFO和ROLE_USER_MAP表,并使用DISTINCT关键字去除重复的行...(二)Oracle 数据库分页查询出现重复 当排序字段没有唯一性时,在排序中加上主键: -- 原来的排序 ORDER BY CREATE_TIME; -- 优化后的排序 ORDER BY CREATE_TIME...(三)ORACLE 行数据逗号分割转列 将行数据中逗号分割的字符串转换为列: SELECT DISTINCT REGEXP_SUBSTR(MEMBERS, '[^,]+', 1, LEVEL, 'i')...FROM CUSTOMER_DETAIL WHERE CUSTOMER_CODE = 'ABC' CONNECT BY LEVEL Oracle 数据库常见操作技巧的介绍和代码解析,希望能够帮助开发人员更好地理解和应用 Oracle 数据库,提升数据处理的效率和质量。

    8310

    oracle 层次化查询(生成菜单树等)

    1、简介:Oracle层次化查询是Oracle特有的功能实现,主要用于返回一个数据集,这个数据集存在树的关系(数据集中存在一个Pid记录着当前数据集某一条记录的Id)。...(1)、CONNECT_BY_ISCYCLE 当这一行有一个子节点同时也是它的祖先节点时返回 1 ,否则返回 0 。...(2)、CONNECT_BY_ISLEAF 当这一行是叶节点时返回 1 ,否则返回 0 。伪列 LEVEL 返回这一行在树中的层次,根为第一层。...(3)、CONNECT_BY_ROOT 查询操作符可以加在 connect by 之后的某个字段之前,表示获得这一行的根节点的该字段的值。...6、层次化查询还支持一个特殊的函数 SYS_CONNECT_BY_PATH , SYS_CONNECT_BY_PATH ( exp , char ),这个函数返回从根节点到这一行计算其中每个exp 表达式的值

    1.5K80

    【DB笔试面试592】在Oracle中,表和表之间的关联方式有哪几种?

    在详细介绍这3类表连接方式之前,先创建表T_20161014_LHR_01共100行记录,T_20161014_LHR_02共100000行记录,创建脚本如下所示: DROP TABLE T_20161014..., ROWNUM, DBMS_RANDOM.STRING('b', 50) FROM DUAL CONNECT BY LEVEL <= 100000 ORDER BY DBMS_RANDOM.RANDOM...在嵌套循环连接中,Oracle读取驱动表(外部表)中的每一行,然后在被驱动表(内部表)中检查是否有匹配的行,所有被匹配的行都被放到结果集中,然后处理驱动表中的下一行。...这是从连接操作中可以得到第一个匹配行的最快的方法之一,这种类型的连接可以用在需要快速响应的语句中。 嵌套循环连接可以先返回已经连接的行,而不必等待所有的连接操作处理完才返回数据,这可以获取快速的响应。...一般来讲,对于一个做笛卡尔积的SQL,要不是因为SQL的写法不正确(做MERGE JOIN的两张表没有关联条件),就是因为Oracle没有正确地收集表的统计信息从而导致生成了错误的执行计划,可以通过如下方式来解决

    2.1K10
    领券