mysqlからデータ抽出する際に, 頻繁に見たいデータがある.
こういうやつはviewとして作成して今後の手間を減らしたい.
今回は 「そもそもビューってなに」 からスタートして, view作成手順を簡単にまとめる.
概要は次の通り.
動作環境
- centos 6.8
- MySQL5.7.15
前提条件
今回は事前にテストDB, テストテーブルを用意しておく.
このテストテーブルを元にviewを作成する.
- データベース名
- tstDB
- テーブル名
- tests
tstDB.testsの中身は次の通り.
mysql> select * from tests;
+----+------+---------------------+---------------------+
| id | name | created | modified |
+----+------+---------------------+---------------------+
| 1 | taka | 2017-06-06 07:59:45 | 2017-06-06 07:59:45 |
| 2 | taki | 2017-06-06 07:59:45 | 2017-06-06 07:59:45 |
| 3 | taku | 2017-06-06 07:59:45 | 2017-06-06 07:59:45 |
| 4 | take | 2017-06-06 07:59:45 | 2017-06-06 07:59:45 |
| 5 | tako | 2017-06-06 07:59:45 | 2017-06-06 07:59:45 |
+----+------+---------------------+---------------------+
viewってなに
そもそもviewとは, について.
viewは
- 元となるテーブルから
- 自分が欲しいデータ・見たいデータを取得して
- 新たに名前を付けたテーブルのこと
こんな認識でok.
viewを作成するための基本文法
CREATE VIEW
文を使えばできる.
基本文法は次の通り.
create view データベース名.view名 as select 欲しいデータ
「欲しいデータ」 は通常の select
文 と一緒.
view 作成
今回は次のようなviewを作成する.
- view名
- tests_names
- 欲しいデータ
- testsテーブルの
name
フィールドのデータ
- testsテーブルの
まず 欲しいデータ がちゃんと取れるか確認
select
文がちゃんと機能するか確認.
mysql> select tests.name from tstDB.tests;
+------+
| name |
+------+
| taka |
| taki |
| taku |
| take |
| tako |
+------+
5 rows in set (0.00 sec)
よし, ok.
view 作成
mysql> create view tstDB.tests_names as
-> select tests.name from tstDB.tests;
Query OK, 0 rows affected (0.00 sec)
as
で一回改行している.
これは私が可読性が高いと思っているから.
ここは普通に半角スペースでもok.
viewができているか確認
mysql> show tables;
+-----------------+
| Tables_in_tstDB |
+-----------------+
| tests |
| tests_names |
| users |
+-----------------+
うん, いいね.
mysql> select * from tests_names;
+------+
| name |
+------+
| taka |
| taki |
| taku |
| take |
| tako |
+------+
5 rows in set (0.00 sec)
よし, ok.
今回は以上.