はじめに
この実験では、PostgreSQLにおける基本的なデータ操作について学びます。主な目的は、基本的なSQLコマンドを使用してPostgreSQLデータベース内のデータを操作する方法を習得することです。
まずはデータベースに接続し、ID、名前、部署の列を持つ employees テーブルを作成します。次に、INSERT INTO 文を使用してテーブルにデータを挿入する方法を学びます。その後、SELECT を使用したデータのクエリ、既存レコードの更新、およびレコードの削除について解説します。この実験を通じて、PostgreSQLにおけるデータ管理の必須技術を実践的に学びます。
テーブルへのデータ挿入
このステップでは、PostgreSQLのテーブルにデータを挿入する方法を学びます。データの挿入は、データベースに情報を蓄積するための基本的な操作です。基本的な構文と、プロセスを理解するための例を紹介します。
始める前に、PostgreSQLがインストールされ、実行されていることを確認してください。psql コマンドラインツールを使用してPostgreSQLサーバーに接続できます。
まずはデータベースに接続します。ターミナルを開き、以下のコマンドを実行してください。
sudo -u postgres psql
データベースに接続できたら、employees という名前のテーブルが存在しない場合に作成します。このテーブルには、従業員のID、名前、部署といった情報を格納します。
CREATE TABLE IF NOT EXISTS employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
このSQL文は、3つの列を持つ employees テーブルを作成します。
id: 新しいレコードが追加されるたびに自動的にインクリメントされる整数(SERIALを使用)。テーブルの主キーでもあります。name: 従業員名を格納するための文字列(最大50文字)。department: 従業員の部署を格納するための文字列(最大50文字)。
それでは、employees テーブルにデータを挿入してみましょう。3人分の従業員レコードを追加します。
INSERT INTO employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO employees (name, department) VALUES ('Charlie Brown', 'Engineering');
各 INSERT INTO 文は、employees テーブルに新しい行を追加します。テーブル名(employees)とデータを挿入する列(name, department)を指定します。VALUES キーワードの後に、括弧で囲まれた挿入したい実際のデータを記述します。
データが正しく挿入されたかを確認するために、SELECT 文を使用して employees テーブルをクエリします。
SELECT * FROM employees;
これにより、employees テーブルのすべての行と列が表示されます。先ほど挿入した3人の従業員レコードが表示されるはずです。出力は以下のようになります。
id | name | department
----+---------------+------------
1 | Alice Smith | Sales
2 | Bob Johnson | Marketing
3 | Charlie Brown | Engineering
(3 rows)

これで、PostgreSQLのテーブルへのデータ挿入が完了しました。必要に応じて、さらにレコードを追加することも可能です。
最後に、以下のコマンドを入力して psql シェルを終了します。
\q
ターミナルに戻ります。
SELECTによるデータクエリ
このステップでは、SELECT 文を使用してPostgreSQLのテーブルからデータをクエリする方法を学びます。SELECT 文は、データベースから情報を取得するための基本です。データ取得をマスターするために、基本的な構文、フィルタリング、および並べ替えについて解説します。
まず、データベースに接続されていることを確認してください。まだ接続していない場合は、ターミナルを開いて以下のコマンドを実行します。
sudo -u postgres psql
特定の列を選択する方法を学びましょう。name 列と department 列のみを取得したい場合:
SELECT name, department FROM employees;
この文は、employees テーブルの全行に対して name 列と department 列のみを返します。出力は以下のようになります。
name | department
---------------+------------
Alice Smith | Sales
Bob Johnson | Marketing
Charlie Brown | Engineering
(3 rows)
次に、WHERE 句を追加して結果をフィルタリングします。「Sales」部署で働く従業員のみを取得したい場合:
SELECT name, department FROM employees WHERE department = 'Sales';
WHERE 句は、結果セットに含まれるために満たすべき条件を指定します。この場合、department 列が「Sales」と等しい行のみを選択しています。出力は以下のようになります。
name | department
---------------+------------
Alice Smith | Sales
(1 row)
最後に、ORDER BY 句を使用して結果を並べ替える方法を学びます。すべての従業員を名前の昇順で取得したい場合:
SELECT name, department FROM employees ORDER BY name;
この文は employees テーブルの全行を返しますが、結果は name 列によってアルファベット順に並べ替えられます。出力は以下のようになります。
name | department
---------------+------------
Alice Smith | Sales
Bob Johnson | Marketing
Charlie Brown | Engineering
(3 rows)
結果を降順で並べ替えるには、列名の後に DESC キーワードを追加します。
SELECT name, department FROM employees ORDER BY name DESC;
これにより、結果がアルファベットの逆順で並べ替えられます。
これで、SELECT 文を使用してPostgreSQLテーブルからデータをクエリする方法(特定の列の選択、WHERE 句によるフィルタリング、ORDER BY 句による並べ替え)を習得しました。

