程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 如何在網店數據庫中使用視圖

如何在網店數據庫中使用視圖

編輯:MySQL綜合教程

如何在網店數據庫中使用視圖   視圖(View)的本質,就是將 SELECT  語句的檢索結果用表的形式保存下來,因此,視圖也被稱為:假表、偽表。  www.2cto.com   視圖,將多個物理表中的數據,動態地組織在一起,用戶可以像使用物理表那樣使用它。   視圖的作用:   1、可以公開表中特定的行或列。 通過限制用戶對實際表的 SELECT 操作權限,而僅僅賦予用戶對相應視圖的 SELECT 操作權限, 來達到限制用戶只能讀取特定行或列的目的。   2、簡化復雜的 SQL 語句   3、可以限制可插入/ 更新的 范圍。使用 WITH CHECK POINT   [sql]  CREATE VIEW v_order(   oid, odate, memo, uid, zip, address, name, pid, pname, price, quantity) AS    SELECT    ob.oid, ob.odate, ob.memo,    u.uid, u.zip, u.address, u.name,   p.pid, p.pname, p.price,    od.quantity    FROM    (    (    ( order_basic AS ob INNER JOIN order_detail AS od ON ob.oid = od.oid )    INNER JOIN product AS p ON od.pid = p.pid    )    INNER JOIN user AS u ON ob.uid = u.uid    );       [sql]  CREATE OR REPLACE VIEW v_order   AS SELECT    ob.oid AS oid,    ob.odate AS odate,    ob.memo AS memo,    u.uid AS uid,   u.zip AS zip,    u.address AS address,    u.name AS name,   p.pid AS pid,    p.pname AS pname,    p.price AS price,    od.quantity AS quantity   FROM    (    (    ( order_basic AS ob INNER JOIN order_detail AS od ON ob.oid = od.oid )    INNER JOIN product AS p ON od.pid = p.pid    )    INNER JOIN user AS u ON ob.uid = u.uid    );     [sql]  DROP VIEW v_order;       [sql]  SHOW TABLES;   SHOW TABLES LIKE 'v\_%';   SHOW FIELDS FROM v_order;     在視圖中,進行檢索 [sql]  SELECT * FROM v_order WHERE oid = 'D00001'\G   UPDATE product SET pname = '燈罩' WHERE pid = 'P0002';   COMMIT;     視圖,不是真正地保存數據,而只是將數據組織在一起的一種形式。 使用視圖,進行變更數據(INSERT / UPDATE / DELETE)時,以下情況,會導致操作失敗: 1、視圖中的列,含有統計函數 2、視圖定義時,使用了 GROUP BY / HAVING 語句,DISTINCT 語句,UNION 語句 3、視圖定義時,使用了子查詢 4、跨越多個基礎表,進行數據變更     創建視圖時,使用 WITH CHECK OPTION 命令 [sql]  CREATE VIEW v_product3000up AS SELECT * FROM product WHERE price >= 3000 WITH CHECK OPTION;   此時,如果,對 視圖 v_product3000up 插入的記錄中 price < 3000, 那麼會插入失敗     視圖,是一個方便的功能,但是,就性能而言,不是一個最好的選擇。 它能簡化復雜的 SELECT 語句,但是,不意味著簡化了內部的處理過程。 慎重使用!  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved