10. 视图
USE world;-- 查詢國家名-首都名列表
SELECT country.name AS '國家名字',city.Name AS '首都名字' FROM country,city WHERE country.capital = city.id;-- 創(chuàng)建視圖 語法:
-- 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 把結(jié)果放在臨時表中
-- ALGORITHM = UNDEFINED MySQL自己選擇-- 通過視圖查詢
SELECT * FROM country_captial_view;
SELECT * FROM country_captial_view WHERE countryName = 'China';
-- 通過視圖修改了表中的數(shù)據(jù)
UPDATE country_captial_view SET cityname = 'wuxi' WHERE countryName = 'China';-- 實際上是修改的下層數(shù)據(jù)表的數(shù)據(jù).
-- 驗證一下底層表數(shù)據(jù)有沒有修改
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); -- 插入失敗 -- 練習(xí)
-- 選課系統(tǒng)choose數(shù)據(jù)庫
--
轉(zhuǎn)載于:https://www.cnblogs.com/bchen/p/7426307.html
總結(jié)
- 上一篇: IE浏览器与非IE浏览器JS日期兼容性问
- 下一篇: 软件工程知识点