ビュー(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)
見やすさを考慮して出力結果は整形していますが、このような結果となります。