携手创作,共同成长!这是我参与「掘金日新计划 · 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_id | name | salary |
|---|---|---|
| 1 | xiaoming | 6000 |
| 2 | xiaolan | 3500 |
可以查出对应视图的结果。
还可以在创建视图时,给视图的字段命名。
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_id | name | sal |
|---|---|---|
| 1 | xiaoming | 6000 |
| 2 | xiaolan | 3500 |
可以看到视图的字段名改变了。
- 实际上就是在SQL查询语句的基础上封装了视图VIEW,这样就会基于SQL语句的结果集形成一张虚拟表。
- 在创建视图时,没有在视图名后面指定字段列表,则视图中字段列表默认与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_id | name | department_name |
|---|---|---|
| 1 | xiaoming | IT |
| 2 | xiaolan | IT |
查看视图
- 查看数据库的表对象,视图对象
SHOW TABLES;
- 查看视图的结构
DESC / DESCRIBE 视图名称;
- 查看视图的属性信息
SHOW TABLE STATUS LIKE `视图名称`
如果Comment为VIEW,说明该表为视图,其他的信息为NULL,说明这是一个虚表。
- 查看视图的详细定义信息
SHOW CREATE VIEW 视图名称;
今天先学习到这里,明天继续。