MySQL学习记录(9)

学习内容:视图的创建与应用


一、认识视图

1.视图的含义

视图是一种简单的数据查询机制。视图不涉及数据存储,因为视图在数据库中并不真实存在,而是在引用视图时动态生成的,通过视图看到的数据只是存放在基本表中的数据。

2.视图的作用

(1)降低SQL语句的复杂度。
(2)提高数据库安全性。
(3)提高表的逻辑独立性。
(4)实现数据聚合。

二、创建视图

视图的创建基于SELECT语句和已存在的数据表。
1.语法格式

CREATE [ALGORITHM={UNDEFINED| MERGE|TEMPTABLE}]
VIEW view_name 
AS SELECT column_name(s) FROM table_name
[WITH [CASCADED|LOCAL] CHECK OPTION];
  • ALGORITHM:可选参数,表示视图选择的算法。
  • UNDEFINED:表示MySQL将自动选择要使用的算法。
  • MERGE:将视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。
  • TEMPTABLE:将视图的结果存入临时表,然后使用临时表执行语句。
  • view_name:视图的名称,可包含其属性列表。
  • column_name(s):查询的字段,也就是视图的列名。
  • WITH CHECK OPTION:可选参数,表示更新视图时要保证在视图的权限范围内。
  • CASCADED:更新视图时要满足所有相关视图和表的条件才进行。
  • LOCAL:更新视图时,满足该视图本身定义的条件即可。
    2.在单表上创建
CREATE VIEW view_stu
AS SELECT studentid AS 学号,name AS 姓名,major AS 所在专业
FROM studentinfo;

使用视图查询数据信息
USE mydb; SELECT * FROM view_stu;
3.在多表上创建

CREATE VIEW view_info
AS SELECT studentinfo.name AS 姓名,studentinfo.major AS 所在专业,subjectinfo.subject AS 课程名称,studentinfo.score AS 成绩
FROM studentinfo,subjectinfo
WHERE studentinfo.subjectid=subjectinfo.id;

三、修改视图

1.使用CREATE OR REPLACE VIEW语句

语法格式

CREATE OR REPLACE [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];

2.使用ALTER语句

语法格式

ALTER [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 视图名[(属性清单)]
AS SELECT 语句
[WITH [CASCADED|LOCAL] CHECK OPTION];

CREATE OR REPLACE VIEW 语句既可修改已存在的操作,也可创建新的视图。ALTER 语句只能修改已存在的视图。

四、查看视图信息

1.DESCRIBE语句

DESCRIBE 视图名;

2.SHOW TABLE STATUS语句

SHOW TABLE STATUS LIKE '视图名';

执行结果显示,表的说明Comment 的值为VIEW说明该表是视图,其他的信息为NULL说明这是一个虚表。

3.SHOW CREATE VIEW语句

SHOW CREATE VIEW 视图名;

4.在views表中查看

所有视图的定义都存在information_schema 数据库下的views表中。

SELECT * FROM information_schema.views; 

五、使用视图更新数据

通过视图更新都是转到基本表进行更新的。

1.INSERT插入数据

INSERT INTO 视图名
VALUES();

2.UPDATE修改数据

UPDATE 视图名
SET column_name1=value1,column_name2=value2,···,column_nameN=valueN
WHERE search_condition;

3.DELETE删除数据

DELETE FROM 视图名
WHERE condition;

建立在多个表之上的视图,无法使用DELETE语句进行删除。

六、删除视图

DROP VIEW [IF EXISTS] 视图名;
--可同时删除多个视图,只需要用逗号隔开视图名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值