mysql创建视图语法示例_mysql——视图——示例

mysql创建视图语法示例_mysql——视图——示例_第1张图片

1、创建视图

视图可以建立在一张表上,也可以建立在多张表上

语法格式:

create [ algorithm = { undefined | merge | temptable} ]

view 视图名 [(属性清单)]

as select 语句

[ with { cascaded | loocal } check option ];

===========================================================

前期表准备:

create table employee ( num int(50),

d_idint(50),

namevarchar(50),

ageint(50),

sexvarchar(50),

homeaddvarchar(50)

);insert into employee values(1,1001,'zhangsan',26,'nan','beijing');insert into employee values(2,1001,'lisi',24,'nv','hunan');insert into employee values(3,1002,'wangwu',25,'nan','jiangsu');insert into employee values(4,1004,'aric',15,'nan','yingguo');select * fromemployee;create table department ( d_id int(50),

d_namevarchar(50),

functionevarchar(50),

addressvarchar(50)

);insert into department values(1001,'keyanbu','yanfachanpin','3lou5hao');insert into department values(1002,'shengchanbu','shengchanchanp','5louyiceng');insert into department values(1003,'xiaoshoubu','cehuaxiaoshou','1louxiaoshoudating');select * from department;

select * from employee;

mysql创建视图语法示例_mysql——视图——示例_第2张图片

select * from department;

mysql创建视图语法示例_mysql——视图——示例_第3张图片

==================================================

在单表上创建视图:

/*在单表上创建视图*/

create view department_view1 as select * fromdepartment;/*创建视图*/

descdepartment_view1;/*查看视图*/

select * fromdepartment_view1;select d_id,d_name,functione from department_view1;

mysql创建视图语法示例_mysql——视图——示例_第4张图片

mysql创建视图语法示例_mysql——视图——示例_第5张图片

mysql创建视图语法示例_mysql——视图——示例_第6张图片

=======================================================

单表创建视图,示例02:

create view department_view2(name2,functione2,location2) as select d_name,functione,address fromdepartment;descdepartment_view2;select * from department_view2;

mysql创建视图语法示例_mysql——视图——示例_第7张图片

mysql创建视图语法示例_mysql——视图——示例_第8张图片

=======================================================

在多表上创建视图:

create view department_view3(d_id,name,age,sex,homeadd,bmmc,gongn,bangonglouceng) as

select employee.d_id,employee.name,employee.age,employee.sex,employee.homeadd,department.d_name,department.functione,department.address

fromemployee,departmentwhere employee.d_id =department.d_id;

describe department_view3;

select * fromdepartment_view3;

mysql创建视图语法示例_mysql——视图——示例_第9张图片

mysql创建视图语法示例_mysql——视图——示例_第10张图片

===================================================================

===================================================================

查看视图

describe 视图名称;

或者

desc 视图名称;

describe department_view1;desc department_view1;

mysql创建视图语法示例_mysql——视图——示例_第11张图片

================================================

================================================

查看视图基本信息

show table status like '视图名';

show table status like 'department_view1';

mysql创建视图语法示例_mysql——视图——示例_第12张图片

========================================================

========================================================

查看视图详细信息

show create view 视图名;

show create view department_view1;

mysql创建视图语法示例_mysql——视图——示例_第13张图片

================================================================

===============================================================

在views表中查看视图详细信息

select * from information_schema.views;

mysql创建视图语法示例_mysql——视图——示例_第14张图片

====================================================================

=====================================================================

修改视图

修改视图是指修改数据库中已经存在的表的定义。

当基本表的某些字段发生改变时,可以通过修改视图来保持视图和基本表之间的一致;

(1)create or replaceview语句修改视图

语法格式:create or replace [algorithm = { undefined | merge | temptable}]

view 视图名 [(属性清单)]

as select语句[with { cascaded | loocal } check option];

(2)alter语句修改视图

语法格式:alter [algorithm = { undefined | merge | temptable}]

view 视图名 [(属性清单)]

as select语句[with { cascaded | loocal } check option];

-----------------------------------------------------------------------------------------------------------------------

修改视图:

使用 create or replace 语句,后面的语法格式都一样。

在视图已经存在的情况下,可以对视图进行修改;

在视图不存在的情况下,可以创建视图

select * from department_view2;

create or replace view department_view2(id,name2,functione2,location2) as select d_id,d_name,functione,address from department;

desc department_view2;

select * from department_view2;

使用alter语句也可以修改视图,后面其它语法格式一样;

alter语句修改视图:

语法格式:

alter [ algorithm = { undefined | merge | temptable} ]

view 视图名 [(属性清单)]

as select 语句

[ with { cascaded | loocal } check option ];

--------------------------------------------------------------------------------------------------------------

select * from department_view2;

alter view department_view2(functione2,location2) as select functione,address from department;

desc department_view2;

select * from department_view2;

===================================================================

===================================================================

更新视图,即更新原始表格中的数据,但是只能在权利范围之内,一般不建议使用。

更新视图指:通过视图来插入(insert)、更新(update)、删除(delete)表中的数据。

因为视图是一个虚拟表,其中没有数据。

通过视图更新时,都是转换到基本表来更新。

更新视图时,只能更新权限范围内的数据,超出范围就不能更新。

--------------------------------------------------------------------------------------------------------------------

注意:并不是所有的视图都可以更新的,以下几种情况不能更新视图;

(1)、视图中包含sum()、count()、max()和min()等函数;

(2)、视图中包含union、union all、distinct、group by、having等关键字;

(3)、常量视图;

(4)、视图中的select中包含子查询;

(5)、由不可更新的视图导出的视图;

(6)、创建视图时,algorithm为temptable类型;temptable类型是临时表类型。系统默认临时表示不能更新的;

(7)、视图对应的表上存在没有默认值的列,而且该列没有包含在视图里。

除了上述条件,[ with { cascaded | loocal } check option ];也将决定视图能否更新。

local参数表示更新视图时,要满足该视图本身定义的条件即可;

cascaded参数表示更新视图时,要满足所有相关视图和表的条件;

没有指明时,默认为cascaded参数;

-------------------------------------------------------------------------------------------------------------------------

执行前查询:

mysql创建视图语法示例_mysql——视图——示例_第15张图片

mysql创建视图语法示例_mysql——视图——示例_第16张图片

执行更新:

mysql创建视图语法示例_mysql——视图——示例_第17张图片

mysql创建视图语法示例_mysql——视图——示例_第18张图片

执行后查询:

mysql创建视图语法示例_mysql——视图——示例_第19张图片

mysql创建视图语法示例_mysql——视图——示例_第20张图片

=========================================================================

删除视图:

删除视图是指删除数据库中已经存在的视图的定义;删除视图时,只能删除视图的定义,不会删除数据

语法格式:drop view [if exists] 视图名列表;

if exists参数指判断视图是否存在,如果存在则执行,否则不执行,

视图名列表参数表示要删除的视图的名称列表,各个视图名称之间用逗号隔开;

mysql创建视图语法示例_mysql——视图——示例_第21张图片

mysql创建视图语法示例_mysql——视图——示例_第22张图片

你可能感兴趣的:(mysql创建视图语法示例)