Mysql视图

本文围绕MySQL视图展开,介绍视图是基于表或视图的逻辑表,本身无数据,是存储在数据字典的select语句。阐述了视图可选择性选取数据、简化查询、维护数据独立等优点,还详细说明了创建、查询、修改、删除视图及查看视图定义的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Mysql视图:

  • 视图是基于一个表或多个表或试图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。
  • 视图基于的表称为基表。
  • 视图是存储在数据字典里的一条select语句。
  • 通过创建视图可以提取数据的逻辑上的集合或组合 

 2、视图的优点:

        (显示部分,对权限的控制) 

  1. 对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
  2. 用户通过简单的查询可以从复杂查询中得到结果。
  3. 维护数据的独立性,视图可以从多个表中检索数据。
  4. 对于相同的数据可产生不同的视图 

3、创建视图:

create VIEW 视图名 AS 子查询;

3.1、创建一张基本工资大于2000元的员工信息视图: 

create VIEW view1 AS (
	SELECT
		*
	FROM
		emp
	WHERE
		SAL > 2000
);

3.2创建一张可以统计部门编号,部门名称、部门人数、部门平均工资的视图

CREATE VIEW view2 AS (
	SELECT
		d.DEPTNO AS '部门编号',
		d.DNAME AS '部门名称',
		COUNT(e.DEPTNO) AS '部门人数',
		IFNULL(ROUND(AVG(SAL), 2), 0) AS '平均工资'
	FROM
		emp e
	RIGHT JOIN dept d ON (e.DEPTNO = d.DEPTNO)
	GROUP BY
		e.DEPTNO
)

4、查询视图:

select * from 视图名;

5、修改视图:

create or REPLACE VIEW 视图名称 AS 子查询;

该语句用于修改视图,有该视图就修改,没有就创建

或者:

alter VIEW 视图名称 as 子查询;

该语句用于修改已经创建的视图,没有该视图则报错 

6、删除视图:

drop view 视图名;

7、查看视图定义:

desc 视图名称

### 创建、查询和管理 MySQL 视图的方法 #### 一、创建视图MySQL 中,可以通过 `CREATE VIEW` 语句来创建视图。以下是具体的语法: ```sql CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]; ``` - **`view_name`**: 表示要创建视图名称。 - **`select_statement`**: 是一条标准的 SQL 查询语句,用于定义视图的内容[^4]。 ##### 示例 假设有一个名为 `employees` 的表,包含字段 `id`, `name`, 和 `salary`。如果想创建一个只显示员工姓名和薪水的视图,则可以这样写: ```sql CREATE VIEW employee_salary_view AS SELECT name, salary FROM employees; ``` 此命令将创建一个名为 `employee_salary_view` 的视图[^1]。 #### 二、查询视图 一旦视图创建,就可以像对待普通表一样对其进行查询操作。例如,继续上面的例子,我们可以这样查询该视图: ```sql SELECT * FROM employee_salary_view WHERE salary > 5000; ``` 这将返回所有工资超过 5000 的员工的名字及其对应的薪资情况[^2]。 #### 三、管理视图 除了创建和查询之外,还需要掌握如何更新或者删除已有的视图。 ##### 修改视图 可以直接使用带有 OR REPLACE 子句的新 CREATE VIEW 命令重新定义现有视图而不必先将其删除再重建新版本: ```sql CREATE OR REPLACE VIEW employee_salary_view AS SELECT id, name, salary FROM employees WHERE department='Sales'; ``` 这里我们不仅增加了部门筛选条件还加入了 ID 字段作为额外信息展示的一部分[^3]。 ##### 删除视图 当不再需要某个特定视图时,应该考虑移除它以保持数据库整洁有序。执行如下指令即可完成这一过程: ```sql DROP VIEW IF EXISTS employee_salary_view; ``` 这条语句会安全地尝试销毁指定名字下的任何现存实例——即如果没有找到同名对象则不会报错而是静默忽略掉请求[^3]。 --- ### 注意事项 需要注意的是,在构建新的虚拟表格之前应当清楚了解哪些类型的 SELECT 结构支持转换成持久化形式供后续调用者反复利用。比如不能含有某些特殊关键字如 DISTINCT , GROUP BY 等等因为它们可能破坏了原本打算呈现出来的直观映射关系[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值