MySQL 数据库视图详解

视图是数据库中的虚拟表,基于SELECT查询创建,提供简化查询和数据安全。视图的好处包括简化复杂查询、增强数据安全性及保持数据独立性,即使源表结构改变。文章通过创建、查询、修改和删除视图的步骤,展示了如何在数据库中操作视图。
摘要由CSDN通过智能技术生成

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 查询语句上
视图的好处
简单
安全
数据独立
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值