最後に、以下のコマンドを入力して psql シェルを終了します。
\q
既存レコードの更新
このステップでは、UPDATE 文を使用してPostgreSQLテーブル内の既存レコードを更新する方法を学びます。データの更新は、データベースの情報を最新かつ正確に保つために不可欠です。基本的な構文と例を通じてプロセスを理解しましょう。
まず、データベースに接続されていることを確認してください。まだ接続していない場合は、ターミナルを開いて以下のコマンドを実行します。
sudo -u postgres psql
「Alice Smith」の部署を「Human Resources」に更新してみましょう。
UPDATE employees SET department = 'Human Resources' WHERE name = 'Alice Smith';
UPDATE 文はテーブル内の既存の行を変更します。SET 句は更新する列とその新しい値を指定し、WHERE 句は更新する行を指定します。この場合、name 列が「Alice Smith」である行の department 列を「Human Resources」に更新しています。
更新が成功したかを確認するために、employees テーブルをクエリします。
SELECT * FROM employees WHERE name = 'Alice Smith';
「Alice Smith」の行が表示され、department 列が「Human Resources」に更新されていることが確認できるはずです。出力は以下のようになります。
id | name | department
----+---------------+------------------
1 | Alice Smith | Human Resources
(1 row)
一度に複数の列を更新することも可能です。例えば、Bob Johnsonの部署を「Sales」に、名前を「Robert Johnson」に更新してみましょう。
UPDATE employees SET department = 'Sales', name = 'Robert Johnson' WHERE name = 'Bob Johnson';
この文は、name 列が「Bob Johnson」である行の department 列と name 列の両方を更新します。
更新を確認するために、再度 employees テーブルをクエリします。
SELECT * FROM employees WHERE name = 'Robert Johnson';
出力は以下のようになります。
id | name | department
----+----------------+------------
2 | Robert Johnson | Sales
(1 row)
UPDATE 文を使用する際は、特に WHERE 句を省略する場合に注意が必要です。WHERE 句を省略すると、テーブル内の すべて の行が更新されてしまいます。例えば:
UPDATE employees SET department = 'Unknown';
この文を実行すると、employees テーブルの すべて の行の department 列が「Unknown」に設定されてしまいます。このような文を実行する際は細心の注意を払ってください。

これで、UPDATE 文を使用してPostgreSQLテーブルの既存レコードを更新する方法を習得しました。
最後に、以下のコマンドを入力して psql シェルを終了します。
\q
レコードの削除
このステップでは、DELETE 文を使用してPostgreSQLテーブルからレコードを削除する方法を学びます。データの削除は、不要になった情報や誤った情報をデータベースから取り除くための重要な操作です。基本的な構文と例を通じてプロセスを理解しましょう。
まず、データベースに接続されていることを確認してください。まだ接続していない場合は、ターミナルを開いて以下のコマンドを実行します。
sudo -u postgres psql
employees テーブルから「Charlie Brown」のレコードを削除してみましょう。
DELETE FROM employees WHERE name = 'Charlie Brown';
DELETE FROM 文はテーブルから行を削除します。WHERE 句は削除する行を指定します。この場合、name 列が「Charlie Brown」である行を削除しています。
削除が成功したかを確認するために、employees テーブルをクエリします。
SELECT * FROM employees WHERE name = 'Charlie Brown';
行が返されないはずであり、これは「Charlie Brown」のレコードが削除されたことを示しています。出力は以下のようになります。
id | name | department
----+------+------------
(0 rows)
より複雑な WHERE 句を使用することで、一度に複数の行を削除することも可能です。例えば、「Marketing」部署に複数の従業員がいる場合、1つの文ですべて削除できます。
DELETE FROM employees WHERE department = 'Marketing';
DELETE 文を使用する際は、特に WHERE 句を省略する場合に細心の注意を払うことが極めて重要です。WHERE 句を省略すると、テーブルから すべて の行が削除されてしまいます。例えば:
DELETE FROM employees;
この文を実行すると、employees テーブルの すべて の行が削除され、テーブルが空になってしまいます。このような文を実行する前には、すべての行を削除しても問題ないか必ず確認してください。
これで、DELETE 文を使用してPostgreSQLテーブルからレコードを削除する方法を習得しました。

employees テーブルを確認し、削除が成功したか確認します。
SELECT * FROM employees;
出力は以下のようになります。
id | name | department
----+----------------+-----------------
1 | Alice Smith | Human Resources
2 | Robert Johnson | Sales
(2 rows)
最後に、以下のコマンドを入力して psql シェルを終了します。
\q
まとめ
この実験では、PostgreSQLにおける基本的なデータ操作、特にテーブルへのデータ挿入に焦点を当てて学習しました。まず psql コマンドラインツールを使用してデータベースに接続しました。次に、id、name、department の各列を持つ employees テーブルを作成し、id を自動インクリメント機能を持つ主キーとして設定しました。
最後に、INSERT INTO 文を使用して3人の従業員レコードを employees テーブルに挿入しました。テーブル名とデータを挿入する列、および各レコードに対応する値を指定することで、PostgreSQLテーブルにデータを格納するための基本的な構文を実践しました。


