创建myt表并插入数据,如下:create table myt(name varchar2,create_time date) insert into myt values("john",to_date(sysdate,"DD-MON-YY")); insert into myt values("tom",to_date(sysdate,"DD-MON-YY")); insert into myt values("lili",to_date(sysdate,"DD-MON-YY")); 在sql*plus中显示如下:SQL> select * from myt;
NAME CREATE_TIME
---------- -----------
john 2010-5-19
tom 2010-5-19
lili 2010-5-19
SQL> select 1 from myt;
1
----------
1
1
1SQL> select 0 from myt;
0
----------
0
0
0
从以上结果 可以看到,select constant fromtable 对所有行返回对应的常量值(具体应用见下面),而select * from table则返回所有行对应的所有列。select 1常用在exists子句中,检测符合条件记录是否存在。如select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ;
T1数据量小而T2数据量非常大时,T1<<T2 时,1) 的查询效率高。
“select 1”这里的 “1”其实是无关紧要的,换成“*”也没问题,www.linuxidc.com它只在乎括号里的数据能不能查找出来,是否存在这样的记录,如果存在where 条件成立。
如下示例:SQL> select 1/0 from dual;
select 1/0 from dual
ORA-01476: 除数为 0SQL> select * from myt where exists(select 1/0 from dual);
NAME CREATE_TIME
---------- -----------
john 2010-5-19
tom 2010-5-19
lili 2010-5-19没有返回错误,说明,并没有让select语句参与计算。 在exists子句中写select *并不返回表中所有的列,只是检测符合条件记录是否存在。Oracle 的for update行锁语法MySQL数据库进行备份在Linux异构网络里相关资讯 oracle
- [INS-32052] Oracle基目录和Oracle (07/22/2014 07:41:41)
- Oracle 4个大对象(lobs)数据类型 (02/03/2013 12:33:05)
- Oracle按时间段分组统计 (07/26/2012 10:36:48)
| - [Oracle] dbms_metadata.get_ddl的 (07/12/2013 07:37:30)
- Liferay Portal 配置使用Oracle和 (07/31/2012 20:07:18)
- Concurrent Request:Inactive (07/20/2012 07:44:05)
|
本文评论 查看全部评论 (0)