视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全
优点及缺点
优点
简单化,数据所见即所得
安全性,用户只能查询或修改他们所能见到得到的数据
逻辑独立性,可以屏蔽真实表结构变化带来的影响
缺点
性能相对较差,简单的查询也会变得稍显复杂
修改不方便,特变是复杂的聚合视图基本无法修改
创建视图语法详解
语法结构:
{ CREATE|REPLACE } [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [{column_list}]
AS SELECT_STATEMENT
[WITH [CASCADED | LOCAL |] CHECK OPTION]
释义:
CREATE|REPLACE : 【创建|替换已创建的】视图
ALGORITHM : 视图算法
1.UNDEFINED 系统自动选择算法2.MERGE使用的视图语句与视图定义合并起来3.TEMPTABLE 结果存入临时表,然后用临时表执行语句view_name : 视图名称
column_list : 属性列
SELECT_STATEMENT :SELECT语句
[WITH [CASCADED | LOCAL |] CHECK OPTION] 表示视图在更新时保证在视图的权限范围内
1.CASCADED 默认值 更新视图时要满足所有相关视图和表的条件,2.LOCAL表示更新视图时满足该视图本身定义的条件即可。
示例用表
示例表t_user
示例用表t_user_info
创建视图示例
# 1_1 在单表中创建视图
CREATE VIEW test_view_1 AS SELECT `name` FROM t_user;
创建视图代码运行成功如图
# 1_2 查询视图
SELECT * FROM test_view_1;
查询结果如图所示
# 2_1 创建视图并指定视图字段名
CREATE VIEW test_view_2(username) AS SELECT `name` FROM t_user;
创建视图代码运行结果
# 2_2 查询视图
SELECT * FROM test_view_2;
如查询出来的字段名称为指定的usernam
# 3_1 在多表中创建视图
CREATE VIEW test_view_3 (username, userage, usersex) AS SELECT
t_user.`name`,
t_user_info.age,
t_user_info.sex
FROM
t_user,
t_user_info
WHERE
t_user.id = t_user_info.uid;
在多表中创建视图运行成功
# 3_2 查询视图
SELECT * FROM test_view_3;
多表视图查询结果