MySQL 表的内连和外连

文章目录

表的内连和外连

表的连接分为内连和外连

内连接

利用where子句对两种表形成的笛卡儿积进行筛选

语法:

sql 复制代码
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
  • 显示SMITH的名字和部门名称

员工表和部门表

用前面学习到的用两表的笛卡尔积,以及两者的deptnp做筛选得到有效信息,再使用条件SMITH即可的出答案,如下,

用标准的内连接SQL

  1. 员工表和部门号放在from子句中并通过inner join关键字隔开
  2. on子句后指明内连接的条件为员工的部门号等于部门的部门号,筛选得到有效信息
  3. and后条件为员工的姓名为SMITH

外连接

分为左外连接和右外连接

左外连接

左侧的表完全显示

语法:

sql 复制代码
select 字段名 from 表名1 left join 表名2 on 连接条件
  • 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来

左边的表3和4都没有对应的成绩,但因为左外连接显示了他们的成绩,即使为NULL

而右边的表11却没有在连接后显示,因为他在左边的表没有内容;

右外连接

右边的表完全显示

语法:

sql 复制代码
select 字段名 from 表名1 right join 表名2 on 连接条件

还是上面那个问题

右边的表11都没有对应的成绩,但因为右外连接显示了他们的内容,即使为NULL

而左边的表3和4却没有在连接后显示,因为他在右边的表没有内容;

笛尔卡积也就是直接连接只会显示两个表共同有的内容,不回出现NULL这种情况

列出部门名称和这些部门的员工信息,同时列出没有员工的部门

列出部门名和员工信息,一张表肯定不够,需要dept和emp两张

连接条件就是部门的部门号要等于员工所在的部门号

使用内连接进行查询,将会显示出所有满足连接条件的记录

但是并没有满足同时列出没有员工的部门

也就是说,部门表当中的内容需要完全被显示出来

方案一:

部门表放在左侧,使用左外连接

方案二:

部门表放在右侧,使用右外连接

相关推荐
李纲明28 分钟前
WordPress 报建立数据库连接时出错:先核 wp-config 四元组,再查 MySQL 服务与表修复
运维·数据库·mysql·wordpress·排障·devdiy
2401_881828321 小时前
MySQL操作命令
android·mysql·adb
鸢尾掠地平1 小时前
MySQL之DML(含例子)
数据库·mysql
香蕉大香蕉(06敬畏市场)2 小时前
MySQL 单点详解(06)
java·数据库·mysql·博客·实习
CodeHackerBhx2 小时前
MySQL 迁达梦踩坑实录:FIND_IN_SET、timestamp(6) 和一整批要改的函数
数据库·mysql·达梦·信创·数据库迁移
n 55!w !1082 小时前
MySQL笔记整理2
数据库·笔记·mysql
aiks_yuan2 小时前
MySQL 批量插入很慢怎么办:rewriteBatchedStatements 实测 10 万行从 4.5 秒到 1 秒(JDBC、MyBatis、LOAD DATA 对比)
mysql
李纲明3 小时前
WordPress 提示「建立数据库连接时出错」:先核 wp-config 与数据库服务,再查表损坏与磁盘配额
数据库·wordpress·devdiy
freejackman3 小时前
【架构篇】双遍历 + 多栈协同:手撸 SQL 血缘引擎的架构思考
java·大数据·数据库·hive·sql·架构·spark
杨云龙UP3 小时前
TDengine 社区版磁盘空间不足故障处理 SOP:历史日志清理、日志保留策略及数据保留 200 天
数据库·时序数据库·tdengine·tsdb·历史日志清理·trim database·logkeepdays