MySql(19)视图

Mysql专栏入口

链接:https://pan.baidu.com/s/1zAhDUNv-yuJiWmaFLvTk4w
提取码:ttst
提取码:ttst
专栏中有mysql的导入导出,里面有教如何导入

一、视图的理解

  • 视图是一种虚拟表 ,本身是不具有数据 的,占用很少的内存空间,它是 SQL 中的一个重要概念。视图建立在已有表的基础上,视图赖以建立的这些表称为基表。可以看做事存储起来的select语句
  • 针对视图做DML操作,会影响到对应的基表中的数据。反之亦然。
  • 视图本身的删除不会导致基表中数据的删除。
  • 视图优点:简化查询,控制数据的访问。

二、创建视图

CREATE VIEW 视图名称
AS 查询语句

#	创建视图
create view ev
as
SELECT employee_id,first_name,last_name,email FROM employees

# 查询视图
SELECT * from ev

# 修改视图数据	基表数据也会对应修改
UPDATE ev set email = 'SKINGE' WHERE employee_id = 100

三、总结

优点:
1.操作简单
将经常使用的查询操作定义为视图,可以使开发人员不需要关心视图对应的数据表的结构、表与表之间的关联关系,也不需要关心数据表之间的业务逻辑和查询条件,而只需要简单地操作视图即可,极大简化了开发人员对数据库的操作。

2.减少数据冗余
视图跟实际数据表不一样,它存储的是查询语句。所以,在使用的时候,我们要通过定义视图的查询语句来获取结果集。而视图本身不存储数据,不占用数据存储的资源,减少了数据冗余。

3.数据安全
MySQL将用户对数据的 访问限制在某些数据的结果集上,而这些数据的结果集可以使用视图来实现。用户不必直接查询或操作数据表。这也可以理解为视图具有隔离性视图相当于在用户和实际的数据表之间加了一层虚拟表。同时,MySQL可以根据权限将用户对数据的访问限制在某些视图上,用户不需要查询数据表,可以直接通过视图获取数据表中的信息。这在一定程度上保障了数据表中数据的安全性。

4.适应灵活多变的需求
当业务系统的需求发生变化后,如果需要改动数据表的结构,则工作量相对较大,可以使用视图来减少改动的工作量。这种方式在实际工作中使用得比较多。

5.能够分解复杂的查询逻辑
数据库中如果存在复杂的查询逻辑,则可以将问题进行分解,创建多个视图获取数据,再将创建的多个视图结合起来,完成复杂的查询逻辑。

### 如何在 MySQL 中创建和管理自定义视图 #### 创建视图 为了创建一个视图,在MySQL中使用`CREATE VIEW`语句。此操作允许基于现有的表格构建一个新的虚拟表,该虚拟表可以简化复杂的查询逻辑并提供数据抽象层。 ```sql CREATE OR REPLACE VIEW tru_view1 AS SELECT student_id, name, phone, course_id, final_score FROM students WHERE grade = '19' AND gender = 'M'; ``` 上述SQL命令创建了一个名为`tru_view1`的视图,它选取了特定条件下(即19级男学生)的相关列作为其结构的一部分[^1]。 #### 查看视图内容 一旦视图被成功建立,可以通过多种方式查看其中的内容。最简单的方法是在MySQL Workbench工具内展开相应的数据库下的view文件夹,并选择目标视图执行`Select Rows-Limit 10`命令来预览前几条记录。 另外也可以直接运行如下SQL指令获取视图的数据: ```sql SELECT * FROM tru_view1 LIMIT 10; ``` 这会返回由之前定义好的条件筛选后的结果集,包括学号、姓名、电话号码以及所选课程的成绩等信息。 #### 修改已有的视图 如果需要调整现有视图,则可再次运用`CREATE OR REPLACE VIEW`语法更新它的定义。值得注意的是,尽管可以直接编辑视图对应的SQL脚本达到目的,但在实际应用过程中更推荐先删除旧版本再重新声明新版本的方式以确保变更的安全性和一致性[^2]。 #### 删除不再使用的视图 当某个视图已经不再需要时,应当考虑将其移除以免造成不必要的混淆或性能开销。此时应采用`DROP VIEW`语句完成这项工作: ```sql DROP VIEW IF EXISTS tru_view1; ``` 这条命令将会安全地消除指定名称的视图实例及其关联元数据,但不会影响到原始基础表内的任何实体数据项[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值