MySQL视图相关知识

1、什么是视图?

        视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据。作为一个select语句保存在数据字典中。
        通过视图,可以展现基表(用来创建视图的表)的部分数据;视图数据来自定义视图的查询中使用的表,使用视图动态生成。视图(子查询):是从一个或多个表导出的虚拟的表,其内容由查询定义。具有普通表的结构,但是不实现数据存储。

2、为什么要使用视图?

  • 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。
  • 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

3、创建视图

(1)基本语法

-- 创建视图
CREATE VIEW <视图名> AS <SELECT语句>
或者
CREATE VIEW <视图名> (v_id, v_title, .. ) 
    AS <SELECT id, title, .. FROM table  -- 可以为视图新定义字段别名

-- 视图名称 通常以view_ 或者 v_为前缀,后面加表名
-- select语句可以是单个表,也是多表的联合查询

例一:创建单表视图

CREATE VIEW view_goods AS

        SELECT goods_id, cat_id, goods_sn, goods_name 

        FROM ecs_goods

        ORDER BY goods_id   ASC

例二:创建多表视图

CREATE VIEW view_goods_category AS  

        SELECT a.goods_id, a.cat_id, b.cat_name, a.goods_sn, a.goods_name
        FROM ecs_goods AS a 
        LEFT JOIN ecs_category AS b ON a.cat_id = b.`cat_id`

        ORDER BY a.goods_id ASC;

(2)查询视图

        视图一旦创建,就可以如同查询普通数据表一样,使用 SELECT 语句查询视图中的数据,语法和查询基础表的数据一样。
        单表视图可以进行增insert、删delete、改update、查,同时对基本表也会进行修改。
        多表视图,只能进行查询,不能修改。

-- 查询指定视图的字段
DESCRIBE 视图名;
或者
DESC 视图名;

-- 单表视图可以进行增insert、删delete、改update、查
SELECT * FROM view_goods ORDER BY goods_id DESC;
-- 修改视图(主表也修改)
UPDATE view_goods SET goods_name = '防暑套装 58A型--999' WHERE goods_id = 1;
-- 新增视图
INSERT INTO view_goods SET cat_id = 2, goods_name = '在视图中添加的商品';
-- 删除视图数据
DELETE FROM view_goods WHERE goods_id = 138;

-- 

-- 多表视图 无法进行修改修改

mysql> update view_goods_category set goods_name = '1234545' where goods_id = 1;
ERROR 1288 (HY000): The target table view_goods_category of the UPDATE is not updatable

4、哪些情况下单表视图也无法增删改其数据内容?

如果视图包含以下结构中的任何一种,它就是不可更新的:

  • 聚合函数 SUM()、MIN()、MAX()、COUNT() 等。
  • DISTINCT 关键字。
  • HAVING 子句。
  • UNION 或 UNION ALL 运算符。
  • 位于选择列表中的子查询。
  • FROM 子句中的不可更新视图或包含多个表。
  • WHERE 子句中的子查询,引用 FROM 子句中的表。
  • ALGORITHM 选项为 TEMPTABLE(使用临时表总会使视图成为不可更新的)的时候。

5、查看当前数据库有多少个视图?

SHOW TABLES; -- 显示所有的表和视图
SHOW TABLE STATUS; -- 显示所有的表和视图想想信息
SHOW TABLE STATUS WHERE COMMENT = 'view';  -- 只显示视图的信息

6、显示视图的创建SQL语句

SHOW CREATE VIEW 视图名称

7、修改视图

ALTER VIEW <视图名> AS <SELECT语句>

-- 修改视图的定义,除了可以通过 ALTER VIEW 外,也可以使用 DROP VIEW 语句先删除视图,再使用 CREATE VIEW 语句来实现。

8、删除视图

        删除视图是指删除 MySQL 数据库中已存在的视图。删除视图时,只能删除视图的定义,不会删除真实的数据表。

DROP VIEW <视图名1> [ , <视图名2> …]

9、视图有哪些优缺点?

  • 查询简单化,视图能简化用户的操作
  • 数据安全性,视图使用户能以多种角度看待同一数据,能够对机密数据提供安全保护。
  • 逻辑数据独立性,视图对重构数据库提供了一定程度的逻辑独立性。

10、视图有哪些特点?

  • 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
  • 视图是由基本表(实表)产生的表(虚表)。
  • 视图的建立和删除不影响基本表。
  • 对单表视图内容的更新(添加,删除和修改)直接影响基本表。
  • 当视图来自多个基本表时,不允许添加和删除数据。
MySQL是一种关系型数据库管理系统,它是开源的,可用于存储和管理各种类型的数据。以下是一些MySQL数据库相关知识: 1. 数据MySQL中的数据是存储在数据中的,每个数据都有一个唯一的名称,并且由列和行组成。 2. 列:MySQL中的列是数据中的垂直组件,也称为字段或属性。列定义了中每个行所包含的数据类型和格式。 3. 行:MySQL中的行是数据中的水平组件,也称为记录或元组。每行代数据中的一项。 4. 主键:MySQL中的主键是用于唯一标识数据中每个行的列。主键必须是唯一的且不为空。 5. 外键:MySQL中的外键是一种逻辑链接,用于在两个或多个数据之间建立关系。它们用于确保数据的完整性和一致性。 6. 索引:MySQL中的索引是一种数据结构,用于提高数据检索的速度。它们可以在数据中创建单个列、多个列或所有列上。 7. 视图MySQL中的视图是虚拟的数据,它是基于查询的结果集创建的。视图不包含数据,而是基于数据中存在的数据生成的。 8. 存储过程:MySQL中的存储过程是一种预定义的程序,可以在需要时调用。它们可以接受输入参数和返回输出参数。 9. 触发器:MySQL中的触发器是一种特殊类型的存储过程,它们在数据上执行插入、更新和删除操作时自动触发。它们可以用于实现数据约束和业务规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值