• mysql基础_视图


    介绍

    MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。

    优点

    1. 定制用户数据,聚焦特定的数据

    2. 简化数据操作

    3. 提高数据的安全性

    4. 共享所需数据

    5. 更改数据格式

    6. 重用 SQL 语句

    语法

    创建视图

    create view library2_view as select * from library2;
    

    其中library2_view是视图名称,,使用的时候自己起名字,as后面的语句是DQL语句。

    image-20230520123555293

    删除视图

    drop view library2_view;
    

    其中library2_view是视图名称,使用的时候自己起名字

    image-20230520123604207

    实操

    对视图的操作会影响到原来表中的数据,看一下下面的例子,可以打开命令行跟着敲,印象会更深刻。

    准备数据:

    先在mysql中创建一个数据库,复制下面的命令,在自己电脑上的某个位置创建sql文件,粘贴命令,使用**source **创建表结构和数据

    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for library
    -- ----------------------------
    DROP TABLE IF EXISTS `library`;
    CREATE TABLE `library`  (
      `id` int(0) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
      `description` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;
    
    -- ----------------------------
    -- Records of library
    -- ----------------------------
    INSERT INTO `library` VALUES (1, '南图', '啊啊啊啊');
    INSERT INTO `library` VALUES (2, '北图', '啊啊啊啊');
    INSERT INTO `library` VALUES (3, '教师之家', '啊啊啊啊');
    INSERT INTO `library` VALUES (4, '什么', '什么鬼');
    INSERT INTO `library` VALUES (5, '什么', '什么鬼');
    INSERT INTO `library` VALUES (6, '什么', '什么鬼');
    
    SET FOREIGN_KEY_CHECKS = 1;
    

    image-20230520144809869

    小插曲

    如果发现导入表后查看数据时,数据是乱码,而用navicat显示时却发现正常,输入下面命令即可解决。

    set character_set_results=GBK;
    

    image-20230520203808334

    创建视图

    create view library_view as select * from library;
    

    image-20230520204754612

    查询

    select * from library_view;
    

    发现跟原来表中的数据一样。

    image-20230520204854825

    插入

    insert into library_view(id,name,description) values(7,'你是','你是谁');
    

    插入中文是可能会报1366错误,这是因为有中文,直接使用下面的命令,再次插入发现成功。

     set names gbk;
    

    image-20230520211012060

    image-20230520210952879

    再次查看原来表中的数据,发现插入成功。

    image-20230520211240762

    修改

     update library_view set description = '你' where name = '什么';
    

    image-20230520211600998

    删除

    delete from library_view;
    

    发现原来表中的数据全部清空

    image-20230520211933826

    在实际开发中的作用

    视图大多在于一些复杂的sql语句身上,就好比关联表定义表的别名,然后方便去关联条件。如权限管理,用户需要关联角色、权限。那么写sql就较长看起来也复杂一点,那使用视图就可以方便去操作,直接调用视图即可查看。再比如采购人员,可能需要一些与其有关的数据,而与他无关的数据,对他没有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视图,以后他在查询数据时,只需要使用 select * from 视图的名称 就可以了。

  • 相关阅读:
    3D异常检测论文笔记 | Shape-Guided Dual-Memory Learning for 3D Anomaly Detection
    SpringBoot-集成Kafka详解
    【毕业设计】67-基于单片机的三相电压型SPWM逆变器控制设计及应用(仿真、原理图、源代码、低重复参考文档、答辩PPT、英文文献)
    Oracle19c安装图文教程
    CocosCreator3.8研究笔记(八)CocosCreator 节点和组件的使用
    Node.js | express 框架开篇
    我和EarthSDK Cesium那点事(零)
    macOS 挂载 windows 共享目录
    Maven基础简介
    搭建 Sentry 服务
  • 原文地址:https://www.cnblogs.com/malinyan/p/17417848.html