—————————————- SQL文 –——––––——––––——––––——
|
データ検索 |
|
|
|
コマンド名 |
説明 |
|
|
SELECT |
データの検索 |
|
|
データ操作文(DML) |
|
|
|
コマンド名 |
説明 |
|
|
INSERT |
行の新規挿入 |
|
|
UPDATE |
値の更新 |
|
|
DELETE |
行の削除 |
|
|
データ定義文(DDL) |
|
|
|
コマンド名 |
説明 |
|
|
CREATE |
オブジェクトの作成 |
|
|
ALTER |
オブジェクトの変更 |
|
|
DROP |
オブジェクトの削除 |
|
|
RENAME |
オブジェクト名の変更 |
|
|
GRANT |
権限付与 |
|
|
REVOKE |
権限削除 |
|
|
AUDIT |
監査 |
|
|
TRUNCATE |
表の切り捨て |
|
|
トランザクション制御(DCL) |
|
|
|
コマンド名 |
説明 |
|
|
COMMIT |
更新の確定 |
|
|
ROLLBACK |
更新の取り消し |
|
|
SAVEPOINT |
セーブポイントの設定 |
|
|
算術演算 |
|
|
|
NULL値が含まれていると計算結果はNULLです。 |
|
|
———––––——––––——––––—– SELECT文 ———––––——––––——––––——
|
SELECT |
|
■野球選手表■ |
|
|
|
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
古田 |
27 |
スワローズ |
捕手 |
松坂 |
18 |
ライオンズ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
|
|
|
|
SELECT * FROM 野球選手表; |
*は全列という意味で、特定の列のみ表示したい場合は列名を書けばよい。 |
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
古田 |
27 |
スワローズ |
捕手 |
松坂 |
18 |
ライオンズ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
■結果■すべてのレコードが検索される。 |
|
|
|
|
|
SELECT * FROM 野球選手表 WHERE 選手名 = ’松井’; |
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
■結果■選手名が「松井」だけ検索される。 |
|
|
|
|
SELECT 選手名 FROM 野球選手表 WHERE 背番号 = 18; |
選手名 |
|
|
|
松坂 |
|
|
|
桑田 |
|
|
|
■結果■背番号が18の選手名だけが検索される。 |
|
|
|
|
SELECT DISTINCT 背番号 FROM 野球選手表 |
背番号 |
|
|
|
55 |
|
|
|
27 |
|
|
|
18 |
|
|
|
5 |
|
|
|
■結果■背番号18が2つ重複してるので1つのみ表示される。 |
|
|
|
|
SELECT 選手名 FROM 野球選手表 WHERE NOT 背番号 = 18; |
選手名 |
|
|
|
松井 |
|
|
|
古田 |
|
|
|
中村 |
|
|
|
■結果■背番号が18以外の選手名だけが検索されます。 |
|
|
|
|
SELECT 選手名 FROM 野球選手表 WHERE 背番号 = 18 AND 球団名 = ’ジャイアンツ’; |
選手名 |
|
|
|
桑田 |
|
|
|
■結果■背番号が18で球団名がジャイアンツの選手名(桑田のみ)が検索されます。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE 球団名 = ’スワローズ’ OR ポジション = ’内野手’; |
選手名 |
背番号 |
球団名 |
ポジション |
古田 |
27 |
スワローズ |
捕手 |
中村 |
5 |
バッファローズ |
内野手 |
■結果■球団名がスワローズとポジションが内野手のレコードが検索されます。 |
※優先順位は「1:NOT→2:AND→3:OR」です。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE 背番号 BETWEEN 10 AND 30; |
選手名 |
背番号 |
球団名 |
ポジション |
古田 |
27 |
スワローズ |
捕手 |
松坂 |
18 |
ライオンズ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
■結果■背番号が10~30の選手のレコードが検索されます。 |
※「BETWEEN a AND b」は「a以上b以下」です。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE 背番号 NOT BETWEEN 10 AND 30; |
選手名 |
背番号 |
球団名 |
ポジション |
中村 |
5 |
バッファローズ |
内野手 |
松井 |
55 |
ジャイアンツ |
外野手 |
■結果■背番号が10~30以外の選手のレコードが検索されます。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE ポジション IN (’投手’,’捕手’); |
選手名 |
背番号 |
球団名 |
ポジション |
古田 |
27 |
スワローズ |
捕手 |
松坂 |
18 |
ライオンズ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
■結果■ポジションが投手か捕手のレコードが検索されます。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE ポジション NOT IN (’投手’,’捕手’); |
選手名 |
背番号 |
球団名 |
ポジション |
中村 |
5 |
バッファローズ |
内野手 |
松井 |
55 |
ジャイアンツ |
外野手 |
■結果■ポジションが投手か捕手以外のレコードが検索されます。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE 選手名 LIKE ’%田’; |
選手名 |
背番号 |
球団名 |
ポジション |
古田 |
27 |
スワローズ |
捕手 |
桑田 |
18 |
ジャイアンツ |
投手 |
■結果■選手名がX田のレコードが検索されます。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE 選手名 IS NULL; |
選手名 |
背番号 |
球団名 |
ポジション |
|
99 |
XXX |
YYY |
|
999 |
XXXX |
YYYY |
■結果■選手名がNULLのレコードが検索されます。(IS NOT NULLにするとNULLではないレコード検索) |
—————————— ソート(ORDER BY)について ——————————— |
ORDER BY |
■野球選手表■ |
|
|
|
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
古田 |
27 |
スワローズ |
捕手 |
西口 |
13 |
ライオンズ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
高橋 |
24 |
ジャイアンツ |
外野手 |
上原 |
19 |
ジャイアンツ |
投手 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE ポジション = ’投手’ ORDER BY 背番号 [ASC] ; |
選手名 |
背番号 |
球団名 |
ポジション |
西口 |
13 |
ライオンズ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
上原 |
19 |
ジャイアンツ |
投手 |
■結果■ポジションが投手のレコードが昇順に並びかえられました。 |
※最後の「ASC」はデフォルトですので、省略しても同様の結果になる。 |
|
|
|
|
SELECT * FROM 野球選手表 WHERE ポジション = ’投手’ ORDER BY 背番号 DESC; |
選手名 |
背番号 |
球団名 |
ポジション |
上原 |
19 |
ジャイアンツ |
投手 |
桑田 |
18 |
ジャイアンツ |
投手 |
西口 |
13 |
ライオンズ |
投手 |
■結果■ポジションが投手のレコードが降順に並びかえられました。 ※複数の列を指定する場合は、ORDER BY 背番号,球団名 DESC; のようにコンマで区切る。 (背番号・球団名の順にソートする。) |
—————————————– 関数 —————————————- |
SUBSTR |
|
|
|
SELECT SUBSTR(’ABCDE 12345’7,2) FROM テーブル名; |
■結果■12が取り出されます。 |
※空白は1桁としてカウントされます。 |
|
|
|
|
INITCAP |
|
|
|
SELECT INITCAP(’hanshin tigers’) FROM テーブル名; |
■結果■Hanshin Tigersと表示されます。 |
|
|
|
|
UPPER |
|
|
|
SELECT UPPER(’hanshin tigers’) FROM テーブル名; |
■結果■HANSHIN TIGERSと表示されます。 |
|
|
|
|
NLV |
NULL値をNULL以外に変換します。 |
|
|
|
|
|
|
数値関数(アルファベット順) |
|
|
関数名 |
説明 |
|
|
CEIL(a) |
a以上の最小数を返す |
|
|
FLOOR(a) |
a以上の最大数を返す |
|
|
MOD(a,b) |
a÷bの余り値を返す |
|
|
POWER(a,b) |
aのb乗した値を返す |
|
|
SQRT(a) |
aの平方根を返す |
|
|
ROUND(a,b) |
aを小数点b桁に四捨五入した値を返す |
|
|
TRUNC(a,b) |
aを小数点b桁に切り捨てた値を返す |
|
|
—————————————- 結合 —————————————– |
等価結合 |
|
|
|
等価条件に基づいて2つ以上の表から行を返します。 |
非等価結合 |
|
|
|
イコール以外の演算子を用いて結合します。 |
外部結合 |
|
|
|
(+)を用いて結合します。 |
同一表結合 |
|
|
|
表をその表自身と結合させます。 |
|
|
|
|
■選手表■ |
|
|
|
背番号 |
選手名 |
球団名 |
ポジション |
18 |
桑田 |
ジャイアンツ |
投手 |
19 |
上原 |
ジャイアンツ |
投手 |
24 |
高橋 |
ジャイアンツ |
外野手 |
55 |
松井 |
ジャイアンツ |
外野手 |
|
|
|
|
■出身校表■ |
|
|
|
背番号 |
出身校 |
|
|
18 |
PL学園 |
|
|
19 |
大阪体育大 |
|
|
24 |
慶応大 |
|
|
55 |
星陵高 |
|
|
|
|
|
|
SELECT 選手表.背番号,選手表.選手名,出身校表.出身校 FROM 選手表,出身校表 WHERE 選手表.背番号 = 出身校表.背番号; |
背番号 |
選手名 |
出身校 |
|
18 |
桑田 |
PL学園 |
|
19 |
上原 |
大阪体育大 |
|
24 |
高橋 |
慶応大 |
|
55 |
松井 |
星陵高 |
|
■結果■背番号によって2つの表が関連付けられました。 |
————————————– グルーピング ————————————- |
グループ関数 |
|
|
|
関数名 |
意味 |
|
|
AVG |
平均値を返す |
|
|
COUNT |
行数を返す |
|
|
MAX |
最大値を返す |
|
|
MIN |
最小値を返す |
|
|
SUM |
合計値を返す |
|
|
|
|
|
|
■選手表■ |
|
|
|
球団名 |
選手名 |
ポジション |
身長 |
ジャイアンツ |
桑田 |
投手 |
174 |
ジャイアンツ |
上原 |
投手 |
185 |
ジャイアンツ |
高橋 |
外野手 |
180 |
ジャイアンツ |
松井 |
外野手 |
186 |
タイガース |
井川 |
投手 |
185 |
タイガース |
福原 |
投手 |
180 |
タイガース |
桧山 |
外野手 |
177 |
タイガース |
赤星 |
外野手 |
170 |
|
|
|
|
SELECT 球団名,MAX(身長)FROM 選手表 GROUP BY 球団名; |
球団名 |
MAX(身長) |
|
|
ジャイアンツ |
186 |
|
|
タイガース |
185 |
|
|
■結果■球団名、それぞれの最高身長が検索されます。 |
|
|
|
|
SELECT 球団名,ポジション,MAX(身長)FROM 選手表 GROUP BY 球団名,ポジション; |
球団名 |
ポジション |
MAX(身長) |
|
ジャイアンツ |
投手 |
185 |
|
ジャイアンツ |
外野手 |
186 |
|
タイガース |
投手 |
185 |
|
タイガース |
外野手 |
177 |
|
■結果■球団名ごとにポジションの最高身長が検索されます。 |
|
|
|
|
SELECT 球団名,ポジション,MAX(身長)FROM 選手表 HAVING MAX(身長) >= 180 GROUP BY 球団名,ポジション; |
球団名 |
ポジション |
MAX(身長) |
|
ジャイアンツ |
投手 |
185 |
|
ジャイアンツ |
外野手 |
186 |
|
タイガース |
投手 |
185 |
|
■結果■球団名ごとにポジションの最高身長が検索されます。 HAVINGはGROUP BYの前後どちらでもOK 。 |
※HAVINGはGROUP BYの前後どちらでもOK。 |
————————————— 副問合せ ————————————— |
SELECT文の中にあるSELECT文 |
単一行副問い合わせ |
|
|
複数行副問い合わせ |
|
|
複数列副問い合わせ |
|
|
※ORDER BYは副問い合わせを使用できない |
|
|
|
|
|
|
DISTINCT |
|
|
|
以下の記述はDISTINCTと同じ。 |
|
|
SELECT 列名 FROM 表名1 WHERE 列名 IN (SELECT 列名 FROM 表名2); |
————————————- SQL*Plus —————————————- |
SQL文を認識し、実行するためのツール |
|
|
●login.sql:SQL*Plus起動時に設定するコマンドファイル |
●COLUMN:列の書式設定や表示幅を定義する |
●DEFINEまたはACCEPTにて変数の事前定義が行なえる |
●UNDEFINE:1度格納したユーザ変数を削除する |
●PL/SQLは「ブロック単位」 |
————————————— データ更新 ————————————- |
■野球選手表■ |
|
|
|
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
西口 |
13 |
ライオンズ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
斎藤 |
11 |
ジャイアンツ |
投手 |
石井 |
16 |
スワローズ |
投手 |
|
|
|
|
①INSERT INTO 野球選手表 (選手名,背番号,球団名,ポジション) VALUES(’寺原’,20,’ホークス’,’投手’); |
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
西口 |
13 |
ライオンズ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
斎藤 |
11 |
ジャイアンツ |
投手 |
石井 |
16 |
スワローズ |
投手 |
寺原 |
20 |
ホークス |
投手 |
■結果■今年入団した寺原投手のレコードが追加されました。 |
|
|
|
|
②UPDATE 野球選手表 SET 球団名 = ’ドジャース’ WHERE 選手名 = ’石井’; |
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
西口 |
13 |
ライオンズ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
斎藤 |
11 |
ジャイアンツ |
投手 |
石井 |
16 |
ドジャース |
投手 |
寺原 |
20 |
ホークス |
投手 |
■結果■今年FAした石井投手の球団名がドジャースに変更されました。 |
|
|
|
|
③DELETE FROM 野球選手表 WHERE 選手名 = ’斎藤’; |
選手名 |
背番号 |
球団名 |
ポジション |
松井 |
55 |
ジャイアンツ |
外野手 |
西口 |
13 |
ライオンズ |
投手 |
中村 |
5 |
バッファローズ |
内野手 |
石井 |
16 |
ドジャース |
投手 |
寺原 |
20 |
ホークス |
投手 |
■結果■今年引退し |
|
|
|