01视图与表的关系
视图是存储在数据库中,查询sql时使用的语句。
一个视图中可以包含多个表,但是真正存储数据的是表。
视图与表的关系类似包裹和货物,真正有价值的是货物。
02视图的创建
**格式:create view 视图名(视图列名1,视图列名2)
as
select 语句
注意:这里的as和其他地方不一样,相当于视图和表之间 的桥梁,起调用表中存储数据作用。
例一创建ProductSummon视图
CREATE VIEW ProductSummon(product_type,cnt_product)
AS
SELECT product_type,COUNT(*)
FROM PRODUCT3
GROUP BY product_type
视图的调用
格式:
select 列名1,列名2,
from 表名
例二调用视图productsummon
SELECT product_type,cnt_product
FROM ProductSummon
注意:视图里面可以包含多个select语句
在定义视图时可以使用多个select语句,如where,group by,having,但是不能使用order by。因为视图和表一样,数据行都是无序的
03多重视图的查询
多重视图的查询说白了,就是在一个视图的基础上建立另一个视图。
例三在productsummon的基础上建立productsumijm视图
CREATE TABLE ProductSumijm(product_type,cnt_product)
AS
SELECT product_type,COUNT(*)
FROM ProductSum
GROUP BY product_type
04视图的更新
说到视图更新,第一反应是使用inser into语句
例四向producting语句中添加电气制品,5
INSERT INTO ProductSumijm VALUES('电器制品',5)
这是因为在productSumjim中使用了汇总函数group by,至使数据前后不一致,无法同步更新。同样的不能使用having,因为having是建立在grouping的基础上的。distinct去重也会使前后数据不一致
只要是不使用使数据前后数据不一样的都可以进行更新
CREATE VIEW ProductJim(product_type,cnt_product)
AS
SELECT *
FROM ProductSum
WHERE product_type='办公用品'
05删除视图
格式:drop view 视图名称
例五删除视图productsum
DROP VIEW ProductSum