SQL-多表查询

1、多表关系

一对多、多对一:在多的一方建立外键,指向一的一方。

多对多:至少两个外键,通过中间表维护。

一对一

2、多表查询概述

3、内连接

4、外连接

5、自连接

6、联合查询

7、子查询

8、多表查询案例

# 1、多表关系
# 多对多
# 建立学生表和课程表进行多对多连接
create table student_score(id int auto_increment primary key  comment '主键',studentid int not null comment '学生Id',courseid int not null comment '课程Id',constraint  fk_courseid foreign key (courseid) references  course(id),constraint  fk_studentid foreign key (studentid) references  student (id)
)comment '学生课程中间表';
insert  into student_score values(null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);create table  student (id int auto_increment primary key comment '主键id',name varchar(10) comment '姓名',no varchar(10) comment '学号'
)comment '学生表';
insert into student values(null,'momo1','2019001'),(null,'momo2','2019002'),(null,'momo3','2019003'),(null,'momo4','2019004');create table course(id int auto_increment primary key  comment '主键id',name varchar(10) comment '课程名称'
)comment '课程表';
insert into course values(null,'c'),(null,'r'),(null,'sql'),(null,'hadoop');# 一对一
create table edu (id int auto_increment primary key comment '主键id',degree varchar(20) comment '学历',major varchar(20) comment  '专业',primaryschool varchar(20) comment '小学',middleschool varchar(20) comment '中学',university varchar(20) comment '大学'
)comment '学生教育背景表';
insert into edu values(2019001,'本科','医学','翻斗小学','翻斗中学','翻斗大学'),(2019002,'本科','教育学','翻斗小学','翻斗中学','翻斗大学'),(2019003,'本科','物理学','翻斗小学','翻斗中学','翻斗大学'),(2019004,'本科','数学','翻斗小学','翻斗中学','翻斗大学');alter table  studentmodify no int unique comment '学号';
alter table  studentadd constraint fk_no foreign key (no) references edu(id);# 2、多表查询概述
select * from dept,user;# 笛卡尔积,返回全部组合情况
select * from dept,user where dept.id =user.dept_id;# 消除无效笛卡尔积.若id为null,不满足条件,不会被删选出来# 3、内连接
# 内连接
# 隐式内连接
select user.name , dept.name from user,dept where dept.id =user.dept_id;
select u.name , d.name from user u,dept d where d.id =u.dept_id;
# 显示内连接
select user.name , dept.name from user inner join dept on dept.id =user.dept_id;
select user.name , dept.name from user join dept on dept.id =user.dept_id;
select u.name , d.name from user u join dept  d on d.id =u.dept_id;# 4、外连接
# 左连接
select u.* ,d.name from user u left outer join dept d on d.id = u.dept_id;
select u.* ,d.name from user u left  join dept d on d.id = u.dept_id;# outer可省略
# 右连接
select d.*,u.*  from user u right join dept d on d.id = u.dept_id;
select d.*,u.*  from dept d left join user u on d.id = u.dept_id;# 等价上一个语句# 5、自连接
ALTER TABLE useradd managerid int comment '上级id';
select u1.name,u2.name from user u1 join user u2 on u1.id=u2.managerid;# 无领导不显示
select u1.name '员工',u2.name '领导' from user u1 left join user u2 on u1.id=u2.managerid;# 无领导也显示# 6、联合查询
select * from user where age>=19
union all
select * from user where gender='男';# 直接拼接,含有重复数据select * from user where age>=19
union
select * from user where gender='男';# 去重# 7、子查询
# 标量子查询
select  id from  dept where name='人事部';
select  * from user where dept_id=(select  id from  dept where name='人事部');# 人事部的员工信息
select  * from employee where entrydate>(select  entrydate from  employee where name='人1');# 人1入职之后入职的人# 列子查询
select  * from user where dept_id in (select  id from  dept where name='人事部'or name='业务部' );# 人事部和业务部的员工信息
select  name,age
from user where age > all (select age from  user where dept_id=(select id from dept where name='人事部') );# 比人事部年龄都大的员工信息
select  name,age
from user where age > any (select age from  user where dept_id=(select id from dept where name='业务部') );# 比业务部任意一个年龄大的员工信息# 行子查询
select age,managerid from user where name='Tom4';
select * from user where (age,managerid)=(select age,managerid from user where name='Tom4');#与Tom4同年龄同领导的员工# 表子查询
select age,managerid from user where name='Tom4'or name='Tom5' ;
select * from user where (age,managerid) in (select age,managerid from user where name='Tom4'or name='Tom5');# 与这两个人同年龄同领导的员工select * from user where age>20;
select * from (select * from user where age>20) e ,dept d where e.dept_id=d.id;# 查询大于20岁的员工和部门信息,不显示null
select * from (select * from user where age>20) e left join dept d on e.dept_id=d.id;# 显示null# 7、多表查询案例ing

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

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

