1. 程式人生 > >mysql中的檢視

mysql中的檢視

  • 檢視:為了提高複雜SQL語句的複用性和表操作的安全性,在具體操作表前,有時候要求操作者只能操作部分欄位,而不是全部欄位,mysql資料庫管理系統提供了檢視特性。所謂檢視,本質上是一張虛擬表,其內容與真實表相似,包含一系列帶有名稱的列和行資料。但是,檢視並不在資料庫中已儲存資料值得形式存在。行和列資料來自定義檢視的查詢所引用的基本表,並在具體引用檢視時動態生成。

  • 檢視使程式設計師只關心感興趣的某些特定資料和它們所負責的特定任務。這樣程式設計師只能看到檢視中所定義的資料,而不是試圖所引用表的資料,從而提高資料庫中資料的安全性。

  • 檢視的特點

    • 檢視的列可以來自不同的表,是表的抽象和邏輯意義上建立的新關係。
    • 檢視是由基本表(實表)產生的表(虛表)。
    • 檢視的建立和刪除不影響基本表。
    • 對檢視內容的更新(新增、刪除和修改)直接影響基本表。
    • 當檢視來自多個基本表時,不允許新增和刪除資料。
  • 建立檢視:雖然試圖可以看成是一種虛擬表,但是其在物理上是不存在的,即資料庫管理系統沒有專門的位置為檢視儲存資料。則根據檢視的概念可以發現其資料來源於查詢語句,因此,建立檢視的語法為:CREATE VIEW view_name AS 查詢語句,例如:CREATE VIEW view_select AS SELECT id,name FROM users;檢視建立成功後即可進行查詢檢視操作:SELECT *FROM view_select;

    執行此操作後就會在檢視中顯示users表中的id和name欄位的所有資訊。可以建立多種形式的檢視,如:

    • (1)封裝實現查詢常量的檢視:CREATE VIEW view_name SELECT number(常量);
    • (2)封裝使用聚合函式(SUM、MIN、MAX、COUNT)查詢語句的檢視:CREATE VIEW view_name AS SELECT COUNT(name) FROM users;
    • (3)封裝了實現排序功能(ORDER BY)查詢語句的檢視:CREATE VIEW view_name AS SELECT name FROM users ORDER BY id DESC;
    • (4)封裝了實現表內連線查詢的語句。
    • (5)封裝了實現表外連線(LEFT JOIN和RIGHT JOIN)查詢語句的檢視。
    • (6)封裝了實現子查詢相關查詢語句的檢視。
    • (7)封裝了實現記錄聯合(UNION和UNION ALL)查詢語句的檢視。
  • 檢視檢視

    • SHOW TABLES;可以查看錶明和檢視名;
    • SHOW TABLES STATUS FROM VIEW;檢視數view據庫裡檢視和表的詳細資訊。
    • SHOW CREATE VIEW view_name;檢視關於檢視的定義資訊。
  • 刪除檢視:DROP VIEW view_name;

  • 修改檢視

    • 在先要修改檢視的一些資訊時我們可以先將原先的檢視進行刪除,然後在建立一個滿足要求的新的檢視,這樣是完全可行的,但這樣也是繁瑣的。於是,mysql為了便於使用者修改檢視,提供了可替換的建立檢視語法:CREATE OR REPLACE VIEW view_name AS SELECT name FROMR users;把原先在users表上建立的檢視修改。
    • 通過ALTER語句修改檢視:ALTER VIEW view_name AS SELECT name FROM users;
  • 通過檢視操作基本表

    • 查詢:SELECT *FROM view_name;
    • 插入:INSERT INTO view_name (id,name,price) VALUES(11, ‘pear4’, 12);
    • 刪除:DELETE view_name WHERE name =‘apple’;
    • 更新:UPDATE view_name SET price=3.5 WHERE name = ‘pear1’;