OracleRDBMSに特化した『やさしくわかるSQL』 各書店にて好評発売中!
(2004/04/28) 文例集を追加し100例になりました。 
(2004/02/23) SQL言語について基礎から覚えたいが時間がない方のために、目的別にSQL命令の文例集を作っていこうと思います。(とりあえず50例です)
== 表の結合 ==
== 追加 ==
== オブジェクトの作成/変更/削除 ==


表の全列、全行を検索したい
表の一列のみを検索したい
表の指定した列のみ検索したい
同じ値を省いて検索したい
列名を変更したい
特定の行を検索したい
複数の条件を指定したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {条件式1} AND {条件式2};
または
SELECT {列名} ...
FROM {表名}
WHERE {条件式1} OR {条件式2}; |
|
| 例 |
| SELECT * FROM emp WHERE deptno = 30 AND job = 'SALESMAN'; |
|
範囲指定の条件を指定したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {列名} BETWEEN {下限値} AND {上限値}; |
|
| 例 |
| SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000; |
|
複数の候補の中からいずれかと一致する条件を指定したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {列名} IN ( {値1}, {値n}, ... ); |
|
| 例 |
SELECT * FROM emp WHERE empno IN ( 7566, 7900 );
または
SELECT * FROM emp WHERE job IN ( 'SALESMAN', 'CLERK' ); |
|
前方一致の条件を指定したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {文字型の列名} LIKE '{文字列}%'; |
|
| 例 |
| SELECT * FROM emp WHERE ename LIKE 'S%'; |
|
あいまい検索の条件を指定したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {文字型の列名} LIKE '%{文字列}%'; |
|
| 例 |
| SELECT * FROM emp WHERE ename LIKE'%O%'; |
|
後方一致の条件を指定したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {VARCHAR2型の列名} LIKE '%{文字列}'; |
|
| 例 |
| SELECT * FROM emp WHERE ename LIKE '%S'; |
|
NULL値の列を検索したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {列名} IS NULL; |
|
| 例 |
| SELECT * FROM emp WHERE comm IS NULL; |
|
NULL値以外の列を検索したい
| 文法 |
SELECT {列名} ...
FROM {表名}
WHERE {列名} IS NOT NULL; |
|
| 例 |
| SELECT * FROM emp WHERE comm IS NOT NULL; |
|
列を計算して検索したい
ヌルを0として計算したい
並び替えをしたい
大きい順に並び替えたい
複数の並び替えを指定したい
計算式を並び替えたい
現在の日付を取得したい
現在の時刻を取得したい
曜日が知りたい
日付の差より日数が知りたい
ある日数後の日付が知りたい
文字を連結したい
四捨五入したい
切捨てしたい
切り上げしたい
文字列の一部分を切り出したい
文字列の文字数を求めたい
文字列を検索したい
左右のスペースを削除したい
大文字または小文字に統一したい
ある日付の月末が知りたい
日付の差より月数が知りたい
ある月数後の日付が知りたい
日付を文字列に編集したい
数値を文字列に編集したい
日付文字列を日付型に変換したい
IF文のような関数を使いたい
データ件数が知りたい
NULL値でないデータ件数が知りたい
異なる値の件数が知りたい(カーディナリティ値)
グループ毎に集計したい
グループ関数の値を条件にしたい
順序より新しい番号を取得したい
現在の順序番号が知りたい
複数の表を二重ループにして検索したい(単純結合)
複数の表を結合して検索したい(等価結合)
キーを条件とせず複数の表を結合して検索したい(非等価結合)
マスター等行がなくても表を結合して検索したい(外部結合)
同じ表を結合したい(再帰結合)
行データを加算したい(表の足し算) - 同じ行を1行とする
| 文法 |
SELECT {列名} ...
FROM {表名1}
WHERE {条件1}
UNION
SELECT {列名} ...
FROM {表名2}
WHERE {条件2}
[ ORDER BY {列名} ... ]; |
|
| 例 |
SELECT empno, ename FROM emp WHERE job = 'CLERK'
UNION
SELECT empno, ename FROM emp WHERE mgr = 7698; |
|
行データを加算したい(表の足し算) - 同じ行を別々にする
| 文法 |
SELECT {列名} ...
FROM {表名1}
WHERE {条件1}
UNION ALL
SELECT {列名} ...
FROM {表名2}
WHERE {条件2}
[ ORDER BY {列名} ... ]; |
|
| 例 |
SELECT empno, ename FROM emp WHERE job = 'CLERK'
UNION ALL
SELECT empno, ename FROM emp WHERE mgr = 7698; |
|
行データを減算したい(表の引き算)
| 文法 |
SELECT {列名} ...
FROM {表名1}
WHERE {条件1}
MINUS
SELECT {列名} ...
FROM {表名2}
WHERE {条件2}
[ ORDER BY {列名} ... ]; |
|
| 例 |
SELECT empno, ename FROM emp WHERE deptno = 30
MINUS
SELECT empno, ename FROM emp WHERE job = 'SALESMAN'; |
|
他の表を参照しないと判らない条件を指定したい
複数行を返す副問合せを条件に指定したい
複数列の副問合せを指定したい
FROM句に副問合せを指定したい
行(データを追加したい)
指定した列のみに行を追加したい
| 文法 |
|
| 例 |
INSERT INTO emp ( empno, ename, job, mgr, hiredate, sal, deptno )
VALUES ( 12345, 'HIRO', 'PART', 7566, sysdate, 500, 20 ); |
|
表から表へデータを追加したい(同じレイアウト)
表から表へデータを追加したい(異なるレイアウト)
大量のデータをINSERTするとエラーが発生する(ロールバックセグメントの切り替え)
大量のデータをINSERTするので制約を一時的に無効にしたい
無効にした制約を有効したい
制約を有効にする際エラーになる行を求めたい
特定行の特定列の値を変更したい
複数の列を同時に変更したい
すべての行の値を変更したい(初期値の代入)
特定の行を削除したい
すべての行を削除したい
すべての行を削除したい(ロールバック不可)
そっくりな行の片方を削除したい
トランザクションを確定したい
トランザクションを破棄したい
トランザクションの位置を記憶したい
トランザクションを記憶した位置まで取り消したい
電卓代わりに使用したい
SQL*Plusにてデータベースに接続したい
SQL*Plusにて表の定義が知りたい
列を追加したい
重複可能な索引を追加したい
重複可能な索引を削除したい
一意な索引を追加したい
一意な索引を削除したい
表をコピーしたい
表をレイアウトのみコピーしたい
表の名前を変更したい
表を削除したい
表を強制的に削除したい
作成したテーブル(実表)の一覧を知りたい
表領域の情報が知りたい
物理ファイル(データファイル)の情報が知りたい
現在データベースに接続しているユーザの情報が知りたい
RDBMSのメモリー情報が知りたい
Redoログファイルの情報が知りたい
データディクショナリの名前が知りたい
バックアップする物理ファイル名が知りたい
気軽に質問して下さい。お問い合わせは、buchi@t3.rim.or.jpまでお願いします。
|