当前位置: 首页 > article >正文

mysql(十四)

目录

多表查询

1.准备工作

2--创建表格

3--插入数据

2.笛卡尔积查询

3.内连接查询

1--隐式内连接

格式

查询

2--显示内连接(Inner join .. on )

格式

查询

4.外连接查询

1--左外连接查询(LEFT OUTER JOIN .. ON )

格式

查询

2-- 右外连接查询(RIGHT OUTER JOIN .. ON )

格式

查询

5.总结


多表查询

1.准备工作

2--创建表格
-- 创建表格CREATE table class (class_id INT PRIMARY KEY AUTO_INCREMENT,class_name VARCHAR(20)
);
create table student (id INT PRIMARY KEY AUTO_INCREMENT;student_name VARCHAR(30),student_sex char(1),student_info VARCHAR(500),student_class_id int,-- 添加主键约束CONSTRAINT student_class_fk FOREIGN KEY(student_class_id) REFERENCES class(class_id)
);

3--插入数据
-- 插入数据
insert into class VALUES
(null, '一班'),
(null, '二班'),
(null, '三班')
;INSERT into student VALUES
(null, '偷走晚霞的人', '男', '一个学生', 1),
(null, '惜.己', '男', '一个学生', 2),
(null, '小玖', '女', '一个学生', 1),
(null, '张三', '男', '一个学生', 3),
(null, '莉莉', '男', '一个学生', 1),
(null, '雪夜', '男', '一个学生', 2),
(null, '小明', '女', '一个学生', 1),
(null, '小新', '男', '一个学生', 3)
;

2.笛卡尔积查询

select * from 表名1, 表名2, 表名3......

-- 对student表和class表进行笛卡尔积查询
select * from class, student;

可以发现有很多重复的数据。

3.内连接查询

1--隐式内连接

通过where 条件  把 两个表有外键关联的地方进行查询

格式

注意:这里 表1是主表,表二是从表

select * from 表名1, 表名2 where 表名1.主键字段 = 表名2.外键字段

查询

-- 这里是通过有外键关联的字段相等去查询
select * from class, student where class.class_id = student.student_class_id ;

注意:这里可以使用起别名 引用表1和表二。这里不再演示了。

2--显示内连接(Inner join .. on )

格式

select *(或者字段的名字) from 左表 inner Join 右表 on 条件

查询

查询一班 '叫偷走晚霞的人'

-- 查询一班 '叫偷走晚霞的人'select * from class as c INNER JOIN student as s on c.class_id=s.student_class_id WHERE s.student_name = '偷走晚霞的人';

4.外连接查询

1--左外连接查询(LEFT OUTER JOIN .. ON )

左表为准,匹配到正常显示,匹配不到显示为null

格式

select 字段 from  表名1 left outer join 表名2  on 表名1.字段 = 表名2.字段;

查询
-- 左查询 
SELECT * from class c LEFT OUTER JOIN student s ON c.class_id = s.student_class_id; 

 

我这里没有准备为空的数据,这里没有显示到。

2-- 右外连接查询(RIGHT OUTER JOIN .. ON )

右表为准,匹配到正常显示,匹配不到显示为null

格式

select 字段 from  表名1 right outer join 表名2  on 表名1.字段 = 表名2.字段;

查询
-- 右查询 
SELECT * from class c RIGHT  JOIN student s ON c.class_id = s.student_class_id; 

我这里没有准备为空的数据,这里没有显示到。

5.总结

内连接:查询两张表共有部分

左外:左表为准,查询左表中所有的数据与右表中有共有的部分

右外:右表为准,查询右表中所有的数据与左表中有共有的部分

http://www.lryc.cn/news/2397768.html

相关文章:

  • 工业物联网中的事件驱动采样架构及优化
  • 基于 HT for Web 的轻量化 3D 数字孪生数据中心解决方案
  • JavaScript 性能优化:从入门到实战
  • 启动metastore时报错MetaException(message:Version information not found in metastore
  • Spring 中 @Value 注解多实例配置方案详解
  • MyBatisPlus(1):快速入门
  • 京东热点缓存探测系统JDhotkey架构剖析
  • 多国金融市场数据对接指南(印度、印尼、韩国)
  • 【Elasticsearch】ILM(Index Lifecycle Management)策略详解
  • linux 后记
  • 【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)
  • PyTorch -TensorBoard的使用 (一)
  • Redis最佳实践——性能优化技巧之数据结构选择
  • 网络安全方向在校生有哪些证书适合考取?
  • 从0开始学习R语言--Day14--贝叶斯统计与结构方程模型
  • 02-BTC-密码学原理 对hash算法如果出现漏洞的思考
  • [Python] 如何使用 Python 调用 Dify 工作流服务实现自动化翻译
  • 分布式微服务系统架构第142集:全栈开发
  • PTA-根据已有类Worker,使用LinkedList编写一个WorkerList类,实现计算所有工人总工资的功能。
  • 文档整合自动化
  • 微软markitdown PDF/WORD/HTML文档转Markdown格式软件整合包下载
  • 科普:Linux `su` 切换用户后出现 `$` 提示符,如何排查和解决?
  • BayesFlow:基于神经网络的摊销贝叶斯推断框架
  • NodeJS全栈开发面试题讲解——P9性能优化(Node.js 高级)
  • NVMe IP现状扫盲
  • 5G-A时代与p2p
  • 基于FPGA的DES加解密系统verilog实现,包含testbench和开发板硬件测试
  • 基于生产-消费模式,使用Channel进行文件传输(Tcp方式)
  • tortoisegit 使用rebase修改历史提交
  • Python----目标检测(《用于精确目标检测和语义分割的丰富特征层次结构》和R-CNN)