MySQL 视图

目录

一、视图概述

二、视图的作用和优点

三、视图的使用规则

四、视图操作

1、创建视图

 2、查看视图

1)查看视图基本信息

2)查看视图详细信息

3、修改视图

4、更新视图

5、删除视图


一、视图概述

视图是数据库中的一个虚拟表,同真实表一样,视图包含一系列带有名称的行和列数据。

视图是从一个或者多个表中导出来的,视图的行为与表非常相似,在视图中,用户可以使用SELECT、INSERT、UPDATE、DELETE等语句。从MySQL5.0开始就可以使用视图,视图可以使用户操作方便,而且可以保障数据库系统的安全性。视图其实没有存储任何数据,它只是对表的一个查询,视图的定义保存在数据字典内,创建视图所基于的表叫做‘基表’。

二、视图的作用和优点

作用:控制安全、保存查询数据

优点:提供了灵活一致级别安全性、隐藏了数据的复杂性、简化了用户的SQL指令、通过重命名列,从另一个角度提供数据。

三、视图的使用规则

1、视图名必须有唯一的命名;

2. 在mysql中视图的数量没有限制;

3. 创建视图必须从管理员那里获得必要的权限;

4. 视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图;

5. 在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的 ORDER BY;

6. 视图不能索引,也不能关联触发器或默认值;

7. 视图可以和表同时使用。

四、视图操作

1、创建视图

基本语法

create [or replace] [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]

例如:

mysql> create view view_emp3 as select * from emp3;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3           |
| emp3            |
| view_emp3       |
+-----------------+
3 rows in set (0.00 sec)mysql> select * from view_emp3;
+-----+--------------+------+---------+
| eid | ename        | age  | dept_id |
+-----+--------------+------+---------+
| 1   | 乔峰         |   20 | 1001    |
| 10  | 丁春秋       |   71 | 1005    |
| 2   | 段誉         |   21 | 1001    |
| 3   | 虚竹         |   23 | 1001    |
| 4   | 阿紫         |   18 | 1001    |
| 5   | 扫地僧       |   85 | 1002    |
| 6   | 李秋水       |   33 | 1002    |
| 7   | 鸠摩智       |   50 | 1002    |
| 8   | 天山童姥     |   60 | 1003    |
| 9   | 慕容博       |   58 | 1003    |
+-----+--------------+------+---------+
10 rows in set (0.03 sec)

 2、查看视图

1)查看视图基本信息

语法1

describe 视图名;

例如

mysql> describe view_emp3;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | varchar(20) | NO   |     | NULL    |       |
| ename   | varchar(20) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| dept_id | varchar(20) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

语法2

show table status like '视图名' \G

例如

mysql> show table status like 'view_emp3' \G
*************************** 1. row ***************************Name: view_emp3Engine: NULLVersion: NULLRow_format: NULLRows: NULLAvg_row_length: NULLData_length: NULL
Max_data_length: NULLIndex_length: NULLData_free: NULLAuto_increment: NULLCreate_time: NULLUpdate_time: NULLCheck_time: NULLCollation: NULLChecksum: NULLCreate_options: NULLComment: VIEW
1 row in set (0.00 sec)

2)查看视图详细信息

语法

show create view 视图名;

例如

