表1有m行數據,表2有n行數據,查詢結果有m*n行數據。
sql92標準:僅支援內連接
sql99標準(建議):支援內連接、外連接(左外連接與右外連接)、交叉連接
#內連接:等值連接、非等值連接、自連接
外連接:左外連接、右外連接、全外連接
交叉連接
(1)查詢女生名稱及其對應的男友名稱
SELECT girlname, boyname FROM boys, girls WHERE girls.boyfriend_id=boys.girlfriend_id;
(2)查詢員工名稱(last_name)和對應的部門名稱(department_name)-------------(根據關聯的id查詢)
SELECT last_name, department_name FROM JDSC, SNSC WHERE JDSC.`id`=SNSC.`id`;
(3)查詢員工名(last_name)、工種號(job_id)、工種名(job_title) (員工表:JDSC 工作表:JOBSC)------為表起別名,提升簡潔度,避免歧義
#"e.job_id"是为了避免歧义 SELECT last_name, e.job_id, job_title FROM ESC e, JOBSC j WHERE e.`job_id`=j.`job_id`;
注意:
如果為表起了別名,則查詢的欄位不能使用原來的表名去限定。
上述兩個表格的順序可互換
(4)查詢有獎金的員工名稱、部門名稱
#员工名:last_name #部门名:department_name #奖金率:commissiom_pct SELECT last_name, department_name, commissiom_pct FROM employees e, department d WHERE e.`department_id`=d.`department_id` AND e.`commissiom_pct` IS NOT NULL;
(5)分組查詢——查詢每個城市的部門數量
#城市分组表名:city #部门分组表名:departments SELECT COUNT(*) 个数, city FROM departments d, locations l WHERE d.`location_id`=l.`location_id` GROUP BY city;
(6)排序——查詢每個工種的工種名和員工個數,並按員工個數降序
SELECT job_title, COUNT(*) FROM emloyees e, jobs j WHERE e.`job_id`=j.`job_id` GROUP BY job_title ORDER BY COUNT(*) DESC;
(7)三表格連接——查詢員工名稱、部門名稱和所在的城市
SELECT last_name, department_name, city FROM employees e, departments d, locations l WHERE e.`department_id`=d.`department_id` AND d.`location_id`=l.`location_id` AND city LIKE 's%';
以上是MySQL中的連線查詢實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!