【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);

其次,利用表关联三表进行联合查询:

SELECTuc.id AS id,u. NAME AS username,c.description AS coursename
FROMUSER u
LEFT JOIN user_course uc ON ((u.id = uc.userid))
LEFT JOIN course c ON ((uc.courseid = c.id))
WHEREu. NAME = '小王';

最后,创建视图进行三表关联查询:

DROP VIEW
IF EXISTS view_user_course;CREATE VIEW view_user_course AS (SELECTuc.id AS id,u. NAME AS username,c.description AS coursenameFROMUSER uLEFT JOIN user_course uc ON ((u.id = uc.userid))LEFT JOIN course c ON ((uc.courseid = c.id))
);
SELECT*
FROMview_user_course vuc
WHEREvuc.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/p/8710414.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TERMINAL

CListBox常用函数 https://www.cnblogs.com/whzym111/p/6214597.html、 https://blog.csdn.net/foreverhuylee/article/details/24638615 AfxGetApp()->GetMainWnd()和AfxGetMainWnd()的区别 获取的是主线程的窗口句柄。 AfxGetMainWnd()获取的是所在线程的窗口句柄。 在…

可在单片机上运行的简易图形库

来源:电子森林,排版:晓宇微信公众号:芯片之家(ID:chiphome-dy)发现一个网站 - http://www.technoblogy.com/,基本都是关于用ATtiny单片机做各种创意设计的,非常适合初学单…

欧拉回路 欧拉路径

欧拉路径(瞎)定义 : 如果有一条路径使得能够走完所有的边且每一条边经过有且只有一次,这样的路径叫做欧拉路径 欧拉回路定义 : 如果有从起点出发最后回到起点的一条路径使得能够走完所有的边且每条边经过有且只有一次,称其为欧拉回…

MD5函数

用md5函数 https://blog.csdn.net/whatday/article/details/8024355 MD5算法原理 https://www.cnblogs.com/hjgods/p/3998570.html 其他方法 https://blog.csdn.net/wudishine/article/details/42466831

MMU所起的作用

MMU所起的作用 一、名词解释 ①逻辑地址(虚拟地址) 用户程序经编译、链接以后形成的每条指令或数据单元的地址,这些地址都是相对于某个基地址来编制的。 ②逻辑地址空间 某个用户程序的虚拟地址的集合。 ③物理地址(绝对地址…

终于搞清楚开漏输出和推挽输出这个鬼东西

先说下推挽输出,简单的说,就是想输出高电平,就输出高电平,想输出低电平就输出低电平。推挽电路上面是NPN三极管,下面是PNP三极管,请注意输入端和输出端的波形。下面是输入波形当输入为正时,上面…

被称为“C#圣经”的权威著作!

媒体评论 “哇,这本书太棒了!对.NET 3.5和CLR的阐释非常深入。它已经成为我的头号参考书。强烈推荐给所有.NET程序员。” ——Jeff Wilcox,微软.NET开发团队资深工程师 “Troelsen大师王者归来了!C#程序员分为两类:读…

Dojo API中文 Dojo内容模块概览,初学者

官网:http://dojotoolkit.org/reference-guide/1.10/dojo/index.html#dojo-dojo的翻译 dojo 内容: dojo dojo/dojodojo/_baseAreas of Functionalitydojo是dojo工具箱的基础包。有时被称为“核心”,它包含了最重要的一般适用的软件包和模块。…

分享一篇很不错的CMake入门文章,值得收藏细读!

https://www.hahack.com/codes/cmake/▌什么是 CMake?你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循…

CMapStringToPtr::SetAt\CAsyncSocket

CMapStringToPtr::SetAt CMapStringToOb::SetAt 将元素插入到映射;如果找到匹配项,将替换现有元素。 主要方法要在地图中插入元素。 void SetAt( LPCTSTR key, CObject* newValue);参数 key 指定为新元素的键的字符串。 newValue 指定CObject是新元素的值的指针。…

自我鼓励

每一个优秀的人,都有一段沉默的时光,那一段时光,是付出了很多努力,忍受了很多的孤独和寂寞,不抱怨不诉苦,只有自己知道,而当日后说起时,连自己都能被感动的日子。

例用C# 变更文件夹时间

想变更文件夹的时间.以前做了一个软件.是变更文件的时间,应用了C# API.这次和上一次相同,用Form来通过外部对时间进行确认.确认后应用C#中,System.IO ->Directory->SetCreationTime 来对时间进行变更.以下是C#应用的例子.基本相同.但是,不要忘记小问题,下面的例子的命名空…

Linux 30岁,这些年经历了什么?

3月19日,Linux基金会在Twitter上发布推文宣布,其小企鹅的标志“Tux”已经30周岁了,还为其设计了一系列的庆祝海报,以便大家转发分享。虽然离Linux的生日还有一段时间,但是今年Linux基金会已经提前先帮小企鹅“Tux”过生…

用CSS画基本图形

用CSS画基本图形 1、正方形 代码如下: #square { width: 100px; height: 100px; background: red; } 2、长方形 代码如下:#rectangle { width: 200px; height: 100px; background: red; } 3、圆形 代码如下:#circle { width: 100px; height: 100px; …

输出函数

C语言中基本的输入输出函数有: putchar ():把变量中的一个字符常量输出到显示器屏幕上; getchar ();从键盘上输入一个字符常量,此常量就是该函数的值; printf ();把键盘中的各类数据,加以格式控制输出到显示器屏幕上; scanf ();从键盘上输入各类数据,并存放到程…

人格魅力的六法宝

人格魅力的六法宝 1、学会沉默 沉默是一种温柔,一种甜甜的爱心,一种东方的冰清玉洁的美丽;沉默是一种力度,一种坚韧,一种成竹在胸的自信和威仪。在回答某一具体问题时,沉默是你最好的回答。 2、学会微笑 微…

【模板】LCA

最近公共祖先LCA 1 #include<bits/stdc.h>2 #define MAX 100000013 4 using namespace std;5 namespace edge_and_question{6 int tot,q_tot;7 int head[MAX],q_head[MAX];8 9 struct data{ 10 int to; 11 int nxt; 12 int lca;…

手撸双链表,图解

C语言&#xff0c;链表C实现单向链表深入理解Linux内核链表跟单链表不同&#xff0c;双链表的节点包含两个指针&#xff0c;一个指针指向上一个元素&#xff0c;一个指针指向下一个元素。▌如下图学习数据结构的时候&#xff0c;要像认识一个人一样&#xff0c;要了解这个人有什…

VS建lUML画类图

https://blog.csdn.net/caoshangpa/article/details/79797849

C++学习方法

1.把C当成一门新的语言学习(和C没啥关系!真的。);   2.看《Thinking In C》&#xff0c;不要看《C变成死相》;   3.看《The C Programming Language》和《Inside The C Object Model》,不要因为他们很难而我们自己是初学者所以就不看;   4.不要被VC、BCB、BC、MC、TC等词…