首页 > 数据库技术 > 详细

mysql的连接查询

时间:2019-08-07 21:30:59      阅读:89      评论:0      收藏:0      [点我收藏+]

1、准备工作

1、创建两张实验表

#创建学生表
create table if not exists student(
stu_id int primary key comment学生编号主键,
stu_name varchar(20)comment姓名,
stu_age int comment年龄
)

#创建课程表
create table if not exists course(
course_id int primary key comment‘课程编号主键‘,
course_name varchar(20)comment‘课程名称‘,
course_stu int comment‘上这门课程的学生id‘
)

2、向表中插入如下数据

#给学生表添加几条数据
insert into student(stu_id,stu_name,stu_age)values(1,张三,22);
insert into student(stu_id,stu_name,stu_age)values(2,李四,12);
insert into student(stu_id,stu_name,stu_age)values(3,王五,33);
insert into student(stu_id,stu_name,stu_age)values(4,赵六,23);
#给课程表创建数据
insert into course(course_id,course_name,stu_id)values(1,英语,1);
insert into course(course_id,course_name,stu_id)values(2,数学,2);
insert into course(course_id,course_name,stu_id)values(3,语文,3);
insert into course(course_id,course_name,stu_id)values(4,物理,2);
insert into course(course_id,course_name,stu_id)values(5,语文,2);

2、内连接(inner join)

查询两表关联列相等的数据

select * from student s INNER JOIN course c ON s.stu_id=c.course_stu;

技术分享图片

如果后边不带ON 后边的条件查询的是笛卡尔积(图没截全)

技术分享图片

 

3、外连接

外连接分为左连接和右连接和全外连接。

左连接和右连接具有主表和从表之分,左连接左边的表为主表,右连接右边的表为主表,且主表的记录可以全部查到而从表没有的记录使用null值补全

1、左连接(left join)

#左连接student为主表且主表的据路全部展示从表没有的null值补全
select
* from student s LEFT JOIN course c on s.stu_id=c.course_stu;

技术分享图片

2、右连接(right join)

1、为了展示又连接以右表为主表我向course表中添加了一条与student表中的stu_id没有对应的记录

insert into course(course_id,course_name,stu_id)values(6,政治,5);

2、右连接sql

select * from student s right join course c on s.stu_id=c.course_stu;

技术分享图片

3、全外连接

mysql数据库始是没有全外连接查询的可以使用UNION关键字将左连接和右连接结合起来达到全外连接的效果

select * from student s right join course c on s.stu_id=c.course_stu 
UNION 
select * from student s LEFT JOIN course c on s.stu_id=c.course_stu;

技术分享图片

4、交叉连接(cross join)

通常不会在实际中运用

交叉连接 cross in,从一张表中循环取出每一条记录都去与另一张表中进行匹配(结果全部保留),连接本身字段就会增加,最终形成笛卡儿积。

#如果交换两张表的前后位置则查询的结果显示也会调换位置
select * from student cross join course;

技术分享图片

 

mysql的连接查询

原文:https://www.cnblogs.com/ErNan/p/11317513.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!