一、概述
指从多张表中查询数据
二、多表查询的方法
这里使用两张表
一般查询表内容的是
select * from 表名;
使用多表查询时
select * from 表1,表2;
得到以下结果
这里查询反馈的结果错综复杂的原因是因为mysql数据库在不使用附加条件时默认采用笛卡尔积的运算方法
注:笛卡尔积是指数学中,两个集合集合A和集合B所有的组合情况,在多表查询中,要消除无效的笛卡尔积
为两张表添加一个中间表,并设置外键
create table student_course(id int auto_increment comment'主键ID',student_id int not null comment '学生ID',course_id int not null comment '课程ID',constraint fk_course_id foreign key (course_id) references course (id),contraint fk_student_id foreign key (student_id) references student (id)) comment'学生课程中间表';
insert into student_course values(null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);
通过where条件进行查询
select * from student,course,student_course where student.id = student_course.student_id and course.id = student_course.course_id;
得到筛选后的结果
三、多表查询的分类
(1)连接查询
1、内连接:相当于查询A、B交集的部分
2、外连接:
左外连接:查询左表的所有数据,以及两张表交集的部分数据
右外连接:查询右表的所有数据,以及两张表交集的部分数据
自连接:当前表与自身的连接查询,自联接必须使用表别名