PostgreSQL における基本的なデータ操作

PostgreSQLPostgreSQLBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験(Lab)では、PostgreSQL における基本的なデータ操作について学びます。主な目標は、基本的な SQL コマンドを使用して PostgreSQL データベース内のデータを操作する方法を習得することです。

まず、データベースに接続し、ID、名前、および部署(department)の列を持つemployeesテーブルを作成します。次に、INSERT INTOステートメントを使用して、テーブルにデータを挿入する方法を学びます。その後、SELECTを使用したデータのクエリ、既存のレコードの更新、およびレコードの削除について説明します。この実験(Lab)では、PostgreSQL における重要なデータ管理テクニックの実践的な入門を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"]) postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table") postgresql/PostgreSQLGroup -.-> postgresql/row_add("Insert One Row") postgresql/PostgreSQLGroup -.-> postgresql/data_all("Select All Data") postgresql/PostgreSQLGroup -.-> postgresql/data_where("Filter With WHERE") postgresql/PostgreSQLGroup -.-> postgresql/data_sort("Sort Query Results") postgresql/PostgreSQLGroup -.-> postgresql/row_edit("Update Single Row") postgresql/PostgreSQLGroup -.-> postgresql/row_drop("Delete One Row") subgraph Lab Skills postgresql/table_init -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} postgresql/row_add -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} postgresql/data_all -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} postgresql/data_where -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} postgresql/data_sort -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} postgresql/row_edit -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} postgresql/row_drop -.-> lab-550897{{"PostgreSQL における基本的なデータ操作"}} end

テーブルへのデータ挿入

このステップでは、PostgreSQL のテーブルにデータを挿入する方法を学びます。データの挿入は、データベースに情報を入力するための基本的な操作です。ここでは、基本的な構文を説明し、プロセスを理解するのに役立つ例を提供します。

始める前に、PostgreSQL がインストールされ、実行されていることを確認してください。psqlコマンドラインツールを使用して PostgreSQL サーバーに接続できます。

まず、データベースに接続しましょう。ターミナルを開き、次のコマンドを実行します。

sudo -u postgres psql

データベースに接続できたので、employeesという名前の簡単なテーブルが存在しない場合は作成しましょう。このテーブルには、従業員の ID、名前、部署(department)などの情報が格納されます。

CREATE TABLE IF NOT EXISTS employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50)
);

この SQL ステートメントは、employeesという名前のテーブルを 3 つの列で作成します。

  • id: 各新しいレコードで自動的にインクリメントされる整数(SERIALを使用)。テーブルの主キー(primary key)でもあります。
  • name: 従業員の名前を格納する文字列(最大 50 文字)。
  • department: 従業員の部署(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)と、データを挿入する列(namedepartment)を指定します。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)
Output after inserting data in table

これで、PostgreSQL テーブルにデータを正常に挿入できました。必要に応じて、さらにレコードを挿入し続けることができます。

最後に、\qと入力して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'部署(department)で働く従業員のみを取得したいとします。

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句を使用して結果を並べ替える方法が含まれます。

Illustration for querying data in PostgreSQL

最後に、\qと入力してpsqlシェルを終了します。

\q

既存のレコードの更新

このステップでは、UPDATEステートメントを使用して PostgreSQL テーブル内の既存のレコードを更新する方法を学びます。データの更新は、データベース情報を最新かつ正確に保つために不可欠です。ここでは、基本的な構文を説明し、プロセスを理解するのに役立つ例を提供します。

まず、データベースに接続されていることを確認してください。まだ接続していない場合は、ターミナルを開き、次のコマンドを実行します。

sudo -u postgres psql

'Alice Smith'の部署(department)を'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 の部署(department)を'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ステートメントはテーブル内のすべての行を更新します。例:

UPDATE employees SET department = 'Unknown';

このステートメントは、employeesテーブルのすべての行のdepartment列を'Unknown'に設定します。このようなステートメントを実行する場合は、非常に注意してください。

Illustration for updating records in PostgreSQL

これで、UPDATEステートメントを使用して PostgreSQL テーブル内の既存のレコードを更新する方法を学びました。

最後に、\qと入力して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'部署(department)に複数の従業員がいる場合、次の 1 つのステートメントですべて削除できます。

DELETE FROM employees WHERE department = 'Marketing';

DELETEステートメントを使用する場合は、特にWHERE句を省略する場合に、非常に注意することが重要です。WHERE句を省略すると、DELETEステートメントはテーブルからすべての行を削除します。例:

DELETE FROM employees;

このステートメントは、employeesテーブルのすべての行を削除し、事実上テーブルを空にします。このようなステートメントを実行する前に、すべての行を削除することを絶対に確認してください。

これで、DELETEステートメントを使用して PostgreSQL テーブルからレコードを削除する方法を学びました。

Illustration for record deletion in PostgreSQL

削除が成功したことを確認するために、employeesテーブルを確認してください。

SELECT * FROM employees;

出力は次のようになります。

 id | name | department
----+------+------------
(0 rows)

最後に、\qと入力してpsqlシェルを終了します。

\q

まとめ

この実験(Lab)では、PostgreSQL の基本的なデータ操作について説明し、テーブルへのデータの挿入に焦点を当てました。まず、psqlコマンドラインツールを使用してデータベースに接続しました。次に、idname、およびdepartmentの列を持つemployeesテーブルを作成し、idを自動インクリメント機能付きの主キー(primary key)として指定しました。

最後に、INSERT INTOステートメントを使用して、3 つの従業員レコードをemployeesテーブルに挿入しました。テーブル名とデータを挿入する列、および各レコードに対応する値を指定しました。これにより、PostgreSQL テーブルにデータを投入するための基本的な構文が示されました。