[JavaWeb-MySQL]多表查询(内连接,外连接,子查询)
生活随笔
收集整理的這篇文章主要介紹了
[JavaWeb-MySQL]多表查询(内连接,外连接,子查询)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
多表查詢的分類:
1. 內(nèi)連接查詢:1. 隱式內(nèi)連接:使用where條件消除無用數(shù)據(jù)* 例子:-- 查詢所有員工信息和對應(yīng)的部門信息SELECT * FROM emp,dept WHERE emp.`dept_id` = dept.`id`;-- 查詢員工表的名稱,性別。部門表的名稱SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;SELECT t1.name, -- 員工表的姓名t1.gender,-- 員工表的性別t2.name -- 部門表的名稱FROMemp t1,dept t2WHERE t1.`dept_id` = t2.`id`;2. 顯式內(nèi)連接:* 語法: select 字段列表 from 表名1 [inner] join 表名2 on 條件* 例如:* SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`; * SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`; 3. 內(nèi)連接查詢:1. 從哪些表中查詢數(shù)據(jù)2. 條件是什么3. 查詢哪些字段2. 外鏈接查詢:1. 左外連接:* 語法:select 字段列表 from 表1 left [outer] join 表2 on 條件;* 查詢的是左表所有數(shù)據(jù)以及其交集部分。* 例子:-- 查詢所有員工信息,如果員工有部門,則查詢部門名稱,沒有部門,則不顯示部門名稱SELECT t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;2. 右外連接:* 語法:select 字段列表 from 表1 right [outer] join 表2 on 條件;* 查詢的是右表所有數(shù)據(jù)以及其交集部分。* 例子:SELECT * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;3. 子查詢:* 概念:查詢中嵌套查詢,稱嵌套查詢?yōu)樽硬樵儭?- 查詢工資最高的員工信息-- 1 查詢最高的工資是多少 9000SELECT MAX(salary) FROM emp;-- 2 查詢員工信息,并且工資等于9000的SELECT * FROM emp WHERE emp.`salary` = 9000;-- 一條sql就完成這個(gè)操作。子查詢SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);* 子查詢不同情況1. 子查詢的結(jié)果是單行單列的:* 子查詢可以作為條件,使用運(yùn)算符去判斷。 運(yùn)算符: > >= < <= =* -- 查詢員工工資小于平均工資的人SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);2. 子查詢的結(jié)果是多行單列的:* 子查詢可以作為條件,使用運(yùn)算符in來判斷-- 查詢'財(cái)務(wù)部'和'市場部'所有的員工信息SELECT id FROM dept WHERE NAME = '財(cái)務(wù)部' OR NAME = '市場部';SELECT * FROM emp WHERE dept_id = 3 OR dept_id = 2;-- 子查詢SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '財(cái)務(wù)部' OR NAME = '市場部');3. 子查詢的結(jié)果是多行多列的:* 子查詢可以作為一張?zhí)摂M表參與查詢-- 查詢員工入職日期是2011-11-11日之后的員工信息和部門信息-- 子查詢SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2WHERE t1.id = t2.dept_id;-- 普通內(nèi)連接SELECT * FROM emp t1,dept t2 WHERE t1.`dept_id` = t2.`id` AND t1.`join_date` > '2011-11-11'總結(jié)
以上是生活随笔為你收集整理的[JavaWeb-MySQL]多表查询(内连接,外连接,子查询)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [JavaWeb-MySQL]数据库的备
- 下一篇: [JavaWeb-MySQL]多表查询练