PostgreSQLの学習:SELECTでTableからデータを取得する
今回はPostgreSQLでSELECTを使ってTableからデータを取得する方法について考えてみたいと思います。
これまでに、CREATE TABLEでTableを作成し、INSERTでTableにRowを追加しました。
今回は、そのTableに格納されているデータをSELECTで取得します。
特に、
- SELECTとは何か
- SELECTとFROMにはそれぞれどのような役割があるのか
- 1つのColumnを取得するにはどうするのか
- 複数のColumnを取得するにはどうするのか
- CREATE TABLE・INSERT・SELECTは何が違うのか
について整理します。
所要時間は5分ほどです。
それでは、さっそく始めていきましょう!
SELECTとは
SELECTとは、Tableなどからデータを取得するためのSQL文です。
例えば、
SELECT location_name
FROM visits;
とすると、visits Tableからlocation_name Columnのデータを取得します。
基本的な構造は、
SELECT column_name
FROM table_name;
となります。
それぞれ、
SELECT
→ 何を取得するかを指定する
FROM
→ どこから取得するかを指定する
という役割があります。
SELECTとFROMの関係
例えば、
SELECT location_name
FROM visits;
というSQLでは、
SELECT location_name
└──────┬──────┘
取得するColumn
FROM visits
└───┬───┘
取得元のTable
となります。
つまり、
location_name
→ Column
visits
→ Table
です。
そのため、このSQLは、
visitsというTableからlocation_nameというColumnを取得する
という意味になります。
PostgreSQLで1つのColumnを取得する
今回使用するvisits Tableには、前回までに以下の2 Rowを追加しています。
| visit_id | user_id | location_name | stay_minutes |
|---|---|---|---|
| 1001 | 10 | Shibuya | 35 |
| 1002 | 20 | Shinjuku | 15 |
このTableでは、1 Row = 1件の訪問データとして扱っています。
まず、location_nameだけを取得しました。
SELECT location_name
FROM visits;
実行結果は、
location_name
---------------
Shibuya
Shinjuku
(2 rows)
となりました。
つまり、
visits Table
↓
location_name Columnを指定
↓
Shibuya
Shinjuku
というデータ取得を行っています。
複数のColumnをSELECTする
SELECTでは、複数のColumnを指定することもできます。
今回、
SELECT location_name, stay_minutes
FROM visits;
を実行しました。
結果は、
location_name | stay_minutes
---------------+--------------
Shibuya | 35
Shinjuku | 15
(2 rows)
となりました。
ここでは、
SELECT
├── location_name
└── stay_minutes
FROM
└── visits
となっています。
つまり、
visits Tableからlocation_nameとstay_minutesという2つのColumnを取得する
というSQLです。
複数のColumnを指定するときは、
SELECT column1, column2
FROM table_name;
のように、Column名をカンマ,で区切ります。
自分でSELECTを書いてみる
続いて、
visit_id
user_id
の2つのColumnをvisits Tableから取得するSQLを自分で書きました。
SELECT visit_id, user_id
FROM visits;
実行結果は、
visit_id | user_id
----------+---------
1001 | 10
1002 | 20
(2 rows)
となり、目的の2つのColumnを取得できました。
構造として整理すると、
SELECT visit_id, user_id
└──────┬──────┘
取得するColumn
FROM visits
└───┬───┘
取得元のTable
となります。
SELECTを実行すると元のTableはどうなるのか
今回のSELECTは、Tableに新しいRowを追加する操作ではありません。
SELECT実行前
visits Table
├── Row 1
└── Row 2
↓ SELECT
データを取得
↓
元のvisits Table
├── Row 1
└── Row 2
今回学習した範囲では、
INSERT
→ TableにRowを追加する
SELECT
→ Tableなどからデータを取得する
という違いを押さえておくことが重要です。
CREATE TABLE・INSERT・SELECTの違い
ここまでに学習した3つのSQLを整理すると、それぞれ役割が異なります。
CREATE TABLE
↓
Tableの構造を作る
INSERT
↓
TableにRowを追加する
SELECT
↓
Tableなどからデータを取得する
例えば、今回のvisits Tableでは、
CREATE TABLE
↓
visits Tableを作成
INSERT
↓
1件の訪問データをRowとして追加
SELECT
↓
visits Tableから必要なデータを取得
という流れになります。
| SQL | 役割 |
|---|---|
CREATE TABLE |
Tableを作成する |
INSERT |
Tableに新しいRowを追加する |
SELECT |
Tableなどからデータを取得する |
特にINSERTについては、「Rowを作成する」よりも**「既存のTableにRowを追加する」**と表現すると、それぞれのSQLの役割をより正確に区別できます。
まとめ
今回はPostgreSQLでSELECTを使ってデータを取得する方法について整理しました。
基本的な構造は、
SELECT column_name
FROM table_name;
です。
特に重要なのは、
SELECT
→ 何を取得するか
FROM
→ どこから取得するか
という関係です。
例えば、
SELECT location_name, stay_minutes
FROM visits;
なら、
location_name
stay_minutes
→ 取得するColumn
visits
→ 取得元のTable
となります。
これまでの学習をつなげると、
CREATE TABLE
↓
Tableを作る
INSERT
↓
Rowを追加する
SELECT
↓
データを取得する
というPostgreSQLでデータを扱う基本的な流れを実際に操作できるようになりました。
次回は、作成済みのDB Objectを変更・削除する方法について学習します。