介绍

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

优点

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

  2. 简化数据操作

  3. 提高数据的安全性

  4. 共享所需数据

  5. 更改数据格式

  6. 重用 SQL 语句

语法

创建视图

create view library2_view as select * from library2;

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

删除视图

drop view library2_view;

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

实操

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

准备数据:

先在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;

小插曲

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

set character_set_results=GBK;

创建视图

create view library_view as select * from library;

查询

select * from library_view;

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

插入

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

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

 set names gbk;

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

修改

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

删除

delete from library_view;

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

在实际开发中的作用

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

mysql基础_视图的更多相关文章

  1. MySQL基础之 视图

    视图 视图就是从一个表或多个表导出来的一张虚拟的表.通过这个窗口可以看到系统专门提供的数据,方便用户操作的同时增加了安全性. 视图的特点: 1.视图的列可以来自于不同的表. 2.视图是由实际存在的表创 ...

  2. mysql基础之视图、事务、索引、外键

    一.视图 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用 ...

  3. Mysql基础知识--视图

    一.视图的操作 为了提高SQL语句的复用性和操作表的安全性,,MySQL数据库管理系统5提供了视图特性. 视图:本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的行和列数据.但是视图并不在 ...

  4. MySQL基础之视图

    关于视图 视图是虚表,其中并不存在数据,只是多个表的组成 使用视图的优势 视图可以代替复杂的查询SQL语句,可以事先将不同表的多个数据组织起来 提高权限控制管理,能够将权限限制为行级管理,更具有安全性 ...

  5. MySQL 基础七 视图

    -- 查看表 SELECT * FROM student; SHOW CREATE TABLE student; -- 创建视图 CREATE VIEW v_student1 AS SELECT *F ...

  6. MySQL基础_索引

    MySQL 索引(入门): 一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些 ...

  7. mysql基础_事务

    定义 一个事务其实就是一个完整的业务逻辑,是一个最小的工作单元,不可再分,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败. 例如:王五向赵六的账户上转 ...

  8. mysql基础_操作文件中的内容

    1.插入数据: insert into t1(id,name) values(1,'alex'); #向t1表中插入id为1,name为'alex'的一条数据 2.删除: delete from t1 ...

  9. mysql基础_数据类型

    1.数字 (1)tinyint(小整数值) 范围:有符号(-128,127) 无符号(0.255) (2)int(大整数值) 范围:有符号  (-2 147 483 648,2 147 483 647 ...

  10. mysql基础_操作数据库以及表

    1.数据库的操作 create database 数据库名:#一般创建方式 create database 数据库名 show databases;#查看所有数据 drop database 数据库名 ...

随机推荐

  1. archlinux基本安装、以及图形化界面

    磁盘刻录 在windows下载磁盘刻录工具 rufus,官网:https://rufus.ie/zh/ 中文界面,实在不是可以搜索一下磁盘刻录教程 在linux下使用balena-etcher,官网: ...

  2. 如何建设私有云原生 Serverless 平台

    随着云计算的普及,越来越多的企业开始将业务应用迁移到云上.然而,如何构建一套完整的云原生 Serverless 平台,依然是一个需要考虑的问题. Serverless的发展趋势 云计算行业从 IaaS ...

  3. DNS BIND之dnssec安全

    公司一大早域名解析出问题了,网抓项目都无法抓取到进销存数据. 查询后发现是运维周末重启了dns服务. 网上找到的解决方法: 在BIND的配置文件(/etc/named.conf)中打开DNSSEC选项 ...

  4. Maven学习笔记2:Maven核心概念

    一.Maven工程约定目录结构 (说是约定,既是说它是大多数人都遵守的规范,但不是强制的) 一个小例子,熟悉Maven目录结构 这是官网给的例子,可以复制它的pom.xml来修改 第一步:建立项目 按 ...

  5. 树状分级框架UI实例

    树状分级框架UI实例:(内容参考https://zhuanlan.zhihu.com/p/108485875) #coding:utf8 #!/usr/bin/env python #@author: ...

  6. [C++STL教程]2.queue队列容器,小白都能看懂的讲解!

    在学习数据结构的时候我们会听到这样一个词:队列. 本文将介绍STL中的队列:queue 本文仅从入门和实用角度介绍queue的用法,主要针对初学者或竞赛向.如有不严谨的地方欢迎指正!本文长度约2000 ...

  7. kubernetes(k8s)命名空间一直Terminating

    root@hello:~# kubectl get ns NAME STATUS AGE auth Terminating 34m default Active 23h kube-node-lease ...

  8. python入门教程之十八正则表达式

    re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. 函数语法: re.match(pattern, string, ...

  9. 正则表达式、datetime

    1.正则表达式就是用来匹配字符串的 2.常用\d表示一个数字,\w表示数字或者字母,'.'表示任意字符 3.如果要匹配边长的字符串,使用*表示任意个字符,+表示至少一个字符,?表示0个或者1个字符,{ ...

  10. 【Vue2.x源码系列06】计算属性computed原理

    上一章 Vue2异步更新和nextTick原理,我们介绍了 JavaScript 执行机制是什么?nextTick源码是如何实现的?以及Vue是如何异步更新渲染的? 本章目标 计算属性是如何实现的? ...