日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
MySQL視圖的概念與實(shí)際應(yīng)用

以下的文章主要是對(duì)MySQL視圖的描述,其中包括MySQ視圖L概述,以及創(chuàng)建MySQL視圖—create view與修改MySQL視圖——alter view等相關(guān)內(nèi)容的具體描述,以下就是文章的具體內(nèi)容介紹。

創(chuàng)新互聯(lián)建站專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、豐南網(wǎng)絡(luò)推廣、微信小程序、豐南網(wǎng)絡(luò)營(yíng)銷(xiāo)、豐南企業(yè)策劃、豐南品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供豐南建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):13518219792,官方網(wǎng)址:www.cdcxhl.com

一. 視圖概述

MySQL視圖是一個(gè)虛擬表,其內(nèi)容由查詢(xún)定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱(chēng)的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來(lái)自由定義視圖的查詢(xún)所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。

對(duì)其中所引用的基礎(chǔ)表來(lái)說(shuō),MySQL視圖的作用類(lèi)似于篩選。定義視圖的篩選可以來(lái)自當(dāng)前或其它數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表,或者其它視圖。通過(guò)視圖進(jìn)行查詢(xún)沒(méi)有任何限制,通過(guò)它們進(jìn)行數(shù)據(jù)修改時(shí)的限制也很少。

視圖是存儲(chǔ)在數(shù)據(jù)庫(kù)中的查詢(xún)的sql 語(yǔ)句,它主要出于兩種原因:安全原因,視圖可以隱藏一些數(shù)據(jù),如:社會(huì)保險(xiǎn)基金表,可以用視圖只顯示姓名,地址,而不顯示社會(huì)保險(xiǎn)號(hào)和工資數(shù)等,另一原因是可使復(fù)雜的查詢(xún)易于理解和使用。

MySQL視圖:查看圖形或文檔的方式。

視圖是從一個(gè)或多個(gè)表或視圖中導(dǎo)出的表,其結(jié)構(gòu)和數(shù)據(jù)是建立在對(duì)表的查詢(xún)基礎(chǔ)上的。和表一樣,視圖也是包括幾個(gè)被定義的數(shù)據(jù)列和多個(gè)數(shù)據(jù)行,但就本質(zhì)而言這些數(shù)據(jù)列和數(shù)據(jù)行來(lái)源于其所引用的表。

所以MySQL視圖不是真實(shí)存在的基礎(chǔ)表而是一張?zhí)摫?,視圖所對(duì)應(yīng)的數(shù)據(jù)并不實(shí)際地以視圖結(jié)構(gòu)存儲(chǔ)在數(shù)據(jù)庫(kù)中,而是存儲(chǔ)在視圖所引用的表中。

視圖一經(jīng)定義便存儲(chǔ)在數(shù)據(jù)庫(kù)中,與其相對(duì)應(yīng)的數(shù)據(jù)并沒(méi)有像表那樣又在數(shù)據(jù)庫(kù)中再存儲(chǔ)一份,通過(guò)視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。對(duì)視圖的操作與對(duì)表的操作一樣,可以對(duì)其進(jìn)行查詢(xún)、修改(有一定的限制)、刪除。

當(dāng)對(duì)通過(guò)視圖看到的數(shù)據(jù)進(jìn)行修改時(shí),相應(yīng)的基本表的數(shù)據(jù)也要發(fā)生變化,同時(shí),若基本表的數(shù)據(jù)發(fā)生變化,則這種變化也可以自動(dòng)地反映到視圖中。

視圖有很多優(yōu)點(diǎn),主要表現(xiàn)在:

視點(diǎn)集中

簡(jiǎn)化操作

定制數(shù)據(jù)

合并分割數(shù)據(jù)

安全性

二. 創(chuàng)建MySQL視圖——create view

1. 語(yǔ)法

create [or replace] [algorithm = {undefined | merge | temptable}] view [db_name.]view_name [(column_list)] as select_statement [with [cascaded | local] check option]通過(guò)該語(yǔ)句可以創(chuàng)建視圖,若給定了[or replace],則表示當(dāng)已具有同名的視圖時(shí),將覆蓋原視圖。select_statement是一個(gè)查詢(xún)語(yǔ)句,這個(gè)查詢(xún)語(yǔ)句可從表或其它的視圖中查詢(xún)。視圖屬于數(shù)據(jù)庫(kù),因此需要指定數(shù)據(jù)庫(kù)的名稱(chēng),若未指定時(shí),表示在當(dāng)前的數(shù)據(jù)庫(kù)創(chuàng)建新視圖。

