SQLの基礎:SELECT, INSERT, UPDATE, DELETE
SQL (Structured Query Language) は、リレーショナルデータベースを操作するための標準言語です。その中でも、データの操作を行うDML (Data Manipulation Language) の中心となるのが、SELECT, INSERT, UPDATE, DELETE の4つのコマンドです。これらは頭文字をとって CRUD (Create, Read, Update, Delete) とも呼ばれ、あらゆるアプリケーションの基本となります。
このガイドでは、これらの基本的なコマンドの使い方を、具体的な例と共に解説します。
準備:サンプルテーブル
以降の例では、employeesという名前の従業員情報を格納するテーブルを使用します。
CREATE TABLE employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
department VARCHAR(50),
salary INTEGER
);
-- サンプルデータの挿入
INSERT INTO employees (name, department, salary) VALUES
('Alice', 'Sales', 50000),
('Bob', 'Engineering', 60000),
('Charlie', 'Sales', 55000),
('David', 'Engineering', 70000);1. SELECT:データの読み取り (Read)
SELECT文は、テーブルからデータを取得するために使用します。最も頻繁に使われるSQLコマンドです。
1.1. 基本的な構文
SELECT <列名1>, <列名2>, ... FROM <テーブル名>;1.2. 使用例
すべての列を取得する (*) アスタリスク(*)は「すべての列」を意味するワイルドカードです。
SELECT * FROM employees;結果:
id | name | department | salary
----+---------+-------------+--------
1 | Alice | Sales | 50000
2 | Bob | Engineering | 60000
3 | Charlie | Sales | 55000
4 | David | Engineering | 70000特定の列だけを取得する
SELECT name, salary FROM employees;結果:
name | salary
---------+--------
Alice | 50000
Bob | 60000
Charlie | 55000
David | 70000WHERE句で条件を指定するWHERE句を使うことで、特定の条件に一致する行だけを絞り込むことができます。
-- 'Engineering'部門の従業員を取得
SELECT * FROM employees WHERE department = 'Engineering';結果:
id | name | department | salary
----+-------+-------------+--------
2 | Bob | Engineering | 60000
4 | David | Engineering | 700002. INSERT:データの作成 (Create)
INSERT文は、テーブルに新しい行(レコード)を追加するために使用します。
2.1. 基本的な構文
INSERT INTO <テーブル名> (<列名1>, <列名2>, ...) VALUES (<値1>, <値2>, ...);2.2. 使用例
新しい従業員を追加する
INSERT INTO employees (name, department, salary) VALUES ('Eve', 'Marketing', 48000);このコマンドを実行した後、SELECT * FROM employees; を実行すると、新しい行が追加されていることが確認できます。
複数の行を一度に追加する
INSERT INTO employees (name, department, salary) VALUES
('Frank', 'Marketing', 52000),
('Grace', 'HR', 45000);3. UPDATE:データの更新 (Update)
UPDATE文は、テーブル内の既存の行のデータを変更するために使用します。
3.1. 基本的な構文
UPDATE <テーブル名> SET <列名1> = <新しい値1>, <列名2> = <新しい値2>, ... WHERE <条件>;WHERE句の重要性: UPDATE文でWHERE句を省略すると、テーブル内のすべての行が更新されてしまいます。特定の行だけを更新する場合は、WHERE句で対象を正確に指定することが非常に重要です。
3.2. 使用例
特定の従業員の給与を更新する IDが2のBobの給与を65000に更新します。
UPDATE employees SET salary = 65000 WHERE id = 2;複数の列を同時に更新する IDが1のAliceを'Engineering'部門に移動させ、給与を62000に更新します。
UPDATE employees SET department = 'Engineering', salary = 62000 WHERE name = 'Alice';条件に一致するすべての行を更新する 'Sales'部門の全従業員の給与を5%昇給させます。
UPDATE employees SET salary = salary * 1.05 WHERE department = 'Sales';4. DELETE:データの削除 (Delete)
DELETE文は、テーブルから行を削除するために使用します。
4.1. 基本的な構文
DELETE FROM <テーブル名> WHERE <条件>;WHERE句の重要性: UPDATEと同様に、DELETE文でWHERE句を省略すると、テーブル内のすべての行が削除されてしまいます。操作は慎重に行ってください。
4.2. 使用例
特定の従業員を削除する IDが3のCharlieを削除します。
DELETE FROM employees WHERE id = 3;条件に一致するすべての行を削除する 'Marketing'部門の従業員をすべて削除します。
DELETE FROM employees WHERE department = 'Marketing';これらのCRUD操作は、データベースを扱う上での基本中の基本です。それぞれのコマンドの構文と、特にUPDATEとDELETEにおけるWHERE句の重要性をしっかりと理解することが、安全で効果的なデータベース操作の鍵となります。