データベースの操作 - SQLの基礎(基礎構文とサブクエリ)
SQL(Structured Query Language)
SQL(Structured Query Language:構造化クエリ言語)は、リレーショナルデータベース管理システム(RDBMS)でデータの操作や管理を行うために使用されるプログラミング言語です。データの検索、挿入、更新、削除、スキーマの作成や変更、データベースのアクセス制御など、データベースとのやり取りを行う際に用いられます。
SQLの主な機能
-
データ定義言語(DDL): データベースの構造(スキーマ)を定義するためのコマンドが含まれます。主なコマンドには、CREATE TABLE(テーブル作成)、ALTER TABLE(テーブル変更)、DROP TABLE(テーブル削除)などがあります。
-
データ操作言語(DML): データベース内のデータの操作(検索、挿入、更新、削除)を行うためのコマンドが含まれます。主なコマンドには、SELECT(データ検索)、INSERT(データ挿入)、UPDATE(データ更新)、DELETE(データ削除)などがあります。
-
データ制御言語(DCL): データベースへのアクセス権限やトランザクション制御を行うためのコマンドが含まれます。主なコマンドには、GRANT(権限付与)、REVOKE(権限剥奪)、COMMIT(トランザクション確定)、ROLLBACK(トランザクション取消)などがあります。
SQLの基本構文
ここでは、SQLの基本的な構文について説明します。
- SELECT: データを検索する際に使用されます。条件に一致するデータを抽出することができます。
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 条件;
- INSERT: データを挿入する際に使用されます。
INSERT INTO テーブル名 (列名1, 列名2, ...)
VALUES (値1, 値2, ...);
- UPDATE: データを更新する際に使用されます。
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2, ...
WHERE 条件;
- DELETE: データを削除する際に使用されます。
DELETE FROM テーブル名
WHERE 条件;
SQLの応用構文
ここでは、SQLの応用的な構文について説明します。
- JOIN: 複数のテーブルを結合してデータを検索する際に使用されます。主な結合方法には、INNER JOIN(内部結合)、LEFT JOIN(左外部結合)、RIGHT JOIN(右外部結合)、FULL JOIN(完全外部結合)があります。
SELECT 列名1, 列名2, ...
FROM テーブル1
JOIN テーブル2 ON 結合条件
WHERE 条件;
- GROUP BY: データをグループ化して集計を行う際に使用されます。集計関数には、COUNT(件数)、SUM(合計)、AVG(平均)、MIN(最小)、MAX(最大)などがあります。
SELECT 列名1, 集計関数(列名2)
FROM テーブル名
WHERE 条件
GROUP BY 列名1;
- HAVING: GROUP BYでグループ化されたデータに対して条件を適用する際に使用されます。
SELECT 列名1, 集計関数(列名2)
FROM テーブル名
WHERE 条件
GROUP BY 列名1
HAVING 集計条件;
- ORDER BY: 検索結果のデータをソートする際に使用されます。ASC(昇順)または DESC(降順)でソート順を指定できます。
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 条件
ORDER BY 列名1 ASC, 列名2 DESC;
- LIMIT, OFFSET: 検索結果のデータを一定件数に制限する際に使用されます。LIMITで取得件数、OFFSETで開始位置を指定できます。
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 条件
ORDER BY 列名1
LIMIT 件数 OFFSET 開始位置;
これらの構文を組み合わせることで、データベースから必要なデータを柔軟に取得・操作することができます。
サブクエリ
サブクエリは、SQLクエリの中に入れ子になった別のSQLクエリのことです。サブクエリは、主クエリに対してデータを提供する役割があります。サブクエリは、以下のような場面で使用されます。
- SELECT句のサブクエリ: SELECT句にサブクエリを使用することで、計算結果や別テーブルからのデータを取得できます。
SELECT 列名1, (SELECT 列名2 FROM テーブル2 WHERE 条件) as 別名
FROM テーブル1;
- FROM句のサブクエリ: FROM句にサブクエリを使用することで、サブクエリの結果を仮想テーブルとして扱い、JOINや集計などの操作が可能になります。
SELECT 列名1, 列名2, ...
FROM (SELECT 列名1, 列名2, ... FROM テーブル名 WHERE 条件) as 仮想テーブル
WHERE 条件;
- WHERE句やHAVING句のサブクエリ: WHERE句やHAVING句にサブクエリを使用することで、条件としてサブクエリの結果を利用できます。比較演算子(=、<>、>、<、>=、<=、IN、NOT IN、EXISTS、NOT EXISTS)と組み合わせて使用します。
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 列名1 IN (SELECT 列名2 FROM テーブル2 WHERE 条件);
サブクエリを使用することで、複雑なデータ操作や条件設定が可能になります。ただし、サブクエリが多くなると、クエリの可読性やパフォーマンスが低下することがあるため、適切なバランスで使用することが重要です。
Discussion