PR

MySQL ビュー作成・削除

スポンサーリンク
この記事は約5分で読めます。

ビューとは

 

データそのものではなく、データを取り出すSELECT文だけを保存します。

ビューを使うと、必要なデータが複数のテーブルにまたがる場合など、複雑な集約を行いやすくなります。

 

ビューとテーブルの違い

 

テーブル

実際のデータを保存

ビュー

ビューの中にはSELECT文が保存される

ビュー自体はデータを持たない

 

ビューの制限

 

  • order by句が使えない(並び替え)
  • ビューに対する更新は不可能ではないが制限があります。
  • 更新系(insert,delete,update)に制約があります。

幾つかの条件を満たす場合のみ、ビューに対する更新が可能。

  1. select句にdistinctが含まれていない。
  2. from句に含まれるテーブルが一つだけ
  3. group by句を使用していない
  4. having句を使用していない

※ビューとテーブルの更新は連動して行われるため、集約されたビューは更新不可。

 

 

ビューのメリット

  1. データを保存しないので、記憶装置の容量を節約できる。
  2. よく使うselect文をビューにしておくことで、使い回しができます。

 

ビューのデメリット

  1. パフォーマンス低下を招く場合があります。

 

ビューの作成

ビューの構文

 

create view ビュー名(ビューの列名1,ビューの列名2,...
as
select
列1
from テーブル名;

 

今回は、都道府県別のユーザー数をビューにしてみたいと思います。

まず、usersテーブルを出力してみます。

 

select
    *
from
    users;

 

テーブル名(users)

id email last_name first_name gender birthday prefecture_id
1 xxxxxxxx 紫咲 朝陽 2 1978-03-12 1
2 xxxxxxxx 沢村 啓介 1 1973-08-27 14
3 xxxxxxxx 阿部 淳子 2 2000-02-15 28
4 xxxxxxxx 佐古 翔太 1 1995-01-29 25
5 xxxxxxxx 宮里 ひとり 1 1996-06-13 28

次にprefecture_idを使って

prefecturesテーブルに結合します。

テーブル名(prefectures)

id name
1 北海道
2 青森県
3 岩手県
4 宮城県
5 秋田県

 

usersテーブルとprefecturesを結合します

select 	
  *
from 
  users u /* 別名uを付ける */
inner join
  prefectures p /* 別名pを付ける */
on u.prefecture_id = p.id; /* usersテーブルのprefecture_idにprefectures_idを結合 */
	

 

 

1.group by句を使って都道県IDごとに集計するのに
group by
u.prefecture_id;

を使用します。

 

2.集計結果を表示するのにアスタリスク「*」→をp.name name,
count(*)count

で、都道県のidの集計結果を求めます。

 

select 	
    p.name name,
    count(*)count
from 
    users u /* 別名uを付ける */
inner join
    prefectures p
    on u.prefecture_id = p.id
group by
    u.prefecture_id;

 

 

すると次のようにテーブルが作成されます。

 

 

この後いよいよビューの作成です。

先程のselect文でビューを作成します。

以下の太文字部分が記述がビューの作成を追記した文になります。

 

create view prefecture_user_couns(name,count)
as
select 	
    p.name name,
    count(*)count
from 
    users u /* 別名uを付ける */
inner join
    prefectures p
    on u.prefecture_id = p.id
group by
    u.prefecture_id;

 

 

テーブルの下にviewができていますのでViewを右クリックして「Refresh All」をクリックします。

次にViewsの▼ボタンを押すと先程作成したビューが表示されます。

 

Viewが有効か確認する

 

viewが使えるか確認するには、

例:

select name, count
from prefecture_user_couns;

と入力します。

 

viewを削除する

 

viewを削除するには

 

構文:drop view ビュー名;

 

例:

drop view prefecture_user_counts;

 

と入力すれば、viewは削除できます。

 

この記事が役に立ったと思ったらポチッ!っと応援お願いします。

↓  ↓

にほんブログ村 IT技術ブログへ

 

一連の流れを一通り学習したい方は!
↓   ↓
時間や場所に縛られず学習できるMySQL3選

コメント

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