MYSQL-多表查询

首先建立数据表tb_departmentssql

create table tb_departments (dept_id INT PRIMARY KEY, dept_name VARCHAR(25), dept_call INT, dept_type VARCHAR(10));

DESC tb_departments;

INSERT INTO tb_departments VALUES (1, 'Computer', 11111, 'A'), (2, 'Math', 22222, 'A'), (3, 'Chinese', 33333, 'B'), (4, 'Economy', 44444, 'B'), (5, 'History', 55555, 'B');
复制代码

学生表信息以下ui

  • 内链接查询

内链接是经过在查询中设置链接条件的方式,来移除查询结果集中某些数据行后的交叉链接。简单来讲,就是利用条件表达式来消除交叉链接的某些数据行,在FROM子句中使用关键字INNER JOIN链接两张表,并使用ON子句来设置链接条件。若是没有任何条件,INNER JOIN和CROSS JOIN在语法上是等同的,二者能够互换。spa

内链接是系统默认的表链接,因此在FROM子句后能够省略INNER关键字,只用关键字JOIN。使用内链接后,FROM子句中的ON子句可用来设置链接表的条件。3d

SELECT <列名1,列名2 …> 
FROM <表名1> INNER JOIN <表名2> [ ON子句]
复制代码
SELECT id, name, age, dept_name FROM tb_students_info, tb_departments WHERE tb_students_info.dept_id=tb_departments.dept_id;
复制代码

使用INNER JOIN语法进行内链接查询code

SELECT id, name, age, dept_name FROM tb_students_info INNER JOIN tb_departments ON tb_students_info.dept_id=tb_departments.dept_id;
复制代码

  • 外链接查询

内链接是在交叉链接的结果集上返回知足条件的记录;而外链接先将链接的表分为基表和参考表,再以基表为依据返回知足和不知足条件的记录。cdn

外链接更加注重两张表之间的关系。按照链接表的顺序,能够分为左外链接和右外链接。blog

SELECT name, dept_name FROM tb_students_info s LEFT OUTER JOIN tb_departments d ON s.dept_id=d.dept_id;
复制代码

SELECT name, dept_name FROM tb_students_info s RIGHT OUTER JOIN tb_departments d ON s.dept_id=d.dept_id;
复制代码

  • 自链接查询

自链接是将一个表和它自身进行链接,也是内链接的一种,一样使用INNER JOIN或者JOIN关键字来进行链接。string

若是须要在一个表中查找具备相同列值的行,就能够考虑用自链接。注意,在使用自链接的时候,须要为表指定两个不一样的别名,且对全部查询列的引用必须使用表别名的限定,不然SELECT操做会失败。it

查询id为1的学生所在学院的其余学生的信息,输入的SQL语句和执行结果以下所示。io

SELECT s1.id, s1.name FROM tb_students_info s1, tb_students_info s2 WHERE s1.dept_id=s2.dept_id AND s2.id=1;
复制代码

相关文章
相关标签/搜索