当前位置:网站首页>视图(view)
视图(view)
2022-07-06 15:32:00 【汤键.TJ】
目录
介绍
- 是一种虚拟存在的数据表
- 这个虚拟表并不在数据库中实际存在
作用:
- 将一些较为复杂的查询语句的结果,封装到一个虚拟表中
- 后期再有相同需求时,直接查询该虚拟表即可
例子:
- 分别有city表和country表2张表
- 2者是一对多的关系
- cid是外键列,指向country表中的主键id
- 需求:查询城市信息和所属国家信息
- select c1.id,c1.name,c2.name from city c1, country c2 where c1.cid=c2.id
- 这条SQL语句若会经常使用到,反复编写就比较麻烦
- 可以把这个语句查询出来的结果保存到另一数据表里
- 有了这张数据表后,后期再有这个查询的需求,就可以查询这个数据表即可
- 视图的作用就凸显出来了
视图的创建和查询
数据准备
-- 创建country表 CREATE TABLE country( id INT PRIMARY KEY auto_increment, -- 国家id name VARCHAR(20) -- 国家名称 ); -- 添加数据 INSERT INTO country VALUES (NULL,'中国'),(NULL,'美国'),(NULL,'俄罗斯'); -- 创建city表 CREATE TABLE city( id INT PRIMARY KEY auto_increment, -- 城市id name VARCHAR(20), -- 城市名称 cid INT, -- 外键列。关联country表的主键列id CONSTRAINT k1 FOREIGN KEY (cid) REFERENCES country(id) -- 添加外键约束 ); -- 添加数据 INSERT INTO city VALUES (NULL,'北京',1),(NULL,'上海',1),(NULL,'纽约',2),(NULL,'莫斯科',3);
实例操作
- 创建视图
-- 创建city_country视图,保存城市和国家的信息(使用指定列名) CREATE VIEW city_country (city_id,city_name,country_name) AS SELECT c1.id, c1.name, c2.name FROM city c1, country c2 WHERE c1.cid=c2.id;
- 查询视图
-- 查询视图 SELECT * FROM city_country;
视图的修改和删除
语法
- 修改视图数据语法
- update 视图名称 set 列名=值 where 条件;
- 修改视图结构语法
- alter view 视图名称 (列名列表) as 查询语句;
- 删除视图语法
- drop view [if exists] 视图名称;
实例操作
-- 修改视图数据,将北京改为深圳 (注意:修改视图数据后,源表中的数据也会随之修改) UPDATE city_country SET city_name='深圳' WHERE city_name='北京'; -- 修改视图结构,将视图中的country_name修改为name ALTER VIEW city_country (city_id,city_name,name) as SELECT c1.id, c1.name, c2.name FROM city c1, country c2 WHERE c1.cid=c2.id;
-- 删除city_country视图 DROP VIEW IF EXISTS city_country;
边栏推荐
- Crawler obtains real estate data
- Leetcode: interview question 17.24 Maximum cumulative sum of submatrix (to be studied)
- GD32F4XX串口接收中断和闲时中断配置
- 中国VOCs催化剂行业研究与投资战略报告(2022版)
- leetcode:面试题 17.24. 子矩阵最大累加和(待研究)
- MySQL----初识MySQL
- 如何实现文字动画效果
- 第3章:类的加载过程(类的生命周期)详解
- 枚举与#define 宏的区别
- That's why you can't understand recursion
猜你喜欢
Mysql database basic operations DML
0 basic learning C language - digital tube
Web APIs DOM 时间对象
NPDP certification | how do product managers communicate across functions / teams?
Chapter 3: detailed explanation of class loading process (class life cycle)
自制J-Flash烧录工具——Qt调用jlinkARM.dll方式
C# 三种方式实现Socket数据接收
[leetcode daily clock in] 1020 Number of enclaves
[线性代数] 1.3 n阶行列式
如何用程序确认当前系统的存储模式?
随机推荐
空结构体多大?
Classification, function and usage of MySQL constraints
MySQL教程的天花板,收藏好,慢慢看
HDR image reconstruction from a single exposure using deep CNN reading notes
Improving Multimodal Accuracy Through Modality Pre-training and Attention
volatile关键字
Installation and use of labelimg
NPDP certification | how do product managers communicate across functions / teams?
ResNet-RS:谷歌领衔调优ResNet,性能全面超越EfficientNet系列 | 2021 arxiv
数据处理技巧(7):MATLAB 读取数字字符串混杂的文本文件txt中的数据
网络基础入门理解
UE4蓝图学习篇(四)--流程控制ForLoop和WhileLoop
That's why you can't understand recursion
Should novice programmers memorize code?
如何实现文字动画效果
Aardio - 不声明直接传float数值的方法
0 basic learning C language - interrupt
【无标题】
npm无法安装sharp
Dealing with the crash of QT quick project in offscreen mode