成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL視圖的概念與實際應用

數據庫 MySQL
我們今天主要和大家介紹的是MySQL視圖的概念以及MySQL視圖的實際應用,如果你對其相關的實際操作感興趣的話,你就可以瀏覽以下的文章。

以下的文章主要是對MySQL視圖的描述,其中包括MySQ視圖L概述,以及創建MySQL視圖—create view與修改MySQL視圖——alter view等相關內容的具體描述,以下就是文章的具體內容介紹。

一. 視圖概述

MySQL視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖并不在數據庫中以存儲的數據值集形式存在。行和列數據來自由定義視圖的查詢所引用的表,并且在引用視圖時動態生成。

對其中所引用的基礎表來說,MySQL視圖的作用類似于篩選。定義視圖的篩選可以來自當前或其它數據庫的一個或多個表,或者其它視圖。通過視圖進行查詢沒有任何限制,通過它們進行數據修改時的限制也很少。

視圖是存儲在數據庫中的查詢的sql 語句,它主要出于兩種原因:安全原因,視圖可以隱藏一些數據,如:社會保險基金表,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數等,另一原因是可使復雜的查詢易于理解和使用。

 

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

 

 

視圖是從一個或多個表或視圖中導出的表,其結構和數據是建立在對表的查詢基礎上的。和表一樣,視圖也是包括幾個被定義的數據列和多個數據行,但就本質而言這些數據列和數據行來源于其所引用的表。

 

 

所以MySQL視圖不是真實存在的基礎表而是一張虛表,視圖所對應的數據并不實際地以視圖結構存儲在數據庫中,而是存儲在視圖所引用的表中。

 

 

視圖一經定義便存儲在數據庫中,與其相對應的數據并沒有像表那樣又在數據庫中再存儲一份,通過視圖看到的數據只是存放在基本表中的數據。對視圖的操作與對表的操作一樣,可以對其進行查詢、修改(有一定的限制)、刪除。

 

 

當對通過視圖看到的數據進行修改時,相應的基本表的數據也要發生變化,同時,若基本表的數據發生變化,則這種變化也可以自動地反映到視圖中。

 

 

視圖有很多優點,主要表現在:

 

 

視點集中

 

 

簡化操作

 

 

定制數據

 

 

合并分割數據

 

 

安全性

 

二. 創建MySQL視圖——create view

1. 語法

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

表和數據庫共享數據庫中相同的名稱空間,因此,數據庫不能包含相同名稱的表和視圖,并且,視圖的列名也不能重復。

2. 使用舉例

eg. 本例創建一個產品表(product)和一個購買記錄表(purchase),再通過MySQL視圖purchase_detail查詢出購買的詳細信息。

 

  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;  

 

創建成功后,輸入:select * from purchase_detail;

運行效果如下:

 

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

 

3. 注意事項

創建視圖存在如下注意事項:

(1) 運行創建視圖的語句需要用戶具有創建視圖(crate view)的權限,若加了[or replace]時,還需要用戶具有刪除視圖(drop view)的權限;

(2) select語句不能包含from子句中的子查詢;

(3) select語句不能引用系統或用戶變量;

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

(5) 在存儲子程序內,定義不能引用子程序參數或局部變量;

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

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

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

(9) 不能將觸發程序與視圖關聯在一起;

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

三. 修改MySQL視圖——alter view

1. 語法

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

2. 使用舉例

eg. 將上一小節中中創建的視purchase_detail進行修改,去掉qty列,語句如下:

 

  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;  

以上的相關內容就是對MySQL視圖的介紹,望你能有所收獲。 

 

【編輯推薦】

  1. MySQL數據庫所支持的三個引擎
  2. MySQL數據庫中定義外鍵的必備條件
  3. MySQL臨時表的具體使用方案
  4. MySQL 連接池的實際配置問題
  5. MySQL兩項性能的基本測試淺談
責任編輯:佚名 來源: 互聯網
相關推薦

2010-05-24 09:24:15

MySQL 備份

2010-06-13 13:50:02

MySQL存儲引擎

2010-05-12 17:26:55

MySQL維護

2010-05-18 09:31:05

MySQL修改表

2010-05-17 13:16:23

MySQL壓力測試工具

2010-06-03 08:59:50

MySQL Query

2010-06-07 10:08:52

MySQL FLUSH

2010-05-24 09:57:08

2015-09-23 14:19:38

2010-05-18 13:34:42

MySQL條件sele

2010-05-19 12:44:58

2010-06-02 13:33:19

MySQL 查詢緩存

2010-05-21 16:41:22

MySQL SHOW

2009-07-09 18:20:53

云存儲云計算云服務

2010-09-27 09:54:26

Sql Server視

2010-04-23 08:56:12

Oracle DRCP

2010-06-04 11:34:16

MySQL外鏈

2010-05-18 16:29:44

MySQL修改表

2010-06-02 17:46:54

MySQL 查詢緩存

2010-05-13 13:49:09

MySQL數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品免费一区二区三区 | 蜜臀久久99精品久久久久久宅男 | 亚洲久视频 | 久久久片 | 婷婷激情五月网 | 草草视频在线播放 | 日韩中出 | 国产精品a久久久久 | 久久日韩精品 | 黄色大片免费观看 | 国产美女黄色 | 日中文字幕在线 | 精品中文字幕一区 | 国产精品久久久久一区二区三区 | 欧美一级高潮片免费的 | 久久亚洲天堂 | 亚洲视频在线观看 | 久久久久久成人 | 国产日韩一区二区三免费 | 中文av在线播放 | 日韩欧美手机在线 | 亚洲成人精品一区 | 啪一啪| 国产片侵犯亲女视频播放 | 欧美成人免费在线 | 精品在线一区二区 | 欧美男人亚洲天堂 | 国产精品99久久久久久www | 国产免费拔擦拔擦8x高清 | 欧美日本在线 | 国产美女自拍视频 | 久久国产传媒 | 成人免费视频网站在线看 | 国产日韩精品在线 | 四虎在线观看 | 美女在线国产 | 国产一区二区三区高清 | 国产日韩精品一区 | 视频一区二区在线观看 | 久久激情视频 | 精品欧美一区二区三区久久久 |