首页 > 数据库 >mysql基础_视图

mysql基础_视图

时间:2023-05-20 21:44:05浏览次数:45  
标签:-- 基础 library VALUES 视图 mysql 数据 view

介绍

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 视图的名称 就可以了。

标签:--,基础,library,VALUES,视图,mysql,数据,view
From: https://www.cnblogs.com/malinyan/p/17417848.html

相关文章

  • Mysql-设置连接数
    mysql连接数太多(SequelizeConnectionError:Toomanyconnections)这个就是最常见的问题了。因为我做的这个是前端监控系统,日志上报量比较大,所以经常会遇到连接数不够用的情况。除了你要使用其他技术来缓解并发量,还需要适当的设置mysql数据库的最大连接数。那么怎么增加mysql的最......
  • MySQL联表查询之连接和子查询
    一.连接内连接:内连接一共有两种方式:隐式内连接:select 字段名from 表1,表2 where 条件.....;显式内连接:select 字段名from 表1[inner] join表2 on 连接条件; 内连接就是查询绿色部分,也就是两张或多张表相同的地方最多的就是等值连接外连接:左外连......
  • MySQL的主从复制之异步复制的简单实现
    (文章目录)前言MySQL异步复制是MySQL数据库中的一种数据复制方式,主要用于在多个MySQL实例之间复制数据。与同步复制不同,异步复制并不要求每个MySQL实例都必须立即接收新数据的更新。相反,更新在主MySQL实例上执行后,异步地传输给从MySQL实例,所以数据的同步可能需要花费一定的时间......
  • 报错 libmysqlclient.so.20: cannot open shared object file: No such file or direc
    1背景环境:centos7,c++程序最近在重新部署一个老软件都时候遇到libmysqlclient.so.20:cannotopensharedobjectfile:Nosuchfileordirectory错误,这是提示缺失mysql的连接文件2解决方法错误提示已经很明显了,那就缺啥补啥,找一台装过mysql的机器查找此文件[root@localh......
  • Windows 2007卸载mysql数据库
    文档课题:Windows2007卸载mysql数据库.系统:windows2007专业版数据库:mysql5.5.621、关闭服务--在service服务中关闭MySQL服务,如下所示:2、卸载MySQL服务--在控制面板删除MySQL程序.3、删除相关文件夹--删除mysql在电脑硬盘上所有文件,位置C:\ProgramFiles\MySQL.--删除C:\Pro......
  • 基础
        ......
  • Mysql基础
    查询简单查询查询单个字段select字段名from表名;查询多个字段select字段名1,字段名2,...from表名;查询所有字段select*from表名;注:企业开发中不建议使用*进行所有字段的查询。1、效率低2、可读性差更改查询结果的列名select原列名as新列名fr......
  • 《数据结构与算法》之十大基础排序算法
    一.冒泡排序什么是冒泡排序?冒泡排序是一种交换排序,它的思路就是在待排序的数据中,两两比较相邻元素的大小,看是否满足大小顺序的要求,如果满足则不动,如果不满足则让它们互换。然后继续与下一个相邻元素的比较,一直到一次遍历完成。一次遍历的过程就被成为一次冒泡,一次冒泡的结束至......
  • 同一局域网下,远程连接另一台电脑的Mysql数据库
    博客地址:https://www.cnblogs.com/zylyehuo/参考链接同一局域网,远程连接别人的Mysql数据库用电脑A去远程电脑B的数据库,那我们要先在电脑B上设置一下:step1:打开电脑B的数据库电脑B打开cmd,输入mysql-uroot-p,回车,输入mysql的密码,回车step2:为电脑A创建账号依次......
  • MySQL查询重复数据
    工作中我们经常会遇到查询数据表中重复数据的需求,可以用count、groupby、having实现,将要查重复的字段进行分组,并计算每个字段出现的次数,最后使用having查询出现次数大于0的数据。示例SQL如下:SELECT phone, count(phone)FROM `user`GROUPBY phoneHAVING count(phon......