一、基本概念
視圖是一個虛擬表,是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:未定義,自動,讓系統幫你選.



四、使用視圖的好處

