【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
复制代码

 

posted @   Owen_ET  阅读(290)  评论(0编辑  收藏  举报
编辑推荐:
· .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
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 模様 (TV size ver.) Ivy to Fraudulent Game
  3. 3 河口恭吾
  4. 4 愛してる 高鈴
  5. 5 一生所爱 卢冠廷,莫文蔚
  6. 6 世间美好与你环环相扣 柏松
  7. 7 理想三旬 陈鸿宇
  8. 8 不浪漫罪名 王杰
  9. 9 樱花树下 张敬轩
  10. 10 因为你在 达闻西乐队,福禄寿FloruitShow
  11. 11 悬溺 葛东琪
樱花树下 - 张敬轩
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 林若宁

作曲 : 伍卓贤

树荫有一只蝉 跌落你身边

惊慌到失足向前

然后扑入我一双肩

令你腼腆一脸 像樱花万千

怀念美好高中两年

期望你的青春不变

去到今天

还记得樱花正开

还未懂跟你示爱

初春来时彼此约定过 继续期待

人置身这大时代

投入几番竞技赛

曾分开曾相爱

等待花蕊又跌下来

才洞悉这是恋爱

未有过的爱情 但有种温馨

未有过的爱情 但有种温馨

归家那单车小径

沿路细听你的歌声

没法再三倾听 你的感动昵称

维系错的一番友情

无奈已经不可纠正

太过坚贞

还记得樱花正开

还未懂跟你示爱

初春来时彼此闭着眼 渴望未来

人置身这大时代

投入几番竞技赛

曾分开曾相爱

等待跟你未爱的爱

你说悲不悲哀

秒速之间变改 小小世界

眷恋也许走不过 拆卸的街

少女亦随年渐长 走得多么快

如有天樱花再开

如有天樱花再开

期望可跟你示爱

当天园林 今天已换上满地青苔

如有天置地门外

乘电车跨过大海

匆匆跟你相望一眼 没理睬

明日花 昨日已开

点击右上角即可分享
微信分享提示