mysql-视图

本文介绍了数据库中的视图概念,解释了视图是如何作为虚拟表存在的,以及如何通过SQL语句创建、查询和维护视图。此外,还探讨了视图在安全性及简化复杂查询方面的作用。

视图

​ 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

​ 从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样。视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。

​ 视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。

​ 视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。

语法

Create view 视图名 as 
Select 查询

实例

1.从单表中创建视图

CREATE VIEW employee_view AS 
SELECT eid,ename,esex,eage FROM employee

一个基表可以创建多个视图

我们对视图进行删除、更新、修改会影响基本表。

对基本表做CRUD 也会影响视图

2.从两张表中创建视图

CREATE VIEW employee_dept AS 
SELECT e.eid,e.ename,d.dname  FROM employee e LEFT JOIN dept d ON e.eid = d.deptno

3.创建两个视图,从两个视图中查询数据

CREATE VIEW emp_a AS
SELECT eid,ename,esex,eage,telephone,pnum,dfk FROM employee

SELECT * FROM emp_a

CREATE VIEW dept_a AS
SELECT deptno,dname FROM dept

SELECT * FROM dept_a

SELECT ea.*,da.* FROM emp_a ea ,dept_a da WHERE ea.dfk=da.deptno

删除视图

drop view 视图名
### 关于头歌平台 MySQL 数据库视图的使用教程及示例 在头歌平台上,MySQL 视图的使用与其他数据库管理系统的视图使用方式本一致。视图是一种虚拟,其内容由查询定义[^2]。视图并不存储实际的数据值集,而是通过引用定义视图的查询动态生成数据行和列。以下是关于头歌平台中 MySQL 数据库视图的详细使用教程及示例。 #### 一、视图本概念 视图于一个或多个的 SELECT 查询结果创建的虚拟。它不存储实际数据,而是在访问时动态生成数据[^2]。视图的主要用途包括简化复杂查询、保护敏感数据以及提供数据抽象。 #### 二、视图的创建语法 创建视图本语法如下: ```sql CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]; ``` - `CREATE OR REPLACE`:如果视图已存在,则替换原有视图- `ALGORITHM`:指定视图的处理算法(`UNDEFINED`、`MERGE` 或 `TEMPTABLE`)。 - `DEFINER`:定义视图的用户。 - `SQL SECURITY`:指定视图的安全性上下文(`DEFINER` 或 `INVOKER`)。 - `view_name`:视图名称。 - `column_list`:可选的列名列- `select_statement`:用于定义视图的 SELECT 查询语句。 - `WITH CHECK OPTION`:确保更新后的数据满足视图的定义条件。 #### 三、视图的使用示例 以下是一些常见的视图使用示例,适用于头歌平台中的 MySQL 数据库: 1. **创建简单的视图** 创建一个名为 `v_employee_departments` 的视图,显示员工 ID、姓名和部门名称。 ```sql CREATE VIEW v_employee_departments AS SELECT e.employee_id, e.name, d.dept_name FROM employees e JOIN departments d ON e.dept_id = d.dept_id; ``` 这个视图将员工和部门连接起来,方便查询员工及其所属部门的信息[^1]。 2. **带有条件过滤的视图** 创建一个视图,仅显示工资高于 5000 的员工信息。 ```sql CREATE VIEW v_high_salary_employees AS SELECT employee_id, name, salary FROM employees WHERE salary > 5000; ``` 3. **使用 WITH CHECK OPTION 的视图** 创建一个视图,并确保通过该视图插入或更新的数据符合视图的定义条件。 ```sql CREATE VIEW v_active_customers AS SELECT customer_id, name, status FROM customers WHERE status = 'active' WITH CHECK OPTION; ``` 4. **视图的查询** 查询视图中的数据与查询普通类似。 ```sql SELECT * FROM v_employee_departments; ``` #### 四、视图的优势 - **简化复杂查询**:通过视图可以隐藏复杂的 SQL 查询逻辑。 - **数据安全**:视图可以限制用户只能访问特定的数据子集。 - **数据抽象**:视图提供了更高的抽象层次,使得应用程序无需关心底层结构。 #### 五、注意事项 - 视图本身不存储数据,因此对视图的修改实际上是对的修改。 - 如果被删除或修改,视图可能会失效。 - 使用视图时需要注意性能问题,尤其是当视图涉及复杂查询或大量数据时。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值