相关文章

【EtherCAT】运行原理

目录 1、有个兄弟提了个问题,如下: 2、EtherCAT运行原理 1、有个兄弟提了个问题,如下: “您好,在这篇文章中https://blog.csdn.net/qq_46211259/article/details/139824335 EtherCAT的数据区有三个子报文&#xff0c…

IP SSL证书——为IP升级加密

在数字化浪潮中,每一份数据传输都承载着重要信息与价值。当您的业务跨越国界,触及全球用户时,确保通信安全、提升品牌信任度,成为了不可或缺的一环。IP SSL证书,作为网络安全的守护者,正以其独特的优势&…

【达梦数据库】DBeaver连接达梦数据库

打开 DBeaver&#xff0c;新建驱动管理器 新建驱动管理器&#xff0c;配置信息如下 添加库文件&#xff0c;jar包使用项目上使用的jdbc驱动包即可&#xff0c;找到本地maven仓库jar位置进行添加。 <dependency><groupId>com.dameng</groupId><artifact…

NLP从零开始------文本中阶序列处理之语言模型(完整版)

语言模型( language model) 用于计算一个文字序列的概率&#xff0c; 评估该序列作为一段文本出现在通用或者特定场景中的可能性。每个人的语言能力蕴涵了一个语言模型&#xff0c;当我们说出或写下一段话的时候&#xff0c;已经在不自觉地应用语言模型来帮助我们决定这段话中的…

【C++】vector(下)--下篇

个人主页~ vector&#xff08;上&#xff09;~ vector&#xff08;下&#xff09;–上篇~ vector 二、模拟实现3、test.cpptest1test2test3test4test5test6 三、一个难题 二、模拟实现 3、test.cpp test1 这个没啥好说的&#xff0c;就是尾插和迭代器都能正常使用 //测尾…

微电网光储充用什么电能表?

背景 在可再生能源的需求不断增加&#xff0c;以及能源转型的推进&#xff0c;储能技术的重要性日益凸显。储能计量表作为储能系统的关键组成部分&#xff0c;对于监测、评估和管理储能系统性能具有重要作用。 在新能源发电领域&#xff0c;如分布式光伏、风电等&#xff0c;…

面相对象的成员介绍

2.面相对象的成员 -> 类: a.类的定义&#xff1a; 1.类是对公共特点的抽象&#xff0c;其中包含了很多成员&#xff0c;如属性&#xff08;成员变量 &#xff09;、方法、构造器等.要想很好的定义类&#xff0c;就必须要好好的了解这些类的成员 b.访问修饰符 控制属性的…

TCP数据包——报文头部组成

TCP协议报头包括以下字段: 源端口和目标端口:分别是发送方和接收方的端口号,用于标识通信的应用程序。 序列号:用于标识数据流的序列号,保证数据包的顺序性。每一个报文都有一个序列号。 确认号:用于确认收到的数据包序列号,用于实现可靠传输。每发送一个数据包都需要收…

突破编程 C++ 设计模式(组合模式)详尽攻略

在软件开发中&#xff0c;设计模式为程序员提供了解决特定问题的最佳实践。设计模式不仅提高了代码的可复用性和可维护性&#xff0c;还能帮助团队更好地进行协作。在这篇文章中&#xff0c;我们将深入探讨组合模式——一种结构型设计模式。 组合模式允许你将对象组合成树形结…

开放式耳机对耳朵的伤害大吗?四款平价好用的蓝牙耳机推荐

开放式耳机对耳朵伤害不大。因为其设计特点使得声音可以在一定程度上与外界环境相通&#xff0c;减少了对耳膜的直接压力和封闭环境带来的影响&#xff0c;相比封闭式耳机&#xff0c;更不容易导致耳部压力失衡和细菌滋生等问题。 以下是比较好的几款产品&#xff0c;可供借鉴&…

线上报名链接怎么做_零基础小白也能做

在这个日新月异的数字时代&#xff0c;每一次点击都可能是通往新世界的钥匙。今天&#xff0c;我们诚挚地向您发出邀请&#xff0c;通过这独一无二的线上报名链接&#xff0c;不仅简化繁琐的报名流程&#xff0c;更让您轻松跨越现实的界限&#xff0c;踏入一场精心策划的盛宴或…

CSS3 文本效果(text-shadow,box-shadow,white-space等)文本溢出隐藏并且显示省略号

一 text-shadow text-shadow 属性是 CSS3 中用于为文本添加阴影效果的工具。它可以增强文本的可读性和视觉吸引力&#xff0c;提供丰富的视觉效果 1 语法 text-shadow: offset-x offset-y blur-radius color;offset-x&#xff1a;阴影相对于文本的水平偏移量。可以是正值&am…

自建 git 服务器

所有老板&#xff08;至少 99%&#xff09;都一样&#xff0c;想花一分钱办两分钱的事&#xff0c;想招十块钱的人干二十块钱的事……我表示理解&#xff08;A Pei ~~ 既想马儿跑得快&#xff0c;又想马儿不吃草&#xff09; 在老板眼中&#xff0c;我恰好是那个性价比最高的人…

MFC工控项目实例之八选择下拉菜单添加打钩图标

承接专栏《MFC工控项目实例之七点击下拉菜单弹出对话框》 具体添加菜单栏参考我的博客文章《MFC工控项目实例之七点击下拉菜单弹出对话框》 这里只给出相关代码 1、在SEAL_PRESSUREDlg.h文件中添加代码 class CSEAL_PRESSUREDlg : public CDialog { // Construction public:..…

5年数据观巨变,这家公司如何在AI和大模型数据赛道遥遥领先?

过去5年&#xff0c;整个社会对于数据的观念和认知&#xff0c;发生了天翻地覆的改变。这要归功于OpenAI与预训练大语言模型&#xff08;以下简称大模型&#xff09;的问世以及横扫全球的ChatGPT。从2020年1月OpenAI发表《自然语言模型的“摩尔定律”&#xff08;Scaling Law f…

算法训练营——day1数组二分查找

数组是存放在连续空间上的相同数据类型的集合。 注意&#xff1a;下标从0开始&#xff1b;内存空间连续。 正因为数组的内存地址空间连续&#xff0c;所以在删除、添加元素的时候需要移动其他元素。 数组的元素不能删除&#xff0c;只能覆盖&#xff01; 二维数组特殊 在C中&…

测试使用开源异构迁移工具dbswitch

dbswitch: 异构数据库迁移同步(搬家)工具 (base) rootnode13:~# cat /etc/issue Ubuntu 20.04.5 LTS \n \l (base) rootnode13:~# curl -k -sSL https://gitee.com/dromara/dbswitch/attach_files/1878800/download > /tmp/dbswitch_install.sh && bash /tmp/dbsw…

佰朔资本:社融是什么?社融增加是利好还是利空

社融即全社会融资规划&#xff0c;是指实体经济从金融体系取得的资金。包括人民币信贷、债券发行、股票发行、非金融企业债券、政府债券等各种融资办法&#xff0c;也称为社会融资量。 社会融资规划存量是指一守时期末&#xff08;月末、季末或年底&#xff09;实体经济从金融…

9月新机首发:骁龙芯片+超大电池,游戏玩家的终极选择

随着秋风送爽的9月到来&#xff0c;智能手机和电子设备市场也迎来了新一轮的热潮。8月份的新机发布热潮刚刚退去&#xff0c;9月份的新机已经迫不及待地揭开了神秘的面纱。在众多备受期待的产品中&#xff0c;红魔品牌抢先官宣&#xff0c;两款全新的游戏平板将在9月5日正式亮相…

C++国密SM2算法加解密的使用

目录 效果 在线校验 代码实现参考 项目 下载 效果 加密字符串:lxw 123abcD 2024-09-01:12:00加密后信息:042E82EE8ACE2BD56FA71DC6A0C34190627AA365F8EEE6261903BEE327A85EB5E1D6E78F2D79AD6F6DC9E45C0829625DC3165BB78BD897F99044A640F930653747939CF9D5A10C8216F945A559…