当前位置: 首页 > article >正文

〔 MySQL 〕视图

以下是上述文章的目录:

一、视图概述

  • 视图的定义

二、基本使用

  • 创建视图
  • 查询视图
  • 修改视图影响基表
  • 查询验证
  • 删除视图

三、视图规则和限制

  • 命名规则
  • 数量限制
  • 索引和触发器
  • 安全性
  • ORDER BY规则
  • 与表一起使用

四、实战案例

  • 牛客实战OJ
  • 修改基表影响视图
  • 查询验证
  • 删除视图

视图(Views)

视图是一个虚拟表,其内容由查询定义,可以像操作真实表一样对视图进行操作。

基本使用

创建视图

-- 创建视图v_ename_dname,包含EMP表的ename和DEPT表的dname
CREATE VIEW v_ename_dname AS
SELECT ename, dname
FROM EMP, DEPT
WHERE EMP.deptno = DEPT.deptno;

查询视图

-- 查询视图v_ename_dname,并按dname排序
SELECT * FROM v_ename_dname ORDER BY dname;

修改视图影响基表

-- 更新视图v_ename_dname中ename为'TEST',影响EMP表中的数据
UPDATE v_ename_dname SET ename = 'TEST' WHERE ename = 'CLARK';

查询验证

-- 查询EMP表,验证ename是否被更新为'TEST'
SELECT * FROM EMP WHERE ename = 'TEST';

删除视图

-- 删除视图v_ename_dname
DROP VIEW v_ename_dname;

视图规则和限制

  1. 命名规则:与表一样,视图名必须唯一,不能与现有视图或表名重复。
  2. 数量限制:创建视图的数量没有限制,但复杂查询作为视图可能会影响性能。
  3. 索引和触发器:视图不能添加索引,也不能有关联的触发器或默认值。
  4. 安全性:视图可以提高安全性,但必须具有足够的访问权限。
  5. ORDER BY 规则:视图中可以使用ORDER BY,但如果从视图检索数据的SELECT语句中也包含ORDER BY,则视图中的ORDER BY将被覆盖。
  6. 与表一起使用:视图可以和表一起使用。

实战案例

牛客实战OJ

针对actor表创建视图actor_name_view

-- 假设actor表结构如下:
-- CREATE TABLE actor (
--   actor_id INT PRIMARY KEY,
--   actor_name VARCHAR(100)
-- );

-- 创建视图actor_name_view,包含actor_name
CREATE VIEW actor_name_view AS
SELECT actor_name
FROM actor;

修改基表影响视图

-- 修改EMP表deptno为10,影响视图v_ename_dname中的数据
UPDATE EMP SET deptno = 10 WHERE ename = 'JAMES';

查询验证

-- 查询视图v_ename_dname,验证ename是否为'JAMES'且dname是否变化
SELECT * FROM v_ename_dname WHERE ename = 'JAMES';

删除视图

-- 删除视图actor_name_view
DROP VIEW actor_name_view;

以上笔记包含了视图的基本使用、规则限制以及实战案例,方便快速理解和应用视图。


http://www.kler.cn/a/441649.html

相关文章:

  • 25/1/22 算法笔记<ROS2> TF变换
  • SentencePiece和 WordPiece tokenization 的含义和区别
  • 如何在 Pytest 中使用命令行界面和标记运行测试
  • python转转商超书籍信息爬虫
  • 机器学习(5):支持向量机
  • Java自定义多队列线程池
  • CMD使用SSH登陆Ubuntu
  • llm chat场景下的数据同步
  • 万字总结Python 设计模式:21种模式实际应用
  • 计算机网络安全复习
  • el-table 列的字段内容太多show-overflow-tooltip 不显示,数据列闪烁抖动
  • Unity Pico 实现离线TTS
  • Superset 和 Appsmith的对比
  • js 中将字符串转变为变量
  • Java项目--仿RabbitMQ的消息队列--内存数据管理
  • Qt WORD/PDF(四)使用 QAxObject 对 Word 替换(QWidget)
  • VScode:常见问题的原因及其解决方案
  • Linux高性能服务器编程 | 读书笔记 | 9.定时器
  • Git简介和特点
  • Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)
  • Unity全局光照详解
  • 基于Spring Boot的摄影师分享交流社区
  • 了解ARM的千兆以太网——RK3588
  • AI技术赋能电商行业:创新应用与未来展望
  • linux 添加默认网关
  • 25上半年软考《系统架构设计师》,备考大纲已出!