--------------------------------------------------
◆SELECT
--------------------------------------------------
■外部結合((+)で記述)
SELECT
a.col1
,b.col2
FROM
table1 a
,table2 b
WHERE
a.userid = b.userid(+)
■FROM句内の副問い合わせ
SELECT *
FROM
(SELECT ~
FROM
(SELECT ~
FROM TABLEA
WHERE COL1 = ~
)
GROUP BY ~
) a, TABLEB b
WHERE
a.col1 = b.col1
(略)
■副問合せ(in を使用)
SELECT MEISHO
FROM TABLE1
WHERE CODE1 IN (SELECT CODE2 FROM TABLE2 WHERE KEY1 = :KEY1)
⇒副問合せで複数レコードが返却される場合。
上記のようにINを使用することで、
TABLE2の検索結果をTABLE1の検索条件として使用できる。
■NOT EXISTS
※テーブル1を抽出時の条件:テーブル2のキーに合致しないレコードを抽出
・パターン1
SELECT *
FROM TABLE1 T1
WHERE T1.KEY1 not in (SELECT KEY1 FROM TABLE2)
・パターン2
SELECT *
FROM TABLE1 T1
WHERE not exists (SELECT KEY1 FROM TABLE2 WHERE KEY1 = T1.KEY1)
どちらでもOK。
ただし、パターン2にした場合に大幅にパフォーマンスが向上する場合がある。
--------------------------------------------------
◆管理作業用
--------------------------------------------------
■Oracleバージョン確認
select * from v$version;
[出力例]
Oracle Database 11g Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
■テーブル一覧出力
select table_name, tablespace_name, status from user_tables
select table_name, tablespace_name, status from tabs
■テーブル一覧とテーブルコメントも一緒に出力
select a.table_name
,b.comments
from user_tables a
left join user_tab_comments b
on a.table_name = b.table_name
WHERE b.table_type = 'TABLE'
order by b.table_name asc