当前位置:网站首页>DDL:视图——《mysql 从入门到内卷再到入土》

DDL:视图——《mysql 从入门到内卷再到入土》

2022-08-10 20:51:00 Dhaa_Ryan

内卷能让一个群体的内部变得异常的精致,但是本质上却完完全全没有任何的进步,并且会导致更多没必要的资源浪费以及带来更加激烈的竞争。它是zbzy社会下劳动力过剩的必然现象。

视图

虚拟表,能像普通的表一样使用,通过表动态生成数据,只保存SQL逻辑 重用SQL语句,简化操作,提高安全性

视图的创建:

语法:

create view 视图名 as 查询语句:

测试例:
查询姓’田所’的学生名和专业名

CREATE VIEW v1
AS
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.’majorid’=m.’id’

SELECT * FROM v1 WHERE s.stuname LIKE ‘田所%SELECT v1.stuname FROM v1 WHERE s.stuname LIKE ‘田所%

视图的修改:

CREATE OR REPLACE VIEW 视图名 AS 查询语句;
ALTER VIEW 视图名 AS 查询语句

视图的删除:

DROP VIEW 视图名,视图名......;

视图的查看:

SHOW CREATE VIEW 视图名;

视图无法进行更新的条件

1.包含以下关键词的sql字句:
分组函数,distinct,group by ,having,union,union all
2.常量视图:
测试例:

CREATE OR REPLACE VIEW myv2 AS SELECT ‘john’NAME;
UPDATE myv2 SET NAME =’lucy ’

3.SELECT中包含子查询:
测试例:

CREATE OR REPLACE VIEW view1
AS
SELECT (
SELECT MAX(salary) FROM employees;
)

4.JOIN:
测试例:

CREATE OR REPLACE VIEW view2
AS
SELECT * FROM employees e
JOIN deparments d
ON e.department_id = d.department_id

5.FROM一个不能更新的视图:
测试例:

CREATE OR REPLACE VIEW view4
AS
SELECT * FROM view3
UPDATE view 4 SET revolution=100 WHERE department_id = 60;

6.WHERE字句中的子查询引用了FROM字句中的表
测试例:

CREATE OR REPLACE VIEW view6
AS
SELECT * FROM employees 
WHERE employee_id IN(
SELECT manager_id
FROM employees 
WHERE manager_id IS NOT NULL
);
UPDATE view 6 SET revolution=130 WHERE manager_id = 15;

视图和表的区别

视图:在内存存储的是逻辑语句,能增删改查(增删改非常受限)
表:在内存存储的是数据,为所欲为的增删改查

返回索引

Mysql 基础 目录链接

原网站

版权声明
本文为[Dhaa_Ryan]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_46207392/article/details/114070574