iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 视图简介
  • 251
分享到

MySQL 视图简介

MySQL视图简介 2019-11-20 08:11:56 251人浏览 无得
摘要

概述 数据库中关于数据的查询有时非常复杂,例如表连接、子查询等,这种查询编写难度大,很容易出错。另外,在具体操作表时,有时候要求只能操作部分字段。 为了提高复杂 sql 语句的复用性和表的操作的安全性,Mysql 提供了视图特性。所谓视

MySQL 视图简介


概述

数据库中关于数据的查询有时非常复杂,例如表连接、子查询等,这种查询编写难度大,很容易出错。另外,在具体操作表时,有时候要求只能操作部分字段。

为了提高复杂 sql 语句的复用性和表的操作的安全性,Mysql 提供了视图特性。所谓视图,本质上是一种虚拟表,同样包含一系列带有名称的列和行数据。行和列的数据来自自定义视图的查询所引用的基本表,并在具体引用视图时动态生成

视图的特点如下:

  • 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系
  • 视图是由基本表(实表)产生的表(虚表)
  • 视图的建立和删除不影响基本表
  • 对视图内容的更新(增删改)直接影响基本表
  • 当视图来自多个基本表,不允许添加和删除数据

创建视图

1. 创建视图的语法形式

CREATE [OR REPLACE] [ALGoRITHM = {UNDEFINED | MERGE | TEMPTABLE}]  
VIEW view_name [column_list]  
AS SELECT statement
[WITH [CASCADED | LOCAL] CHECK OPTioN]
  • CREATE 表示创建新的视图,REPLACE 表示替换已经创建的视图
  • ALGORITHM 表示视图选择的算法,取值有三种:
    • UNDEFINED:mysql 自动选择算法
    • MERGE:将使用的视图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分
    • TEMPLATE:表示将视图的结果放入临时表,然后用临时表来执行语句
  • view_name 表示视图的名称
  • column_list 为属性列
  • SELECT statement 表示 SELECT 语句
  • 参数 [WITH [CASCADED | LOCAL] CHECK OPTION] 表示视图在更新时保证在视图的权限范围内,CASCADED 与 LOCAL 为可选参数:
    • CASCADED 为默认值,表示更新视图时要满足所有相关视图和表的条件
    • LOCAL 表示更新视图时满足该视图本身定义的条件即可

该语句要求具有针对视图的 CREATE VIEW 权限,以及针对由 SELECT 语句选择的每一列上的某些权限。对于在 SELECT 语句中其他地方使用的列,必须具有 SELECT 权限,如果还有 OR REPLACE 子句,就必须在视图上具有 DROP 权限

2. 在单表创建视图

示例:在数据库 company 中,由员工表 t_employee 创建出隐藏工资字段 salary 的视图 view_selectemployee

CREATE VIEW view_selectemployee AS
SELECT id,name,gender,age,deptno FROM t_employee;

查询视图

SELECT * FROM view_selectemployee;

3. 在多表创建视图

示例:在数据库 company 中,由部门表 t_dept 和员工表 t_employee 创建一个名为 view_dept_employee 的视图

CREATE ALGORITHM=MERGE VIEW
view_dept_employee(name,dept,gender,age,loc)
AScSELECT iname,t_dept.deptname,gender,age,t_dept.location
FROM t_employee, t_dept WHERE t_employee.deptno = t_dept.deptno
WITH LOCAL CHECK OPTION;

查看视图

使用 DESCRIBE | DESC 语句查看视图基本信息,因为视图也是一张表,只不过比较特殊

DESCRIBE | DESC viewname

在 MySQL 中,所有视图的定义都存在数据库 infORMation_schema 中的表 views 中,查询 views 表可以得到数据库中所有视图的详细信息

SELECT * FROM information_schema.views
WHERE table_name = "viewname" G

修改视图

修改视图是指修改数据库中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致

在 MySQL 中,CREATE OR REPLACE VIEW 语句可以用来修改视图。当视图已经存在,对视图进行修改,否则创建视图

CREATE OR REPLACE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]  
VIEW view_name [column_list]  
AS SELECT statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

也可以使用 ALTER 语句修改视图,其语法中的关键字和参数都与创建视图是一样的

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]  
VIEW view_name [column_list]  
AS SELECT statement
[WITH [CASCADED | LOCAL] CHECK OPTION]

更新视图

更新视图是指通过视图来插入、更新和删除表中的数据。可以使用 SQL 语句更新视图,达到更新基本表数据。反过来,更新基本表的数据,也会更新视图的数据

但实际上,并不是所有视图都可以更新,以下几种情况是不能更新视图的:

  • 视图中包含 SUM()、COUNT()、MAX() 和 MIN() 函数
  • 视图中包含 UNION、UNION ALL、DISTINCT、GROUP BY 和 HAVING 等关键字
  • 常量视图,例如:CREATE VIEW view_1 AS SELECT "Rebecca" AS name;
  • 包含子查询的视图
  • 由不可更新的视图导出的视图
  • 创建视图时,ALGORITHM 为 TEMPTABLE 类型
  • 视图对应的列存在没有默认值的列,而且该列没有包含在视图里
  • 设置了 [WITH [CASCADED | LOCAL] CHECK OPTION] 参数,需要符合对应条件才能更新

删除视图

删除视图是指删除数据库中已存在的视图,不会删除数据

在 MySQL 中,可以使用 DROP VIEW 语句来删除视图,但是用户必须拥有 DROP 权限

DROP VIEW viewname [viewname1,viewname2,...]

原文地址:https://www.cnblogs.com/Yee-Q/arcHive/2022/04/16/16154656.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 视图简介

本文链接: https://www.lsjlt.com/news/9269.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL视图简介及基本操作教程
    前言 视图是数据库系统中一种非常有用的数据库对象。MySQL 5.0 之后的版本添加了对视图的支持。 认识视图 视图是一个虚拟表,其内容由查询定义。同真实表一样,视图包含一系列带有名称的列和行数据,但视...
    99+
    2024-04-02
  • 九、MySQL之视图的介绍
    🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人 🌙个人主页:阿芒的主页 👉推荐一款刷题、找工作神器 牛客网注册即可免费刷题 文章目录 &...
    99+
    2023-08-19
    数据库 mysql sql
  • MySQL简介
    MySQL介绍:简介、特点与应用示例 概述:MySQL是当前最常用的关系型数据库管理系统之一。作为一个开源的数据库管理系统,MySQL具有许多优点,如高性能、可靠性强以及易于使用等。本...
    99+
    2024-02-22
    mysql sql 数据库
  • Python可视化Matplotlib介绍和简单图形的绘制
    目录1. 什么是Matplotlib2. 实现一个最简单的Matplotlib画图以折线图为例2.1 matplotlib.pyplot模块2.2 图形绘制流程1.创建画布 – pl...
    99+
    2024-04-02
  • MySQL | 视图
    目录 一、创建视图 1.1 在单表上创建视图 1.2 在多表上创建视图 二、查看视图 2.1 使用DESCRIBE语句查看视图基本信息 2.2 使用SHOW TABLE STATUS语句查看视图基本信息 2.3 使用SHOW CREATE ...
    99+
    2023-08-31
    mysql 数据库 sql 大数据 big data
  • mysql-视图
    mysql视图的定义视图是虚拟表或逻辑表,它被定义为具有连接的SQL SELECT查询语句。因为数据库视图与数据库表类似,它由行和列组成,因此可以根据数据库表查询数据。其内容由查询定义。但是,视图并不在数据库中以存储的数据值集形式存...
    99+
    2023-01-30
    视图 mysql
  • 关于Flask视图介绍
    目录2、类视图2.1 标准类视图2.1.1 基于方法的视图1、视图函数 之前的文章说过,在 Flask 中路由是请求的 url 与处理函数之间的映射,使用app.route装饰器将处...
    99+
    2024-04-02
  • Django 视图通用类:简化常见视图操作
    在 Django Web 框架中,视图通用类提供了一种方便的方法来处理常见视图操作,例如创建、更新、删除和检索对象。这些通用类封装了用于执行这些操作的常见逻辑,从而节省开发人员的时间和精力。 通用视图类型 Django 提供了多种视图通...
    99+
    2024-02-15
    Django, 视图, 通用类, 简化, 可重用性
  • MySQL 视图(详解)
    文章目录 一,视图概念使用视图的原因 二,创建视图(1)基本语法(2)创建基于单表的视图【实例 1】【实例 2】 (3)创建基于多表的视图【实例 3】 (4)查询视图【实例 4...
    99+
    2023-09-06
    MySQL 视图 增删改查 知识
  • MySQL中的视图
    视图概述 视图是一种虚拟存在的表,并不在数据库中实际存在,它的数据依赖于真实存在的数据表。通过视图不仅可以看到其依赖数据表中的数据,还可以像操作数据表一样,对数据表中的数据进行添加、修改和删除。与直接操作数据表相比,视图具有以下优点。 简化...
    99+
    2023-10-25
    数据库 mysql
  • MySQL权限管理简介
    本篇内容主要讲解“MySQL权限管理简介”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL权限管理简介”吧!一、MySQL权限简介  &nb...
    99+
    2024-04-02
  • MySQL高可用——PXC简介
    PXC简介:    galera产品是以galera cluster方式为mysql提高高可用集群解决方案的。galera cluster就是集成了galera插件的mysql集群。ga...
    99+
    2024-04-02
  • MySQL中约束的简介
    小编给大家分享一下MySQL中约束的简介,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1)主键约束主键约束是使用最频繁的约束。在...
    99+
    2024-04-02
  • Android图形显示流程简介
    注:本文缩写说明 本文代码都是基于Android S 一、概述 本文将对从App画出一帧画面到这帧画面是如何到达屏幕并最终被人眼看到的这一过程进行简要分析,并将这其中涉及到的各个流程与其在systrace上的体现对应起来,期望最终...
    99+
    2023-09-05
    android
  • SQL中简单视图和复杂视图的区别是什么
    这篇文章将为大家详细讲解有关SQL中简单视图和复杂视图的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 SQL中的视图,作为来自一个或多个表的数据的逻...
    99+
    2024-04-02
  • Angularjs中的视图和指令介绍
    这篇文章主要介绍“Angularjs中的视图和指令介绍”,在日常操作中,相信很多人在Angularjs中的视图和指令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Angu...
    99+
    2024-04-02
  • MySQL视图的概念
    本篇内容主要讲解“MySQL视图的概念”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL视图的概念”吧!1、基本概念  视图本身是一张虚拟表,不存放任何数...
    99+
    2024-04-02
  • MySQL-SQL视图详细
    ♥️作者:小刘在C站 ♥️个人主页: 小刘主页  ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技术 ♥️小刘私信可以随便问,只要会...
    99+
    2023-09-05
    数据库 sql mysql
  • MySQL高级篇——索引简介
    🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人 🌙个人主页:阿芒的主页 文章目录 👩‍🔧索引是什么👩‍&...
    99+
    2023-08-16
    mysql 数据库 java
  • MySQL日志模块的简介
    这篇文章将为大家详细讲解有关MySQL日志模块的简介,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。目录一、简介二、redo log三. binlog四. 内部工作流程My...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作