PostgreSQL初心者必見!SELECT文の書き方とデータの取り出し方を優しく解説
生徒
「SQLってよく聞くんですけど、そもそも何をするものなんですか?プログラミングの経験が全くないので、難しそうで不安です。」
先生
「SQLは、データベースという『データの倉庫』に保存されている情報を、自由に取り出したり、追加したり、変更したりするための専用の言葉です。名簿や在庫表を操作するための命令だと考えてください。」
生徒
「パソコンの操作もあまり得意ではないのですが、そんな私でも理解できますか?」
先生
「大丈夫ですよ。今回は特に、データを取り出すときの一番の基本である『SELECT文』に絞って解説します。まずは紙に書かれた一覧表から必要な項目を抜き出すような感覚で、一歩ずつ進めていきましょう。」
1. SQLとは何か?
SQL(エスキューエル)は、データベースと呼ばれる「大量のデータを整理して保存する箱」に対して指示を出すための言語です。例えば、お店の会員名簿の中から特定の人を探したり、商品の値段を確認したり、新しい注文情報を追加したりするときに使います。現在、世界中のウェブサイトやスマートフォンのアプリの多くが、このSQLを使って裏側でデータを管理しています。
データベースを操作するシステムはいくつかありますが、その中でも「PostgreSQL(ポストグレスキューエル)」は非常に人気があり、信頼性が高いシステムです。これから学ぶ「SELECT(セレクト)文」は、そのPostgreSQLの中で最も頻繁に使われる、データを読み取るための基本コマンドです。
2. データベースの構造を「表」でイメージしよう
データベースを理解する第一歩は、それを「Excel(エクセル)のような表」としてイメージすることです。PostgreSQLでは、この表のことを「テーブル」と呼びます。テーブルは、横一行のデータである「レコード(行)」と、縦の項目である「カラム(列)」で構成されています。
例えば、次のような「users(利用者)」という名前のテーブルがあると想像してみましょう。ここには会員の名前や年齢、メールアドレスが保管されています。
id | name | age | email | city
---+--------------+-----+--------------------+----------
1 | 山田太郎 | 25 | taro@example.com | 東京
2 | 佐藤花子 | 19 | hanako@example.com | 大阪
3 | 鈴木一郎 | 30 | ichiro@example.com | 名古屋
4 | 高橋京子 | 22 | kyoko@example.com | 福岡
5 | 伊藤健太 | 28 | kenta@example.com | 東京
6 | 渡辺直美 | 35 | naomi@example.com | 北海道
このようにデータが並んでいる中から、「名前だけ知りたいな」「東京に住んでいる人だけ見たいな」といった要望を叶えるのがSQLの役割です。
3. 全てのデータを取り出す「SELECT *」の使い方
まずは、テーブルにある全ての情報を丸ごと表示させる方法を学びましょう。これが一番シンプルなSELECT文です。ここで使う「*(アスタリスク)」は、「全部」という意味を持つ特別な記号です。
基本の型: SELECT * FROM テーブル名;
以下のコードを実行すると、先ほどの「users」テーブルにある全ての列と全ての行が表示されます。末尾にある「;(セミコロン)」は、命令の終わりを意味する印ですので、忘れずにつけましょう。
SELECT *
FROM users;
【実行結果】
id | name | age | email | city
---+--------------+-----+--------------------+----------
1 | 山田太郎 | 25 | taro@example.com | 東京
2 | 佐藤花子 | 19 | hanako@example.com | 大阪
3 | 鈴木一郎 | 30 | ichiro@example.com | 名古屋
4 | 高橋京子 | 22 | kyoko@example.com | 福岡
5 | 伊藤健太 | 28 | kenta@example.com | 東京
6 | 渡辺直美 | 35 | naomi@example.com | 北海道
このように、全ての項目がそのまま出力されました。まずはこの書き方を覚えましょう。
4. 必要な列だけを選んで取得する方法
実際の業務では、全ての情報が必要なことは稀です。「名前とメールアドレスだけ分かればいい」という場合もありますよね。そんな時は、アスタリスクの代わりに「具体的なカラム名(項目の名前)」をカンマ区切りで指定します。
基本の型: SELECT カラム名1, カラム名2 FROM テーブル名;
例えば、「名前(name)」と「住んでいる都市(city)」だけを取り出したい場合は、次のように書きます。これにより、年齢やメールアドレスといった不要な情報を隠して、スッキリとした結果を得ることができます。
SELECT name, city
FROM users;
【実行結果】
name | city
-------------+----------
山田太郎 | 東京
佐藤花子 | 大阪
鈴木一郎 | 名古屋
高橋京子 | 福岡
伊藤健太 | 東京
渡辺直美 | 北海道
必要な情報だけを抽出することで、画面が見やすくなるだけでなく、コンピュータにかかる負担も減らすことができます。これはデータベースを効率的に使うための大切なテクニックです。
5. 条件を指定して特定の行だけを取り出す「WHERE句」
次に、特定の条件に当てはまる人だけを探し出す方法を学びましょう。これには「WHERE(ウェア)」という言葉を使います。例えば、「25歳以上の人だけを表示したい」という指示を出すことができます。
基本の型: SELECT * FROM テーブル名 WHERE 条件;
比較演算子と呼ばれる記号を使います。例えば >= は「~以上」という意味です。では、25歳以上のユーザー全員の情報を取得してみましょう。
SELECT *
FROM users
WHERE age >= 25;
【実行結果】
id | name | age | email | city
---+--------------+-----+--------------------+----------
1 | 山田太郎 | 25 | taro@example.com | 東京
3 | 鈴木一郎 | 30 | ichiro@example.com | 名古屋
5 | 伊藤健太 | 28 | kenta@example.com | 東京
6 | 渡辺直美 | 35 | naomi@example.com | 北海道
年齢が25歳に満たない「佐藤花子さん(19歳)」と「高橋京子さん(22歳)」が結果から除外されました。このように、WHEREを使うことで、膨大なデータの中から必要なものだけをピンポイントで見つけ出すことができます。
6. 文字列の条件で検索する
数字だけでなく、文字を使って検索することも可能です。例えば「東京に住んでいる人だけ」を探したい場合は、city = '東京' と書きます。ここで注意が必要なのは、文字を扱うときは必ず「' '(シングルクォーテーション)」で囲むというルールです。これを忘れると、コンピュータはそれが文字なのか命令なのか判断できず、エラーになってしまいます。
SELECT name, age, city
FROM users
WHERE city = '東京';
【実行結果】
name | age | city
-------------+-----+----------
山田太郎 | 25 | 東京
伊藤健太 | 28 | 東京
東京住まいの二人だけが抽出されました。特定の名前を探したり、特定のカテゴリに属する商品を探したりするときに、この書き方は非常に役立ちます。
7. 複数の条件を組み合わせる「AND」と「OR」
「20代で、かつ東京に住んでいる人」のように、条件を二つ以上組み合わせたいこともありますよね。そんな時は「AND(アンド)」や「OR(オア)」を使います。
- AND: どちらの条件も満たしている場合(~かつ~)
- OR: どちらか一方の条件を満たしている場合(~または~)
実際に、「20歳以上」で「30歳以下」という、二つの条件をANDで繋いでみましょう。対象範囲を絞り込むことができます。
SELECT name, age
FROM users
WHERE age >= 20 AND age <= 30;
【実行結果】
name | age
-------------+-----
山田太郎 | 25
鈴木一郎 | 30
高橋京子 | 22
伊藤健太 | 28
19歳の佐藤さんと35歳の渡辺さんが除外され、指定した年齢層の人だけが表示されました。このように条件を重ねることで、より詳細な分析が可能になります。
8. データの並び順を変える「ORDER BY」
最後にご紹介するのが、データの並べ替えです。デフォルトではデータが登録された順番に並んでいますが、これを見やすいように「年齢の若い順」や「名前の五十音順」に変更することができます。これには「ORDER BY(オーダーバイ)」を使います。
- ASC(アスク): 昇順。小さい順、古い順、あいうえお順。
- DESC(デスク): 降順。大きい順、新しい順、わをん順。
年齢が高い順(降順)に並べ替えてみましょう。
SELECT name, age
FROM users
ORDER BY age DESC;
【実行結果】
name | age
-------------+-----
渡辺直美 | 35
鈴木一郎 | 30
伊藤健太 | 28
山田太郎 | 25
高橋京子 | 22
佐藤花子 | 19
最年長の渡辺さんから始まり、年齢が高い順にきれいに並びました。名簿を作成したり、売り上げの高い順に商品を表示したりする際に欠かせない機能です。
9. 初心者が間違いやすいポイント
SQLを書くときに、初心者の人がよくつまずくポイントをいくつか紹介します。もしエラーが出たときは、ここを確認してみてください。
- 全角スペースを使っていないか: SQLは半角英数字で書くのが基本です。空白を入れるとき、日本語入力のまま「全角スペース」を入れてしまうとエラーになります。必ず半角で入力しましょう。
- カンマの忘れ: 複数の項目を指定するとき、
name emailのように並べるとエラーになります。正しくはname, emailと、間に「,(カンマ)」を入れます。 - シングルクォーテーションの使い分け: 文字を指定するときは
'東京'のように「'(シングルクォーテーション)」を使います。これを「"(ダブルクォーテーション)」と間違えたり、囲むのを忘れたりすると動きません。 - セミコロンの忘れ: 文の最後には
;をつける習慣をつけましょう。これがないと、コンピュータは「まだ続きがあるのかな?」と待機してしまいます。
最初はエラーが出ても当たり前です。画面に出るメッセージを読みながら、少しずつ修正していけば、自然と正しい書き方が身につきます。PostgreSQLの操作は、慣れてくるとパズルのようで楽しくなってきますよ。