MySQL视图「建议收藏」

MySQL视图「建议收藏」视图 常见的数据库对象 视图概述 为什么使用视图 可以帮助我们使用表中的部分数据,对其修改可以改变原来表中的值 可以简化查询 控制数据的访问(权限) 视图的理解 视图是一种虚拟表,本身不具有数据的,占

MySQL视图

视图

常见的数据库对象

MySQL视图「建议收藏」

视图概述

为什么使用视图

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

可以简化查询

控制数据的访问(权限)

视图的理解

  • 视图是一种虚拟表,本身不具有数据的,占用极少的内存
  • 视图建立在已有表的基础上,我们可以视图所依据的表叫做基表
  • 视图的创建和删除会影响视图本身;但是当对视图进行修改时,数据表中的数据也会变化,反之亦然
  • 可以将视图理解为,存储起来的SELECT语句
  • 小型项目,不推荐使用;大型项目,推荐使用(可以考虑)

创建视图

在 CREATE VIEW 中创建(简化版)

CREATE VIEW 视图名字
AS 查询语句

对于单表

情况一:视图中的数据时基表里面有的

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;

情况二:

视图中的数据时基表中没有的

#创建视图:各个部门的平均工资(基表中没有)
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 视图名字;

查看视图

  • 查看数据库的表对象,视图对象
SHOW TABLES;
  • 查看视图的结构
DESC 视图名字;
  • 查看视图的属性信息
SHOW TABLE STATUS LIKE "视图名字";
SHOW TABLE STATUS LIKE "视图名字"G#有的可以执行
  • 查看视图详细定义信息
SHOW CREATE VIEW 视图名字;

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

一般情况可以更新

#改视图
UPDATE vu_emp1
SET salary =6000
WHERE 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我们需要手动删除,否则会影响使用

总结

视图的优点

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

视图的不足

  • 表中的结构发生改变,我们所构建的视图也需要相应的维护
  • 维护成本很高

原文地址:https://www.cnblogs.com/wht-de-bk/archive/2022/03/16/16014670.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5431.html

(0)
上一篇 2023-05-09 17:30
下一篇 2023-05-09

相关推荐

  • Mybatis官方文档解读「终于解决」

    Mybatis官方文档解读「终于解决」作用域(Scope)和生命周期 理解我们之前讨论过的不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。 SqlSessionFactoryBuilder 这个类可以被实例…

    2023-02-09
    110
  • 安装Scrapy的步骤

    安装Scrapy的步骤Scrapy是一个纯Python的开源爬虫框架,可用于抓取网站数据。Scrapy是一个高度定制化的爬虫工具,可以自由设置各种参数,满足各种需求。如果您想学习Python爬虫,那么Scrapy是一个值得学习的爬虫框架。

    2024-04-21
    18
  • 为什么 SQL 语句使用了索引,但却还是慢查询?「终于解决」

    为什么 SQL 语句使用了索引,但却还是慢查询?「终于解决」聊一聊索引和慢查询,经常遇到的一个问题:一个SQL语句使用了索引,为什么还是会记录到慢查询日志之中?

    2023-05-21
    99
  • Redis集群介绍[通俗易懂]

    Redis集群介绍[通俗易懂]什么是集群 能够对外提供相同服务的多台服务器组成的集合。 为什么要建立集群 1.从可用性角度考虑,如果只有一台机器提供服务,一旦出现故障,那么整个服务不可用。 2.从容量角度考虑,当服务访问量上升,单

    2023-06-14
    106
  • 打造个性化手机保护壳——Python正则表达式实战

    打造个性化手机保护壳——Python正则表达式实战在手机成为我们日常生活中不可或缺的工具的同时,保护它的重要性也逐渐凸显出来。而保护壳恰恰是最廉价、简单的选择之一,更何况定制一个个性化的保护壳也能彰显个人的品味。那么,如何用Python正则表达式来定制个性化手机保护壳呢?下面将从图片选取、文字添加以及图像处理三个方面来阐述。

    2024-02-21
    75
  • 蒋鸿翔:网易数据基础平台建设[通俗易懂]

    蒋鸿翔:网易数据基础平台建设[通俗易懂]导读: 首先简单介绍一下网易杭州研究院情况简介,如下图所示: 我们公司主要从事平台技术开发和建设方面,工作的重点方向主要在解决用户在数据治理中的各种问题,让用户能更高效地管理自己的数据,进而产生更大的

    2023-05-22
    89
  • rocksdb使用_flink写入kafka

    rocksdb使用_flink写入kafkaRocksDB介绍RocksDB简介RocksDB是基于C++语言编写的嵌入式KV存储引擎,它不是一个分布式的DB,而是一个高效、高性能、单点的数据库引擎。它是由Facebook基于Google开源的

    2023-01-26
    105
  • mysql原子性是什么意思_oracle数据库ddl语句

    mysql原子性是什么意思_oracle数据库ddl语句作者:杨奇龙 网名“北在南方”,8 年 DBA 老兵,目前任职于杭州有赞科技 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。 本文来源:转载自公众号-yangyid…

    2023-03-19
    100

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注