表和數(shù)據(jù)庫(kù)共享數(shù)據(jù)庫(kù)中相同的名稱(chēng)空間,因此,數(shù)據(jù)庫(kù)不能包含相同名稱(chēng)的表和視圖,并且,視圖的列名也不能重復(fù)。

2. 使用舉例

eg. 本例創(chuàng)建一個(gè)產(chǎn)品表(product)和一個(gè)購(gòu)買(mǎi)記錄表(purchase),再通過(guò)MySQL視圖purchase_detail查詢(xún)出購(gòu)買(mǎi)的詳細(xì)信息。

 
 
 
  1. create table product  
  2. (  
  3. product_id int not null,  
  4. name varchar(50) not null,  
  5. price double not null  
  6. );  
  7. insert into product values(1, 'apple ', 5.5);  
  8. create table purchase  
  9. (  
  10. id int not null,  
  11. product_id int not null,  
  12. qty int not null default 0,  
  13. gen_time datetime not null  
  14. );  
  15. insert into purchase values(1, 1, 10, now());  
  16. create view purchase_detail as select product.
    name as name, product .price as price, purchase.qty as qty, 
    product .price * purchase.qty as total_value from product, 
    purchase where product.product_id = purchase.product_id;  

 

創(chuàng)建成功后,輸入:select * from purchase_detail;

運(yùn)行效果如下:

 
 
 
  1. +-------+-------+-----+-------------+  
  2. | name | price | qty | total_value |  
  3. +-------+-------+-----+-------------+  
  4. | apple | 5.5 | 10 | 55 |  
  5. +-------+-------+-----+-------------+  
  6. 1 row in set (0.01 sec)  

 

3. 注意事項(xiàng)

創(chuàng)建視圖存在如下注意事項(xiàng):

(1) 運(yùn)行創(chuàng)建視圖的語(yǔ)句需要用戶(hù)具有創(chuàng)建視圖(crate view)的權(quán)限,若加了[or replace]時(shí),還需要用戶(hù)具有刪除視圖(drop view)的權(quán)限;

(2) select語(yǔ)句不能包含from子句中的子查詢(xún);

(3) select語(yǔ)句不能引用系統(tǒng)或用戶(hù)變量;

(4) select語(yǔ)句不能引用預(yù)處理語(yǔ)句參數(shù);

(5) 在存儲(chǔ)子程序內(nèi),定義不能引用子程序參數(shù)或局部變量;

(6)在定義中引用的表或視圖必須存在。但是,創(chuàng)建了MySQL視圖后,能夠舍棄定義引用的表或視圖。要想檢查視圖定義是否存在這類(lèi)問(wèn)題,可使用check table語(yǔ)句;

(7) 在定義中不能引用temporary表,不能創(chuàng)建temporary視圖;

(8) 在視圖定義中命名的表必須已存在;

(9) 不能將觸發(fā)程序與視圖關(guān)聯(lián)在一起;

(10) 在視圖定義中允許使用order by,但是,如果從特定視圖進(jìn)行了選擇,而該視圖使用了具有自己order by的語(yǔ)句,它將被忽略。

三. 修改MySQL視圖——alter view

1. 語(yǔ)法

alter [algorithm = {undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local] check option]該語(yǔ)句用于更改已有視圖的定義。其語(yǔ)法與create view類(lèi)似。

2. 使用舉例

eg. 將上一小節(jié)中中創(chuàng)建的視purchase_detail進(jìn)行修改,去掉qty列,語(yǔ)句如下:

 
 
 
  1. alter view purchase_detail as select product.
    name as name, product .price as price, product .
    price * purchase.qty as total_value from product, 
    purchase where product.product_id = purchase.product_id;  

以上的相關(guān)內(nèi)容就是對(duì)MySQL視圖的介紹,望你能有所收獲。


本文標(biāo)題:MySQL視圖的概念與實(shí)際應(yīng)用
鏈接分享:http://m.5511xx.com/article/copehhh.html