MySql视图

作者: 技术老男孩 | 来源:发表于2023-02-20 07:33 被阅读0次

一、MySql视图概念:

  • 类似于linux系统的链接文件(ln)
  • 视图只有表头,没有数据,使用视图数据时,会从原来的表中取出对应的数据
  • 创建视图表所生成的/var/lib/mysql/库/表路径中只有ibd文件(存放表头信息)
  • 访问视图,查看到的数据由创建视图时,执行的查询语句决定
  • 一旦视图表中的数据发生改变,原来表中的数据也会发生变化,反之亦然
  • 创建的视图库,也可以创建普通的表

二、MySql视图的优点:

  • 简单:用户不需要知道视图的数据来源,视图中的数据已经实时时过滤好的符合条件的结果集
  • 安全:用户只能看到视图中的数据
  • 数据独立:一旦视图结构确定,可以屏蔽表结构对用户的影响

三、语法格式:

创建视图

create view 库.视图名称 as Select查询命令;
create view 库.视图名称(字段名列表) as Select查询命令;

查看视图

  • 查看当前库里哪些表是视图
    use 库.视图名称;
    show table status where comment="VIEW"\G
  • 查看视图表里的数据是从哪个基表获取的
    show create view 库.视图名称 \G

操作视图

与普通表一样(select insert update delete)

删除视图

drop view 库.视图名称;

四、使用示例:

  • 创建视图
# 创建一个库,用来存放视图表
mysql> create database viewdb1;
# 创建一个基于tarena.user表的视图
mysql> create view viewdb1.vtab1(姓名,用户编号) as select name,uid from tarena.user;
Query OK, 0 rows affected (0.00 sec)
mysql> desc viewdb1.vtab1;
+--------------+----------+------+-----+---------+-------+
| Field        | Type     | Null | Key | Default | Extra |
+--------------+----------+------+-----+---------+-------+
| 姓名         | char(20) | YES  |     | NULL    |       |
| 用户编号     | int(11)  | YES  |     | NULL    |       |
+--------------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)
  • 查看视图
# 进入viewdb1视图表中
mysql> use viewdb1
# 查看当前库里哪些表是视图
mysql> show table status where comment="VIEW" \G
*************************** 1. row ***************************
           Name: vtab
         Engine: NULL
        Version: NULL
     Row_format: NULL
           Rows: NULL
 Avg_row_length: NULL
    Data_length: NULL
Max_data_length: NULL
   Index_length: NULL
      Data_free: NULL
 Auto_increment: NULL
    Create_time: NULL
    Update_time: NULL
     Check_time: NULL
      Collation: NULL
       Checksum: NULL
 Create_options: NULL
        Comment: VIEW
# 查看视图表里的数据是从哪个基表获取的
mysql> show create view viewdb1.vtab1 \G
*************************** 1. row ***************************
                View: vtab1
         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vtab1` AS select `tarena`.`user`.`name` AS `姓名`,`tarena`.`user`.`uid` AS `用户编号` from `tarena`.`user`
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)
  • 删除视图
mysql> drop viewdb1.vtab;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'viewdb1.vtab' at line 1
# 需要加上view才能删除成功
mysql> drop view viewdb1.vtab;
Query OK, 0 rows affected (0.00 sec)

相关文章

  • mysql高级:视图、事务、索引

    # mysql高级:视图、事务、索引 * 视图 * 事务 * 索引 * 账户管理 * 主从 ## 1.视图 动态抽...

  • MySQL--索引

    MySQL索引 查看索引 创建索引 创建唯一索引 创建主键索引 删除索引 删除主键 MySQL视图 创建视图 删除...

  • mysql视图,触发器,存储过程优缺点及应用分析

    mysql视图,触发器,存储过程优缺点及应用分析 视图 mysql使用较少,是sql server和orcale使...

  • 数据库

    一、MySQL中视图与表的区别 1.1 MySQL中视图和表的区别以及联系 视图是已经编译好的SQL语句,是基于S...

  • MySQL数据库基本操作(上)

    史上最简单的 MySQL 教程>>>MySQL运行机制原理&架构>>>触发器视图(上)视图(下)数据备份与还原(上...

  • 14 MySQL 视图

    MySQL 视图 [toc] 视图概述 视图介绍 什么是视图 虚拟表 内容与真实的表相似,有字段有记录 视图并不在...

  • MySQL视图

    什么是视图 视图(View)是一种虚拟存在的表。其内容与真实的表相似,包含一系列带有名称的列和行数据。但是视图...

  • MySQL视图

    mysql视图 视图View是一个虚表,它由一个sql查询来定义,可以当做表使用。与持久表不同的是,视图中的数据没...

  • Mysql 视图

  • MySQL视图

    1、视图简介 -> 视图(view)是存在数据库中虚拟的表(只是结构没有数据,数据来源于其他表)-> 访问视图,相...

网友评论

    本文标题:MySql视图

    本文链接:https://www.haomeiwen.com/subject/kvwvhdtx.html