(最終更新月:2023年5月)
✔以下の疑問をお持ちの方へ向けた記事です
「SQLの基本的なコマンドとは何で、どのように使うのだろうか?」
「SQLのコマンドの使い方を学びたい」
「SQLのコマンドの具体的な使用例を見て理解したい」
✔この記事を読むことで得られる知識
- SQLの基本的なコマンドの使い方
- 各コマンドの応用法
- SQLコマンドを用いた具体的な使用例
この記事では、SQLの基本的なコマンドの使い方から、各コマンドの応用法まで、具体的な例を交えて詳細に説明します。
ぜひ最後までお読みください。
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;
ここで、value1
とvalue2
には検索範囲を指定します。この範囲はvalue1
とvalue2
を含みます。
AND/ORを用いた複数条件の結合
SQLでは、ANDやORを用いて複数の条件を結合できます。
ANDは両方の条件が真である場合に真となり、ORはどちらか一方の条件が真であれば真となります。
SELECT column_name
FROM table_name
WHERE column1 = value1 AND column2 = value2;
ここで、column1
、value1
、column2
、value2
には、それぞれ対象のカラム名とその値を指定します。
詳しくは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;
ここで、condition1
、condition2
には条件を、result1
、result2
にはそれぞれの条件が真の場合の結果を指定します。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_name1
とtable_name2
が共有するcolumn_name
を結合条件として指定しています。
それにより、両方のテーブルのデータを一緒に取得することが可能です。
UNIONを用いた結果のマージ
UNIONは、二つのSELECT文の結果を結合します。
ただし、UNIONを用いるためには、SELECT文が選択するカラムの数とデータ型がそれぞれ同一である必要があります。
SELECT column_name
FROM table_name1
UNION
SELECT column_name
FROM table_name2;
上記の例では、table_name1
とtable_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への理解がより深まるでしょう。
興味のあるものから進めてみてください。