Oracle 基礎(chǔ)知識中從多個表里選取數(shù)據(jù)記錄的方法
在Oracle 基礎(chǔ)知識中從多個表里選取數(shù)據(jù)記錄中主要包括四個主要項目,以下的文章主要是介紹在Oracle 中的四個項目的具體介紹,你如果對此些項目感興趣的話,你就可以瀏覽以下的文章對其進(jìn)行了解。
1. 數(shù)據(jù)表間的連接
簡單的連接語法:
SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
WHERE 表名1.字段名 = 表名2. 字段名 [ AND ……] ;
SELECT 字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
WHERE 表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;
有(+)號的字段位置自動補(bǔ)空值
連接的分類:
等于的連接 =
不等于的連接 != BETWEEN … AND … IN 注意IN和OR不能一起用
8
J2EE @ zxw
外連接 有一個字段名(+) , 沒有滿足的條件補(bǔ)空值
自連接 同一個表自己跟自己連接 例如找重復(fù)記錄
2. 數(shù)據(jù)表間的連接例子
刪除table_name表里字段名email重復(fù)的記錄:
SQL>delete from table_name t1
where t1.rowid >
(select min(rowid) from table_name t2
where t1.email = t2.email
group by email
having count(email) > 1);
找到手機(jī)用戶的服務(wù)區(qū)域:
SQL> select a.handphoneno,nvl(c.name,'null'),a.totalscore
from topscore a,chargeoperator cc,chargeoperatorinfo c
where substr(a.handphoneno,1,7)=cc.hpnohead(+)
and cc.chargetype=c.chargetype(+)
order by a.totalscore desc;
3.Oracle 基礎(chǔ)知識中數(shù)據(jù)表間的連接技巧
連接N個表, 需要N-1個連接操作
被連接的表***建一個單字符的別名, 字段名前加上這個單字符的別名
BETWEEN .. AND.. 比用 >= AND <= 要好
連接操作的字段名上***要有索引
連接操作的字段***用整數(shù)數(shù)字類型
有外連接時, 不能用OR或IN的比較操作
4. 如何分析和執(zhí)行SQL語句
寫多表連接SQL語句時要知道它的分析執(zhí)行計劃的情況.
Sys用戶下運(yùn)行@/ORACLE_HOME/sqlplus/admin/plustrce.sql 產(chǎn)生plustrace角色
Sys用戶下把此角色賦予一般用戶 SQL> grant plustrace to &username;
一般用戶下運(yùn)行@/ORACLE_HOME/rdbms/admin/utlxplan.sql
產(chǎn)生plan_table
SQL> set time on; 說明:打開時間顯示
SQL> set autotrace on; 說明:打開自動分析統(tǒng)計,并顯示SQL語句的運(yùn)行結(jié)果
SQL> set autotrace traceonly; 說明:打開自動分析統(tǒng)計,不顯示SQL語句的運(yùn)行結(jié)果
接下來你就運(yùn)行測試SQL語句,看到其分析統(tǒng)計結(jié)果了。
一般來講,我們的SQL語句應(yīng)該避免大表的全表掃描。
SQL> set autotrace off; 說明:關(guān)閉自動分析統(tǒng)計
以上的相關(guān)內(nèi)容就是對Oracle 基礎(chǔ)知識中從多個表里選取數(shù)據(jù)記錄的介紹,望你能有所收獲。
【編輯推薦】
























