MySQL内连接查询语句

  <强>内连接是通过在查询中设置连接条件的方式,来移除查询结果集中某些数据行后的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。   

在MySQL的子句中使用关键字内连接连接两张表,并使用在子句来设置连接条件。如果没有任何条件,内连接和交叉连接在语法上是等同的,两者可以互换。

        <>以前SELECT  & lt;列名1,列第二名,…比;   得到& lt;表1名祝辞,INNER  JOIN  & lt;表名2祝辞,(,子句)         

& lt;列名1,列第二名…祝辞:需要检索的列名。

  

& lt;表1名祝辞& lt;表名2祝辞:进行内连接的两张表的表名。

  

内连接是系统默认的表连接,所以在从子句后可以省略内关键字,只用关键字加入。使用内连接后,从子句中上的子句可用来设置连接表的条件。

  

在从子句中可以在多个表之间连续使用内连接或连接,如此可以同时实现多个表的内连接。

  

表tb_students_info和表tb_departments都包含相同数据类型的字段dept_id,在两个表之间使用内连接查询。

  

输入的SQL语句和执行结果如下所示

  
 mysql>, SELECT  id、姓名、年龄、dept_name
  ,,,,,得到tb_students_info tb_departments
  ,,,,,WHERE  tb_students_info.dept_id=tb_departments.dept_id;
  + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
  | |,id  name ,, |, age , |, dept_name  |
  + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
  |,,1,|,Dany ,, |,,, 25, |, Computer  |
  |,,2,|,Green , |,,, 23, |, Chinese , |
  |,,3,|,Henry , |,,, 23, |, Math ,,,, |
  |,,4,|,Jane ,, |,,, 22, |, Computer  |
  |,,5,|,Jim ,,, |,,, 24, |, Computer  |
  |,,6,|,John ,, |,,, 21, |, Math ,,,, |
  |,,7,|,Lily ,, |,,, 22, |, Computer  |
  |,,8,|,Susan , |,,, 23, |, Economy , |
  |,,9,|,Thomas  |,,, 22, |, Chinese , |
  |,10,|,Tom ,,, |,,, 23, |, Economy , |
  + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
  10,rows  set 拷贝;(0.00,sec) 
  

在这里,选择语句与前面介绍的最大差别是:选择后面指定的列分别属于两个不同的表,id、名称、年龄在表tb_students_info中,而dept_name在表tb_departments中,同时从字句列出了两个表tb_students_info和tb_departments.WHERE子句在这里作为过滤条件,指明只有两个表中的dept_id字段值相等的时候才符合连接查询的条件。

  

返回的结果可以看的到,显示的记录是由两个表中的不同列值组成的新记录。

  

提示:因为tb_students_info表和tb_departments表中有相同的字段dept_id,所以在比较的时候,需要完全限定表名(格式为“表名。列名”),如果只给出dept_id, MySQL将不知道指的是哪一个,并返回错误信息。

  

在tb_students_info表和tb_departments表之间,使用内连接语法进行内连接查询,输入的SQL语句和执行结果如下所示。

  
 mysql>, SELECT  id、姓名、年龄、dept_name
  ,,,,,得到tb_students_info  INNER  JOIN  tb_departments
  ,,,,,WHERE  tb_students_info.dept_id=tb_departments.dept_id;
  + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
  | |,id  name ,, |, age , |, dept_name  |
  + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
  |,,1,|,Dany ,, |,,, 25, |, Computer  |
  |,,2,|,Green , |,,, 23, |, Chinese , |
  |,,3,|,Henry , |,,, 23, |, Math ,,,, |
  |,,4,|,Jane ,, |,,, 22, |, Computer  |
  |,,5,|,Jim ,,, |,,, 24, |, Computer  |
  |,,6,|,John ,, |,,, 21, |, Math ,,,, |
  |,,7,|,Lily ,, |,,, 22, |, Computer  |
  |,,8,|,Susan , |,,, 23, |, Economy , |
  |,,9,|,Thomas  |,,, 22, |, Chinese , |
  |,10,|,Tom ,,, |,,, 23, |, Economy , |
  + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
  10,rows  set 拷贝;(0.00,sec) 
  

在这里的查询语句中,两个表之间的关系通过内连接指定。使用这种语法的时候,连接的条件使用在子句给出,而不是,在和后面指定的条件相同。

  
  

原文来自:   https://www.linuxprobe.com/mysql-inner-join.html

MySQL内连接查询语句