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;
複製代碼

相關文章
相關標籤/搜索