Mysql数据库视图基本操作

1.视图是从一个或者是多个表中导出,是有个虚拟表,视图包含一系列带有名称的行和列数据。行和列数据来自自由定义视图查询所引用的表,并且在引用视图是动态的生成。

2.视图还可以从已经存在的视图技基础上进行定义。

3.视图提供了有个很好的解决方法,创建视图的信息来自表的部分信息,只取需要的信息。

4.视图与表的区别:

(1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是。

(2)视图没有实际的物理记录,而表有;

(3)表是内容,视图是窗口。

(4)表占用物理空间而视图不占用物理空间,视图知识逻辑概念的存在,表可以及时对它进行修改,但视图只能用创建的语句进行修改;

(5)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度来讲,视图可以防止用户接触数据表,因而用户不知道表结构。

(6)表属于全局模式中的表,是实表。

(7)视图的创建和删除知识影响视图的本身,不影响对应的基本表。

5.创建视图

(1)基本语法

create [or replace] [algorithm = {undifined|merge|temptable}] view view_name {column_list} as select_statement [with {cascade|local|check option}]
 说明:create 表示创建新的视图,replace表示替换已创建的视图;algorithm表示视图选择的算法,view_name表示视图的名称,column_list表示为属性列,select_statement表示select语句;

 algorithm的取值有三个:分别是undofined,merge,temptanle,undifined表示MySQL将自动的选择算法,merge表示将使用的视图定义合并起来,是的视图定义的某一部分取代语句对应的部分,temptable表示将视图的结果存入到临时表中,然后使用临时表来执行语句。

 cascaded与local为可选参数,cascaded文默认值,表示更新试图使需要满足所有相关视图和表条件;local表示更新视图时满足该视图本身定义的条件即可;

 视图属于数据,在默认的情况下,将在当前数据库创建新视图。

(2)在单表上创建视图

 
 
create table test(id int(11),name varchar(50));//创建数据库表
insert into test(id,name) values(1,"sdc");//插入数据
desc test;//查看表结构
create view view_test as select * from test;//创建视图

(3)在多表上创建视图

 
 
create view view_info (id,name,glass) 
as select student.id,studeng.name,teacher.name 
from student,teacher where student.id=teacher.id;

说明:在多个表中进行视图创建的时候,我们首先要明确两个表之间的关系,也就是说我们需要使用到我们的内连接查询和外链接查询(左、右连接查询);

(4)查看视图

 <1>desc 视图名称

 <2>查看视图基本信息

 show create view like+“”+\G;

 <3>在视图表中查看视图定义的详细信息

 select *from 视图名称\G;

(5)修改视图

create view or replace view 修改视图名称;

alter view 视图名称 as sql_statement语句;

(6)更新视图

update 视图名称 set 参数列表;
 

猜你喜欢

转载自blog.csdn.net/m0_37248802/article/details/79274448