【完全版】SQLのコマンドを一から丁寧に解説|基礎から応用まで

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年5月)

✔以下の疑問をお持ちの方へ向けた記事です

「SQLの基本的なコマンドとは何で、どのように使うのだろうか?」
「SQLのコマンドの使い方を学びたい」
「SQLのコマンドの具体的な使用例を見て理解したい」

✔この記事を読むことで得られる知識

  • SQLの基本的なコマンドの使い方
  • 各コマンドの応用法
  • SQLコマンドを用いた具体的な使用例

この記事では、SQLの基本的なコマンドの使い方から、各コマンドの応用法まで、具体的な例を交えて詳細に説明します。

ぜひ最後までお読みください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

SQLの基本とコマンドの種類

このセクションでは、「SQLの基本とコマンドの種類」についてお伝えします。

SQLの基本を押さえることで、コマンドへの理解も深まるでしょう。

  • SQLとは?
  • SQLコマンドの大枠:DDL, DML, トランザクション制御

SQLとは?

SQL(Structured Query Language)は、リレーショナルデータベースでデータを操作・管理するための標準的な言語。

様々な操作をSQLを用いておこなえます。

  • データの追加
  • データの更新
  • データの削除
  • データの取得

その普遍性から、多くの業界・職種で求められるスキルとなっています。

SQLコマンドの大枠:DDL, DML, トランザクション制御

SQLのコマンドは大きく分けて3つのカテゴリーに分類されます。

  • DDL(Data Definition Language):データベースやテーブルの構造を定義するコマンド
  • DML(Data Manipulation Language):データの操作に関するコマンド

トランザクション制御は複数の操作をひとつのまとまりとして扱うためのコマンドです。

SELECT文の詳細な使い方

ここでは、「SELECT文の詳細な使い方」を詳しく解説します。

SELECT文の使い方をマスターすることで、データベースから自由自在にデータを取得することができます。

  • SELECT文の基本構文
  • ASを用いた項目名の変更
  • ORDER BYを用いたソート
  • DISTINCTを用いた重複の削除
  • LIKEを用いたあいまい検索
  • BETWEENを用いた範囲指定検索
  • AND/ORを用いた複数条件の結合
  • IN/NOT INを用いた値の包含検索
  • CASEを用いた条件によるデータの変更
  • サブクエリの使用例

SELECT文の基本構文

SELECT文は、データベースからデータを取得するための基本的なコマンドです。

基本的な構文は以下のようになります。

SELECT column_name FROM table_name;

column_nameは取得したいカラム(列)の名前、table_nameはそのカラムを含むテーブルの名前を指定します。

複数のカラムを指定する場合は、カンマで区切って列挙します。

ASを用いた項目名の変更

ASを用いると、取得したデータの項目名を任意のものに変更できます。

これは結果の可読性を高めるためや、同名のカラム名に対する混乱を避けるために使われます。

構文は以下のようになります。

SELECT column_name AS new_column_name FROM table_name;

ここで、new_column_nameに変更したい項目名を指定します。

ORDER BYを用いたソート

ORDER BYを用いると、取得したデータを指定したカラムの値でソートできます。

デフォルトは昇順(ASC)ですが、降順(DESC)でソートすることも可能です。

SELECT column_name FROM table_name ORDER BY sort_column_name ASC|DESC;

上記のsort_column_nameにはソートに使うカラム名を、ASCまたはDESCには昇順か降順かを指定します。

DISTINCTを用いた重複の削除

DISTINCTを用いると、取得したデータから重複する行を削除することができます。

これは特定のカラムの異なる値を調査する際に便利です。

SELECT DISTINCT column_name FROM table_name;

ここで、column_nameには重複を削除したいカラム名を指定します。

LIKEを用いたあいまい検索

LIKEを用いると、指定したパターンに一致する値を持つ行を検索できます。

これにはワイルドカード(%と_)を使用します。

