MySQL视图使用详解

mysql视图使用总结 一、什么是视图         视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。简单的来说视图是由其定义结果组成的表; 例子:定一班级表class(ID,name) 学生表 student(id,clas 阅读详情

1.       视图的定义

视图就是从一个或多个表中,导出来的表,是一个虚拟存在的表。视图就像一个窗口(数据展示的窗口),通过这个窗口,可以看到系统专门提供的数据(也可以查看到数据表的全部数据),使用视图就可以不用看到数据表中的所有数据,而是只想得到所需的数据。

在数据库中,只存放了视图的定义,并没有存放视图的数据,数据还是存储在原来的表里,视图的数据是依赖原来表中的数据的,所以原来的表的数据发生了改变,那么显示的视图的数据也会跟着改变,例如向数据表中插入数据,那么在查看视图的时候,会发现视图中也被插入了同样的数据。

视图在外观上和表很相似,但是它不需要实际上的物理存储,视图实际上是由预定义的查询形式的表所组成的。

视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建,当我们创建一个视图的时候,实际上是在数据库里执行了SELECT语句,SELECT语句包含了字段名称、函数、运算符,来给用户显示数据。

在数据库中,视图的使用方式与表的使用方式一致,我们可以像操作表一样去操作视图,或者去获取数据。

一般来说,我们只是利用视图来查询数据,不会通过视图来操作数据。

1.1    基于视图的视图

基于已存在的视图,还可以再创建视图。

1.2    视图和表的区别

视图和表的主要区别,就是看是否占用物理空间。

 

1.3 视图的作用

(1)选取有用的信息,筛选的作用

(2)操作简单化,所见即所需,视图看到的信息,就是需要了解的信息

(3)增加数据的安全性:查询或者修改指定的数据,非指定的数据是触碰不到的。

(4)提高逻辑的独立性

1.4 视图的特点

(1)简单性(简单化):可以展现特定的数据,而无需重复设置查询条件,简化操作。

(2)安全性:视图可以只展现数据表的一部分数据,对于我们不希望让用户看到全部数据,只希望用户看到部分数据的时候,可以选择使用视图。

(3)逻辑独立性:当真实的数据表结构发生了变化,可以通过视图来屏蔽真实表的结构变化,从而实现了视图的逻辑独立性。

 

视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:

 

①如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。

 

②如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。

 

③如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。

 

④如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。

 

2.       创建视图

CREATE VIEW 视图名称[(column_list)] AS SELECT 语句

例:

CREATE VIEW  province_view AS SELECT * FROM province;

SELECT * FROM province_view;

说明:创建的视图表province_view与province表一模一样。

 

2.1    指定视图显示的字段:

CREATE VIEW province_view1(id,name) AS SELECT id,pro_name FROM province;

mysql> SELECT * FROM province_view1;

+-----+------+

| id  | name |

+-----+------+

|   1 | 北京 |

|   2 | 上海 |

|   3 | 辽宁 |

|   4 | 天津 |

|   5 | 广东 |

|   6 | 福建 |

| 100 | 吉林 |

+-----+------+

7 rows in set (0.00 sec)

2.2 创建基于两个表的视图:

使用WHERE连接两个表:

CREATE VIEW v3(name,score) AS SELECT s_name,score FROM student,score

WHERE student.s_id=score.s_id

and score.c_id='BY';

 

2.3 视图的算法

ALGORITHM=

UNDEFINED:MYSQL自动选择要使用的算法

MERGE:使用视图的语句与视图的定义是合并在一起的,视图定义的某一部分取代语句对应的部分

TEMPTABLE:临时表,视图的结果存入临时表,然后使用临时表来执行语句

 

WHIT [CASCADED|LOCAL] CHECK OPTION:表示更新视图的时候,要保证在视图的权限范围之内:

CASCADED 默认值,表示更新视图的时候,要满足视图和表的相关条件

LOCAL:表示更新视图的时候,要满足该视图定义的一个条件即可

 

说明:使用WHIT [CASCADED|LOCAL] CHECK OPTION选项可以保证数据的安全性

 

3.创建完整的视图

CREATE ALGORITHM VIEW 视图名称[(column_list)] AS SELECT 语句

WITH  [CASCADED|LOCAL] CHECK OPTION

 

语法提示命令:? CREATE VIEW

 

Name: 'CREATE VIEW'

Description:

Syntax:

CREATE

    [OR REPLACE]

    [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

    [DEFINER = { user | CURRENT_USER }]

    [SQL SECURITY { DEFINER | INVOKER }]

    VIEW view_name [(column_list)]

    AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

 

例子:

CREATE ALGORITHM=UNDEFINED VIEW user_view3(id,username,age) AS SELECT

id,username,age FROM users2 WITH CASCADED CHECK OPTION;

 

4. 查看视图

查看已创建好的视图:

4.1 查看已创建好的视图的方法:

DESC

DESCRIBE

SHOW COLUMNS FROM 视图名称

SHOW TABLE STATUS LIKE

SHOW CREATE VIEW

4.1.1 DESC

mysql> desc user_view3;

+----------+----------------------+------+-----+---------+-------+

| Field    | Type                 | Null | Key | Default | Extra |

+----------+----------------------+------+-----+---------+-------+

| id       | smallint(5) unsigned | NO   |     | 0       |       |

| username | varchar(20)          | NO   |     | NULL    |       |

| age      | tinyint(3) unsigned  | YES  |     | NULL    |       |

+----------+----------------------+------+-----+---------+-------+

3 rows in set (0.02 sec)

 

4.1.2 DESCRIBE

mysql> DESCRIBE user_view3;

+----------+----------------------+------+-----+---------+-------+

| Field    | Type                 | Null | Key | Default | Extra |

+----------+----------------------+------+-----+---------+-------+

| id       | smallint(5) unsigned | NO   |     | 0       |       |

| username | varchar(20)          | NO   |     | NULL    |       |

| age      | tinyint(3) unsigned  | YES  |     | NULL    |       |

+----------+----------------------+------+-----+---------+-------+

3 rows in set (0.01 sec)

 

4.1.3 SHOW COLUMNS FROM 视图名称

mysql> SHOW COLUMNS FROM user_view3;

+----------+----------------------+------+-----+---------+-------+

| Field    | Type                 | Null | Key | Default | Extra |

+----------+----------------------+------+-----+---------+-------+

| id       | smallint(5) unsigned | NO   |     | 0       |       |

| username | varchar(20)          | NO   |     | NULL    |       |

| age      | tinyint(3) unsigned  | YES  |     | NULL    |       |

+----------+----------------------+------+-----+---------+-------+

3 rows in set (0.02 sec)

 

4.2 查看视图的基本信息(也可查看原表的信息):

SHOW TABLE STATUS LIKE ‘视图名称’;

 

mysql> SHOW TABLE STATUS LIKE 'province_view'\G;

*************************** 1. row ***************************

           Name: province_view

         Engine: NULL

        Version: NULL

     Row_format: NULL

           Rows: NULL

 Avg_row_length: NULL

    Data_length: NULL

Max_data_length: NULL

   Index_length: NULL

      Data_free: NULL

 Auto_increment: NULL

    Create_time: NULL

    Update_time: NULL

     Check_time: NULL

      Collation: NULL

       Checksum: NULL

 Create_options: NULL

        Comment: VIEW

1 row in set (0.00 sec)

 

说明:

(1)       可以从Comment: VIEW看出它是一个视图,如果是数据表,Comment选项的值为空。

(2)       因为视图是虚拟出的一张表,所以很多选项的值都是NULL,如果SHOW TABLE STATUS LIKE ‘table_name’; 那么这些选项将会显示出数值。

 

4.3 查看指定视图的创建信息(专门查看视图信息的命令)

 

SHOW CREATE VIEW 视图名称;

 

mysql> SHOW CREATE VIEW user_view3\G;

*************************** 1. row ***************************

                View: user_view3

         Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `user_view3` AS select `users2`.`id` AS `id`,`users2`.`username` AS `username`,`users2`.`age` AS `age` from `users2` WITH CASCADED CHECK OPTION

character_set_client: gbk

collation_connection: gbk_chinese_ci

1 row in set (0.00 sec)

 

4.4 视图数据的存储位置

 

mysql> SELECT * FROM information_schema.views\G

 

所有的视图都保存在了information_schema.views中。

 

4.5.修改视图:

 

如果视图不存在,则创建视图,如果视图存在,则修改视图:

(1)CREATE OR REPLACE VIEW 视图名称[(column_list)] AS SELECT 语句

(2)ALTER VIEW视图名称[(column_list)] AS SELECT 语句

 

4.5.1 CREATE OR REPLACE VIEW 视图名称[(column_list)] AS SELECT 语句

(1)例子:

CREATE OR REPLACE VIEW user_view3(id,username) AS SELECT id,username FROM users2;

 

(2)如果输入的视图名称不存在,这MYSQL自动创建该视图:

 

(3)修改视图:

CREATE OR REPLACE ALOGRITHM=TEMPTABLE VIEW user_view4(id) AS SELECT id FROM

users2;

 

(4)修改基于两个表的视图,两个表使用WHERE进行连接:

CREATE OR REPLACE VIEW v3 AS SELECT s_name,s_sex,score FROM student,score

WHERE student.s_id=score.s_id AND score.c_id='BY';

 

4.5.2 ALTER

ALTER VIEW 视图名称[(column_list)] AS SELECT 语句

 

ALTER VIEW user_view4(id,username,age) AS SELECT id,username,age FROM users2;

 

修改基于两个表的视图:

ALTER VIEW v3 AS SELECT s_name,score FROM student,score

WHERE student.s_id=score.s_id

AND score.c_id='TC';

 

5.更新视图

所谓更新视图,其实就是通过视图,对数据进行插入,修改和删除的操作。

5.1 修改视图的数据

注意:修改视图的数据,将直接修改数据表(即原表)的真实数据。

UPDATE v3 SET score=100 WHERE s_name='倪妮';

5.2 通过视图插入、删除数据的原理与5.1一致,均与数据表的操作语法一致

 

6.删除视图:

删除视图,不会影响原表的数据,但是删除视图的数据,则会影响到原表。

 

6.1 DROP VIEW 视图名称;

 

DROP VIEW 视图名称;

DROP VIEW user_view4;

 

6.2 DROP VIEW IF EXISTS

在删除已不存在的视图的时候,不进行任何操作:

DROP VIEW  IF EXISTS视图名称;

例:

DROP VIEW IF EXISTS v1;

 

6.3 删除多个视图

 

DROP VIEW IF EXISTS v2,v3;

图形化工具的使用

1.图形化工具:

MYSQL Workbench

PHPMyAdmin

Navicat for MySQL:是一个客户端的软件,需要安装客户端的软件才能使用。

MySQL-Front

 

2.PHPMyAdmin

PHPMYADMIN是以Web-Base的方式,架构在网站主机上的MYSQL数据库管理工具,它是使用了WEB接口管理MYSQL数据库。

通过PHPMyAdmin可以完全地对数据库进行操作。

Mysql视图更新详解 MySQL视图更新操作示例解析 摘要:本文通过四个典型示例分析MySQL视图的可更新性。基础视图(含主键且单表)支持更新、删除和插入操作,而缺少关键列、含JOIN或多表关联的视图则存在操作限制。聚合视图(如GROUP BY)因涉及计算值而无法直接修改。关键点在于:视图必须能准确定位基表行(含主键或唯一列)且仅关联单个基表才可更新。多表视图和聚合视图由于数据映射关系复杂或被计算产生,MySQL无法保证操作的安全性和确定性。 阅读详情

相关推荐

MySQL ALGORITHM = UNDEFINED/MERGE/TEMPORTARY 详解视图的三种算法与优化方案

CREATE [ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED}] VIEW [database_name].[view_name] AS [SELECT statement] 创建视图语句 create view 可选项 ALGORITHM 子句表示视图处理算法 共三个参数: MERGE | TEMPTABLE | UNDEFINED 以下为官方文档解释: For MERGE, the text of a statement that re.

zhangyongze_z的博客 2万+

mysql创建视图注意事项

可以使用 CREATE VIEW 语句来创建视图。 语法格式如下: CREATE VIEW <视图名> AS <SELECT语句> 语法说明如下。 <视图名>:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。 <SELECT语句>:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。 如果通过以下语句创建视图 CREATE ALGORITHM = UNDEFINED DEFINER = `xx`@`localhost`

帅的博客 3957

NAO V6 开发环境的配置(附所有文件)

NAO V6开发环境配置前言环境Robot SettingsChoregraphe 2.8.5.10python2.7+naoqi2.8+opencv4.1.0putty与FileZilla 前言 学校的机器人摸索了一段时间,之前摸爬滚打探索环境,之前没接触这类机器人可能会非常艰辛,希望能给需要的人一些帮助。Nao与pepper通用 环境 win10(x64)+naoqi2.8 1、Robot S...

wbhhello的博客 3218

MySQL常见命令之表操作(三)

1. 查看当前选择的数据库     show tables;(若此数据库中无表,则显示:Empty set)     2. 创建表     格式: create table 表名(列及类型);     说明:auto_increment 表明自增长    primary key 主键   not null 表示不为空     示例一: create table student(id i...

hanxia159357的博客 1741

IAR9.X半主模式异常解析:为何硬件复位后仍陷调试状态?

本文深入解析了IAR 9.X半主模式异常问题,探讨了硬件复位后MCU仍陷调试状态的原因及解决方案。通过分析半主模式工作机制,提供了禁用半主功能、重写低级IO函数等具体方法,并给出了版本兼容性处理和调试与量产配置分离的优化建议,帮助开发者有效解决复位异常问题。

oo7890的博客 604

【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知

本教程介绍如何使用魔搭社区GPU资源和LLaMA-Factory工具进行大模型微调。主要内容包括环境配置、工具安装、模型训练和效果评估。通过LoRA算法进行自我认知微调,详细说明了从数据准备到模型导出的完整流程,并提供了参数调优和显存管理等实用技巧,帮助读者快速掌握大模型定制化训练方法。

LChuck的博客 2924

mysql:用SHOW COLUMNS FROM显示一个表的列信息

mysql:用SHOW COLUMNS FROM显示一个表的列信息

听海边涛声 1789

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 792

【MySQL进阶】MySQL视图详解

小杨带你学MySQL进阶内容视图的相关知识,一文让你掌握视图的概述,视图的增删查改操作,视图数据的增删查改操作,视图的级联检查和非级联检查以及视图的优缺点。

小杨的博客 5430

UG二次开发避坑指南:如何正确配置Python环境让NXOpen脚本跑起来?

本文详细介绍了UG/NX二次开发中Python环境配置的全流程与NXOpen脚本调试技巧,帮助开发者避开常见陷阱。从NXOpen架构解析到Python解释器版本匹配,再到环境变量设置与路径问题处理,提供了一套经过验证的配置方案,确保脚本顺利运行。

weixin_33859135的博客 447

别再瞎试了!手把手教你用DC NXT的compile_ultra命令搞定物理综合(附完整脚本)

本文详细介绍了如何使用DC NXT的compile_ultra命令进行物理综合,包括环境配置、设计库创建、RTL加载、物理约束加载等关键步骤。通过实战示例和完整脚本,帮助工程师快速掌握TOPO模式下的物理综合流程,提升设计效率。

weixin_30413765的博客 294

MySQL —— 视图

介绍MySQL 视图的概念,创建,使用,删除

熵减玩家 5329

安卓ai自动化脚本 Yyds.Auto实现 示例 纯ai图像识别自动点击脚本

纯ai识别实现自动化脚本

专注安卓前沿科技 4779

【MySQL】视图详解

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的 通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上

m0_72532428的博客 1506

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

QGis二次开发 —— 5.2、基于qgis搭建离线地图服务并开发雷达扫描、无人机飞行跟踪等(附:源码及工程)

221

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL-视图 详解

MySQL视图是一种基于一个或多个数据表的查询结果集所创建的虚拟表,其本质是存储一条预定义的SQL查询语句而非实际数据。视图可以简化复杂查询、提高安全性,并实现数据抽象。摘要涵盖视图的基本概念、创建语法和实际应用示例,包括单表视图、多表视图和基于视图创建视图三种方式,以及ALGORITHM参数的MERGE、TEMPTABLE和UNDEFINED三种处理机制。视图的增删改操作会影响基表数据,为大型项目提供高效的数据管理方案。

Zzz2608440484的博客 1880

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

十六、MySQL 视图详解

本章对MySQL数据库中视图的概念和作用进行了详细讲解,并且讲解了创建视图、查看视图、修改视图、更新视图和删除视图的方法。创建视图和修改视图是本章的重点内容,并且需要在计算机上实际操作。读者在创建视图和修改视图后,一定要查看视图的结构,以确保创建和修改的操作正确。更新视图是本章的一个难点,因为实际中存在一些造成视图不能更新的因素,希望读者在练习中认真分析。

XAMO Lab|代码、调试与复盘笔记 2360

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MYSQL视图

MYSQL视图

Excuse_lighttime的博客 1346

MySQL:视图【详解】

MySQL视图

2401_83595513的博客 1933

【MySQL】视图

视图是一种虚拟的表,他是基于一个或者多个基本表或者其他视图的查询结果集。视图本身是不存在的,而是通过执行查询来动态生成数据。用户可以像操作普通表一样使用视图进行查询、更新和管理。视图本身并不占用物理存储空间,他仅仅是一个查询的逻辑表示,物理上他依赖于基础表中的数据。

2301_80543957的博客 3681

MySQL 视图使用详解

本文详细描述了mysql中视图的基本概念和使用方法

驴大毛的博客 1056

mysql视图使用详解_Mysql必读MySQL笔记之视图的使用详解

《MysqL必读MysqL笔记之视图的使用详解》要点:本文介绍了MysqL必读MysqL笔记之视图的使用详解,希望对您有用。如果有疑问,可以联系我们。什么是视图视图是从一个或多个表中导出来的表,是一种虚拟存在的表.视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据.这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据.数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据...

weixin_29528865的博客 355

MySQL视图详解

操作简单可以将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构,表与表之间的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了,开发人员对数据库的操作。减少数据冗余视图跟实际数据表不一样,它存储的是查询语句。所以,在使用的时候,我们要通过定义视图的查询语句来获取结果集。而视图本身不存储数据,不占用数据存储的资源,减少了数据的冗余。数据安全MySQL将用户对数据的访问限制 在某些数据的结果集上,而这些数据的结果集可以使用视图来实现。

weixin_61635597的博客 659

MySQL 视图详解

MySQL 视图是强大的工具,能够简化开发、增强安全性并提升灵活性。

zhangxueyi的专栏 2074
上一篇: MySQL---笔记之视图的使用详解
下一篇: AWK用法入门详解
chenrui310
博客等级 码龄15年 165粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值