1.
视图的概念
视图是一种虚拟存在的数据表
这个虚拟的表并不在数据库中实际存在
作用是将一些比较复杂的查询语句的结果,封装到一个虚拟表中。后期再有相同复杂查询时,直接
查询这张虚拟表即可
说白了,视图就是将一条
SELECT
查询语句的结果封装到了一个虚拟表中,所以我们在创建视图的
时候,工作重心就要放在这条
SELECT
查询语句上
2.
视图的好处
简单
对于使用视图的用户不需要关心表的结构、关联条件和筛选条件。因为这张虚拟表中保存的
就是已经过滤好条件的结果集
安全
视图可以设置权限
,
致使访问视图的用户只能访问他们被允许查询的结果集
数据独立
一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;
源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响
3.
视图数据准备
--
创建
db7
数据库
CREATE DATABASE
db7;
--
使用
db7
数据库
USE
db7;
--
创建
country
表
CREATE TABLE
country(
id
INT
PRIMARY KEY AUTO_INCREMENT
,
country_name
VARCHAR
(
30
)
);
--
添加数据
INSERT INTO
country
VALUES
(
NULL
,
'
中国
'
),(
NULL
,
'
美国
'
),(
NULL
,
'
俄罗斯
'
);
--
创建
city
表
CREATE TABLE
city(
id
INT
PRIMARY KEY AUTO_INCREMENT
,
city_name
VARCHAR
(
30
),
cid
INT
,
--
外键列。关联
country
表的主键列
id
CONSTRAINT
cc_fk1
FOREIGN KEY
(cid)
REFERENCES
country(id)
);
--
添加数据
INSERT INTO
city
VALUES
(
NULL
,
'
北京
'
,
1
),(
NULL
,
'
上海
'
,
1
),(
NULL
,
'
纽约
'
,
2
),(
NULL
,
'
莫斯
科
'
,
3
);
4.
视图的创建
创建视图语法
--
标准语法
CREATE VIEW
视图名称
[(
列名列表
)]
AS
查询语句
;
普通多表查询,查询城市和所属国家
--
普通多表查询,查询城市和所属国家
SELECT
t1.*,
t2
.country_name
FROM
city t1,
country t2
WHERE
t1
.cid
= t2
.id
;
--
经常需要查询这样的数据,就可以创建一个视图
创建视图基本演示
--
创建一个视图。将查询出来的结果保存到这张虚拟表中
CREATE
VIEW
city_country
AS
SELECT
t1.*,t2
.country_name
FROM
city t1,country t2
WHERE
t1
.cid
=t2
.id
;
创建视图并指定列名基本演示
--
创建一个视图,指定列名。将查询出来的结果保存到这张虚拟表中
CREATE
VIEW
city_country2 (city_id,city_name,cid,country_name)
AS
SELECT
t1.*,t2
.country_name
FROM
city t1,country t2
WHERE
t1
.cid
=t2
.id
;
5.
视图的查询
查询视图语法
--
标准语法
SELECT
*
FROM
视图名称
;
查询视图创建语法
--
标准语法
SHOW CREATE VIEW
视图名称
;
查询视图基本演示
--
查询视图。查询这张虚拟表,就等效于查询城市和所属国家
SELECT
*
FROM
city_country;
--
查询指定列名的视图
SELECT
*
FROM
city_country2;
--
查询所有数据表,视图也会查询出来
SHOW TABLES
;
查询视图创建语法
--
标准语法
SHOW CREATE VIEW
视图名称
;
查询视图创建语句基本演示
SHOW CREATE VIEW
city_country;
6.
视图的修改
修改视图表中的数据
--
标准语法
UPDATE
视图名称
SET
列名
=
值
WHERE
条件
;
--
修改视图表中的城市名称北京为北京市
UPDATE
city_country
SET
city_name=
'
北京市
'
WHERE
city_name=
'
北京
'
;
--
查询视图
SELECT
*
FROM
city_country;
--
查询
city
表
,
北京也修改为了北京市
SELECT
*
FROM
city;
--
注意:视图表数据修改,会自动修改源表中的数据
修改视图表结构
--
标准语法
ALTER VIEW
视图名称
[(
列名列表
)]
AS
查询语句
;
--
查询视图
2
SELECT
*
FROM
city_country2;
--
修改视图
2
的列名
city_id
为
id
ALTER
VIEW
city_country2 (id,city_name,cid,country_name)
AS
SELECT
t1.*,t2
.country_name
FROM
city t1,country t2
WHERE
t1
.cid
=t2
.id
;
7.
视图的删除
删除视图
--
标准语法
DROP VIEW
[
IF EXISTS
]
视图名称
;
--
删除视图
DROP VIEW
city_country;
--
删除视图
2
,如果存在则删除
DROP VIEW IF EXISTS
city_country2
8.
视图的总结
视图是一种虚拟存在的数据表
这个虚拟的表并不在数据库中实际存在
说白了,视图就是将一条
SELECT
查询语句的结果封装到了一个虚拟表中,所以我们在创建视图的
时候,工作重心就要放在这条
SELECT
查询语句上
视图的好处
简单
安全
数据独立