SELECT column_name
FROM table_name
WHERE column_name LIKE pattern;

ここで、patternには検索パターンを指定します。%は任意の文字列を、_は任意の一文字を表します。

BETWEENを用いた範囲指定検索

BETWEENを用いると、指定した範囲内の値を持つ行を検索できます。

  • 数値
  • テキスト
  • 日付の範囲指定

構文は以下のとおり。

SELECT column_name FROM table_name WHERE column_name BETWEEN value1 AND value2;

ここで、value1value2には検索範囲を指定します。この範囲はvalue1value2を含みます。

AND/ORを用いた複数条件の結合

SQLでは、ANDやORを用いて複数の条件を結合できます。

ANDは両方の条件が真である場合に真となり、ORはどちらか一方の条件が真であれば真となります。

SELECT column_name
FROM table_name
WHERE column1 = value1 AND column2 = value2;

ここで、column1value1column2value2には、それぞれ対象のカラム名とその値を指定します。

詳しくはWHERE文についての記事をご覧ください。

IN/NOT INを用いた値の包含検索

INやNOT INを使用すると、指定した値のリストに含まれる値を持つ行、または含まれない行を検索することができます。

SELECT column_name
FROM table_name
WHERE column_name NOT IN (value1, value2, ...);

ここで、(value1, value2, ...)には検索対象の値のリストを指定します。

CASEを用いた条件によるデータの変更

CASEを用いると、条件によって取得するデータを動的に変更することが可能です。

これにより、検索結果の値を条件によって変えることができます。

SELECT column_name,
       CASE
           WHEN condition1 THEN result1
           WHEN condition2 THEN result2
           ...
           ELSE default_result
       END AS alias_name
FROM table_name;

ここで、condition1condition2には条件を、result1result2にはそれぞれの条件が真の場合の結果を指定します。default_resultは、いずれの条件も真でない場合の結果を指定します。

サブクエリの使用例

SQLでは、クエリの中にさらに別のクエリを埋め込むことができます。これをサブクエリといいます。サブクエリは、クエリの結果に対して更なる操作を行いたいときなどに利用します。

SELECT column_name
FROM table_name
WHERE column_name IN (
    SELECT column_name
    FROM another_table_name
);

上記の例では、another_table_nameから取得したcolumn_nameの値を元に、table_nameからデータを検索しています。

複数テーブルのデータを使う方法

この節では、複数のテーブルからデータを取得する方法について学んでいきます。

リレーショナルデータベースの強力な機能の一つが、異なるテーブルのデータを結合することができる点です。これには主にJOINとUNIONが使われます。

  • JOINを用いたテーブルの結合
  • UNIONを用いた結果のマージ

JOINを用いたテーブルの結合

JOINを用いると、二つ以上のテーブルを一つに結合し、それらのテーブルのカラムを一緒に参照することができます。

SELECT column_name1, column_name2, ...
FROM table_name1
JOIN table_name2
ON table_name1.column_name = table_name2.column_name;

この場合、table_name1table_name2が共有するcolumn_nameを結合条件として指定しています。

それにより、両方のテーブルのデータを一緒に取得することが可能です。

UNIONを用いた結果のマージ

UNIONは、二つのSELECT文の結果を結合します。

ただし、UNIONを用いるためには、SELECT文が選択するカラムの数とデータ型がそれぞれ同一である必要があります。

SELECT column_name
FROM table_name1
UNION
SELECT column_name
FROM table_name2;

上記の例では、table_name1table_name2からcolumn_nameを選択し、その結果をマージしています。

その他のDMLコマンドの使い方

この節では、データの挿入、変更、削除を行うSQLコマンドについて詳しく見ていきます。

これらのコマンドは、データを活用するための重要なツールです。

  • INSERT文の使い方
  • UPDATE文の使い方
  • DELETE文の使い方

INSERT文の使い方

INSERT文は、テーブルに新しい行を追加するために使用されます。

