MySQL内外连接

内连接

内连接实际上就是利用where子句对两种表形成的笛卡尔积进行筛选

sql 复制代码
select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
  • 显示SMITH的名字和部门名称
sql 复制代码
-- 用前面的写法
select ename, dname from EMP, DEPT where EMP.deptno=DEPT.deptno and 
ename='SMITH';
-- 用标准的内连接写法
select ename, dname from EMP inner join DEPT on EMP.deptno=DEPT.deptno and 
ename='SMITH';

外连接

左外连接

sql 复制代码
select 字段名  from 表名1 left join 表名2 on 连接条件
sql 复制代码
-- 建两张表
create table stu (id int, name varchar(30)); -- 学生表
insert into stu values(1,'jack'),(2,'tom'),(3,'kity'),(4,'nono');
create table exam (id int, grade int); -- 成绩表
insert into exam values(1, 56),(2,76),(11, 8);
  • 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
sql 复制代码
-- 当左边表和右边表没有匹配时,也会显示左边表的数据
select * from stu left join exam on stu.id=exam.id;

右外连接

sql 复制代码
select 字段 from 表名1 right join 表名2  on  连接条件;
  • 对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要
    显示出来
sql 复制代码
select * from stu right join exam on stu.id=exam.id;
  • 列出部门名称和这些部门的员工信息,同时列出没有员工的部门
sql 复制代码
方法一:
select d.dname, e.* from dept d left join emp e on d.deptno=e.deptno;
方法二:
select d.dname, e.* from emp e right join dept d on d.deptno=e.deptno;
相关推荐
程序员清风1 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-1 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
尚久龙1 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工1 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
实心儿儿1 小时前
MySQL 的安装
数据库·mysql·adb
程序员阿鹏3 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
瀚高PG实验室4 小时前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
yanwumuxi6 小时前
【数据库系列】opensearch数据备份和恢复
数据库
anxiao_m6 小时前
2026企业AI数字孪生选型攻略,不同场景对应不同解决方案
大数据·网络·数据库
SelectDB6 小时前
从 ClickHouse 迁移到 Doris:SQL 兼容、同步与验证清单(实战笔记)
大数据·数据库·数据分析