MySQL视图的基本操作
wptr33 2024-11-26 09:29 25 浏览
原文地址:https://dwz.cn/B5nmwY6Y
作者:best.lei
视图是数据库中的虚拟表。包含一系列带有名称的行和列数据。视图是从一个或者多个表中导出的,视图的行为与表非常相似,用户可以使用SELECT语句查询数据,以及使用INSERT、UPDATE和DELETE修改记录,视图使用户操作更加方便而且保障数据库系统的安全。
视图一旦定义便存储在数据库中,与其对应的数据并没有像表那样在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改和删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时若基本表的数据放生变化,则这种变化也会自动地反应到视图中。
- 创建视图
创建视图的基本语法格式为:CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS SELECT_statement [WITH [CASCADED|LOCAL] CHECK OPTION] 其中CREATE用来创建新的视图,REPLACE表示替换已经创建的视图,ALGORITHM表示视图选择的算法,view_name为视图名称,column_list为属性列,SELECT_statement表示SELECT语句,WITH[CASCADED|LOCAL] CHECK OPTION参数表示视图在更新时保证在视图的权限范围内。
ALGORITHM的取值有3个,分别是UNDEFINED|MERGE|TEMPTABLE,UNDEFINED表示MySQL将自动选择算法,MERGE表示将使用的视图与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分,TEMPTABLE表示将视图的结果存入临时表,然后用临时表来执行语句。
CASCADED与LOCAL为可选参数,CASCADED为默认参数,表示更新视图时要满足所有相关视图和表的条件,LOCAL表示更新视图时满足该视图本身定义的条件即可。
视图属于数据库。在默认情况下,将在当前数据库创建新视图。想要在给定数据库中明确创建视图,创建时应将名称指定为db_name.view_name.
如下图在单表上创建视图(CREATE VIEW view_student(sID,sName,sAddress) AS SELECT id,name,address FROM tb_student); 选择表tb_student的id,name和address列作为视图view_student的列。
若想创建包含学生id,name和班级的视图呢?语法格式为:CREATE VIEW view_s_class(sID,sName,sClass) AS SELECT tb_student.id,tb_student.name,tb_class.name FROM tb_student,tb_class WHERE tb_student.classID=tb_class.id;
- 查看视图
查看视图有4种方式,包括:DESCRIBE、SHOW TABLE STATUS、SHOW CREATE VIEW以及在views表中查看视图详细信息。
- DESCRIBE语句查看视图基本信息,语法为:DESCRIBE view_name; 查看view_s_class视图如上上图所示。结果显示视图的字段定义、字段数据类型、是否为空、是否为主外键、默认值和额外信息。
- SHOW TABLE STATUS语句查看视图基本信息,语法为:SHOW TABLE STATUS LIKE 'view_name'; 如下图所示,查看view_s_class视图,结果显示,表的说明Comment的值为VIEW说明该表为视图,其他信息为NULL说明这是一个虚表。当查询学生表时,信息包含了存储引擎、创建时间等,Comment信息为空,这就是视图和表的区别。
- SHOW CREATE VIEW语句查看视图详细信息,语法为:SHOW CREATE VIEW 'view_name'; 该语句查看视图的详细定义,结果显示视图的名称、创建数据的语句等信息。
- 在视图表中查看详细信息,利用SELECT语句查询information_schema数据库下的views表中存储所有视图的定义。查询语句为:SELECT * FROM information_shcema.views;
- 修改视图
修改数据库中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致性MySQL通过CREATE OR REPLACE VIEW语句和ALTER语句来修改视图。
- CREATE OR REPLACE VIEW语句修改视图,语法格式为:CREATE[OR REPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name[(column_list)] AS SELECT_statement [WITH[CASCADED|LOCAL]CHECK OPTION] 与创建视图的语句完全一样。当视图存在时,修改视图定义;当视图不存在时,创建视图。通过CREATE OR REPLACE对view_student进行修改。
- ALTER语句修改视图,语法格式为:ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name[(column_list)] AS SELECT_statement [WITH[CASCADED|LOCAL]CHECK OPTION] 如下是通过ALTER语句将view_student视图改为原来的样子。
- 更新视图
更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚表,其中没有数据。通过视图更新的时候其实是对基本表的更新,本节将介绍视图更新的3种方法:INSERT、UPDATE和DELETE。
- INSERT语句向视图中插入数据,代码为:INSERT INTO view_student value(10,'赵云','Hebei');
- UPDATA语句更新视图中的数据,代码为:UPDATE view_student SET sAddress='Anhui' WHERE sID=8;
- DELETE删除视图中添加的赵云字段,代码为:DELETE FROM view_student WHERE sID=10;
- 删除视图
删除一个或多个视图可以使用DROP VIEW语句,语法格式为:DROP VIEW [IF EXISTS] view_name[,view_name][RESTRICT|CASCADE] 其中,view_name是要删除的视图名称,可以添加多个视图,各个名称之间使用逗号分隔。如下是删除view_student视图。
- MySQL中视图和表的区别和联系
- 两者的区别
- 视图是编译好的SQL语句,是基于SQL语句的结果集的可视化的表;
- 视图没有实际的物理记录,而基本表有;
- 表是内容,视图是窗口;
- 表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在;
- 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以防止用户接触数据表。
- 表属于全局模式中的表,是实表;视图属于局部模式,是虚表;
- 视图的建立和删除只影响视图本身,但不影响对应的基本表。
- 两者的联系
- 视图是在基本表之上建立的表,视图的结构和内容都来自基本表,依赖基本表存在而存在。一个视图可以对应一到多个基本表,是基本表的抽象和在逻辑意义上建立的新关系。
- 上一篇:MySQL——创建视图的注意事项
- 下一篇:推荐收藏——MySQL视图详细介绍
相关推荐
- Python自动化脚本应用与示例(python办公自动化脚本)
-
Python是编写自动化脚本的绝佳选择,因其语法简洁、库丰富且跨平台兼容性强。以下是Python自动化脚本的常见应用场景及示例,帮助你快速上手:一、常见自动化场景文件与目录操作...
- Python文件操作常用库高级应用教程
-
本文是在前面《Python文件操作常用库使用教程》的基础上,进一步学习Python文件操作库的高级应用。一、高级文件系统监控1.1watchdog库-实时文件系统监控安装与基本使用:...
- Python办公自动化系列篇之六:文件系统与操作系统任务
-
作为高效办公自动化领域的主流编程语言,Python凭借其优雅的语法结构、完善的技术生态及成熟的第三方工具库集合,已成为企业数字化转型过程中提升运营效率的理想选择。该语言在结构化数据处理、自动化文档生成...
- 14《Python 办公自动化教程》os 模块操作文件与文件夹
-
在日常工作中,我们经常会和文件、文件夹打交道,比如将服务器上指定目录下文件进行归档,或将爬虫爬取的数据根据时间创建对应的文件夹/文件,如果这些还依靠手动来进行操作,无疑是费时费力的,这时候Pyt...
- python中os模块详解(python os.path模块)
-
os模块是Python标准库中的一个模块,它提供了与操作系统交互的方法。使用os模块可以方便地执行许多常见的系统任务,如文件和目录操作、进程管理、环境变量管理等。下面是os模块中一些常用的函数和方法:...
- 21-Python-文件操作(python文件的操作步骤)
-
在Python中,文件操作是非常重要的一部分,它允许我们读取、写入和修改文件。下面将详细讲解Python文件操作的各个方面,并给出相应的示例。1-打开文件...
- 轻松玩转Python文件操作:移动、删除
-
哈喽,大家好,我是木头左!Python文件操作基础在处理计算机文件时,经常需要执行如移动和删除等基本操作。Python提供了一些内置的库来帮助完成这些任务,其中最常用的就是os模块和shutil模块。...
- Python 初学者练习:删除文件和文件夹
-
在本教程中,你将学习如何在Python中删除文件和文件夹。使用os.remove()函数删除文件...
- 引人遐想,用 Python 获取你想要的“某个人”摄像头照片
-
仅用来学习,希望给你们有提供到学习上的作用。1.安装库需要安装python3.5以上版本,在官网下载即可。然后安装库opencv-python,安装方式为打开终端输入命令行。...
- Python如何使用临时文件和目录(python目录下文件)
-
在某些项目中,有时候会有大量的临时数据,比如各种日志,这时候我们要做数据分析,并把最后的结果储存起来,这些大量的临时数据如果常驻内存,将消耗大量内存资源,我们可以使用临时文件,存储这些临时数据。使用标...
- Linux 下海量文件删除方法效率对比,最慢的竟然是 rm
-
Linux下海量文件删除方法效率对比,本次参赛选手一共6位,分别是:rm、find、findwithdelete、rsync、Python、Perl.首先建立50万个文件$testfor...
- Python 开发工程师必会的 5 个系统命令操作库
-
当我们需要编写自动化脚本、部署工具、监控程序时,熟练操作系统命令几乎是必备技能。今天就来聊聊我在实际项目中高频使用的5个系统命令操作库,这些可都是能让你效率翻倍的"瑞士军刀"。一...
- Python常用文件操作库使用详解(python文件操作选项)
-
Python生态系统提供了丰富的文件操作库,可以处理各种复杂的文件操作需求。本教程将介绍Python中最常用的文件操作库及其实际应用。一、标准库核心模块1.1os模块-操作系统接口主要功能...
- 11. 文件与IO操作(文件io和网络io)
-
本章深入探讨Go语言文件处理与IO操作的核心技术,结合高性能实践与安全规范,提供企业级解决方案。11.1文件读写11.1.1基础操作...
- Python os模块的20个应用实例(python中 import os模块用法)
-
在Python中,...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)