はじめてのSQL
- SQLの基本的な使い方を解説したコンテンツです
- ビジュアルでわかりやすく、仕組みを解説します
SQLを実行するためには、その実行環境が必要となります。この章では、SQLの環境構築として、PostgreSQLのインストール方法を解説します。
PostgreSQLとは
PostgreSQLは1980年代にカリフォルニア大学バークレー校で開発が始まったデータベース管理システム(DBMS)です。現在では世界中で広く利用されているオープンソースのデータベースとして成長しています。
データベースにはPostgreSQL以外にも、Oracle、MySQL、SQL Server、SQLiteなど、たくさんの種類があります。その中でもPostgreSQLを選んだのには、3つの理由があります。
1. 無料で使える
オープンソースソフトウェアなので、個人でも企業でも無償で利用できます。
2. 標準的なSQLを学べる
PostgreSQLは国際標準規格(SQL標準)に最も準拠したデータベースの一つです。ここで覚えたSQLの書き方は、他のデータベースでもそのまま使えることが多く、汎用性の高いスキルが身につきます。
3. データ分析に必要な機能が充実している
ウィンドウ関数やGROUPING演算子など、データ分析に求められる高度な機能が標準で備わっています。
以上の理由から、初学者の学習に最適なPostgreSQLを選びました。
下記の手順に従って、PostgreSQLをインストールしましょう。
インストーラのダウンロード
まずはEDB社の公式サイトから、インストーラをダウンロードします(EDB社とは、PostgreSQLのエンタープライズ向け拡張・サポートを提供する会社です)。
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
今回は、Windows 11にバージョン17をインストールします。「Windows x86-64」と「17.x」が交わったところの矢印を選択してください。
別のページに遷移して、ダウンロードが開始されます。
ここからは.exeファイルを実行する作業へと移ります。
.exeファイルの実行
ダウンロードフォルダに postgresql-17.5-1-windows-x64.exe がインストールされます。こちらをダブルクリックで実行します。
自動的にセットアップの画面が起動します。[Next] を選択します。
インストール先のフォルダを指定します。デフォルトでは、C:\Program Files\PostgreSQL\17になります。特に変更は必要ないので、[Next] を選択します。
インストールするコンポーネントを選択します。こちらも特に変更は必要ないので、[Next] を選択します。
データディレクトリを選択します。データディレクトリとは、PostgreSQLがデータベースのファイルを保存する場所です。そのまま [Next] を選択します。
パスワードを指定します。パスワードは確認のため、同じものを2回入力します。入力できたら、[Next] をクリックします。
クライアントからの接続を受けつけるポート番号を入力します。デフォルトでは5432ポートになります。問題なければ、[Next] を選択します。
デフォルトのロケールを選択します。[Japanese, Japan] を選択して、[Next] をクリックします。
インストールの設定内容を確認する画面が出てくるので、問題なければ [Next] を選択します。
最終の確認画面が出てきます。このままインストールでよければ [Next] を選択します。
インストール作業が開始されますので、しばらく待ちます。
こちらの画面が出ればインストールは完了です。
PostgreSQLをインストールしたら、続いて環境変数を設定します。環境変数を設定することで、どのフォルダからでもPostgreSQLのコマンドを実行できるようになります。
環境変数の設定方法
Windowsキーを押して「環境変数」と検索し、[環境変数を編集] を選択します。
[Path] を選択した状態で、[編集] ボタンをクリックします。
こちらに新しいパスを登録します。[新規] を選択し、PostgreSQLのインストールパスを入力してください。通常は以下のパスになります:
C:\Program Files\PostgreSQL\17\bin
入力が完了したら、[OK] ボタンをクリックします。
これで環境変数の登録が完了しました。
動作確認
コマンドプロンプトを開いて以下のコマンドを入力してみてください:
psql --help
PostgreSQLのヘルプメッセージがずらーっと表示されれば、設定は成功です。
psql は PostgreSQL の対話型ターミナルです。
使い方:
psql [オプション]... [データベース名 [ユーザー名]]
:
(これがずっと続いていく)
※)この環境変数の設定は一度だけ行えば大丈夫です。うまくいかない場合は、PCを再起動してから再度試してみてください。
ここまでの内容で、PostgreSQLをPCにインストールし、環境変数の設定も行うことができました。このチャプターでは、実際にSQLを実行して、その動作を確認してみましょう。
PostgreSQLには、コマンドラインでSQLを実行できる「psql」というツールがあります。psqlは、記述したSQL文をPostgreSQLに送信し、その結果を受け取って表示する仕組みとなっています。ここでは、psqlによるPostgreSQLへの接続~実行までの方法をご紹介します。
PostgreSQLへの接続(ログイン)
まずはコマンドプロンプトを起動しましょう。PCのスタート画面で、[Windows] キーを押しながら、[R] キーを押してください。すると、画面の左下に [ファイル名を指定して実行] のウィンドウが出てきます。
こちらの入力欄に「cmd」と半角で入力してください。cmdはコマンドプロンプトを起動するための命令です。入力したら、Enterキーを押すか、ウィンドウ内の「OK」ボタンをクリックします。
すると、コマンドプロンプトが起動します。こちらの画面から、PostgreSQLのデータベースにアクセスするためのpsqlコマンドを実行していきます。
上記の画面が開いたら、次のコマンドを入力してください。
psql.exe -U postgres
コマンドを実行すると、パスワードの入力を求められます。PostgreSQLをインストールした際に設定したパスワードを入力してください。セキュリティのため、パスワードを入力しても画面には何も表示されませんが、正しく入力されているのでご安心ください。入力が完了したら [Enter] キーを押します。
すると、コマンドプロンプトに#psqlと表示され、PostgreSQLへの接続が完了します。この状態になれば、SQL文を実行できます。
SQLの実行
データベースにログインできると、SQLを実行することができます。試しにカンタンなSQL文を実行して、動きを確かめてみましょう。
psqlでサンプルデータベース(postgres)にログインした状態で、次のコードを入力してください。
SELECT 1;
このコマンドは「1という数字を表示してください」という意味です。データベースから何かデータを取り出すわけではなく、単純に数字の1を返すだけの命令です。テーブルやデータを用意しなくても、データベースが応答するかどうかをすぐに確認できるため、接続テストによく使われます。
入力し終わったら、[Enter] キーを押してください。コマンドが正しく実行されると、画面には次のような結果が表示されます。
?column?
----------
1
1という数字と、1行が返されたことを示すメッセージが表示されれば成功です。こちらで、PostgreSQLが正しく動作することを確認できました。
PostgreSQLの終了
作業が終わったら、PostgreSQLからログアウトしましょう。psqlを終了するには、次のコマンドを入力します。
\q
\q は「quit(終了)」を意味するコマンドです。このコマンドを入力して [Enter] キーを押すと、PostgreSQLとの接続が切断され、通常のコマンドプロンプトの画面に戻ります。
その後、コマンドプロンプト自体を閉じる場合は、ウィンドウ右上の [×] ボタンをクリックするか、次のコマンドを入力してください。
exit
こちらで、PostgreSQLの起動から終了までの一連の流れを行うことができました。
この後の章では、実際にデータベースを操作しながらSQL文の書き方を学びます。その準備として、本チャプターでは学習用のデータベースを作成します。
コマンドプロンプトでPostgreSQLに接続した状態であることを確認した上で、下記の手順に従って作成を行ってください(接続の手順については、こちらをご確認ください。)
データベースを作成する方法
PostgreSQLでは、CREATE DATABASE文を使って新しいデータベースを作成できます。psqlにログインした状態で、次のSQL文を入力してください。
CREATE DATABASE sample;
このコマンドは「sampleという名前のデータベースを作成してください」という意味です。入力し終わったら [Enter] キーを押して実行します。 正常に作成されると、次のようなメッセージが表示されます。
CREATE DATABASE
このメッセージが表示されれば、データベースの作成は完了です。
作成したデータベースに接続する
データベースを作成したら、そのデータベースに接続して使用できるようにします。次のコマンドを入力してください。
\c sample
\c は「connect(接続)」を意味するpsqlのコマンドです。このコマンドを実行すると、作成した「sample」データベースに切り替わります。
接続に成功すると、次のようなメッセージが表示されます。
データベース "sample" にユーザ "postgres" として接続しました。
プロンプトの表示も postgres=# から sample=# に変わります。これで、学習用のデータベースの準備が整いました。
この章ではSQLとデータベースの概要について学びます。
データベースとは、大量のデータを整理して保管し、検索・取得できるようにする仕組みです。 企業の顧客情報、商品の在庫データ、ウェブサイトのアクセス記録など、様々なデータを効率的に管理するために使われています。
このデータベースを操作するための言語がSQLです。 SQLを使うことで、データベースに保存されているデータを検索したり、新しいデータを追加したり、既存のデータを更新・削除したりすることができます。
この章では、データベースの基本的な仕組みと、SQLがどのような役割を果たすのかを学びます。SQLの具体的な操作方法を学ぶ前に、これら2つの全体像を理解しましょう。
このチャプターでは、データベースの基本的な概念と、その中でも特に重要な「リレーショナルデータベース」について説明します。
データベースとは
私たちの身の回りには、大量のデータが存在しています。企業の顧客情報、商品の在庫データ、ウェブサイトのアクセス記録、SNSの投稿内容など、日々さまざまなデータが生み出されています。
データベースとは、これらのデータを効率的に保存し、必要なときに取り出せるようにする仕組みです。大量のデータを整理して保管し、検索や更新を素早く行えるように設計されています。
リレーショナルデータベースとは
データベースにはいくつかの種類がありますが、その中で最も広く使われているのが「リレーショナルデータベース」です。リレーショナルデータベースとは、データを表形式で管理するモノです。
具体的には、Excelの表をイメージしていただくと分かりやすいと思います。行と列で構成された表の中に、データを整理して保存します。
| 顧客ID | 氏名 | メールアドレス | 電話番号 |
|---|---|---|---|
| 1 | 山田太郎 | yamada@example.com | 090-1234-5678 |
| 2 | 佐藤花子 | sato@example.com | 080-9876-5432 |
| 3 | 鈴木一郎 | suzuki@example.com | 070-1111-2222 |
このような表形式でデータを管理するのが、リレーショナルデータベースの仕組みとなっています。
リレーショナルとは
リレーショナルデータベースの最大の特徴は、複数のテーブルを関連付けることができる点です。
「リレーショナル(relational)」という言葉は、「関連(relation)」を意味します。つまり、リレーショナルデータベースとは、複数の表(テーブル)同士を関連付けながらデータを管理できるデータベースのことを指します。
例えば、オンラインショップを運営している場合を考えてみましょう。必要なデータは大きく分けて2種類あります。
顧客テーブル
| 顧客ID | 氏名 | メールアドレス |
|---|---|---|
| 1 | 山田太郎 | yamada@example.com |
| 2 | 佐藤花子 | sato@example.com |
注文テーブル
| 注文ID | 顧客ID | 商品名 | 金額 |
|---|---|---|---|
| 101 | 1 | ノートPC | 120,000 |
| 102 | 2 | マウス | 3,000 |
| 103 | 1 | キーボード | 8,000 |
注文テーブルの「顧客ID」が、顧客テーブルの「顧客ID」と一致していることに注目してください。この共通の項目(顧客ID)によって、2つのテーブルが関連付けられています。これにより、「山田太郎さん(顧客ID = 1)が何を注文したか」をカンタンに調べることが可能となります。
これがもし、1つの大きな表にすべての情報を詰め込もうとすると、同じ顧客情報が注文ごとに何度も重複して記録されてしまいます。リレーショナルデータベースでは、データを適切に分割し、必要に応じて関連付けることで、無駄な重複を避けながら効率的にデータを管理できるのです。
データベースのメリット
確かに、ExcelやCSVを使ってもデータを保存することは可能かもしれません。しかし、データベースを使うことには、次のようなメリットがあります。
-
データの一元管理
複数の人が同じデータを共有して使用できます。例えば、会社の顧客情報を営業部門と経理部門で共有することができます。 -
データの整合性
同じデータが複数の場所に散らばっていると、更新漏れや矛盾が発生しやすくなります。データベースでは、データを一箇所で管理するため、このような問題を防げます。 -
高速な検索
適切に設計されたデータベースは、膨大なデータの中から必要な情報を瞬時に取り出すことができます。 -
データの安全性
データベースには、不正なアクセスを防いだり、障害が発生してもデータを失わないための仕組みが備わっています。
そのため、個人で小規模なデータを扱う場合はExcelやCSVでも十分ですが、企業や組織で大量のデータを複数人で管理する場合には、データベースが不可欠となっています(※本書では、特に断りのない限り「データベース」という用語は「リレーショナルデータベース」を指すものとします。)
データベースそのものは単なる「データの保管場所」に過ぎません。実際にデータベース内のデータを操作するには、それ専用のソフトウェアが必要になります。
このチャプターでは、DBMSを中心に、データベースがどのような構成で動いているのかを理解します。「データベース(データを保管する場所)」と「SQL(データを操作する言語)」が、システム全体の中でどこに位置付けられるのかを理解していきましょう。
DBMSとは
データベースを操作するためのソフトウェアを「データベース管理システム(DBMS:Database Management System)」と呼びます。
DBMSは、データの保存、検索、更新、削除といった操作を効率的に行うための機能を提供します。PostgreSQLは、このDBMSの一種です。
他にも、Oracle Database、MySQL、Microsoft SQL Server、SQLiteなど、さまざまなDBMSが存在しますが、基本的な考え方はどれも共通しています。本書で学ぶSQLは、これらのDBMSを操作するための言語です。SQLを習得すれば、どのDBMSでも応用できる汎用的なスキルを身につけることができます。
クライアントサーバモデル
データベースシステムは、「クライアントサーバモデル」という仕組みで動いています。これは、役割を「クライアント(依頼する側)」と「サーバ(処理する側)」に分けて、効率的にデータを管理する方法です。
RDBMSの一般的なシステム構成となる、クライアントサーバ型と呼ばれる形態について学びます。
サーバ(データベースサーバ)
サーバは、データベースの本体が動作しているコンピュータのことです。サーバ上では、RDBMSが常に起動しており、データの保存や検索などの実際の処理を行います。
PostgreSQLをインストールしたコンピュータは、データベースサーバとして機能しています。サーバは、クライアントからの要求を受け取り、データベースに対して必要な操作を実行し、その結果をクライアントに返します。
クライアント
クライアントは、データベースサーバに接続してSQL文を送信し、結果を受け取る側のことです。前章で使用した「psql」は、コマンドラインで動作するクライアントツールです。
クライアントは、ユーザーが入力したSQL文をサーバに送信します。サーバはそのSQL文を実行し、結果をクライアントに返します。クライアントは受け取った結果を画面に表示することで、ユーザーがデータを確認できるようにします。
データのやり取り
クライアントサーバモデルでは、以下のような流れでデータのやり取りが行われます。
- クライアント → ユーザーがSQL文を入力
- クライアント → SQL文をサーバに送信
- サーバ → SQL文を実行してデータを処理
- サーバ → 処理結果をクライアントに返送
- クライアント → 結果を画面に表示
このように役割を分けることで、複数のユーザーが同時に同じデータベースにアクセスしても、サーバ側で適切に処理を管理できるようになっています。
クライアントツールの種類
データベースに接続するためのクライアントツールには、さまざまな種類があります。
- psql - PostgreSQL標準のコマンドラインツール(本書で使用)
- pgAdmin - PostgreSQL用のGUIツール
- DBeaver - 複数のDBMSに対応した汎用GUIツール
- アプリケーション - Webアプリケーションやモバイルアプリもクライアントとして機能
本書では、psqlを使ってSQLの基礎を学んでいきますが、将来的には用途に応じてさまざまなクライアントツールを使い分けることになるでしょう。
データベースシステムは、クライアントとサーバが協力して動作する仕組みになっています。サーバ側でRDBMSが実際のデータ処理を行い、クライアント側がユーザーとの橋渡しをする。この基本的な構造を理解しておくことで、これから学ぶSQLの操作がより明確にイメージできるようになります。
下記の手順に従って、PostgreSQLをインストールしましょう。
インストーラのダウンロード
まずはEDB社の公式サイトから、インストーラをダウンロードします(EDB社とは、PostgreSQLのエンタープライズ向け拡張・サポートを提供する会社です)。
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
今回は、Windows 11にバージョン17をインストールします。「Windows x86-64」と「17.x」が交わったところの矢印を選択してください。
別のページに遷移して、ダウンロードが開始されます。
ここからは.exeファイルを実行する作業へと移ります。
.exeファイルの実行
ダウンロードフォルダに postgresql-17.5-1-windows-x64.exe がインストールされます。こちらをダブルクリックで実行します。
自動的にセットアップの画面が起動します。[Next] を選択します。
インストール先のフォルダを指定します。デフォルトでは、C:\Program Files\PostgreSQL\17になります。特に変更は必要ないので、[Next] を選択します。
インストールするコンポーネントを選択します。こちらも特に変更は必要ないので、[Next] を選択します。
データディレクトリを選択します。データディレクトリとは、PostgreSQLがデータベースのファイルを保存する場所です。そのまま [Next] を選択します。
パスワードを指定します。パスワードは確認のため、同じものを2回入力します。入力できたら、[Next] をクリックします。
クライアントからの接続を受けつけるポート番号を入力します。デフォルトでは5432ポートになります。問題なければ、[Next] を選択します。
デフォルトのロケールを選択します。[Japanese, Japan] を選択して、[Next] をクリックします。
インストールの設定内容を確認する画面が出てくるので、問題なければ [Next] を選択します。
最終の確認画面が出てきます。このままインストールでよければ [Next] を選択します。
インストール作業が開始されますので、しばらく待ちます。
こちらの画面が出ればインストールは完了です。
下記の手順に従って、PostgreSQLをインストールしましょう。
インストーラのダウンロード
まずはEDB社の公式サイトから、インストーラをダウンロードします(EDB社とは、PostgreSQLのエンタープライズ向け拡張・サポートを提供する会社です)。
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
今回は、Windows 11にバージョン17をインストールします。「Windows x86-64」と「17.x」が交わったところの矢印を選択してください。
別のページに遷移して、ダウンロードが開始されます。
ここからは.exeファイルを実行する作業へと移ります。
.exeファイルの実行
ダウンロードフォルダに postgresql-17.5-1-windows-x64.exe がインストールされます。こちらをダブルクリックで実行します。
自動的にセットアップの画面が起動します。[Next] を選択します。
インストール先のフォルダを指定します。デフォルトでは、C:\Program Files\PostgreSQL\17になります。特に変更は必要ないので、[Next] を選択します。
インストールするコンポーネントを選択します。こちらも特に変更は必要ないので、[Next] を選択します。
データディレクトリを選択します。データディレクトリとは、PostgreSQLがデータベースのファイルを保存する場所です。そのまま [Next] を選択します。
パスワードを指定します。パスワードは確認のため、同じものを2回入力します。入力できたら、[Next] をクリックします。
クライアントからの接続を受けつけるポート番号を入力します。デフォルトでは5432ポートになります。問題なければ、[Next] を選択します。
デフォルトのロケールを選択します。[Japanese, Japan] を選択して、[Next] をクリックします。
インストールの設定内容を確認する画面が出てくるので、問題なければ [Next] を選択します。
最終の確認画面が出てきます。このままインストールでよければ [Next] を選択します。
インストール作業が開始されますので、しばらく待ちます。
こちらの画面が出ればインストールは完了です。
下記の手順に従って、PostgreSQLをインストールしましょう。
インストーラのダウンロード
まずはEDB社の公式サイトから、インストーラをダウンロードします(EDB社とは、PostgreSQLのエンタープライズ向け拡張・サポートを提供する会社です)。
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
今回は、Windows 11にバージョン17をインストールします。「Windows x86-64」と「17.x」が交わったところの矢印を選択してください。
別のページに遷移して、ダウンロードが開始されます。
ここからは.exeファイルを実行する作業へと移ります。
.exeファイルの実行
ダウンロードフォルダに postgresql-17.5-1-windows-x64.exe がインストールされます。こちらをダブルクリックで実行します。
自動的にセットアップの画面が起動します。[Next] を選択します。
インストール先のフォルダを指定します。デフォルトでは、C:\Program Files\PostgreSQL\17になります。特に変更は必要ないので、[Next] を選択します。
インストールするコンポーネントを選択します。こちらも特に変更は必要ないので、[Next] を選択します。
データディレクトリを選択します。データディレクトリとは、PostgreSQLがデータベースのファイルを保存する場所です。そのまま [Next] を選択します。
パスワードを指定します。パスワードは確認のため、同じものを2回入力します。入力できたら、[Next] をクリックします。
クライアントからの接続を受けつけるポート番号を入力します。デフォルトでは5432ポートになります。問題なければ、[Next] を選択します。
デフォルトのロケールを選択します。[Japanese, Japan] を選択して、[Next] をクリックします。
インストールの設定内容を確認する画面が出てくるので、問題なければ [Next] を選択します。
最終の確認画面が出てきます。このままインストールでよければ [Next] を選択します。
インストール作業が開始されますので、しばらく待ちます。
こちらの画面が出ればインストールは完了です。