|
---------------------------------------- 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 | ホークス | 投手 |
| ■結果■今年引退し | |||


Comments
0 comments postedPost new comment