mysqlビューの管理ビュー(削除・変更)


mysqlは、ビュー定義を表示するためのSHOW CREATE VIEW文を提供します.構文構造を見てみましょう.
SHOW CREATE VIEW [database_name].[view_ name];

ビューの定義を表示するには、SHOW CREATE VIEW句の後にビューの名前を指定する必要があります.まず、employees表に基づいて、企業の組織構造を表示するための簡単なビューを作成し、プレゼンテーションを行います.
CREATE VIEW organization AS
    SELECT 
        CONCAT(E.lastname, E.firstname) AS Employee,
        CONCAT(M.lastname, M.firstname) AS Manager
    FROM
        employees AS E
            INNER JOIN
        employees AS M ON M.employeeNumber = E.ReportsTo
    ORDER BY Manager;

以上のビューからデータをクエリーし、次の結果を得ます.
mysql> SELECT * FROM organization;
+------------------+------------------+
| Employee         | Manager          |
+------------------+------------------+
| BondurLoui       | BondurGerard     |
| CastilloPamela   | BondurGerard     |
| JonesBarry       | BondurGerard     |
| HernandezGerard  | BondurGerard     |
.......     many many  .......
| KatoYoshimi      | NishiMami        |
| KingTom          | PattersonWilliam |
| MarshPeter       | PattersonWilliam |
| FixterAndy       | PattersonWilliam |
+------------------+------------------+
24 rows in set

ビューの定義を表示するには、SHOW CREATE VIEW文を使用します.
SHOW CREATE VIEW organization;

また、ノートなどの純粋なテキストエディタを使用して、データベースフォルダ内のビュー定義ファイルを開くこともできます.たとえば、organizationビュー定義を開くには、データベースフォルダの下のdataフォルダにデータベースフォルダを見つけて、ビュー名に従って.frmファイルを探します.ALTER VIEWCREATE OR REPLACE VIEWでビューを変更してみましょう.まずalertview構文を見てみましょう.
ALTER
 [ALGORITHM =  {MERGE | TEMPTABLE | UNDEFINED}]
  VIEW [database_name].  [view_name]
   AS 
 [SELECT  statement]

次の文は、email列を追加して、organizationビューを変更する方法を示します.
ALTER VIEW organization
  AS 
  SELECT CONCAT(E.lastname,E.firstname) AS Employee,
         E.email AS  employeeEmail,
         CONCAT(M.lastname,M.firstname) AS Manager
  FROM employees AS E
  INNER JOIN employees AS M
    ON M.employeeNumber = E.ReportsTo
  ORDER BY Manager;

変更を検証するには、organizationビューからデータをクエリーできます.
CREATE OR REPLACE VIEW v_contacts AS
    SELECT 
        firstName, lastName, extension, email
    FROM
        employees;
--       
SELECT * FROM v_contacts;

修正時にビューがすでに存在する場合、mysqlはビューのみを変更することに注意してください.ビューが存在しない場合、mysqlは新しいビューを作成します.では、上記のsql実行の結果を見てみましょう.
+-----------+-----------+-----------+--------------------------------+
| firstName | lastName  | extension | email                          |
+-----------+-----------+-----------+--------------------------------+
| Diane     | Murphy    | x5800     | [email protected]             |
| Mary      | Hill      | x4611     | [email protected]           |
| Jeff      | Firrelli  | x9273     | [email protected]           |
| William   | Patterson | x4871     | [email protected]          |
| Gerard    | Bondur    | x5408     | [email protected]              |
| Anthony   | Bow       | x5428     | [email protected]                 |
| Leslie    | Jennings  | x3291     | [email protected]           |
..............      many many   ..................................
| Martin    | Gerard    | x2312     | [email protected]              |
| Lily      | Bush      | x9111     | [email protected]           |
| John      | Minsu     | x9112     | [email protected] |
+-----------+-----------+-----------+--------------------------------+
25 rows in set

職階(jobtitle)列をv_contactsビューに追加するには、次の文を使用します.
CREATE OR REPLACE VIEW v_contacts AS
    SELECT 
        firstName, lastName, extension, email, jobtitle
    FROM
        employees;
--       
SELECT * FROM v_contacts;

上記のクエリ文を実行すると、次のようにデータの列が追加されます.
+-----------+-----------+-----------+--------------------------------+----------------------+
| firstName | lastName  | extension | email                          | jobtitle             |
+-----------+-----------+-----------+--------------------------------+----------------------+
| Diane     | Murphy    | x5800     | dmurphy@yiibai.com             | President            |
| Mary      | Hill      | x4611     | mary.hill@yiibai.com           | VP Sales             |
| Jeff      | Firrelli  | x9273     | jfirrelli@yiibai.com           | VP Marketing         |
...................             ....................................................
| Yoshimi   | Kato      | x102      | ykato@gmail.com                | Sales Rep            |
| Martin    | Gerard    | x2312     | mgerard@gmail.com              | Sales Rep            |
| Lily      | Bush      | x9111     | lilybush@yiiibai.com           | IT Manager           |
| John      | Minsu     | x9112     | johnminsu@classicmodelcars.com | SVP Marketing        |
+-----------+-----------+-----------+--------------------------------+----------------------+
25 rows in set

では、DROP VIEW文を使用してビューを削除し、構文構造を見てみましょう.
DROP VIEW [IF EXISTS] [database_name].[view_name]

sql ,IF EXISTSは、 しないビューを するエラーを するためにビューが するかどうかを できる のオプションの です.organizationビューを します.

DROP VIEW IF EXISTS organization;

ビューを または するたびにmysqlは、ビュー ファイルを/database_name/arc/ディレクトリにバックアップすることに してください.ビューを って または した は、/database_name/arc/フォルダからバックアップを できます.
はい、 の はここまでです.
いい じだったら、 よろしくね..