一文掌握Oracle中的Dual系统表

这几天一直在研究Oracle,常常会用到Dual这个系统表,Dual表到底是一个什么表?带着疑问baidu了一下:

Dual表是Oracle提供的最小的工作表(其实是一种虚拟表),是sys用户下的一张内部表,只有一行一列(一列:DUMMY,一列:DUMMY,其数据类型为:VARCHAR2(1))。所有用户都可以使用Dual名称访问,无论什么时候这个表总是存在。不论进行何种操作(不要删除记录),它都只有一条记录——'X'。

select * from dual;

我们来查一下它的表结构,PL/SQL Developer【命令窗口】输入desc dual;

或者sys用户下【SQL窗口】执行以下语句

SELECT DBMS_METADATA.GET_DDL('TABLE','DUAL') FROM DUAL;

那么Dual在实际应用过程中可以做些什么呢?

  • Dual表主要用来选择系统变量或求一个表达式的值,最常见的一个简单例子,执行一个查看当前日期的语句,这条语句放在任何一个Oracle数据库当中都不会报错,所以一般做一些特定查询的时候用这个表是最稳妥的。
select sysdate from dual;
--或日期转换获得当前系统时间,‘分钟' 要用mi;hh24表示24小时制,hh表示12小时制。
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

  • 当计算器使用
select 1024*1024 from dual;

  • 查询当前连接用户
select user from dual;

  • 查看序列值
--创建序列aaa 以1开始,每次加1
create sequence aaa increment by 1 start with 1;
--获得序列aaa 的下一个序列值,每次查询加1
select aaa.nextval from dual;
--获得序列aaa 的当前序列值
select aaa.currval from dual;

  • 获得一个随机数
select DBMS_RANDOM.random from dual;

  • Dual到底是什么object?
select owner, object_name , object_type from dba_objects where object_name like '%DUAL%';

经过查询输出的结果可以看到Dual是属于sys的一个表,然后以PUBLIC SYNONYM的方式供其他用户使用。

(0)

相关推荐

  • Oracle系统表外键的更名

    正在看的ORACLE教程是:Oracle系统表外键的更名. Oracle中表的外键是保证系统参照完整性的手段,而参照完整性是指分布在两个表中的列所满足的具有主从性质的约束关系.外键涉及到两个表,其中一个称之为父项表,另一个称之为子项表. 父项表(parent table)是参照约束的基础,即通过检查这张表的有效数据情况来判断约束是否成立,它是参照约束的条件,影响约束,而不受约束的任何影响. 子项表(child table)是参照约束的对象,当其发生变化,如有新数据输入时,通过比较父项表中的有效数

  • 一文掌握Oracle中的Dual系统表

    这几天一直在研究Oracle,常常会用到Dual这个系统表,Dual表到底是一个什么表?带着疑问baidu了一下: Dual表是Oracle提供的最小的工作表(其实是一种虚拟表),是sys用户下的一张内部表,只有一行一列(一列:DUMMY,一列:DUMMY,其数据类型为:VARCHAR2(1)).所有用户都可以使用Dual名称访问,无论什么时候这个表总是存在.不论进行何种操作(不要删除记录),它都只有一条记录——'X'. select * from dual; 我们来查一下它的表结构,PL/SQ

  • Mysql、Oracle中常用的多表修改语句总结

    今天在sql训练题库中看到了这题,这是一道很有代表性的多表修改题,其实解出这道题并不难,无论是mysql中还是oracle中都有很多种解法,接下来就好好归纳一下这些解法. msyql中多表修改 对于mysql中常用的多表修改语句,还是用例子来解释一下吧. //建表 create table aaa(id int,value1 int(5),value2 int(5),value3 int(5),value4 int(5)); create table bbb like aaa; //插入数据 i

  • access中显示MSysObjects系统表的设置方法

    默认access的系统表MSysObjects等是不显示的,需要手动设置access显示MSysObjects等系统表. 设置方法如下: 1. 打开Access 2. 点击"工具"菜单,选择"选项" 3. 在"视图"页上,将"系统对象"勾上 4. 点击"确定"按钮保存设置 5. 点击"工具"菜单,选择"安全"中的"用户与组权限" 6. 选择&quo

  • Oracle中创建和管理表详解

    SQL> /*SQL> 对于表的操作: 创建表,修改表(添加新的列,改变当前某些列,删除列),删除表SQL> 创建表: create table(需要create table的权限)SQL> 修改表: alter table tablename add/modify/dropSQL> 删除表:drop table tablenameSQL> */SQL> show user;USER 为 "SCOTT"SQL> --访问hr用户下的表SQ

  • 查看Oracle中是否有锁表的sql

    1.查看是否有锁表的sql 复制代码 代码如下: select 'blocker('||lb.sid||':'||sb.username||')-sql:'|| qb.sql_text blockers, 'waiter ('||lw.sid||':'||sw.username||')-sql:'|| qw.sql_text waiters from v$lock lb, v$lock lw, v$session sb, v$session sw, v$sql qb, v$sql qw wher

  • oracle中截断表的使用介绍

    在Oracle中如果删除了表中的某一条数据,还可以通过回滚操作(rollback)进行回滚,假如想清空一张 表的数据,但是又不想使其能进行回滚操作,就可以立刻释放资源,这时就需要使用截断表了.它的主要功能就是彻底删除数据,使其不能进行回滚.这里我打个比方大家就立刻能明了它的作用.大家众所周知,当我们在自己的PC(personcomputer)上删除某一个文件,它并没有彻底删除而是进入了回收站,你要在回收站中再将其删除才算彻底清除.截断表就相当于直接将数据从pc上删除,而不会放入回收站. 截断表格

  • oracle中110个常用函数介绍

    1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C --

  • Oracle中建立了dblink怎么使用

    Oracle应用服务器OS 1.查看数据库的global_name SELECT * FROM GLOBAL_NAME; 2.查看global_name参数是true还是false show parameter global_name 如果为true,本地建立的dblink名称必须与远程的global_name一致才行. 3.创建dblink CREATE DATABASE LINK数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING '数据库连接字符串';

  • sql – Oracle中匿名TABLE/VARRAY类型示例详解

    前言 本文主要介绍的是关于sql Oracle匿名TABLE/VARRAY类型的相关内容,在Oracle中,我有时会创建一些这样的结构 SELECT * FROM TABLE(STRINGS('a', 'b', 'c')) SELECT * FROM TABLE(NUMBERS(1, 2, 3)) 显然,我可以为上述声明我自己的类型.我可以在TABLE和VARRAY之间进行选择.例如: CREATE TYPE STRINGS AS TABLE OF VARCHAR2(100); CREATE T

  • oracle中decode函数的使用方法示例

    decode的几种用法 1:使用decode判断字符串是否一样 DECODE(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN RETURN(value 1) ELSIF 条件=值2 THEN RETURN(value 2) ...... ELSIF 条件=值n THEN RETURN(value 3) ELSE RETURN(default) END IF sql测试 select empno,decode(empn

随机推荐