DUAL表
ORACLE中,所有的查询语句都必须至少包括两个子句:SELECT和FROM。也就是必须说明要查询的内容和来源。而有时候要查询的内容是没有真正意义上的来源的,比如一个简单的表达式,或者一个序列的下一个可用值,这时我们就需要一个虚表:DUAL。
例:(计算3+2=5)
select 3 + 2 from dual;
例:(选择序列seq_t的下一个可用值)
select seq_t.nextval from dual;
这个DUAL表的最大特点是只有一行数据。其实只要满足这个条件,任何表都可以用作虚表。但既然ORACLE已经提供了这样的表,当然没必要去自定义一个。有的数据库不支持虚表的概念,例如SqlServer,它的解决方法是并不强制要求有FROM子句。
例:(SqlServer中计算3+2=5)
select 3 + 2;