mysql基础_视图
介绍
MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的。
优点
定制用户数据,聚焦特定的数据
简化数据操作
提高数据的安全性
共享所需数据
更改数据格式
重用 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基础_视图的更多相关文章
- MySQL基础之 视图
视图 视图就是从一个表或多个表导出来的一张虚拟的表.通过这个窗口可以看到系统专门提供的数据,方便用户操作的同时增加了安全性. 视图的特点: 1.视图的列可以来自于不同的表. 2.视图是由实际存在的表创 ...
- mysql基础之视图、事务、索引、外键
一.视图 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用 ...
- Mysql基础知识--视图
一.视图的操作 为了提高SQL语句的复用性和操作表的安全性,,MySQL数据库管理系统5提供了视图特性. 视图:本质上是一种虚拟表,其内容与真实的表相似,包含一系列带有名称的行和列数据.但是视图并不在 ...
- MySQL基础之视图
关于视图 视图是虚表,其中并不存在数据,只是多个表的组成 使用视图的优势 视图可以代替复杂的查询SQL语句,可以事先将不同表的多个数据组织起来 提高权限控制管理,能够将权限限制为行级管理,更具有安全性 ...
- MySQL 基础七 视图
-- 查看表 SELECT * FROM student; SHOW CREATE TABLE student; -- 创建视图 CREATE VIEW v_student1 AS SELECT *F ...
- MySQL基础_索引
MySQL 索引(入门): 一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些 ...
- mysql基础_事务
定义 一个事务其实就是一个完整的业务逻辑,是一个最小的工作单元,不可再分,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败. 例如:王五向赵六的账户上转 ...
- mysql基础_操作文件中的内容
1.插入数据: insert into t1(id,name) values(1,'alex'); #向t1表中插入id为1,name为'alex'的一条数据 2.删除: delete from t1 ...
- mysql基础_数据类型
1.数字 (1)tinyint(小整数值) 范围:有符号(-128,127) 无符号(0.255) (2)int(大整数值) 范围:有符号 (-2 147 483 648,2 147 483 647 ...
- mysql基础_操作数据库以及表
1.数据库的操作 create database 数据库名:#一般创建方式 create database 数据库名 show databases;#查看所有数据 drop database 数据库名 ...
随机推荐
- archlinux基本安装、以及图形化界面
磁盘刻录 在windows下载磁盘刻录工具 rufus,官网:https://rufus.ie/zh/ 中文界面,实在不是可以搜索一下磁盘刻录教程 在linux下使用balena-etcher,官网: ...
- 如何建设私有云原生 Serverless 平台
随着云计算的普及,越来越多的企业开始将业务应用迁移到云上.然而,如何构建一套完整的云原生 Serverless 平台,依然是一个需要考虑的问题. Serverless的发展趋势 云计算行业从 IaaS ...
- DNS BIND之dnssec安全
公司一大早域名解析出问题了,网抓项目都无法抓取到进销存数据. 查询后发现是运维周末重启了dns服务. 网上找到的解决方法: 在BIND的配置文件(/etc/named.conf)中打开DNSSEC选项 ...
- Maven学习笔记2:Maven核心概念
一.Maven工程约定目录结构 (说是约定,既是说它是大多数人都遵守的规范,但不是强制的) 一个小例子,熟悉Maven目录结构 这是官网给的例子,可以复制它的pom.xml来修改 第一步:建立项目 按 ...
- 树状分级框架UI实例
树状分级框架UI实例:(内容参考https://zhuanlan.zhihu.com/p/108485875) #coding:utf8 #!/usr/bin/env python #@author: ...
- [C++STL教程]2.queue队列容器,小白都能看懂的讲解!
在学习数据结构的时候我们会听到这样一个词:队列. 本文将介绍STL中的队列:queue 本文仅从入门和实用角度介绍queue的用法,主要针对初学者或竞赛向.如有不严谨的地方欢迎指正!本文长度约2000 ...
- kubernetes(k8s)命名空间一直Terminating
root@hello:~# kubectl get ns NAME STATUS AGE auth Terminating 34m default Active 23h kube-node-lease ...
- python入门教程之十八正则表达式
re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. 函数语法: re.match(pattern, string, ...
- 正则表达式、datetime
1.正则表达式就是用来匹配字符串的 2.常用\d表示一个数字,\w表示数字或者字母,'.'表示任意字符 3.如果要匹配边长的字符串,使用*表示任意个字符,+表示至少一个字符,?表示0个或者1个字符,{ ...
- 【Vue2.x源码系列06】计算属性computed原理
上一章 Vue2异步更新和nextTick原理,我们介绍了 JavaScript 执行机制是什么?nextTick源码是如何实现的?以及Vue是如何异步更新渲染的? 本章目标 计算属性是如何实现的? ...