MySQL-视图-创建、查询、更新、删除

视图

视图概述

1.视图

  1. 视图是从一个或多个表中导出的表,它是中虚拟存在的表。
  2. 视图的结构和数据都依赖于原表(亦称为基本表)。
  3. 视图可以查看存放在基本表的数据,且可以向操作基本表一样,对视图中存放的数据进行查询、修改和删除。
  4. 修改视图中数据会影响到原表中数据,相应的修改原表中的数据会影响视图中的数据。

2.视图优点(与基本表比较)

(1)简化查询语

  • 简化对数据的操作。开发过程中将经常使用的查询定义为视图,从而避免大量重复操作。

(2)安全

  • 视图有助于限制对特定用户的数据访问。

(3)逻辑数据独立性

  • 视图帮助用户屏蔽真实表结构变化的影响

创建视图

1.语法

create [or replace] [algorithm ={undefined | merge | template}]
view viewName [(column_list)]
as select_statement
[with [cascaded | local] check option]

(1)CREATE

  • 创建视图的关键字

(2)OR REPLACE

  • 可选项,表示替换已有视图

(3)ALGORITHM

  • 可选项,表示视图选择的算法
  • 可选算法
    • UNDEFINED:MySQL自动选择所要使用的算法
    • MERGE:将使用的视图语句与视图 定义合并起来
    • TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句

(4)viewName

  • 视图名称

(5)column_list

  • 可选项,表示属性清单,指定了视图中各个属性的名。
  • 默认情况下各属性与select语句中查询的属性相同。

(6)AS

  • 表示指定视图要执行的操作

(7)select_statement

  • 该参数是一个完整的查询语句,表示从某个表或视图中查出某些满足条件的记录并将这些记录导入视图中。

(8)with check option

  • 可选项,表示创建视图时要保证在该视图的权限范围之内。

(9)cascaded

  • 可选项,表示创建视图时,需要满足跟视图有关的所有视图和表的条件

(10)local

  • 可选项,表示创建视图满足该视图本身定义的条件即可

2.单表上创建视图

(1)准备数据

DROP TABLE IF EXISTS student;

-- 创建表
CREATE TABLE student (
	sid VARCHAR(6),
	sname VARCHAR(50),
	chinese FLOAT,
    math FLOAT
);

-- 插入数据
INSERT INTO student (sid,sname,chinese,math) VALUES ('S_1001', 'lili', 90, 80);
INSERT INTO student (sid,sname,chinese,math) VALUES ('S_1002', 'wang', 80, 70);
INSERT INTO student (sid,sname,chinese,math) VALUES ('S_1003', 'dodo', 70, 60);
INSERT INTO student (sid,sname,chinese,math) VALUES ('S_1004', 'xixi', 60, 90);

(2)创建视图

-- 创建视图
drop view if exists student_view;
create view student_view as select math,chinese,math + chinese from student;

(3)查看视图

-- 查看视图
select * from student_view;

(4)指定视图列名

  • 默认情况下,创建视图字段名称和基本表字段名称是一样,可根据实际的需要指定视图字段名称
-- 创建视图
drop view if exists student_view;
create view student_view(m,c,s) as select math,chinese,math + chinese from student;
-- 查看视图
select * from student_view;
  • m:math
  • c:chinese
  • s:math+chinese

2.多表上建立视图

(1)准备数据

-- 创建表
DROP TABLE IF EXISTS studentInfo;
CREATE TABLE studentInfo (
	sid VARCHAR(6),
	province VARCHAR(50),
	fatherName VARCHAR(50),
    motherName VARCHAR(50)
);

-- 插入数据
INSERT INTO studentInfo (sid,province,fatherName,motherName) VALUES ('S_1001', 'hebei', 'plpl', 'uiui');
INSERT INTO studentInfo (sid,province,fatherName,motherName) VALUES ('S_1002', 'anhui', 'ktkt', 'hihi');
INSERT INTO studentInfo (sid,province,fatherName,motherName) VALUES ('S_1003', 'henan', 'wtwt', 'dtdt');
INSERT INTO studentInfo (sid,province,fatherName,motherName) VALUES ('S_1004', 'gansu', 'sdsd', 'xcxc');

(2)创建视图

-- 创建视图
create view student_studentInfo_view(id,name,province,fname,mname)
as
select st.sid,st.sname,sf.province,sf.fatherName,sf.motherName from student st,studentInfo sf where st.sid=sf.sid;

(3)查看视图

-- 查看视图
select * from student_studentInfo_view;

更新视图

(1)更新视图概述

  • 指通过视图来更新(UPDATE)、插入(INSERT)、删除(DELETE)基本表中的数据。
  • 通过视图更新数据时,其实是在更新基本表中的数据。
  • 如果对视图中的数据进行操作时实际上就是在对基本表中的数据进行操作。

(2)更新视图语句

-- 通过update跟新数据
UPDATE student_view SET c=99 WHERE id='S_1001';
-- 通过INSERT插入数据
INSERT INTO view_student (id,name,chinese,math) VALUES ('S_1005', 'shua', 80, 80);
-- 通过DELETE删除数据
DELETE FROM view_student WHERE id='S_1002';
-- 查看视图
select * from student_view;
select sid,math,chinese,math + chinese from student;

删除视图

1.语法

drop view [if exists] 视图名;

2.示例

drop view if exists student_view;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼不咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值