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

本文详细介绍了如何在MySQL中创建视图,包括在单表和多表上创建视图的语法示例,以及如何查看、修改和删除视图。通过示例展示了如何使用`CREATE VIEW`、`ALTER VIEW`和`DROP VIEW`语句,并讨论了视图的更新限制条件。
摘要由CSDN通过智能技术生成

1089a504421a014cfb07c3e02bdb32c0.png

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;

f48f9054162d0204422061c7c360b503.png

select * from department;

f42e05f2dfa94fe41c1971a5fe2ebc12.png

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

在单表上创建视图:

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

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

descdepartment_view1;/*查看视图*/

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

924e8db7928d19a8bcdb5733f5e88d1e.png

77b7e5b493c45ba318512b8b668356a6.png

be100965f2ad85c41276b68d23096249.png

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

单表创建视图,示例02:

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

b9a1ba5bbe4042e74bb510451ee05da6.png

e8d58850622f2d196d8fd172e3666e36.png

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

在多表上创建视图:

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;

a1698f6e792e4a1979584094599d3276.png

c7f2a323126a5aa0d1bec8e700c6bdae.png

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

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

查看视图

describe 视图名称;

或者

desc 视图名称;

describe department_view1;desc department_view1;

523b5f47cb54c119e13b7464260cc4e9.png

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

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

查看视图基本信息

show table status like '视图名';

show table status like 'department_view1';

c1bbfb0524d3b00013fd24dad918bdc4.png

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

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

查看视图详细信息

show create view 视图名;

show create view department_view1;

089b17e7e6b688d762da6789ddf313d0.png

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

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

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

select * from information_schema.views;

757af175f7e89a71b68f9f716e2d60ee.png

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

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

修改视图

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

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

(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参数;

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

执行前查询:

bea410530b337daaa568eb7cfde2a7fe.png

174e6e02d794742d719113b4b1f9a0d0.png

执行更新:

174e6e02d794742d719113b4b1f9a0d0.png

1e15e9f0db7155a7c03e44a93eba980f.png

执行后查询:

828056e64dbe56c157bf24017ebb7cb5.png

25e9c0ce9a7ad8fb96c1fdf2fd03b72c.png

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

删除视图:

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

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

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

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

bf0a1431bbeac237dc3a6682fe9941c5.png

7d6f4527ce78fdb0cdf9c2eb13a283a1.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值