【Mysql】之视图操作
一、视图实例1-创建视图及查询数据操作
首先,创建三个表:user、course、user_course
表:user
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `account` varchar(200) NOT NULL, `name` varchar(200) NOT NULL, `address` varchar(500) DEFAULT NULL, `others` varchar(500) DEFAULT NULL, `others2` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into user (account,name,address,others1,others2)
values (user1,'小张','天津',1,1), (user2,'小王','北京',2,2), (user3,'小李','上海',3,3);
表:course
CREATE TABLE `course` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NULL, `description` varchar(500) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into course (name,description) values ('JAVA','JAVA课程'), ('C++','C++课程'), ('C','C课程');
表:user_course
CREATE TABLE `user_course` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `userid` bigint(20) NOT NULL, `courseid` bigint(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
insert into user_course (userid,courseid) values (1,2), (1,3), (2,4), (3,5);
其次,利用表关联三表进行联合查询:
SELECT uc.id AS id, u. NAME AS username, c.description AS coursename FROM USER u LEFT JOIN user_course uc ON ((u.id = uc.userid)) LEFT JOIN course c ON ((uc.courseid = c.id)) WHERE u. NAME = '小王';
最后,创建视图进行三表关联查询:
DROP VIEW IF EXISTS view_user_course; CREATE VIEW view_user_course AS ( SELECT uc.id AS id, u. NAME AS username, c.description AS coursename FROM USER u LEFT JOIN user_course uc ON ((u.id = uc.userid)) LEFT JOIN course c ON ((uc.courseid = c.id)) );
SELECT * FROM view_user_course vuc WHERE vuc.username = '小张';
二、视图实例2-增删改数据操作
首先, 创建视图:
视图与表是一对一关系情况:如果没有其它约束(如视图中没有的字段,在基本表中是必填字段情况),是可以进行增删改数据操作;
create view st_view as( select u.id as st_id, u.`name` as st_name, u.account as st_user from `user` u );
#视图增删改查 insert into st_view (st_name,st_user) values('小孙','user4'); delete from st_view where st_name = '小孙'; update st_view set st_name = '小田' where st_id = 7
不积跬步,无以致千里;不集小流,无以成江海。
如转载本文,请还多关注一下我的博客:https://www.cnblogs.com/Owen-ET/;
我的Github地址:https://github.com/Owen-ET————————————
无善无恶心之体, 有善有恶意之动, 知善知恶是良知, 为善去恶是格物。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App