MySQL笔记: 视图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
USE world;

-- 查询国家名-首都名列表
SELECT country.name AS '国家名字',city.Name AS '首都名字' FROM country,city WHERE country.capital = city.id;

-- 创建视图 语法:
-- create view 视图的名字
-- as
-- Select语句

CREATE OR REPLACE VIEW country_captial_view
AS
SELECT country.name AS 'countryName',city.Name AS 'cityname' FROM country,city WHERE country.capital = city.id;
-- with check opntion; 检查属性

-- 删除表
DROP VIEW country_captial_view;

-- ALGORITHM = MERGE 视图语句的文本视图定义合并起来
-- ALGORITHM = TEMPTABLE 把结果放在临时表中
-- ALGORITHM = UNDEFINED MySQL自己选择

-- 通过视图查询
SELECT * FROM country_captial_view;
SELECT * FROM country_captial_view WHERE countryName = 'China';
-- 通过视图修改了表中的数据
UPDATE country_captial_view SET cityname = 'wuxi' WHERE countryName = 'China';

-- 实际上是修改的下层数据表的数据.
-- 验证一下底层表数据有没有修改
SELECT * FROM country WHERE country.name = 'China'; -- 1891
--
SELECT * FROM city WHERE city.id = 1891; -- name 被改为了wuxi


-- [例子]
CREATE TABLE t1(id INT);
INSERT INTO t1 VALUES(1),(2),(3),(4),(5),(6),(7),(8);
SELECT * FROM t1;

-- 没有检查选项
CREATE VIEW v1 AS SELECT * FROM t1 WHERE id<4;
SELECT * FROM v1;

INSERT INTO v1 VALUES(9);
SELECT * FROM t1; -- 可以插入

-- 1. WITH LOCAL CHECK OPTION 当前约束条件生效
CREATE VIEW v2 AS SELECT * FROM t1 WHERE id<4 WITH LOCAL CHECK OPTION;
INSERT INTO v2 VALUES(10); -- 插不进去了

CREATE VIEW v3 AS SELECT * FROM v2 WITH LOCAL CHECK OPTION; -- WITH LOCAL CHECK OPTION 当前约束条件生效
INSERT INTO v3 VALUES(11); -- 可以插进去

-- 2. WITH CASCADED CHECK OPTION 继承上一视图约束条件
CREATE VIEW v4 AS SELECT * FROM v1 WITH CASCADED CHECK OPTION; -- WITH CASCADED CHECK OPTION 继承上一视图约束条件
INSERT INTO v4 VALUES(11); -- 插入失败

-- 3. WITH CHECK OPTION 在任何时刻都要进行匹配
CREATE VIEW v5 AS SELECT * FROM v1 WITH CHECK OPTION;
INSERT INTO v5 VALUES(11); -- 插入失败

CREATE VIEW v6 AS SELECT * FROM v1 WITH id <4 WITH CHECK OPTION;
INSERT INTO v6 VALUES(11); -- 插入失败


-- 练习
-- 选课系统choose数据库
--
文章目录