MySQL基本操作-視圖

來源:互聯網
上載者:User

標籤:

  視圖由資料庫中的一個或多個表匯出的虛擬表,使用者可以不用看到整個資料庫表中的資料而只關心對自己有用的資料,也保障了資料庫系統的安全性。資料庫只存放視圖的定義,其資料來源於原來的表中。所以源表中資料改變,視圖的資料也會改變。視圖可以簡化重複的查詢操作,增加資料的安全性。

1.建立視圖

  create [algorithm={undefined|merge|temptable}] view 視圖名 [(屬性清單)] as select 語句 [with [cascaded|local] check option];

  algorithm:選擇性參數,表示視圖選擇的演算法。視圖名:要建立視圖的名稱。select語句:一個完整的查詢語句,並將滿足條件的記錄匯入到視圖中。cascaded:表示更新視圖時要滿足所有相關視圖和表的條件。在使用create view 時最好加上with check option參數+cascaded,更新視圖需要考慮其父視圖的約束條件。這種方式比較嚴格,可以保證資料的安全性。

  (1).查詢是否具有CREATE VIEW許可權

   SELECT  Select_priv,Create_view_priv FROM mysql.user WHERE user=‘root‘;

  (2).在表test0上建立一個簡單視圖 

      create view test0_view1 as select id,name from test0;

  desc test0_view1;//查看視圖

      show table status like ‘視圖名‘ \G; //查看視圖基本資料,comment為view還是空是視圖和普通表最直接的區別。

      show create view 視圖名 \G; //可以查看視圖的詳細定義。

2.在多表上建立視圖

   create algorithm=merge view woker_view1(name,department,sex,age,address) as select name,department.d_name,sex,2009-birthday,address from worker,department where worker.d_id=department.d_id with local check option;

3.修改視圖

(1).create or replace

create or replace [algorithm={undefined|merge|temptable}] view 視圖名  [(視圖清單)] as select 語句 [with [cascaded|local]check option]

eg: create or replace algorithm=temptable view example_view2(id,use_id) as select id,use_id from example;

(2)alter view

    eg:alter view example2_view1(stu_id,grade) as select stu_id,grade from example2;

4.更新視圖:通過視圖來insert ,update,delete表中的資料,對應的是源表資料。將視圖作為查詢資料的虛表而不要通過視圖來更新資料。

  (1). update 視圖名 set 屬性名稱1=新值1,屬性名稱2=新值2;

     a.不能更新視圖情況:

      1).視圖中包含:sum(),count(),max(),min()等函數.

          eg:create view worker_view4(name,sex,total) as select name,sex,count(name) from worker;

      2).視圖中包含union,union all,distinct,group by和havig等關鍵字.

          eg:create view worker_view5(name,sex,address) as select name,sex from worker group by d_id;

5.刪除視圖

   drop view [if exists] 視圖名列表 [pestrict|cascade];

   if exists:判斷視圖存在,如果存在則執行,不存在則不執行。

 

MySQL基本操作-視圖

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.