MySQL:视图
1. 视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。2. 数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。3. 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。
一、视图的引入
- 视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。
- 数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。
- 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。
二、视图的作用
- 使操作简便化;
- 增加数据的安全性;
- 提高表的辑独立性;
三、创建视图
CREATE [ALGORITHM ={UNDEFIEND | NERGE | TEMPTABLE }]
VIEW 视图名[(属性清单)]
AS SELECT 语句
[WITH [ CASCADED | LOCAL ] CHECK OPTION ]:
ALGORITHM 是可选参数,表示视图选择的算法;
“视图名”参数表示要创建的视图的名称;
“字段清单”是可选參数,其指定了视图中各种字段的名词,默以情况下与 SELECT 语句中查询的字段相同;
SELECT 语句參数是一个完整的查询语句,标识从某个表查出某些满足条件的记录,将这些记录导>人视图中,WITH CHECK OPTION是可选參数,表似乎更新视图时要保证在该视图的权限范国之内;
ALGORITHIM 包括3个选项 UNDEFINED、MERGE 和 TEMPTABLE、其中,UNDEFINED 选项表示 MSQL.将自动选择所要使用的算法;NERGE 选项表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分;TEMPTABLE 选项表示将视图的结果存入临时表,然后使用临时表执行语句;CASCADED是可选參数,表示更新视图时要满足所有相关视图和表的条件,该參数为默认值;LOCAL 表示更新视图时,要满足该视图本身的定义条件即可;
3.1 在单表上创建视图
单表创建视图 这种创建没有意义
CREATE VIEW v1_t_book AS SELECT * FROM t_book;
执行结果
查询v1_t_book视图数据
只需要表的几个字段,其他的屏蔽,增加了数据的安全性
CREATE VIEW v2_t_book AS SELECT bookName, price FROM t_book;
执行结果
查询v2_t_book视图数据
视图里 更改列名
CREATE VIEW v3_t_book(v3BookBame,v3Price) AS SELECT bookName, price FROM t_book;
执行结果
查询v3_t_book视图数据
3.2 在多表上创建视图
多表创建视图-示例1
CREATE VIEW v4_book AS SELECT bookName,bookTypeName FROM t_book,t_booktype WHERE t_book.bookTypeId = t_booktype.id;
执行结果
查询v4_book视图数据
多表创建视图-示例2
CREATE VIEW v5_book AS SELECT tb.bookName,tby.bookTypeName FROM t_book tb,t_booktype tby WHERE tb.bookTypeId = tby.id;
执行结果
查询v5_book视图数据
四、查看视图
4.1 DESCRIBE 语句查看视图基本信息
DESC v5_book;
v5_book视图基本信息
4.2 SHOW TABLE STATUS 语句查看视图基本信息
SHOW TABLE STATUS LIKE 'v5_book';
查看v5_book视图的基本信息 可以看到视图完全是虚表
查看t_book表信息,真实存在的表,有数据
SHOW TABLE STATUS LIKE 't_book';
执行结果
4.3 SHOW CREATE VIEW 语句查看视图详细信息
SHOW CREATE VIEW v5_book;
查看v5_book视图详细信息
4.4 在views表中查者视图详细信息
查询v5_book视图详细信息-示例
v5_book视图字段信息
五、修改视图
5.1 CREATE OR REPLACE VIEW 语句修改视图
CREATE OR REPLACE [ALGORITHM = UNDEFINED | MERGE | TEMPTABLE 3]
VIEW 视图名[(字段清单)]
AS SELECT 语句
[WITH [ CASCADED | LOCAL ] CHECK OPTION ];
修改v1_t_book视图-示例
v1_t_book视图修改前的数据
CREATE OR REPLACE VIEW v1_t_book(bookName,price) AS SELECT bookName,price FROM t_book;
v1_t_book视图修改后的数据
5.2 ALTER 语句修改视图
ALTER[ALGORITHM -{UNDEFINED| MERGE | TENPTABLE }]
VIEW 视图名[(字段清单)]
AS SELECT 语句
[WITH [CASCADED | LOCAL ] CHECK OPTION ];
ALTER VIEW v1_t_book AS SELECT * FROM t_book;
执行结果
查询v1_t_book视图数据
六、更新视图
更新视图是指通过视图来插入(INSERT)、更新(UPDATE)和删除(DELETE)表中的数据。因为视图是一个虚拟的表,其中没有数据。通过视图更新时,都是转换基本表來更新。更新视图时,只能更新权限范围内的数据。
超出了范围,就不能更新。
6.1 插入(INSERT)
INSERT INTO v1_t_book VALUES (NULL,'java good',120,6);
执行结果
查询v1_t_book视图数据
6.2 更新(UPDATE)
UPDATE v1_t_book SET bookName = 'java is very good',price = 160 WHERE id = 19;
执行结果
查询v1_t_book视图数据
6.3 删除(DELETE)
DELETE FROM v1_t_book WHERE id = 19;
执行结果
查询v1_t_book视图数据
七、删除视图
删除视图是指删除数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除数据;
DROP VIEW [IF EXISTS ]视图名列表 [RESTRICT |CASCADE]
删除v4_book视图示例
执行前的视图(Views)
DROP VIEW IF EXISTS v4_book;
执行结果
推荐
欢迎关注我的公众号,不定期推送优质的文章,
微信扫一扫下方二维码即可关注。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)