【MySQL】ビュー(view)の一覧の取得と定義を確認する方法

MySQL

ビュー(view)の一覧の取得と定義を確認する方法について紹介していきます。

前提条件

ユーザー管理をしているUSERSテーブルと都道府県一覧を管理しているprefectureテーブルを結合してデータを取得するselect文をビューとして設定します。

使用するテーブル:usersテーブルとprefectureテーブル

usersテーブル

+----+----------+------+------------------+--------+---------------+
| id | last_name| age  | email            | gender | prefecture_id |
+----+----------+------+------------------+--------+---------------+
|  1 | 柴犬     |    7 | shibainu@dog.com |      1 |            13 |
|  2 | コーギー |    8 | corgi@dog.com    |      1 |            42 |
|  3 | ダックス |   10 | daks@dog.com     |      2 |            11 |
|  4 | パグ     |    3 | pug@dog.com      |      2 |            10 |
|  5 | シーズー |   17 | shi-tzu@dog.com  |      2 |            11 |
|  6 | 秋田犬   |   12 | akitainu@dog.com |      1 |             5 |
+----+----------+------+------------------+--------+---------------+
6 rows in set (0.000 sec)

prefectureテーブル

+----+----------+--------------+
| id | name     | name_kana    |
+----+----------+--------------+
|  1 | 北海道   | ホッカイドウ |
|  2 | 青森県   | アオモリケン |
|  3 | 岩手県   | イワテケン   |
| ・ |   ・     |      ・      |
| ・ |   ・     |      ・      |
| ・ |   ・     |      ・      |
| 47 | 沖縄県   | オキナワケン |
+----+----------+--------------+
47 rows in set (0.001 sec)

条件

  • 取得するカラム
    usersテーブル:id,last_name
    prefectureテーブル:name

prefecture_idの値と都道府県名の紐づけ

  • 13   ⇒  東京都
  • 42  ⇒  長崎県
  • 11  ⇒  埼玉県
  • 10  ⇒  群馬県
  • 5  ⇒  秋田県

ビューを作成するSQL文

create view prefecture_join(id,last_name,prefecture)
as
select users.id id,last_name,name prefecture from 
users 
inner join prefecture on 
users.prefecture_id = prefecture.id;

作成したビューの名前:prefecture_join

ビュー(view)の一覧を取得する

ビューの一覧を取得する方法を紹介していきます

構文

show tables;

上記はテーブルの一覧を取得するための構文ですが、MySQLではビュー(view)も同様に扱われます。

ですので、テーブルの一覧を取得することでビューもまとめて表示されるようになります。

出力結果

+-----------------+
| Tables_in_casa  |
+-----------------+
| orders          |
| prefecture      |
| prefecture_join |
| products        |
| users           |
| visit           |
+-----------------+
6 rows in set (0.001 sec)

登録したビュー(prefecture_join)を表示させることができました。

ビュー(view)の定義を確認する

構文

show create view ビューの名前;

使用するSQL文

 show create view prefecture_join;

出力結果

+-----------------+------------------------------------------------------+------------+-------------------+
| View            | Create View                                          | character_ | collation_        |
|                 |                                                      | set_client | connection        |
+-----------------+------------------------------------------------------+------------+-------------------+
| prefecture_join | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`| cp932      | cp932_japanese_ci |
|                 | SQL SECURITY DEFINER VIEW                            |            |                   |
|                 | `prefecture_join` AS select `users`.`id` AS `id`,    |            |                   |
|                 | `users`.`last_name` AS `last_name`,                  |            |                   |
|                 | `prefecture`.`name` AS `prefecture`                  |            |                   |
|                 |  from (`users` join `prefecture`                     |            |                   |
|                 |  on(`users`.`prefecture_id` = `prefecture`.`id`))    |            |                   |
|                 |                                                      |            |                   |
+-----------------+---------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

見やすさを考慮して出力結果は整形していますが、このような結果となります。

タイトルとURLをコピーしました