MySQL视图

视图

常见的数据库对象

MySQL视图

视图概述

为什么使用视图

可以帮助我们使用表中的 部分数据,对其修改可以改变原来表中的值

可以简化查询

控制数据的访问(权限)

视图的理解

  • 视图是一个本身没有数据且占用内存很少的虚拟表
    [En]

    View is a virtual table that does not have data itself and takes up very little memory*

  • 视图基于已有的表,可以作为视图基础的表称为基表
    [En]

    the view is based on the existing table, and the table on which we can base the view is called * base table * *

  • 视图的创建和删除 会影响视图本身;但是当对视图进行修改时,数据表中的数据也会变化, 反之亦然
  • 可以将视图理解为,存储起来的SELECT语句
  • 不推荐小项目;推荐大项目(可考虑)
    [En]

    small projects are not recommended; large projects are recommended (can be considered)*

创建视图

在 CREATE VIEW 中创建(简化版)

CREATE VIEW 视图名字
AS 查询语句

对于单表

案例1:视图中的数据位于基表中。

[En]

Case 1: the data in the view is in the base table.

CREATE VIEW VU_emp1
AS
SELECT id,name,salary
FROM emp1;

#视图中字段的起名
方式一:别名
CREATE VIEW VU_emp2
AS
SELECT id emp_id,name,salary monthly_sal
FROM emp1;
方式二:直接命名
CREATE VIEW VU_emp2(emp_id,name,monthly_sal)#与查询的字段要一一对应
AS
SELECT id,name,salary
FROM emp1;

情况二:

视图中的数据不在基表中。

[En]

The data in the view is not in the base table.

#创建视图:各个部门的平均工资(基表中没有)
CREATE VIEW VU_emp2
AS
SELECT department_id,AUG(salary) AUG_sal
FROM empolyees
WHERE id department_id ids not null
GROUP BY department_id;

对于多表

#和多表查询是一样的
CREATE VIEW VU_emp3
AS
SELECT t1.id,t1.name,t2.department_name
FROM employees t1 JOIN departments t2
ON t1.name = t2.name;

利用视图对数据进行格式化

CREATE VIEW VU_emp_dept1
AS
SELECT CONCAT(t1.name,'(',t2.department_name,')')
FROM employees t1 JOIN departments t2
ON t1.name = t2.name;

MySQL视图

基于视图创建视图

CREATE VIEW VU_emp_dept1
AS
SELECT 要查询的字段
FROM 视图名字;

查看视图

  • 查看数据库的表对象和查看对象
    [En]

    View the table objects and view objects of the database*

SHOW TABLES;
  • 查看视图的结构
DESC 视图名字;
  • 查看视图的属性信息
SHOW TABLE STATUS LIKE '视图名字';SHOW TABLE STATUS LIKE '视图名字'\G#有的可以执行
  • 查看视图详细定义信息
SHOW CREATE VIEW 视图名字;

更新视图的数据(增删改)

一般情况可以更新

#改视图UPDATE vu_emp1SET salary =6000WHERE id = 2;SELECT *FROM emp1;

MySQL视图

MySQL视图
#改基表
UPDATE emp1
SET salary =15000
WHERE id = 2;
SELECT *
FROM vu_emp1;

MySQL视图

二般更新失败(针对于视图是表中没有的数据)

一般不进行更新

MySQL视图

修改和删除视图

修改视图

方式一:使用 CREATE OR REPLACE VIEW修改视图

CREATE OR REPLACE VIEW vn_emp1
AS
SELECT employe_id,name,salary,email#添加字段 email
FROM employees
WHERE salary > 5000;

方式二:ALTER VIEW修改视图

ALTER VIEW vu_emp1
AS
SELECT employe_id,name,salary,email,hire_data#继续添加字段 hire_data
FROM employees
WHERE salary > 5000;

删除视图

DROP VIEW IF EXISTS (视图名字1,视图名字2...);

:若视图c是基于视图a,b创建的,如果删除a或是b,则会影响视图c的查询。这样的视图c我们需要手动删除,否则会影响使用

总结

视图的优点

  • 操作简单
  • 减少数据冗余
  • 数据安全(控制访问权限)
  • 适应灵活多变的需求
  • 可以分解复杂的查询逻辑

视图的不足

  • 表格结构已改变,需要相应地维护我们构建的视图
    [En]

    the structure of the table has changed, and the view we built needs to be maintained accordingly*

  • 维护成本很高

