【Oracle】SQLの書き方の基本を現役エンジニアが解説

実務でSQLを使うのだけど、書き方の基本を教えて欲しい。
こんな疑問にお答えします。
SQLとは、Structured Query Languageの略です。日本語にすると「構造化問い合わせ言語」という意味です。SQLは関係データベースの操作言語として扱われています。
今回はSQLの書き方の基本をまとめてみました。

僕は現役のフリーランスエンジニアです。実務でよくSQLを使っていますので、書き方をわかりやすく解説しますね。
SQLは多くの現場で使われている言語ですので、ITエンジニアであれば必須の知識と言っても過言ではありません。ぜひこの記事で書き方の基本をマスターしていってくださいね!
データを取得する:SELECT
データを取得したい時には、SELECT文を使います。
SELECT カラム名
FROM テーブル名
データを全て取得する:SELECT *
すべてのデータを取得したい場合は、アスタリスクをつけます。
SELECT *
FROM テーブル名
データを条件付きで取得する:WHERE
条件付きで取得したい場合は、WHERE句を用います。
SELECT カラム名
FROM テーブル名
WHERE カラム名 = 値
データを削除する:DELETE
データを削除する際は、DELETE文を使います。全てのデータを削除する場合、以下の構文になります。
DELETE FROM テーブル名
データを条件付きで削除する:WHERE
データを条件付きで削除する際は、以下の書き方になります。
DELETE FROM テーブル名
WHERE カラム名 = 値
データを登録する:INSERT
データを登録する場合、INSERT文を用います。VALUESにはカラム名と対になるよう記述します。
INSERT INTO (カラム名, カラム名, ...) VALUES(値, 値, ...)
データを取得した値を登録する:SELECT&INSERT
テーブルから取得した値を、そのままINSERTすることもできます。
INSERT INTO (
カラム名
,カラム名
)
SELECT
カラム名
,カラム名
FROM
テーブル名
WHERE
カラム名 = 値
データを更新する:UPDATE
データの更新にはUPDATE文を使います。
UPDATE テーブル名
SET 更新処理
データを条件付きで更新する:WHERE
条件付きで更新する場合、WHERE句を使います。
UPDATE テーブル名
SET 更新処理
WHERE 条件式
テーブルを作成する:CREATE
新たにテーブルを作成する場合、CREATE文を使います。
CREATE TABLE テーブル名
(
列1 列1のデータ型,
列2 列2のデータ型,
列3 列3のデータ型,
CONSTRAINT 主キー名 PRIMARY KEY(列1)
)
TABLESPACE 表領域名;
テーブルを削除する:DROP TABLE
デーブルの削除は、DROP TABLEを用います。
-- テーブルを削除
DROP TABLE テーブル名
-- テーブルを制約ごと削除
DROP TABLE テーブル名 CASCADE CONSTRAINTS;
-- テーブルを制約ごと完全削除
DROP TABLE テーブル名 CASCADE CONSTRAINTS PURGE;
テーブルにカラムを追加する:ALTER TABLE
-- テーブルにカラムを単独追加する
ALTER TABLE テーブル名 ADD (カラム名 データ型);
-- テーブルにカラムを複数追加する
ALTER TABLE テーブル名 ADD (カラム名 データ型, カラム名 データ型);
テーブルを内部結合する:INNER JOIN
テーブル同士を内部結合する場合、INNER JOINを使います。内部結合とは、ONで指定した条件が一致する場合に列を表示することです。
SELECT カラム名
FROM テーブル名
INNER JOIN テーブル名
ON テーブル名.カラム名 = テーブル名.カラム名
ちなみに「INNER」は省略可能ですので、「JOIN」とだけつけることができますが、わかりやすいようにINNERも付けておくのがお勧めです。
テーブルを外部結合する:LEFT JOIN・RIGHT JOIN
テーブルを外部結合する際は、LEFT JOINもしくはRIGHT JOINを用います。
-- 左外部結合
SELECT カラム名
FROM テーブル名
LEFT JOIN テーブル名
ON テーブル名.カラム名 = テーブル名.カラム名
-- 右外部結合
SELECT カラム名
FROM テーブル名
RIGHT JOIN テーブル名
ON テーブル名.カラム名 = テーブル名.カラム名
LEFTとRIGHTの違いは、LEFTがFROMで指定した左のテーブルが優先テーブルになり、RIGHTは右側のテーブルが優先テーブルになります。
優先テーブルに指定されたテーブルのデータは全て表示します。もう片方のテーブルのデータは、優先テーブルに一致する値のみ表示し、一致しない場合はNULLで表示されます。
ちなみに外部結合は、正式にはLEFT OUTER JOIN、RIGHT OUTER JOINと書きますが、OUTERは省略できます。
比較演算子:OR・IN
SQLでは比較演算子を使用できます。
OR(または)
まずはOR句からみていきましょう。
SELECT COLUMN
FROM TABLE_A
WHERE (COLUMN = 'A' OR COLUMN = 'B')
AND COLUMN 'C'
OR句は、「AまたはBの場合に」を条件にできます。
1つ注意点として、OR句を使う場合、比較する条件式をかっこで囲わないと条件が変わります。もし囲わない場合、条件が「AまたはBかつC」になります。
-- かっこで囲わないパターン
SELECT COLUMN
FROM TABLE_A
WHERE COLUMN = 'A' OR COLUMN = 'B'
AND COLUMN 'C'
-- WHERE COLUMN = 'A' OR 「Aまたは」
-- COLUMN = 'B' AND COLUMN 'C' 「BかつCの場合」となる
IN(いずれかに一致する場合)
IN句は、いずれかに一致する場合を条件とします。
OR句のかっこで囲うパターンと比べると、IN句の方が簡略化できますね。
SELECT COLUMN
FROM TABLE_A
WHERE COLUMN IN(COLUMN = 'A' OR COLUMN = 'B')
AND COLUMN = 'C'
まとめ
SQLは一見すると難しく思うかもしれませんが、基本を理解すれば複雑な構文なども意外と簡単に書けるようになります。
本記事でとりあげたSQLの基本をおさえておけば、実務でSQLを十分使えるようになりますよ。