热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

如何在网店数据库中使用视图视图(View)的本质,就是将SELECT语句的检索结果用表的形式保存下来,因此,视图也被称为:假表、伪表。www.2cto.com视图,将多个物理表中的数据,动态地组织在一起,用户可...SyntaxHighlighter.all();
如何在网店数据库中使用视图
 
视图(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 语句,但是,不意味着简化了内部的处理过程。
慎重使用!
 

推荐阅读
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
  • Oracle 数据导出为 SQL 脚本的详细步骤
    本文介绍如何使用 PL/SQL Developer 工具将 Oracle 数据库中的数据导出为 SQL 脚本,包括详细的步骤和注意事项。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 1.介绍有时候我们需要一些模拟数据来进行测试,今天简单记录下如何用存储过程生成一些随机数据。2.建表我们新建一张学生表和教师表如下:CREATETABLEstudent(idINT ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文介绍了解决在Windows操作系统或SQL Server Management Studio (SSMS) 中遇到的“microsoft.ACE.oledb.12.0”提供程序未注册问题的方法,特别针对Access Database Engine组件的安装。 ... [详细]
  • PostgreSQL 最新动态 —— 2022年4月6日
    了解 PostgreSQL 社区的最新进展和技术分享 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 在安装 SQL Server 时,选择混合验证模式可以提供更高的灵活性和管理便利性。如果您已经安装了 SQL Server 并使用单一的 Windows 身份验证模式,可以通过以下步骤将其更改为混合验证模式。 ... [详细]
  • 本文介绍了在 SQL Server 2012 客户端中格式化 SQL 查询语句的多种方法,包括内置功能和第三方工具,帮助用户提高代码可读性和维护性。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
author-avatar
蓝色水气球_453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有