📜  MySQL内部连接

📅  最后修改于: 2020-11-18 03:16:02             🧑  作者: Mango

MySQL内部连接

MySQL内部联接用于仅从表中返回符合指定条件的结果,并隐藏其他行和列。 MySQL假定它是默认的Join,因此在查询中使用Inner Join关键字是可选的。

我们可以通过以下可视化表示来理解它,其中内部联接仅返回table1和table2的匹配结果:

MySQL内部连接语法:

内连接关键字与SELECT语句一起使用,并且必须写在FROM子句之后。以下语法对其进行了更清晰的说明:

SELECT columns
FROM table1
INNER JOIN table2 ON condition1
INNER JOIN table3 ON condition2
...;

使用这种语法,我们首先必须选择列列表,然后指定将要连接到主表的表名,并出现在内部联接(table1,table2)中,最后,在ON关键字之后提供条件。 Join条件返回Inner子句中指定的表之间的匹配行。

MySQL内部连接示例

让我们首先创建两个表“ students”和“ technologies”,其中包含以下数据:

表:学生

表:技术

要从两个表中选择记录,请执行以下查询:

SELECT students.stud_fname, students.stud_lname, students.city, technologies.technology  
FROM students 
INNER JOIN technologies  
ON students.student_id = technologies.tech_id;

成功执行查询后,它将给出以下输出:

MySQL内部加入分组依据条款

内部联接也可以与GROUP BY子句一起使用。以下语句使用带有GROUP BY子句的Inner Join子句返回学生ID,技术名称,城市和机构名称。

SELECT students.student_id, technologies.inst_name, students.city, technologies.technology  
FROM students 
INNER JOIN technologies  
ON students.student_id = technologies.tech_id GROUP BY inst_name;

上面的语句将给出以下输出:

MySQL内部联接,带有USING子句

有时,两个表中的列名相同。在这种情况下,我们可以使用USING关键字来访问记录。以下查询对其进行了更清晰的说明:

SELECT student_id, inst_name, city, technology  
FROM students 
INNER JOIN technologies  
USING (student_id);

它将给出以下输出:

内部加入WHERE子句

使用WHERE子句可以返回过滤器结果。下面的示例使用内部联接说明此子句:

SELECT tech_id, inst_name, city, technology  
FROM students 
INNER JOIN technologies  
USING (student_id) WHERE technology = "Java";

该语句给出以下结果:

MySQL内部联接多个表

我们已经创建了两个表,分别称为“学生和技术”。让我们再创建一个表并将其命名为联系人。

执行以下语句以加入三个表的学生,技术人员和联系人:

SELECT student_id, inst_name, city, technology, cellphone
FROM students 
INNER JOIN technologies USING (student_id)
INNER JOIN contact ORDER BY student_id;

成功执行以上查询后,将给出以下输出:

使用运算符的MySQL内部联接

MySQL允许许多可以与内部联接一起使用的运算符,例如大于(>),小于(<),等于(=),不等于(=)等。以下查询返回其收入在20000至80000的范围:

SELECT emp_id, designation, income, qualification
FROM employee
INNER JOIN customer
 WHERE income>20000 and  income<80000;

这将给出以下输出: