首页 > 数据库 >数据库基础(13) . MySQL视图

数据库基础(13) . MySQL视图

时间:2024-11-16 17:51:15浏览次数:3  
标签:info 13 name 视图 stu MySQL id view

1.介绍

1.1.什么是视图

MySQL中的视图是一种虚拟表,它并不存储实际的数据,而是存储了一条SELECT查询语句的结果集。

视图可以简化复杂的查询操作,保护数据,并且可以使数据库结构更加清晰易懂。

1.2.视图的作用

  1. 简化查询:视图可以将复杂的查询包装起来,使得最终用户只需要执行简单的查询即可获取所需的数据。
  2. 保护数据:通过定义视图,可以向用户提供特定的数据子集,而隐藏表中的其他列或行,从而达到保护敏感数据的目的。
  3. 逻辑数据聚合:视图可以将来自多个表的数据进行逻辑上的聚合,使得用户可以从一个视图中获取多个表中的数据。
  4. 增强安全性:视图可以实现行级安全控制,通过定义视图来限制用户只能访问某些特定的数据行。

2.操作

2.1.创建视图

创建视图的基本语法如下:

CREATE VIEW view_name (column_list)
AS
select_statement;

其中:

  • view_name 是要创建的视图的名字。
  • column_list 可选,用于指定视图中的列名。
  • select_statement 是定义视图的SELECT查询语句。
-- 根据单一表创建, 创建时指定列名
create view stu_info ( id, name, sex,  info )  as
select stu_id, stu_name, stu_sex,   stu_info
from student ;

-- 根据多表创建, 使用默认字段
create view stu_team_view as
select stu_id, stu_name, team_title
    from student s left join team t on s.team_id = t.team_id;

2.2.查看视图

-- 查看表的结构 ,  显示表中各列的信息,包括列名、数据类型、是否允许为空等
desc stu_info;

-- 查看视图是如何定义的,包括视图所基于的SELECT语句。
show create view stu_info;

-- 查看表的基本信息和统计信息,  显示表的状态信息,包括表名、引擎、行数、数据大小等
show table status like 'stu_info';

2.3.修改视图

-- 例题1:增加字段
    alter view stu_info(id, name,sex, birth, info) as
    select stu_id, stu_name,stu_sex, stu_birth,  stu_info
    from student ;

-- 例题2:重新定义
    alter view stu_info(id, name, info) as
    select stu_id, stu_name,  stu_info
    from student where stu_info is  not null ;

2.4.查询视图

使用视图就像使用普通表一样

select * from stu_info;

select stu_id, stu_name, team_title  from stu_team_view;

2.5.更新视图

视图也可以更新,但有一些限制:

  1. 基础表:视图必须基于单个表或多个表的联接。
  2. 不可更新的视图:如果视图包含了聚合函数、DISTINCT、JOIN、GROUP BY、HAVING等,那么这个视图是不可更新的。
update stu_info
set info = '充满好奇'
where id = 4;

注意 : 这个修改会直接影响到表中数据

2.6.删除视图

删除视图也很简单,使用DROP VIEW语句:

drop view stu_info;

3.视图的局限性

虽然视图提供了很多便利,但也存在一些局限性:

  1. 性能:视图实际上并不存储数据,而是每次查询时重新计算结果集,这可能导致性能问题。
  2. 索引:视图本身不能拥有索引,因此在大型数据集上使用视图时,查询速度可能会受到影响。
  3. 可更新性:不是所有的视图都能被更新,特别是那些包含聚合函数或其他复杂查询的视图。

标签:info,13,name,视图,stu,MySQL,id,view
From: https://blog.csdn.net/yuanchun05/article/details/143694322

相关文章

  • MySQL数据库1——数据库概论
    一.数据库概论1.数据库数据库(DataBase,DB):是长期存储在计算机内、有组织的、统一管理的相关数据的集合。简单来说,它就是一个存储各种数据的仓库,且存储过程不是随便而是有组织的。数据库管理系统(DBMS):位于用户与操作系统制键的一层数据管理软件,为用户提供访问DB的方法。我......
  • NOIP集训 P4137 Rmq Problem / mex 题解
    前置指使:可持久化线段树题解:P4137RmqProblem/mex有一个长度为\(n\)的数组\(\{a_1,a_2,...,a_n\}\)。\(m\)次询问,每次询问一个区间内最小没有出现过的自然数。Input第一行,两个正整数\(n,m\)。第二行,\(n\)个非负整数\(a_1,a_2,...,a_n\)。接下来\(m\)行,每......
  • 洛谷 P6874 [COCI2013-2014#6] KOCKICE
    动笔算算样例可得一个性质,只要确定中间位置的数是多少,其他位置就可以直接求出。如果我们暴枚中间的数,必然超时。于是我们需要用二分。如果中间位置上的数是答案,那么无论什么数,操作次数一定多于他。所以我们只要判断关系就能判断往哪边找。代码:#include<bits/stdc++.h>using......
  • 哋它亢编程语言3.13版本:新时代的编程艺术?
    在技术的浪潮中,总有一些创新让我们眼前一亮。今天,我们要探索的是“哋它亢编程语言”3.13版本(参考:https://datacon-14302.xyz/3.13/),这个版本带来了一系列令人振奋的新特性和改进,让我们的编程体验更上一层楼。哋它亢3.13:新时代的编程艺术“哋它亢”一直以其简洁的语法和强大的功能......
  • CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011 普及组] 数字反转
    CSP/信奥赛C++语法基础刷题训练(10):洛谷P1307:[NOIP2011普及组]数字反转题目描述给定一个整数NNN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,......
  • MySQL简单索引
    前言索引的核心作用是加速数据查询。它通过减少查询所需扫描的数据量、支持快速定位数据、优化排序和分组操作,以及加速复杂的连接查询,显著提升数据库的性能。1.普通索引createindex语法  table_name要加速的表明(column_name表的列表)     这是最基础的索引类......
  • thinkphp6 使用自定义命令,生成数据库视图
    在ThinkPHP命令行工具中,你可以为选项设置别名,通过为选项指定一个简短的别名来简化命令输入。例如,如果你希望--force-recreate选项有一个简短的别名-f,你可以通过在addOption方法中设置第二个参数来实现这一点。示例:为选项设置别名在addOption方法的第二个参数中设置别......
  • Python 开发(13):文件与目录操作的实用技巧
    Python开发(13):文件与目录操作的实用技巧文件和目录操作是每个开发者在日常工作中不可或缺的部分。Python提供了丰富的文件和目录操作功能,如读取、写入文件、遍历目录、文件权限管理等。这些功能不仅适用于小型脚本项目,在数据处理、自动化任务和服务器开发中也十分常用。......
  • Ubuntu20.04安装Mysql
    Ubuntu20.04安装Mysql 1、方法一:下载安装MySQL(安装其他版本) 1.1在官网下载mysql安装包 1.2解压文件 1.3安装 2、方法二:通过apt安装MySQL服务(推荐,会安装最新版) 2.1初始化配置 2.2检查mysql服务状态 3.1配置远程访问 3.2新建数据库和用户 3.3mysql服务命令......
  • Ubuntu Server 20.04 安装MySQL
    1.通过apt安装MySQL1#命令12sudoapt-getupdate3#命令24sudoapt-getinstallmysql-server2.配置mysql初始化信息1sudomysql_secure_installation配置说明:ubuntu@VM-0-10-ubuntu:~$sudomysql_secure_installationSecuringtheMySQLserverdeployme......