【愚公系列】2023年05月 Java教学课程 103-MySQL数据库(视图)

举报
愚公搬代码 发表于 2023/05/31 21:53:40 2023/05/31
【摘要】 一、视图1.视图的概念视图是数据库中的一种虚拟表,它是由一个或多个表的数据所组成的。视图并不存储实际的数据,而是根据查询语句动态生成的结果集。视图可以被视为是一个过滤器,可以用来隐藏敏感数据、简化查询、提高数据的安全性和保密性等。视图可以在不影响底层数据的情况下,提供不同的数据展示方式,让用户更容易地查询和分析数据。视图可以通过CREATE VIEW语句创建,并且可以像表一样进行查询、插入、...

一、视图

1.视图的概念

视图是数据库中的一种虚拟表,它是由一个或多个表的数据所组成的。视图并不存储实际的数据,而是根据查询语句动态生成的结果集。视图可以被视为是一个过滤器,可以用来隐藏敏感数据、简化查询、提高数据的安全性和保密性等。视图可以在不影响底层数据的情况下,提供不同的数据展示方式,让用户更容易地查询和分析数据。视图可以通过CREATE VIEW语句创建,并且可以像表一样进行查询、插入、更新和删除等操作。

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 视图名称;

• 查询视图基本演示

-- 查询视图。查询这张虚拟表,就等效于查询城市和所属国家

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;



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。