MySQL視圖(view)


一、基本概念

視圖是一個虛擬表,是sql的查詢結果,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據,在使用視圖時動態生成。視圖的數據變化會影響到基表,基表的數據變化也會影響到視圖[insert update delete ] ; 創建視圖需要create view 權限,並且對於查詢涉及的列有select權限;使用create or replace 或者 alter修改視圖,那么還需要改視圖的drop權限。

 

大數據分表時可以用到

比如,表的行數超過200萬行時,就會變慢,

可以把一張的表的數據拆成4張表來存放.

News表

Newsid, 1,2,3,4

News1,news2,news3,news4表

 

把一張表的數據分散到4張表里,分散的方法很多,

最常用可以用id取模來計算.

Id%4+1 = [1,2,3,4]

比如 $_GET['id'] = 17,

17%4 + 1 = 2,  $tableName = 'news'.'2'

Select * from news2 where id = 17;

 

還可以用視圖, 4張表形成一張視圖

Create view news as  select from n1 union select from n2 union.........

 

二、視圖的基本使用

        如何創建視圖(基本語法):

  create view  視圖名  as  select 字段名 from 表名;

   

  Mysql視圖的定義在from關鍵字后面不能包含子查詢

        修改了視圖,對基表數據有影響

   

        修改了基表,對視圖也有影響

 

        如何修改視圖

    基本語法是

    alter view 視圖名 as select 語句

    alter view 視圖名 as  select 視圖;

   

 

        顯示視圖創建情況

    show create view 視圖名;

        查看視圖

    Show tables;

    Show table status [ from db_name ] [ like ‘pattern’ ]

    SELECT * FROM information_schema.views where table_name = 'my_view';

        刪除視圖

    drop view 視圖名[,視圖名…];

        重命名視圖

    Rename table 視圖名 to 新視圖名;;

 

 

三、具體的創建視圖的方式:

        create algorithm=temptable view view1 as select goods_id,cat_id,shop_price,goods_name from ecs_goods order by cat_id, shop_price desc;

        create view view2 as select * from view1 group by view1.cat_id;

  這里說明一下關於視圖(存儲的都是語句)使用到的算法(視圖放哪了):

   

  Undefined:未定義,自動,讓系統幫你選.

   

  

 

   

 

四、使用視圖的好處

   

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM