MySQL学习-视图(二)

119 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情

前言

上篇我们学习了MySQL中的视图一。有兴趣的小伙伴可以阅读(# MySQL学习-视图(一))。
下面继续学习MySQL中的视图。

视图

创建视图

  • 在CREATE VIEW语句中嵌入子查询。
CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW 视图名称 [{字段名}]
AS 查询语句
[WITH [CASCADED | LOCAL] CHECK OPTION]
  • 也可以做如下精简。
CREATE VIEW 视图名称 AS 查询语句

创建单表视图

创建视图view_emp,查询部门id为1的员工信息,包括id,姓名,薪资。

CREATE VIEW view_emp
AS
SELECT employee_id, name, salary
FROM employees
WHERE department_id = 1;

查询视图

SELECT *
FROM view_emp;
employee_idnamesalary
1xiaoming6000
2xiaolan3500

可以查出对应视图的结果。

还可以在创建视图时,给视图的字段命名。

CREATE VIEW view_emp (emp_id, name, sal)
AS
SELECT employee_id, name, salary
FROM employees
WHERE department_id = 1;

查询视图

SELECT *
FROM view_emp;
emp_idnamesal
1xiaoming6000
2xiaolan3500

可以看到视图的字段名改变了。

  1. 实际上就是在SQL查询语句的基础上封装了视图VIEW,这样就会基于SQL语句的结果集形成一张虚拟表。
  2. 在创建视图时,没有在视图名后面指定字段列表,则视图中字段列表默认与SELECT语句中的字段列表一致。如果SELECT语句中给字段取了别名,那么视图中的字段名和别名相同。

创建多表视图

创建视图view_emp_dpt,查询部门id为1的员工信息,包括id,姓名,部门名称。

CREATE VIEW view_emp_dpt
AS
SELECT employee_id, name, department_name
FROM employees e, departments d
WHERE e.department_id = 1
AND e.department_id = d.department_id;

查询视图

SELECT *
FROM view_emp_dpt;
employee_idnamedepartment_name
1xiaomingIT
2xiaolanIT

查看视图

  1. 查看数据库的表对象,视图对象
SHOW TABLES;
  1. 查看视图的结构
DESC / DESCRIBE 视图名称;
  1. 查看视图的属性信息
SHOW TABLE STATUS LIKE `视图名称`

如果Comment为VIEW,说明该表为视图,其他的信息为NULL,说明这是一个虚表。

  1. 查看视图的详细定义信息
SHOW CREATE VIEW 视图名称;

今天先学习到这里,明天继续。