創(chuàng)建myt表并插入數(shù)據(jù),如下:
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
1
SQL> 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數(shù)據(jù)量小而T2數(shù)據(jù)量非常大時,T1<<T2 時,1) 的查詢效率高。
“select 1”這里的 “1”其實是無關緊要的,換成“*”也沒問題,www.linuxidc.com它只在乎括號里的數(shù)據(jù)能不能查找出來,是否存在這樣的記錄,如果存在where 條件成立。
如下示例:
SQL> select 1/0 from dual;
select 1/0 from dual
ORA-01476: 除數(shù)為 0
SQL> 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 *并不返回表中所有的列,只是檢測符合條件記錄是否存在。
還可以看看
其他文章,謝謝您的閱讀。
網站申明:系本文編輯轉載,來源于網絡,目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,所有權歸屬原作者。如內容、圖片有任何版權問題,請
聯(lián)系我們刪除。