mysql内连接如何写_MySQL INNER JOIN:内连接

在《MySQL交叉连接》一节中我们了解了 MySQL 的交叉连接,本节主要介绍多表查询的另一种方式——内连接。

内连接(INNER JOIN)主要通过设置连接条件的方式,来移除查询结果中某些数据行的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。

内连接使用 INNER JOIN 关键字连接两张表,并使用 ON 子句来设置连接条件。如果没有连接条件,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。

内连接的语法格式如下:

SELECT FROM INNER JOIN [ON子句]

语法说明如下。

字段名:需要查询的字段名称。

:需要内连接的表名。

INNER JOIN :内连接中可以省略 INNER 关键字,只用关键字 JOIN。

ON 子句:用来设置内连接的连接条件。

INNER JOIN 也可以使用 WHERE 子句指定连接条件,但是 INNER JOIN ... ON 语法是官方的标准写法,而且 WHERE 子句在某些时候会影响查询的性能。

多个表内连接时,在 FROM 后连续使用 INNER JOIN 或 JOIN 即可。

内连接可以查询两个或两个以上的表。为了让大家更好的理解,暂时只讲解两个表的连接查询。

例 1

在 tb_students_info 表和 tb_course 表之间,使用内连接查询学生姓名和相对应的课程名称,SQL 语句和运行结果如下。

mysql> SELECT s.name,c.course_name FROM tb_students_info s INNER JOIN tb_course c

-> ON s.course_id = c.id;

+--------+-------------+

| name | course_name |

+--------+-------------+

| Dany | Java |

| Green | MySQL |

| Henry | Java |

| Jane | Python |

| Jim | MySQL |

| John | Go |

| Lily | Go |

| Susan | C++ |

| Thomas | C++ |

| Tom | C++ |

+--------+-------------+

10 rows in set (0.00 sec)

在这里的查询语句中,两个表之间的关系通过 INNER JOIN 指定,连接的条件使用 ON 子句给出。

注意:当对多个表进行查询时,要在 SELECT 语句后面指定字段是来源于哪一张表。因此,在多表查询时,SELECT 语句后面的写法是表名.列名。另外,如果表名非常长的话,也可以给表设置别名,这样就可以直接在 SELECT 语句后面写上表的别名.列名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Mysql数据库中左连接left join、右连接right join内连接inner join的介绍和演示: 1. 左连接left join 左连接left join会返回左表中所有的记录,以及右表中符合条件的记录。如果右表中没有符合条件的记录,则返回NULL。 语法: ``` SELECT * FROM a_table LEFT JOIN b_table ON a_table.key = b_table.key; ``` 示例: 假设有两个表,一个是学生表students,一个是成绩表scores。学生表中有学生的ID和姓名,成绩表中有学生的ID和成绩。我们需要查询所有学生的姓名和成绩,如果学生没有成绩,则成绩为NULL。 ```sql SELECT students.name, scores.score FROM students LEFT JOIN scores ON students.id = scores.id; ``` 2. 右连接right join 右连接right join会返回右表中所有的记录,以及左表中符合条件的记录。如果左表中没有符合条件的记录,则返回NULL。 语法: ``` SELECT * FROM a_table RIGHT JOIN b_table ON a_table.key = b_table.key; ``` 示例: 假设有两个表,一个是学生表students,一个是成绩表scores。学生表中有学生的ID和姓名,成绩表中有学生的ID和成绩。我们需要查询所有成绩和对应的学生姓名,如果成绩表中没有对应的学生,则姓名为NULL。 ```sql SELECT students.name, scores.score FROM students RIGHT JOIN scores ON students.id = scores.id; ``` 3. 内连接inner join 内连接inner join会返回左右表中都符合条件的记录。 语法: ``` SELECT * FROM a_table INNER JOIN b_table ON a_table.key = b_table.key; ``` 示例: 假设有两个表,一个是学生表students,一个是成绩表scores。学生表中有学生的ID和姓名,成绩表中有学生的ID和成绩。我们需要查询所有有成绩的学生的姓名和成绩。 ```sql SELECT students.name, scores.score FROM students INNER JOIN scores ON students.id = scores.id; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值