- 作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
- 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
- 个人主页:团儿.-CSDN博客
目录
前言:
在数据驱动的时代,数据库作为信息的核心仓库,其性能、安全性和易用性对于任何组织或项目而言都至关重要。MySQL,作为世界上最流行的开源关系型数据库管理系统之一,凭借其强大的功能、灵活的配置和广泛的社区支持,成为了众多企业和开发者的首选。而在MySQL的众多特性中,视图(View)以其独特的方式,为数据库的设计、管理和访问带来了革命性的变化。
视图,简而言之,是存储在数据库中的一条SQL查询语句,它表现为一个虚拟的表。与物理表不同,视图并不包含数据本身,而是根据定义它的SQL语句动态生成数据。这种特性使得视图在优化查询性能、增强数据安全、简化数据访问以及实现复杂业务逻辑等方面展现出了巨大的优势。
首先,通过合理使用视图,我们可以将复杂的查询逻辑封装起来,使得最终用户或应用程序在访问数据时无需关心底层的复杂性和细节,从而大大简化了数据访问的过程。这对于提高开发效率、降低维护成本具有重要意义。
其次,视图在数据安全方面发挥着不可替代的作用。通过创建视图,我们可以限制用户对数据库中某些数据的直接访问,只展示他们需要的或有权访问的信息。这种基于视图的访问控制机制,为数据库的安全防护提供了一道有力的屏障。
再者,视图还是优化查询性能的有效手段之一。通过预先计算并存储复杂的查询结果,视图可以减少数据库的负载,提高查询的响应速度。尤其是在处理大量数据和复杂查询时,视图的这种优势更加明显。
最后,视图还为实现复杂的业务逻辑提供了可能。通过组合多个表中的数据,我们可以创建出符合特定业务需求的视图,从而满足多样化的数据分析和报告需求。
正文:
1.视图的定义:
一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。
视图是从一个或多个基表中导出来的,可以通过insert,update,delete来操作视图
2.视图的优点:
简单化:
看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化操作。经常被使用的查询可以制作成一个视图
安全性:
通过视图用户只能查询和修改所能见到的数据,数据库中其他的数据既看不见也取不到。数据库授权命令可以让每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行,列上。
逻辑数据独立性:
视图可帮助用户屏蔽真实表结构变化带来的影响
3.创建单表视图
创表:
CREATE TABLE t(quantity INT, price INT);
插入数据:
INSERT INTO t VALUES(3,50);
创建视图:
CREATE VIEW view_t AS SELECT quantity,price,quantity*price FROM t;
查看视图:
SELECT * FROM view_t;
4.创建多表视图
创建表:
create table student( s_id int(3) primary key,s_name varchar(30),s_age int(3),s_sex varchar(8));
create table stu_info(s_id int(3),class varchar(50),addr varchar(100)) default charset utf8mb4 collate utf8mb4_bin;
插入数据:
insert into student values (1,'z3',20,'m'),(2,'L4',30,'m'),(3,'w5',40,'f');
insert into stu_info (s_id,class,addr) values(1,'二班','安徽'),(2,'三班','重庆'),(3,'一班','山东');
创建视图:
CREATE VIEW stu_class(id,name,class)
AS
SELECT student.s_id,student.s_name,stu_info.class from student,stu_info WHERE student.s_id=stu_info.s_id;
查看视图的基本信息:
SHOW TABLE STATUS LIKE 'stu_class'\G
查看视图的详细信息:
show create view stu_class;
5.查看mysql中所有视图
select * from information_schema.views\G
6.修改视图
CREATE OR REPLACE VIEW view_t AS SELECT * FROM t;
或
ALTER VIEW view_t AS SELECT quantity FROM t ;
7.更新视图
UPDATE view_t SET quantity=5;
8.删除视图内容
DELETE FROM view_t WHERE quantity=5;
9.删除视图
DROP VIEW stu_class;
10.视图和表的区别
(1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表。而表不是。
(2)视图没有实际的物理记录,而表有。
(3)表是内容,视图窗口
(4)表和视图虽然都占用物理空间,但是视图只是逻辑概念存在,而表可以及时对数据进行修改,但是视图只能用创建语句来修改
(5)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL 语句的集合。从安全角度来说,视图可以防止用户接触数据表,因而不知道表结构
(6)表属于全局模式中的表,是实表。而视图属于局部模式的表,是虚表
(7)视图的建立和删除只影响视图本身,而不影响对应表的基本表
11.两者的联系
视图是在基本表之上建立的表,它的结构和内容都来自于基本表,它依赖基本表存在而存在。
一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本的抽象和逻辑意义上建立的关系。
12.视图的优缺点
优点:
简化查询,把复杂的单表或多表查询语句,简单化。
提供安全层,可以针对特定用户限制访问某些基表的特殊列。
缺点:
视图嵌套,影响查询效率。
视图与基表有依赖关系,频繁修改基表会比较繁琐。
期待您的关注~
标签:数据库,视图,查询,stu,数据安全,MySQL,数据,class From: https://blog.csdn.net/xyyy060908/article/details/142171393