首页 > 数据库 >数据库对视图的学习

数据库对视图的学习

时间:2024-10-29 18:46:53浏览次数:7  
标签:包含 数据库 更新 查询 学习 视图 SELECT VIEW

视图


目录

什么是视图

MySQL中的视图(View)是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含行和列,但视图本身不包含数据。视图中的数据是存储在基础表中的数据。

视图的作用

  1. 简化复杂查询:通过创建一个视图来封装复杂的SQL查询,使得后续的查询更加简单和直观。
  2. 数据抽象:通过视图,可以隐藏表的复杂性和细节,只暴露给用户或应用程序所需的特定数据。
  3. 安全:通过视图,可以控制用户对数据的访问,只允许用户访问他们所需的数据,而不是整个表的数据。
  4. 逻辑数据独立性:视图可以帮助隔离数据库的变化对应用程序的影响。当基础表的结构发生变化时,只要视图的结构保持不变,应用程序的代码就无需修改。

视图操作

创建视图

CREATE VIEW 视图名 AS  
SELECT 列名称  
FROM 表名称  
WHERE 条件;

更新视图

虽然可以像查询表一样查询视图,但更新视图(包括INSERT、UPDATE和DELETE操作)则取决于视图的定义。如果视图是基于单个表且不包含任何聚合函数、GROUP BY子句或DISTINCT关键字,那么通常可以更新视图。然而,如果视图是基于多个表、包含上述任一特性的SQL函数或子查询,则可能无法更新视图。

CREATE OR REPLACE VIEW 视图名 AS  
SELECT 列名称  
FROM 表名称  
WHERE 条件;

查看视图

SHOW CREATE VIEW 视图名;

删除视图

DROP VIEW IF EXISTS 视图名;

视图规则与限制

MySQL视图的规则和限制主要包括以下几个方面:

命名规则

  1. 唯一命名:视图名称必须唯一,不能与同数据库中的其他视图或表重名。
  2. 命名规范:视图命名常以V_VIEW_开头,_V_VIEW结尾,但这并非强制要求,只是常见的命名习惯。

创建与查询

  1. 基于SELECT语句:视图是基于SELECT语句的结果集创建的,这些SELECT语句可以包含复杂的查询逻辑,如连接(JOIN)、分组(GROUP BY)、排序(ORDER BY)等。
  2. 权限要求:创建视图的用户必须对所引用的表或视图有查询权限。
  3. 限制
    • 视图不能包含子查询的FROM子句。
    • 视图不能引用系统或用户变量。
    • 视图不能包含INTO OUTFILE或INTO DUMPFILE子句。
    • 视图中的ORDER BY子句在特定情况下可能会被忽略(如当外层查询也包含ORDER BY时)。

更新与删除

  1. 可更新性:并非所有视图都是可更新的。视图的可更新性取决于其定义方式以及是否满足特定的条件(如视图基于单个表、不包含聚合函数、不包含DISTINCT等)。
  2. WITH CHECK OPTION:在创建视图时,可以使用WITH CHECK OPTION子句来限制对视图的更新操作,确保更新后的数据仍然满足视图定义中的条件。
  3. 删除视图:使用DROP VIEW语句可以删除视图,但只能删除视图的定义,不会删除或影响基础表中的数据。

其他限制

  1. 索引:视图不能被索引,因为视图是基于查询结果的虚拟表,不实际存储数据。
  2. 触发器与默认值:视图不能与触发器或默认值相关联。
  3. 临时表:视图不能使用临时表,因为临时表是临时的、会话级别的,而视图是持久的、数据库级别的。
  4. 存储函数:在某些情况下,视图可能不能引用存储函数,这取决于具体的MySQL版本和配置。

标签:包含,数据库,更新,查询,学习,视图,SELECT,VIEW
From: https://www.cnblogs.com/BingBing-8888/p/18514159