mysql> show create view view_emp3;
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View      | Create View                                                                                                                                                                                                           | character_set_client | collation_connection |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| view_emp3 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_emp3` AS select `emp3`.`eid` AS `eid`,`emp3`.`ename` AS `ename`,`emp3`.`age` AS `age`,`emp3`.`dept_id` AS `dept_id` from `emp3` | utf8                 | utf8_general_ci      |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)

3、修改视图

语法1

create [or replace] [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]

 语法2

alter [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]

例如

mysql> alter view view_emp3 as select eid,ename from emp3;
Query OK, 0 rows affected (0.01 sec)
#修改后查看表基本信息
mysql> desc view_emp3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| eid   | varchar(20) | NO   |     | NULL    |       |
| ename | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

4、更新视图

语法

#更新数据
update 视图名 set 字段名1=值1,……  [where <条件>];
#插入数据
insert into 视图名 [字段名列表] values (字段1值,字段2值,……) [,(字段1值,字段2值,……)……];
#删除数据
delete from 视图名 [where <条件>];

例如

#更新数据前查看表数据
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename        |
+-----+--------------+
| 1   | 乔峰         |
| 10  | 丁春秋       |
| 2   | 段誉         |
| 3   | 虚竹         |
| 4   | 阿紫         |
| 5   | 扫地僧       |
| 6   | 李秋水       |
| 7   | 鸠摩智       |
| 8   | 天山童姥     |
| 9   | 慕容博       |
+-----+--------------+
10 rows in set (0.00 sec)#修改数据 eid=10 的记录ename为‘张三’
mysql> update view_emp3 set ename='张三' where eid=10;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0#插入一个数据eid=20 ename='李四'的数据
mysql> insert into view_emp3 values (20,'李四');
Query OK, 1 row affected (0.00 sec)#更新数据后进行查看
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename        |
+-----+--------------+
| 1   | 乔峰         |
| 10  | 张三         |
| 2   | 段誉         |
| 20  | 李四         |
| 3   | 虚竹         |
| 4   | 阿紫         |
| 5   | 扫地僧       |
| 6   | 李秋水       |
| 7   | 鸠摩智       |
| 8   | 天山童姥     |
| 9   | 慕容博       |
+-----+--------------+#删除eid=20的数据
mysql> delete from view_emp3 where eid=20;
Query OK, 1 row affected (0.00 sec)#删除后再进行查看
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename        |
+-----+--------------+
| 1   | 乔峰         |
| 10  | 张三         |
| 2   | 段誉         |
| 3   | 虚竹         |
| 4   | 阿紫         |
| 5   | 扫地僧       |
| 6   | 李秋水       |
| 7   | 鸠摩智       |
| 8   | 天山童姥     |
| 9   | 慕容博       |
+-----+--------------+
10 rows in set (0.00 sec)

5、删除视图

语法

drop view [if exists] 视图视 [,视图名] …… [restrict | cascade];

例如

#删除前先查看存在的表
mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3           |
| emp3            |
| view_emp3       |
+-----------------+
3 rows in set (0.00 sec)#删除视图view_emp3
mysql> drop view view_emp3;
Query OK, 0 rows affected (0.00 sec)#删除后再进行查看
mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3           |
| emp3            |
+-----------------+
2 rows in set (0.00 sec)

参考书籍:MySQL5.7从入门到精通-清华大学出版社 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55578.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HRS--人力资源系统(Springboot+vue)--打基础升级--(六)分页查询 + 重置按钮

一&#xff1a;先弄个简单的重置按钮 1.界面设计就放在搜索框同一列的位置 2. 在点击重置按钮时&#xff0c;清空搜索框内的内容&#xff0c;同时触发一次无条件查询(这个写法有bug&#xff0c;下面会有说明) 二&#xff1a;做分页 在MyBatis中&#xff0c;有多种方法可以实现分…

【LeetCode】416.分割等和子集

题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和 [11] 。 示…

Vue2-快速搭建pc端后台管理系统

一.推荐二次开发框架 vue-element-admin Star(84k)vue-antd-admin Star(3.5k) 二.vue-element-admin 官网链接:https://panjiachen.github.io/vue-element-admin-site/zh/ 我这里搭建的是基础模版vue-admin-template(推荐) # 克隆项目 git clone https://github.com/PanJi…

VBJSON报错:缺少:语句结束

项目中使用JSON库VBJSON时报错&#xff1a; 编译错误&#xff1a;缺少&#xff1a;语句结束 cJSONScript和cStringBuilder报相同的错误&#xff0c;都在第一行: VERSION 1.0 CLASS 研究了半天没啥结果&#xff0c;之前使用这个库的时候没有什么问题&#xff0c;所以判定是当前…

MySQL 游标

文章目录 1.游标是什么2.MySQL 游标3.定义游标4.打开游标5.提取数据6.关闭游标参考文献 1.游标是什么 游标&#xff08;Cursor&#xff09;是一种用于处理查询结果集的数据库对象&#xff0c;它允许开发者按照特定的顺序逐行遍历查询结果集中的数据。游标通常用于在数据库中执…

mysql 字符集、比较规则, 比较规则底层逻辑

字符集的级别 show variables like ‘%charecter%’&#xff1b; character_set_server 服务器级别 一般在 5.7&#xff1a; C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 8.0&#xff1a; C:\ProgramData\MySQL\MySQL Server 5.7\my.ini Linux 系列 vim /etc/my.cnf chara…

基于Spark框架的新闻推荐系统的设计与实现

1.摘要 离线ALS算法,以及基于内容的推荐算法进行结合.实时计算部分,使用Spark平台上的Spark Streaming流处理技术,处理日志收集框架Flume收集的日志信息. 2.需要的技术 jieba分词工具 LDA分词处理技术 LDA(Latent Dirichlet Allocatio

Debezium系列之:深入理解Debezium Server Operator和实际应用Debezium Server Operator案例详解

Debezium系列之:深入理解Debezium Server Operator和实际应用Debezium Server Operator案例详解 一、认识Debezium Server Operator二、深入理解Debezium Server和Debezium Server实际应用案例详解三、Debezium Server Operator安装步骤四、Debezium Operator使用案例五、post…

P5739 【深基7.例7】计算阶乘

题目描述 求 n ! n! n!&#xff0c;也就是 1 2 3 ⋯ n 1\times2\times3\dots\times n 123⋯n。 挑战&#xff1a;尝试不使用循环语句&#xff08;for、while&#xff09;完成这个任务。 输入格式 第一行输入一个正整数 n n n。 输出格式 输出一个正整数&#xff0c…

解决:Docker Desktop Unexpected WSL error

1、Windows中WSL2&#xff08;子系统&#xff09;安装前提条件 版本&#xff1a;win10专业版 对于 x64 系统&#xff1a;版本 1903 或更高版本&#xff0c;采用 内部版本 18362 或更高版本。 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本 2…

【广州华锐互动】VR高校虚拟实验教学平台提供丰富的资源支持,提高教学效果

随着科技的不断进步&#xff0c;虚拟现实(VR)技术已经逐渐渗透到各个领域&#xff0c;其中包括教育。 广州华锐互动利用VR虚拟现实技术打造的VR高校虚拟实验教学平台&#xff0c;是一种新型的教学工具&#xff0c;它提供了一个在线的教学资源管理平台&#xff0c;包含教学平台、…

电阻器件的分类

电阻器的种类碳膜电阻膜式电阻器中的一种。气态碳氢化合物在高温和真空中分解&#xff0c;碳沉积在瓷棒或者瓷管上&#xff0c;形成一层结晶碳膜。改变碳膜厚度和用刻槽的方式变更碳膜的长度可以得到不同的阻值。碳膜电阻成本较低&#xff0c;电性能和稳定性较差&#xff0c;一…

java从头记-public、protected、default、private

当定义一个类及其成员时&#xff0c;可以使用不同的访问修饰符来控制类成员的可见性&#xff0c;从而限定它们的作用域。以下是详细解释每个访问修饰符的作用&#xff1a; public 访问修饰符: public 成员可以被任何其他类访问&#xff0c;无论是否在同一个包内。在不同的包内&…

【力扣】209. 长度最小的子数组 <滑动窗口>

【力扣】209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&a…

3种CSS实现背景图片全屏铺满自适应的方式

01 margin:0px; background: url(images/bg.png) no-repeat; background-size:100% 100%; background-attachment:fixed; url(images/beijing.png)——图片路径的位置&#xff1b; no-repeat—— 图片不重复&#xff1b; center 0px——center是距离页面左边的定位&#xf…

【【萌新的STM32学习-18 中断的基本概念3】】

萌新的STM32学习-18 中断的基本概念3 EXTI和IO映射的关系 AFIO简介&#xff08;F1&#xff09; Alternate Function IO 复用功能IO 主要用于重映射和外部中断映射配置 1.调试IO配置 来自AFIO_MAPR[26:24] , 配置JTAG/SWD的开关状态 &#xff08;这个我们并不用太过深刻的关注&…

Flutter 状态管理引子

1、为了更好地了解状态管理&#xff0c;先看看什么是状态。 在类似Flutter这样的响应式编程框架中&#xff0c;我们可以认为U相关的开发就是对数据进行封装&#xff0c;将之转换为具体的U1布局或者组件。借用Flutter官网的一张图&#xff0c;可以把我们在第二部分做的所有开发…

Go并发可视化解释 - Select语句

昨天&#xff0c;我发布了一篇文章&#xff0c;用可视化的方式解释了Golang中通道&#xff08;Channel&#xff09;的工作原理。如果你对通道的理解仍然存在困难&#xff0c;最好呢请在阅读本文之前先查看那篇文章。作为一个快速的复习&#xff1a;Partier、Candier 和 Stringe…

启动metastore服务报错

启动Metastore的时候报错&#xff1a; 简略的报错信息&#xff1a; MetaException(message:Error creating transactional connection factory)Caused by: MetaException(message:Error creating transactional connection factory)Caused by: javax.jdo.JDOFatalInternalExce…