一.虚拟的“表” —— 视图
视图(VIEW):一面镜像,本身不包含数据。源数据发生改变,镜像也发生改变。
CREATE VIEW pet_show
AS
SELECT * FROM pet;
SELECT ps.name, ps.species FROM pet_show AS ps WHERE ps.sex = 'm';
DROP VIEW pet_show;
CREATE VIEW pet_show
AS
SELECT name, species FROM pet;
SELECT * FROM pet_show;
DROP VIEW pet_show;
CREATE VIEW pet_show
AS
SELECT name, species FROM pet WHERE 1 = 2;
SELECT * FROM pet_show;
DROP VIEW pet_show;
---按出生日期
CREATE VIEW pet_show
AS
SELECT * FROM pet ORDER BY birth;
SELECT * FROM pet_show;
DROP VIEW pet_show;
二.固化SQL语句 —— 存储过程
1.使用MySQL黑框
三.课后作业
Q1:按要求复制 milk_tea 表,并进行如下操作。
1、复制 milk_tea 表中 prod_id 为 1-5 的行,并命名为 copy_milk_tea 表。
CREATE TABLE copy_milk_tea
AS
SELECT *
FROM milk_tea AS mt
WHERE mt.prod_id < 6;
2、在 copy_milk_tea 表上建立视图,视图名为 view_milk_tea。查看该视图。
CREATE VIEW view_milk_tea
AS
SELECT * FROM copy_milk_tea
3、对视图进行查询操作,找出销售价高于 15 的产品。
SELECT *
FROM view_milk_tea AS vmt
WHERE vmt.sale_price > 15;
Q2:按要求对 copy_milk_tea 表进行操作,并同时查看视图。
1、插入 milk_tea 表中 prod_id 为 6 的行。
INSERT INTO copy_milk_tea
SELECT *
FROM milk_tea
WHERE prod_id = 6;
2、删除 copy_milk_tea 表中销售价格为 15 的行。
DELETE FROM copy_milk_tea
WHERE sale_price = 15;
Q3:简单阐述视图与表的异同。(对比复制表操作)
答:
同:都是二维表结构,都可以使用SELECT语句的去哪不操作
异:视图是虚拟的表,本身不包括数据,其内容随着SELECT语句的结果改变而改变。但如果是复制表,则是固定不变的,即使AS后的SELECT语句结果发生改变,复制表也不会发生改变。不可以通过视图更新原表数据。