阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL视图的基本操作

193次阅读
没有评论

共计 3141 个字符,预计需要花费 8 分钟才能阅读完成。

视图是数据库中的虚拟表。包含一系列带有名称的行和列数据。视图是从一个或者多个表中导出的,视图的行为与表非常相似,用户可以使用 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 的列。

MySQL 视图的基本操作

若想创建包含学生 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;

MySQL 视图的基本操作

  • 查看视图

查看视图有 4 种方式,包括:DESCRIBE、SHOW TABLE STATUS、SHOW CREATE VIEW 以及在 views 表中查看视图详细信息。

  1. DESCRIBE 语句查看视图基本信息,语法为:DESCRIBE view_name; 查看 view_s_class 视图如上上图所示。结果显示视图的字段定义、字段数据类型、是否为空、是否为主外键、默认值和额外信息。
  2. SHOW TABLE STATUS 语句查看视图基本信息,语法为:SHOW TABLE STATUS LIKE ‘view_name’; 如下图所示,查看 view_s_class 视图,结果显示,表的说明 Comment 的值为 VIEW 说明该表为视图,其他信息为 NULL 说明这是一个虚表。当查询学生表时,信息包含了存储引擎、创建时间等,Comment 信息为空,这就是视图和表的区别。
    MySQL 视图的基本操作 MySQL 视图的基本操作
  3. SHOW CREATE VIEW 语句查看视图详细信息,语法为:SHOW CREATE VIEW ‘view_name’; 该语句查看视图的详细定义,结果显示视图的名称、创建数据的语句等信息。MySQL 视图的基本操作

  4. 在视图表中查看详细信息,利用 SELECT 语句查询 information_schema 数据库下的 views 表中存储所有视图的定义。查询语句为:SELECT * FROM information_shcema.views;MySQL 视图的基本操作
  • 修改视图

修改数据库中存在的视图,当基本表的某些字段发生变化时,可以通过修改视图来保持与基本表的一致性 MySQL 通过 CREATE OR REPLACE VIEW 语句和 ALTER 语句来修改视图。

  1. 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 进行修改。MySQL 视图的基本操作 MySQL 视图的基本操作
  2. ALTER 语句修改视图,语法格式为:ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name[(column_list)] AS SELECT_statement [WITH[CASCADED|LOCAL]CHECK OPTION] 如下是通过 ALTER 语句将 view_student 视图改为原来的样子。MySQL 视图的基本操作
  • 更新视图

更新视图是指通过视图来插入、更新、删除表中的数据,因为视图是一个虚表,其中没有数据。通过视图更新的时候其实是对基本表的更新,本节将介绍视图更新的 3 种方法:INSERT、UPDATE 和 DELETE。

  1. INSERT 语句向视图中插入数据,代码为:INSERT INTO view_student value(10,’ 赵云 ’,’Hebei’);MySQL 视图的基本操作
  2. UPDATA 语句更新视图中的数据,代码为:UPDATE view_student SET sAddress=’Anhui’ WHERE sID=8;MySQL 视图的基本操作
  3. DELETE 删除视图中添加的赵云字段,代码为:DELETE FROM view_student WHERE sID=10;MySQL 视图的基本操作
  • 删除视图

删除一个或多个视图可以使用 DROP VIEW 语句,语法格式为:DROP VIEW [IF EXISTS] view_name[,view_name][RESTRICT|CASCADE] 其中,view_name 是要删除的视图名称,可以添加多个视图,各个名称之间使用逗号分隔。如下是删除 view_student 视图。

MySQL 视图的基本操作

  • MySQL 中视图和表的区别和联系
    • 两者的区别
    1. 视图是编译好的 SQL 语句,是基于 SQL 语句的结果集的可视化的表;
    2. 视图没有实际的物理记录,而基本表有;
    3. 表是内容,视图是窗口;
    4. 表占用物理空间而视图不占用物理空间,视图只是逻辑概念的存在;
    5. 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些 SQL 语句的集合。从安全的角度说,视图可以防止用户接触数据表。
    6. 表属于全局模式中的表,是实表;视图属于局部模式,是虚表;
    7. 视图的建立和删除只影响视图本身,但不影响对应的基本表。
    • 两者的联系
    1. 视图是在基本表之上建立的表,视图的结构和内容都来自基本表,依赖基本表存在而存在。一个视图可以对应一到多个基本表,是基本表的抽象和在逻辑意义上建立的新关系

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-04/142499.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3141字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中