Original: https://www.cnblogs.com/wht-de-bk/p/16014670.html
Author: T,a,o
Title: MySQL视图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505556/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 分布式事务解决方案

    分布式事务解决方案 花开堪折直须折,莫待无花空折枝。 分布式事务是指事务的操作位于不同的节点上,需要保证事务的ACID特性。在分布式架构下,每个节点只知晓自身操作的成功与失败,无法…

    数据库 2023年6月14日
    079
  • MySQL之事务和redo日志

    事务 事务的四个ACID特性。 Atomicity 原子性 Consistency 一致性 Isolation 隔离性 Durability 持久性 原子性 原子性意味着事务的所有…

    数据库 2023年5月24日
    091
  • zabbix的基础使用

    zabbix的基础使用 创建zabbix监控服务 环境 IP 要安装的应用 服务器 192.168.111.135 lamp架构 zabbix server zabbix agen…

    数据库 2023年6月14日
    076
  • 记一次部署系列:prometheus配置通过alertmanager进行邮件告警

    1、修改配置 首先在prometheus中配置alertmanager地址,并配置告警规则文件,如下,然后重启prometheus。 规则文件如下:rules.yml &#8211…

    数据库 2023年6月9日
    069
  • Linux远程终端连接工具:SecureCRT

    SecureCRT SecureCRT是一款支持 SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等协议的终端仿真程序 Se…

    数据库 2023年6月11日
    095
  • ElasticSearch详解

    什么是ElasticSearch ElasticSearch是一款非常强大的、基于Lucene的开源搜素及分析引擎;它是一个实时的分布式搜索分析引擎。它通常被用作全文检索、结构化搜…

    数据库 2023年6月6日
    091
  • Mysql的知识梳理

    数据准备: –建表 create table customer_jia(CID int(4), Cname varchar(20), Csex varchar(2), …

    数据库 2023年5月24日
    0105
  • Windows 是最安全的操作系统

    建了一个用户交流群,我在群里说:”Windows 是最安全的操作系统。” 立刻引发了很多有意思的观点。我在群里一个人说不过大家,先篇文章把自己的论点罗列一下…

    数据库 2023年6月6日
    0238
  • 教师节我用Python做了个学生点名系统送给老师当礼物,这回毕业稳了

    今年教师节前夕,我特意用Python做了个学生点名系统,非常好用,送给各科老师、辅导员当节日礼物,老师们都喜滋滋,说平常逃课就原谅我了,我心想,这次毕业应该不是问题了~ 本文背景 …

    数据库 2023年6月14日
    076
  • Spring(一)-初识 + DI+scope

    1、获取bean实例的三种方式 UTF-8 4.3.18.RELEASE 1.16.18 4.11 org.springframework spring-beans ${sprin…

    数据库 2023年6月16日
    074
  • my2sql工具之快速入门

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 my2sql工具之快速入门 1….

    数据库 2023年5月24日
    083
  • java 网络考试 在线教育系统 模块设计方案

    组建试卷:创建试卷,题目、类型、总分、及格分数、时长、出成绩方式、重复考试、公布答案、考试对象等 试卷题型:试卷明细,给试卷添加题型,分值,随机或者手动从题库选择试题,预览试题,自…

    数据库 2023年6月6日
    088
  • 牛客SQL刷题第三趴——SQL大厂面试真题

    结果,保留了两位小数,并根据播放进度以相反的顺序进行排序。 [En] As a result, two decimal places are retained and sorted…

    数据库 2023年5月24日
    0109
  • Javaweb-Ajax详解

    一、概念 Ajax = Asynchronous JavaScript and XML(异步的JavaScript和XML) Ajax不是一种新的编程语言,而是一种用于创建更好更快…

    数据库 2023年6月16日
    071
  • 数据分析大作战,SQL V.S. Python,来看看这些考题你都会吗 ⛵

    💡 作者:韩信子@ShowMeAI📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40📘 本文地址:https://www.showm…

    数据库 2023年6月14日
    071
  • 高并发组件了解

    消息队列 A服务和多个服务耦合,内部维护对多个服务发送数据的接口,那么这些接口如果有的挂了,有的不需要了,那么还得修改A内部的代码,如果使用MQ,A发送消息就好,不必考虑那么多事情…

    数据库 2023年6月16日
    057
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球