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

MySQLビューを作成するにはどうすればよいですか?


MySQLビューは、CREATEVIEWステートメントを使用して作成されます。ビューは、単一のテーブル、複数のテーブル、または別のビューから作成できます。ビューを作成するには、特定の実装に応じて、ユーザーが適切なシステム権限を持っている必要があることがわかっています。

基本的なCREATEVIEW 構文は次のとおりです-

構文

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]

ここで

  • クリエイティブビュー- このステートメントは新しいビューを作成します。

  • View_name − view_nameはビューの名前です。ビューは常にデータベースに属します。デフォルトでは、現在使用されているデータベースに新しいビューが作成されます。

  • Select_statement- select_statementはSELECTステートメントであり、ビューの定義を提供します。 Select_statementは、ベーステーブルまたは他のビューからデータを選択できます。

  • Column_list − column_list部分はオプションです。ビュー名の直後にあるビューの列の名前のリストを提供します。名前は一意である必要があります。 column_list内の名前の数は、SELECTステートメントによって取得される列の数と同じである必要があります。ビュー列に別の名前を付ける場合は、選択リストに[ASname]句を追加します。

  • または交換- オプションのORREPLACE句がCREATEVIEWステートメントで追加された場合、CREATE VIEWステートメントは既存のビューを置き換え、新しいビューを作成します。ビューが存在しない場合、CREATEVIEWはCREATEORREPLACEVIEWと同じです。

  • アルゴリズム- ALGORITHM句はオプションであり、MySQLがビューを処理する方法に影響します。 ALGORITHMは、MERGE、TEMPTABLE、またはUNDEFINEDの3つの値を取ります。デフォルトのアルゴリズムはUNDEFINEDです。

  • [DEFINER={ユーザー| CURRENT_USER}] [SQL SECURITY {DEFINER |呼び出し元} ] − DEFINER句とSQLSECURITY句は、ビューの呼び出し時にアクセス権をチェックするときに使用されるセキュリティコンテキストを指定します。 DEFINER句を指定すると、次のルールによって正当なDEFINERユーザー値が決定されます-

    • SUPER権限がない場合、正当なユーザー値は自分のアカウントのみであり、定義者を他のアカウントに設定することはできません。

    • SUPER権限をお持ちの場合は、構文的に正当なアカウント名を指定できます。

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

  • 8。 [WITH [CASCADED |ローカル]オプションを確認]− WITH CHECK OPTION句は、select_statementのWHERE句がtrueである行を除いて、行への挿入または更新を防ぐための更新可能なビューに指定できます。更新可能なビューのWITHCHECKOPTION句で、LOCALキーワードとCASCADEDキーワードは、ビューが別のビューに関して定義されている場合のチェックテストの範囲を決定します。 LOCALキーワードは、CHECKOPTIONを定義されているビューのみに制限します。 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でカスケードを表示するにはどうすればよいですか?

    カスケードを表示するには、MySQLでSHOWCREATETABLEを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1378    -> (    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,    -> EmployeeId varchar(20),    -> EmployeeFirstName varchar(20),    -> EmployeeLa

  2. MySQLビューを作成する方法は?

    MySQLビューを作成するには、次の構文のようにCREATEVIEWを使用します- create view yourViewName as select * from yourTableName;として作成します。 まずテーブルを作成しましょう- mysql> create table DemoTable1802      (      StudentId int,      StudentName varchar(20)      ); Query OK, 0 ro