视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何在网店数据库中使用视图_MySQL
2020-11-09 18:25:28 责编:小采
文档


bitsCN.com

如何在网店数据库中使用视图

视图(View)的本质,就是将 SELECT 语句的检索结果用表的形式保存下来,因此,视图也被称为:假表、伪表。

视图,将多个物理表中的数据,动态地组织在一起,用户可以像使用物理表那样使用它。

视图的作用:

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 语句,但是,不意味着简化了内部的处理过程。

慎重使用!

bitsCN.com

下载本文
显示全文
专题