0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQLの学習:SELECTでTableからデータを取得する

0
Posted at

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を変更・削除する方法について学習します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?