以下に基本的な構文を示します。

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

上記の例では、table_nameというテーブルに新しい行を追加しています。カラム名とその値は、それぞれ括弧内にカンマ区切りで記述します。

UPDATE文の使い方

UPDATE文は、既存のテーブル行のデータを変更するために使用されます。

以下に基本的な構文を示します。

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

上記の例では、table_nameというテーブルの特定の行のデータを更新しています。どの行を更新するかは、WHERE句により指定します。

DELETE文の使い方

DELETE文は、テーブルから行を削除するために使用されます。

以下に基本的な構文を示します。

DELETE FROM table_name WHERE condition;

上記の例では、table_nameというテーブルから特定の行を削除しています。どの行を削除するかは、WHERE句により指定します。

DDLコマンドの使い方

この節では、テーブルの作成、変更、削除などのデータ定義を行うDDLコマンドについて詳しく見ていきます。

データベースの設計や構造の変更に役立つコマンドです。

  • CREATE文の使い方
  • ALTER文の使い方
  • DROP文の使い方

CREATE文の使い方

CREATE文は、新しいテーブルやデータベースを作成するためのコマンドです。

以下に基本的なテーブル作成の構文を示します。

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

上記の例では、table_nameという名前のテーブルを新規に作成しています。

カラム名とそれぞれのデータ型を定義しています。

ALTER文の使い方

ALTER文は、既存のテーブルの構造を変更するためのコマンドです。カラムの追加、変更、削除などが行えます。以下にカラム追加の基本構文を示します。

ALTER TABLE table_name
ADD column_name datatype;

上記の例では、table_nameという名前のテーブルに、新しいカラムを追加しています。

DROP文の使い方

DROP文は、テーブルやデータベースを削除するためのコマンドです。

以下にテーブル削除の基本構文を示します。

DROP TABLE table_name;

トランザクション制御の基本

ここではデータベースのトランザクション制御について詳しく説明します。

トランザクション制御はデータベース操作の一貫性と信頼性を保つために不可欠な機能です。

  • COMMITの使い方
  • ROLLBACKの使い方
  • セーブポイントの設定と活用

COMMITの使い方

COMMITコマンドは、データベースへの変更を確定するために使用されます。

このコマンドを実行すると、それまでの変更がデータベースに反映され、他のユーザーからも見ることができるようになります。

以下に基本構文を示します。

START TRANSACTION;
SQLコマンド;
COMMIT;

この例では、トランザクションを開始してからSQLコマンドを実行し、COMMITコマンドで変更を確定しています。

ROLLBACKの使い方

ROLLBACKコマンドは、データベースへの変更を取り消すために使用されます。

このコマンドを実行すると、最後のCOMMIT以降の変更がすべて取り消されます。

以下に基本構文を示します。

START TRANSACTION;
SQLコマンド;
ROLLBACK;

この例では、トランザクションを開始してからSQLコマンドを実行し、ROLLBACKコマンドで変更を取り消しています。

セーブポイントの設定と活用

セーブポイントはトランザクションの途中で設定でき、ROLLBACKコマンドでそのセーブポイントまで戻れます。

これにより、全ての変更を取り消すのではなく、特定のポイントまで変更を戻せるのです。

以下に基本構文を示します。

START TRANSACTION;
SQLコマンド1;
SAVEPOINT savepoint_name;
SQLコマンド2;
ROLLBACK TO SAVEPOINT savepoint_name;

まとめ

当記事では、以下をお伝えしてきました。

  • SQLの基本的な概念
  • さまざまなSQLコマンド(SELECT文、JOIN、UNIONなど)の使い方
  • データベースのトランザクション制御について(COMMIT、ROLLBACK、そしてセーブポイントの設定と活用方法)

当サイトでは各分野の詳細記事もご用意しています。

より詳しく理解することで、SQLへの理解がより深まるでしょう。

興味のあるものから進めてみてください。

タイトルとURLをコピーしました