MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでビューを作成する方法を徹底解説!CREATE VIEW構文の基本から実例まで

MySQLビューの作成方法とは?

MySQLでは、CREATE VIEWステートメントを使用してビューを作成します。ビューは、単一のテーブルからだけでなく、複数のテーブルや他のビューを基に作成することも可能です。なお、ビューを作成するには、実装に応じた適切なシステム権限がユーザーに付与されている必要がある点に注意しましょう。

まずは、CREATE VIEWの基本構文を見ていきましょう。

基本構文

CREATE
    [OR REPLACE]
    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    [DEFINER = { user | CURRENT_USER }]
    [SQL SECURITY { DEFINER | INVOKER }]
    VIEW view_name [(column_list)]
    AS select_statement
    [WITH [CASCADED | LOCAL] CHECK OPTION]

各句の詳細解説

  • CREATE VIEW − 新しいビューを作成するためのステートメントです。

  • view_name − 作成するビューの名前を指定します。ビューは必ずデータベースに属し、特に指定しない限り、現在使用中のデータベース内に作成されます。

  • select_statement − ビューの定義となるSELECTステートメントです。ベーステーブル(元になるテーブル)や他のビューからデータを選択できます。

  • column_list − 省略可能な項目です。ビュー名の直後に列名のリストを指定でき、各列名は一意である必要があります。column_listの名前の数は、SELECTステートメントが取得する列数と一致しなければなりません。ビューの列に別の名前を付けたい場合は、SELECTリスト内で[AS 別名]句を使用します。

  • OR REPLACE − CREATE VIEWステートメントにこのオプション句を追加すると、既存の同名ビューが置き換えられます。対象のビューが存在しない場合は、通常のCREATE VIEWと同じ動作になります。

  • ALGORITHM − 省略可能な句で、MySQLがビューを処理する方法に影響を与えます。指定できる値はMERGE、TEMPTABLE、UNDEFINEDの3種類で、デフォルトはUNDEFINEDです。

  • [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] − DEFINER句とSQL SECURITY句は、ビューの呼び出し時にアクセス権限をチェックする際のセキュリティコンテキストを指定します。DEFINER句を指定する場合、有効なユーザー値は以下のルールによって決まります。

    • SUPER権限を持っていない場合、指定できるのは自分自身のアカウントのみで、他のアカウントをdefinerとして設定することはできません。

    • SUPER権限を持っている場合、構文的に有効な任意のアカウント名を指定できます。

    また、SQL SECURITY DEFINER特性で定義されたストアドルーチン内では、CURRENT_USERはそのルーチンのDEFINER値を返します。これは、ルーチン内で定義されたビューにも影響し、ビュー定義にCURRENT_USERのDEFINER値が含まれている場合に適用されます。

  • WITH [CASCADED | LOCAL] CHECK OPTION − 更新可能なビューに対して指定できる句です。select_statementのWHERE句が真となる行以外への挿入や更新を防止できます。更新可能なビューのWITH CHECK OPTION句において、LOCALキーワードとCASCADEDキーワードは、ビューが別のビューを基に定義されている場合のチェック範囲を決定します。

    • LOCAL: チェック対象を、現在定義中のビューのみに限定します。

    • CASCADED: 元になるビュー(下位ビュー)のチェックも併せて評価されます。

    どちらのキーワードも指定しない場合、デフォルトはCASCADEDとなります。

実際の作成例

ここでは、「Customers」テーブルをもとに「first_view」というビューを作成してみましょう。元となるテーブルのデータは以下の通りです。

mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (1.30 sec)

mysql> Create view first_view AS SELECT * FROM Customers;
Query OK, 0 rows affected (0.36 sec)

ビューを作成したら、ビュー名を使ってクエリを実行できます。実行すると、ビューの基となったテーブルのデータが取得されます。

mysql> Select * from first_view;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (0.13 sec)

このように、ビューを使用することで、複雑なクエリを簡潔に扱えるようになり、特定のデータへのアクセスを制御することも可能になります。ぜひ実際のプロジェクトでも活用してみてください。

  1. MySQLでカスケード(テーブル定義)を表示する方法|SHOW CREATE TABLEの使い方

    MySQLでテーブルの「カスケード」、つまりテーブルを作成した際のCREATE TABLE文の内容を確認したい場合は、SHOW CREATE TABLEステートメントを使用します。このコマンドを実行すると、カラムのデータ型、主キー、ユニークキー、インデックス、ストレージエンジン、文字セットといったテーブルの完全な定義を一度に確認できます。 手順1:サンプルテーブルを作成する まず、動作を確認するためのデモテーブルを作成しましょう。以下のSQLを実行します。 mysql> create table DemoTable1378 -> ( -> Id int N

  2. MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説

    MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam