Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL视图的创建与使用

MySQL视图的创建与使用

作者头像
大猫的Java笔记
发布于 2020-09-29 18:02:11
发布于 2020-09-29 18:02:11
2.3K0
举报
文章被收录于专栏:大猫的Java笔记大猫的Java笔记

学习点:

1.什么是视图?

2.为什么要使用视图?

3.视图应该怎么使用呢?

1.什么是视图?

视图是MySQL的一种虚拟表,实际的表我们可以看到每一行的数据,而视图是另一种形式的表,他可以将任何的查询结果变成一种虚拟的表方便下一次进行查询。

2.为什么要使用视图?

1.可重用

2.简化复杂的SQL

3.使用表的组成部分而不是整个表

4.保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限

3.怎么使用视图?

例如如下两张表,表中可以看出班级表和学生表两个表关系是1对多的,外键在学生方。

假如我现在要查询班级为三国演义的所有学生应该怎么查询?可能你想到了用内连接Inner join 或者外连接的Left join或rigth join,然后查询结果如下所示。

结果显然意见是没有错误的,张飞和关羽都被查询出来了.但是你会发现这样写重用性太差了,如果我又要查询水浒传班那么又要编写这么长的一条两表连接SQL,而视图的优点就在于此可重用性,可以让用户少写很多重复的SQL.接下来我们开始创建视图并使用视图来对比一下。

结果可以看出来视图创建以后我们少写了很多代码,且重用性也很强,其实视图就相当于给查询的结果取了一个别名,且这个别名包含查询的结果,我们下一次用的使用直接用别名就行了也就是视图。

4.视图更新的注意点

迄今为止所有试图都是和SELECT语句使用的,然后视图是否可以更新呢?得视情况而定.

通常,视图是可更新的(即,可以对他们进行INSERT,UPDATE和DELETE)但是更新视图将更新基表,因为视图本身没有数据如果对视图进行增删改实际上是对基表进行增删改.

但是,并不是所有视图都是可更新的,如果MySQL不能正确地确定被更新的基数据,则不允许更新,如果视图定义中有以下操作,则不能更新视图;   

1.分组(使用GROUP BY和HAVING)

2.联结

3.子查询

4.并

5.聚合函数

6.DISTINCT

7.导出(计算)列

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
9-视图
虚拟表,可以和普通表一样使用。MySQL5.1版本出现的新特性,是通过表动态生成的数据,也就是说行和列的数据都来自定义识图的查询中使用的表,只保存sql逻辑,不保存查询结果
Ywrby
2022/10/27
2060
【Mysql-13】视图——语法盘点&特性介绍(7k字详解&经典代码样例演示)
YY的秘密代码小屋
2024/05/14
8550
【Mysql-13】视图——语法盘点&特性介绍(7k字详解&经典代码样例演示)
Mysql数据库-视图
3. Mysql数据库-视图 3.1 视图概述 3.1.1 视图介绍 # 视图介绍 1). 视图(View)是一种虚拟存在的表。 2). 视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。(视图只保存sql的逻辑,不保存表数据) 3). 通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。 # 举个例子 普通班级: 张三 李四 王五 马六... 表
Devops海洋的渔夫
2022/01/17
1.5K0
Mysql数据库-视图
MySQL之视图简介
视图在数据库中有着重要的作用,视图经常被用来当做一个抽象的装置,特别是对某些应用来讲,它可能不关心表的结构,只需要按照视图的定义来取特定字段的数据或者更新数据,因此,视图的使用可以在一定程度上保证数据的安全。总体来讲,它的作用可以分为以下三类:
AsiaYe
2019/11/06
4760
MySQL基础之视图
①包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
yuanshuai
2022/08/22
2600
MySQL视图
视图是关系型数据库重要的组成部分之一,它可以限制数据访问,简化复杂查询,保持数据的独立性,以及基于相同的数据提供不同的视图等等。本文介绍MySQL数据库视图的一些用法,供大家参考。
Leshami
2018/08/06
3K0
MySQL视图
数据库原理及应用(六)——视图和子查询
视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍),所以操作视图时会根据创建视图的SELECT语句生成一张虚拟表,然后在这张虚拟表上做SQL操作。
Regan Yue
2023/03/30
6140
数据库原理及应用(六)——视图和子查询
数据库原理——事务、视图、存储过程
概念:事务指的是满足ACID特性的一组操作,可以通过commit提交一个事务,也使用rollback进行回滚。一个或一组语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。 事务的ACID属性:
全栈程序员站长
2022/06/29
1.3K0
数据库原理——事务、视图、存储过程
MySQL视图了解一下
MySQL视图是一种虚拟的表,本身不包含任何数据,可以看作是对SQL查询的封装,它的数据都是动态执行SQL查询的结果。
布禾
2021/04/09
3320
MySQL(十一)视图及存储过程
PS:因为视图不包含数据,所以每次使用视图,都必须处理执行所需的任何一个检索;如果使用了多个联结和过滤创建了复杂的视图或嵌套视图,性能下降比较明显。
allsmallpig
2021/02/25
7640
sql期末复习整理
4. 如果一个关系中的属性或属性组并非该关系的主键,但它是另一个关系的主键,则称其为该关系的 。
菜菜有点菜
2023/12/22
3350
MySQL/MariaDB表表达式(3):视图「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说MySQL/MariaDB表表达式(3):视图「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/03/08
1.2K0
MySQL/MariaDB表表达式(3):视图「建议收藏」
MySQL
SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
py3study
2020/01/16
1.5K0
MySQL
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
在 SQL Server 中,标识符(例如表名、列名、数据库名等)默认是不区分大小写的,但是字符串常量是区分大小写的【仅支持英文版双引号("")】。
SarPro
2024/03/16
3660
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(一)模式、表、索引与视图
Oracle11g全新讲解之触发器和视图索引
  根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合。它存储了要执行检索的 查询语句的定义 ,以便在引用该视图时使用。
用户4919348
2023/05/27
4780
Oracle11g全新讲解之触发器和视图索引
【MySQL】MySQL的视图
视图(view)是一个虚拟表,非真实存在,其本质是根据SQL语句获取动态的数据集,并为其命
陶然同学
2023/02/24
4.5K0
相关推荐
9-视图
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档