Oracle学习3:dual详解

1.概述

Oracle中有一个单行单列的虚拟表dual,引入该表的目的是为了符合语法。
Dual表是Oracle与数据字典一起自动创建的一个表。
Oracle有内部逻辑保证dual表中永远只有一条数据。

Oracle的SELECT语法的限制为:

SELECT * | [column1 [AS alias1], column2 [AS alias2]] FROM table

因而,如果没有表名就无法进行查询,于是引入了一个虚拟表dual。

2.dual表结构及数据

dual:
adj.  双的,两部分的,二体的,二重的;
n.  双数; 双数词;

这里写图片描述

我们来看下dual表的结构和数据。
在命令窗口下:

SQL> desc dual;
Name  Type        Nullable Default Comments 
----- ----------- -------- ------- -------- 
DUMMY VARCHAR2(1) Y
SQL> select * from dual;
DUMMY
-----
X

可以看出
dual表是单行单列的表
这个表只有1列:DUMMY,数据类型为VERCHAR2(1),dual表中只有一个数据’X’。
(dummy有傀儡、样品的意思)
这里写图片描述

3.dual表的作用

如下:

查看当前连接用户

SQL> select user from dual;

查看当前日期、时间

SQL> select sysdate from dual;
SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;

数据计算

SQL> select 10*10 from dual;

4.dual建表语句

如下是dual的建表语句:


-- Create table
create table SYS.DUAL
(
  dummy VARCHAR2(1)
)
tablespace SYSTEM
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 16K
    next 1M
    minextents 1
    maxextents unlimited
  );
-- Grant/Revoke object privileges 
grant select on SYS.DUAL to PUBLIC with grant option;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值