MySQL连接的使用
为什么要有连接
在实际使用创建表的时候我们不可能将所有的信息都放在一个表中,也就是不同的信息会放在不同的表中,所以我们最终需要的信息
可能在多个表中,这就需要我们使用连接来查询我们想要的信息。
有几种连接
一般情况下我们主要使用下面三种连接:
- 
INNER JOIN(等值连接):获取两个表中字段匹配关系的记录。 
- 
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 
- 
RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。 
使用连接的一般思路
- 
首先要分析我们需要的数据存在哪些表中; 
- 
找到这些表中关联的数据列,没有关联的数据列的话一般不能进行连接查询; 
- 
确定使用哪种连接方式; 
- 
编写查询语句测试; 
假设我们有下面的两个表:
student表:
| id | name | 
|---|---|
| 1 | h | 
| 2 | j | 
| 3 | k | 
| 4 | l | 
| 5 | m | 
| 6 | n | 
| 7 | o | 
| grade表: | |
| id | grade | 
| ---- | ---- | 
| 1 | 88 | 
| 2 | 90 | 
| 3 | 87 | 
| 4 | 85 | 
下面来看三种查询的结果:
- INNER JOIN
select a.id,a.name,b.grade
from student as a
inner join grade as b
on a.id=b.id;
结果为:
| id | name | grade | 
|---|---|---|
| 1 | h | 88 | 
| 2 | j | 90 | 
| 3 | k | 87 | 
| 4 | l | 85 | 
- LEFT JOIN
select a.id,a.name,b.grade
from student as a
left join grade as b
on a.id=b.id;
结果为:
| id | name | grade | 
|---|---|---|
| 1 | h | 88 | 
| 2 | j | 90 | 
| 3 | k | 87 | 
| 4 | l | 85 | 
| 5 | m | NULL | 
| 6 | n | NULL | 
| 7 | o | NULL | 
- RIGHT JOIN
select a.id,a.name,b.grade
from student as a
right join grade as b
on a.id=b.id
结果为:
| id | name | grade | 
|---|---|---|
| 1 | h | 88 | 
| 2 | j | 90 | 
| 3 | k | 87 | 
| 4 | l | 85 | 
其中的左右表是根据放在join的左右来定义的。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号