INNER JOINを使用してMySQLビューを作成する方法
INNER JOINでMySQLビューを作成する手順
MySQLでは、CREATE VIEW文とINNER JOINを組み合わせることで、複数のテーブルから必要なデータだけを抽出したビュー(仮想テーブル)を作成できます。ここでは、実際のサンプルデータを使って、その作成方法をわかりやすく解説します。
以下の例では、「customers」テーブルと「reserve」テーブルという2つのテーブルを使用します。
使用するサンプルデータ
まず、それぞれのテーブルの中身を確認してみましょう。
mysql> Select * from customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ 4 rows in set (0.00 sec) mysql> Select * from reserve; +------+------------+ | ID | Day | +------+------------+ | 1 | 2017-12-30 | | 2 | 2017-12-28 | | 2 | 2017-12-25 | | 1 | 2017-12-24 | | 3 | 2017-12-26 | +------+------------+ 5 rows in set (0.00 sec)
「customers」テーブルには顧客IDと名前が登録されており、「reserve」テーブルには予約者のIDと予約日が記録されています。
ビューの作成クエリ
次に、これら2つのテーブルをINNER JOINで結合し、「customer_V」という名前のビューを作成します。このビューには、1台以上の車を予約したことのある顧客の名前だけが表示されるようにします。
mysql> CREATE VIEW customer_V AS Select DISTINCT Name FROM customers c INNER JOIN Reserve R ON R.id = c.customer_id; Query OK, 0 rows affected (0.08 sec) mysql> Select * from customer_V; +---------+ | Name | +---------+ | Rahul | | Yashpal | | Gaurav | +---------+ 3 rows in set (0.02 sec)
クエリのポイント
- INNER JOINの結合条件:
R.id = c.customer_idによって、予約テーブルのIDと顧客テーブルのCustomer_Idが一致する行のみが結合されます。 - DISTINCT句: 同じ顧客が複数回予約している場合でも、名前が重複して表示されないようにしています。上記の例では、RahulとYashpalは複数の予約を持っていますが、ビューには1度だけ表示されます。
実行結果の解説
ビューを確認すると、予約履歴のある「Rahul」「Yashpal」「Gaurav」の3人の名前が表示されました。一方、一度も予約をしていない「Virender」は、INNER JOINの仕様により結合対象から除外されているため、ビューには含まれていません。
このように、INNER JOINを使ったビューを作成しておけば、複雑な結合クエリを毎回書く必要がなくなり、頻繁に使うデータの抽出をシンプルかつ効率的に行えるようになります。
-
MySQLでインデックス付きのテーブルを作成する方法を徹底解説
MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp
-
MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説
MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam