1.准备
<code>CREATE
DATABASE
mahaiwuji;USE
mahaiwuji;CREATE
TABLE
grade(id
INT
(4
) PRIMARYKEY
,name
VARCHAR
(36
) )ENGINE
=INNODB
DEFAULT
CHARSET
= utf8;INSERT
INTO
gradeVALUES
(1
,'一班'
);INSERT
INTO
gradeVALUES
(2
,'二班'
);INSERT
INTO
gradeVALUES
(3
,'三班'
);INSERT
INTO
gradeVALUES
(4
,'四班'
);CREATE
TABLE
student(id
INT
(4
) PRIMARYKEY
,name
VARCHAR
(36
), gidINT
(4
) )ENGINE
=INNODB
DEFAULT
CHARSET
= utf8;INSERT
INTO
studentVALUES
(1
,'a1'
,1
);INSERT
INTO
studentVALUES
(2
,'a2'
,1
);INSERT
INTO
studentVALUES
(3
,'a3'
,2
);INSERT
INTO
studentVALUES
(4
,'a4'
,2
);INSERT
INTO
studentVALUES
(5
,'a5'
,3
);INSERT
INTO
studentVALUES
(6
,'a6'
,3
);INSERT
INTO
studentVALUES
(7
,'a7'
,3
);INSERT
INTO
studentVALUES
(8
,'a8'
,3
);INSERT
INTO
studentVALUES
(9
,'a9'
,5
);/<code>
2.左外连接
左外连接是外连接查询中的一种,也可以将其称为左连接。
它用于返回连接关键字(LEFT JOIN)左表中所有的记录,以及右表中符合连接条件的记录。
当左表的某行记录在右表中没有匹配的记录时,右表中相关的记录将设为空值。
语法
<code>SELECT
查询字段FROM
表1
LEFT
[OUTER
]JOIN
表2
ON
匹配条件;/<code>
关键字“LEFT [OUTER] JOIN”左边的表(表1)被称为左表,也可称为主表。
关键字右边的表(表2)被称为右表,也可称为从表。
OUTER在查询时可以省略。
<code>SELECT
*FROM
gradeLEFT
JOIN
studentON
grade.id=student.gid;/<code>
3.右外连接
右外连接也是外连接查询中的一种,可以将其称为右连接。
它用于返回连接关键字(RIGHT JOIN)右表(主表)中所有的记录,以及左表(从表)中符合连接条件的记录。
当右表的某行记录在左表中没有匹配的记录时,左表中相关的记录将设为空值。
语法
<code>SELECT
查询字段FROM
表1
RIGHT
[OUTER
]JOIN
表2
ON
匹配条件;/<code>
<code>SELECT
*FROM
gradeRIGHT
JOIN
studentON
grade.id=student.gid;/<code>
4.总结
- 外连接是最常用的一种查询数据的方式,分为左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。
- 外连接与内连接的区别是,内连接只能获取符合连接条件的记录,而外连接不仅可以获取符合连接条件的记录,还可以保留主表与从表不能匹配的记录。
- 右连接查询正好与左连接相反。因此,在应用外连接时仅调整关键字(LEFT JOIN或RIGHT JOIN)和主从表的位置,即可实现左连接和右连接的互换使用。