相关文章

  • Android实现连接SQLite数据库实现登录注册功能 (附完整源码)
    Android实现连接SQLite数据库实现登录注册功能1.创建SQLite数据库2.用户注册3.用户界面4.主活动5.AndroidManifest.xml总结下面是一个简单的Android应用示例,展示如何使用SQLite数据库实现用户的注册和登录功能。该示例包括创建数据库、注册用户、登录验证......
  • 学期2024-2025-1 学号20241424 《计算机基础与程序设计》第6周学习总结
    学期2024-2025-1学号20241424《计算机基础与程序设计》第6周学习总结作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计)这个作业要求在哪里(如2024-2025-1计算机基础与程序设计第六周作业这个作业的目标<参考上面的学习总结模板,把学习过程通过博客......
  • 借助ETLCloud工具,轻松同步Doris数据至Inceptor数据库
    一、背景在现代企业中,数据是决策和运营的核心。为了更好地利用这些数据,企业通常需要将数据从不同的源系统(如Doris)同步到一个集中的数据仓库(如Inceptor)。ETL(Extract,Transform,Load)过程是实现这一目标的关键。然而传统的ETL往往技术通用性差、灵活性不高,对非技术人员不友好。 ......
  • 明星人脸识别基于VGG、MTCNN、RESNET深度学习卷积神经网络应用|附数据代码
    全文链接:https://tecdat.cn/?p=38046原文出处:拓端数据部落公众号分析师:XinzuDu 人脸识别技术作为生物特征识别技术的重要组成部分,在近三十年里得到了广泛的关注和研究,已经成为计算机视觉、模式识别领域的研究热点。然而由于存在光线、背景、人脸遮挡等问题,如何准确识别出人......
  • Python小白学习教程从入门到入坑------第十八课 异常模块与包【下】(语法基础)
    一、内置全局变量__name__在Python中,有一些内置的全局变量和特殊变量,它们是由Python解释器预定义的,可以在代码的任何地方直接使用。这些变量通常用于提供关于当前解释器状态的信息,或者用于控制解释器的行为在Python中,__name__是一个内置的特殊变量,也被称为“魔法变量”或“......
  • zabbix6.2添加mysql数据库监控
    zabbix官网链接:MysqlmonitoringandintegrationwithZabbix如何在zabbix上添加mysql的监控,官网已经说的很清楚了,照着官网的介绍做就行了,我只说明遇到的坑。 步骤2中的template_db_mysql.conf的内容在官网选择文档版本下的Source链接。这个文件默认是放在/etc/zabbix/zabbix......
  • 银行信贷风控专题:Python、R 语言机器学习数据挖掘应用实例合集:xgboost、决策树、随机
    全文链接:https://tecdat.cn/?p=38026原文出处:拓端数据部落公众号分析师:FanghuiShao 在当今金融领域,风险管控至关重要。无论是汽车贷款违约预测、银行挖掘潜在贷款客户,还是信贷风控模型的构建,以及基于决策树的银行信贷风险预警,都是金融机构面临的关键挑战。本银行信贷风控专题......
  • 查看数据库锁状态命令
    在MySQL中,你可以使用几种不同的方法来查看当前的锁状态。以下是一些常用的命令和查询语句:1.使用`SHOWENGINEINNODBSTATUS`命令:  这个命令会提供InnoDB存储引擎的状态信息,其中包括了当前锁定的信息。你可以在输出中找到`TRANSACTIONS`部分,那里列出了所有活动事......
  • SSM高校医院诊疗系统77mg2+程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表项目功能:学生,医生,药品信息,学生健康信息,特殊传染病,体检项目,体检预约,体检报告,电子病历,隔离记录,通知公告,在线预约,取消预约开题报告内容一、研究背景......
  • 个人学习React Native的实际意义探讨
        ReactNative(以下简称RN)是一个跨平台框架,它是由facebook公司基于React实现的移动端跨平台开发框架。目前比较流行的跨平台开发框架除了RN,还有一个就是Flutter。随着Flutter的兴起和后来居上,使得RN没有前几年那么吃香了。那么除了技术上的比较外,个人学习RN有什么必......