概念の理解
リレーショナルデータベースとは?
ざっくりいうと表のデータベースです。表のデータベースではないデータベースのことは、NoSQL(Not only SQL)といいます。
RDBMSとは?
RDBMSとは、リレーショナルデータベースを採用しているソフトウェアのことです。MySQLやPostgreSQLのことを「データベース」と呼ぶのは少し誤りで、正しくは「リレーショナルデータベースマネジメントシステム」です。
クエリ(問い合わせ)
クエリの書き順
SELECT(カラム指定)
FROM(どのテーブルが対象か)
JOIN(テーブルの結合)
WHERE(条件絞り込み)
GROUP BY(グループ化)
HAVING(グループ化の後に絞り込み)
ORDER BY(順番の並べ替え)
LIMIT(結果セットの制限)
例えばSELECTをFROM句の下に持ってくるとエラーになります。
クエリの最後はセミコロン「;」で終わりを示しましょう。
クエリの実行順序
FROM(テーブルを持ってきて)
↓
JOIN(テーブルを結合して)
↓
WHERE(条件によって絞り込んで)
↓
GROUP BY(グループ化して)
↓
HAVING(グループ化した後に絞り込んで)
↓
SELECT(指定したカラムに結果をセットして)
↓
ORDER BY(結果セットを並び替える)
人間がクエリを書くときの順番と内部での実行順序は異なるため、理解には注意が必要です。
内部結合と外部結合
内部結合(INNER JOIN)と外部結合(OUTER JOIN)は、どちらも複数のテーブルを結合するのに使います。
使い分けは?
内部結合は、結合したい両方のテーブルに共通する(どちらにもある)行だけを抽出して結合します。
外部結合は、片方のテーブルにだけデータが存在する場合でも結合を行います。
「両方のテーブルにしっかりデータがあるよ」という場合はINNER JOINを使い、「どちらか片方のテーブルにはデータ抜けがあるかも…」という場合はOUTER JOINを使いましょう。
参考記事