最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL多表查詢詳解下

 更新時(shí)間:2020年07月27日 17:33:58   作者:木卯生十木  
這篇文章主要介紹了MySQL多表查詢詳解下,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

  好好吃飯,好好休息,聽著很簡單,實(shí)際落實(shí)缺失不那么容易。

繼續(xù)回顧MySql的多表查詢之1999語法

#二,SQL1999語法
語法:
 SELECT 查詢列表
 FROM 表1 別名 【連接類型】
 JOIN 表2 別名
 ON 鏈接條件
 【W(wǎng)HERE 篩選條件】
 【GROUP BY 分組】
 【HAVING 篩選條件】
 【ORDER BY 排序列表ASC|DESC】

分類(連接類型):
 內(nèi)連接(★): INNER
 外聯(lián)結(jié)
 左外(★):LEFT 【OUTER】
 右外(★):RIGHT 【OUTER】
 全外:FULL 【OUTER】
 交叉連接:CROSS

===============================================================================

一、內(nèi)連接
語法:
 SELECT 查詢列表
 FROM 表1 別名
 INNER JOIN 表2 別名
 ON 連接條件
 【W(wǎng)HERE 篩選條件】
 【GROUP BY 分組】
 【HAVING 篩選分組】
 【ORDER BY 排序列表 ASC|DESC】

分類:
 等值
 非等值
 自連接
 特點(diǎn):
 ①添加排序,分組,篩選
 ②INNER可以省略
 ③篩選條件放在WHERE后面,連接條件放在ON后面,提高分離性,便于閱 
 讀。
 ④INNER JOIN連接和SQL1992語法中的等值連接效果是一樣的,都是查 
 詢交集部分。
#1.等值連接
#案例1.查詢員工名,部門名。交換連接條件不影響結(jié)果。
SELECT last_name AS 員工名,department_name AS 部門名
FROM employees e
INNER JOIN departments d
ON e.department_id=d.department_id;
SELECT last_name AS 員工名,department_name AS 部門名
FROM employees d
INNER JOIN departments e
ON e.department_id=d.department_id;

#案例2.查詢名字中包含e的員工和工種名(篩選)
SELECT last_name AS 員工名,job_title AS 工種名
FROM employees e
INNER JOIN jobs j
ON e.job_id=j.job_id
WHERE e.last_name LIKE '%e%';

#案例3.查詢部門個(gè)數(shù)>3的城市名和部門個(gè)數(shù)。(分組+篩選)
分步:先把每個(gè)城市的部門個(gè)數(shù)查出來,在篩選滿足條件的。
SELECT city AS 城市,COUNT(*) AS 個(gè)數(shù)
FROM locations l
INNER JOIN departments d
ON l.location_id=d.location_id
GROUP BY city
HAVING COUNT(*) > 3;

#案例4.查詢哪個(gè)部門員工個(gè)數(shù)>3的部門名和員工個(gè)數(shù),并按個(gè)數(shù)降序排序。
分步:
1.查詢每個(gè)部門的員工個(gè)數(shù),
2.在上面的結(jié)果上篩選出員工數(shù)大于3的記錄,
3.把員工數(shù)排序
SELECT COUNT(*) AS 員工個(gè)數(shù),d.department_name AS 部門名
FROM employees e
INNER JOIN departments d
ON e.department_id=d.department_id
GROUP BY d.department_name
HAVING COUNT(*) > 3
ORDER BY 員工個(gè)數(shù) DESC;

#案例5.查詢員工名,部門名,工種名,并按部門名降序。三表連接注意條件。
SELECT last_name AS 員工名,department_name AS 部門名,
job_title AS 工種名
FROM employees e
INNER JOIN departments d
ON e.department_id=d.department_id
INNER JOIN jobs j
ON e.job_id=j.job_id
ORDER BY d.department_name DESC;

#2.非等值連接。范圍(間接)
#案例1.查詢員工的工資級(jí)別。
SELECT salary AS 月薪,grade_level AS 工資等級(jí)
FROM employees e
INNER JOIN job_grades g
ON e.salary BETWEEN g.lowest_sal AND g.highest_sal;

#案例2.查詢每個(gè)工資的級(jí)別的個(gè)數(shù)>20,并且按降序排列。
SELECT j.grade_level AS 等級(jí),COUNT(*) 個(gè)數(shù)
FROM employees e
INNER JOIN job_grades j
ON e.salary BETWEEN j.lowest_sal AND j.highest_sal
GROUP BY j.grade_level
HAVING COUNT(*) > 20
ORDER BY 個(gè)數(shù) DESC;

#3.自連接
#案例1.查詢員工的名字,上級(jí)的名字。
SELECT e.last_name AS 員工名,m.last_name AS 上級(jí)名
FROM employees e
INNER JOIN employees m
ON e.manager_id=m.employee_id;

#案例2.查詢員工的名字,上級(jí)的名字,名字中包含字符k。
SELECT e.last_name AS 員工名,m.last_name AS 上級(jí)名
FROM employees e
INNER JOIN employees m
ON e.manager_id=m.employee_id
WHERE e.last_name LIKE '%k%';

#二,外連接

應(yīng)用場景:用于查詢一個(gè)表中有,另一個(gè)表沒有的記錄。
特點(diǎn):
1.外連接的查詢結(jié)果為主表中的所有記錄
如果從表中有和它匹配的,則顯示匹配的值
如果從表中沒有和它匹配的,則顯示null
外連接查詢結(jié)果=內(nèi)連接結(jié)果+主表中有而從表沒有的記錄
2.左外連接,LEFT JOIN左邊的是主表
右外連接,RIGHT JOIN右邊的是主表
3.左外和右外交換兩個(gè)表的順序,可以實(shí)現(xiàn)同樣的效果。
4.全外連接=內(nèi)連接的結(jié)果+表1中有但表2中沒有的+表2中有但表一沒有的(Mysql不支持)
引入:
SELECT * FROM beauty;
SELECT * FROM boys;

#引入:查詢男朋友不在男神表的女神名
SELECT b.NAME,bo.*
FROM beauty b
LEFT OUTER JOIN boys bo
ON b.boyfriend_id=bo.id;

#左外連接
SELECT b.NAME,bo.*
FROM beauty b
LEFT OUTER JOIN boys bo
ON b.boyfriend_id=bo.id
WHERE bo.id IS NULL;
#選從表中的主鍵列
#右外連接,得到同樣的結(jié)果。
SELECT b.NAME,bo.*
FROM boys bo
RIGHT OUTER JOIN beauty b
ON b.boyfriend_id=bo.id
WHERE bo.id IS NULL;

#把beauty表中的id為10行的boyfriend_id從4改到6.才能查詢出如下結(jié)果。
SELECT b.*,bo.*
FROM boys bo
LEFT OUTER JOIN beauty b
ON b.boyfriend_id=bo.id
WHERE b.id IS NULL;

#案例1.哪個(gè)部門沒有員工。
#左外寫法
SELECT d.*,e.employee_id
FROM departments d
LEFT OUTER JOIN employees e
ON d.department_id=e.department_id
WHERE e.department_id IS NULL;
==============================
#右外寫法
SELECT d.*,e.employee_id
FROM employees e
RIGHT OUTER JOIN departments d
ON d.department_id=e.department_id
WHERE e.employee_id IS NULL;

#全外連接查出的結(jié)果有三部分組成(舉例,Mysql不支持)語法結(jié)構(gòu)演示
 先把兩張表的交集查出來,在把缺失的填充查出來,在把其他無關(guān)聯(lián)的查出來
 語法結(jié)構(gòu)示例
SELECT b.*,bo.*
FROM beauty b
FULL OUTER JOIN boys bo
ON b.boyfriend_id=bo.id
#交叉連接,使用1999的語法標(biāo)準(zhǔn)實(shí)現(xiàn)的
笛卡爾乘積
SELECT b.*,bo.*
FROM beauty b
CROSS JOIN boys bo;

#SQL1992語法 與 SQL 1999語法 相比
功能:SQL1999支持的較多
可讀性:SQL1999實(shí)現(xiàn)連接條件和篩選條件的分離,可讀性提高

總結(jié):

SELECT <select_list>
FROM A
INNER JOIN B
ON A.KEY=B.KEY;

SELECT <select_list>
FROM A
LEFT JOIN B
ON A.KEY=B.KEY;

SELECT <select_list>
FROM A
RIGHT JOIN B
ON A.KEY=B.KEY;

SELECT <select_list>
FROM A
LEFT JOIN B
ON A.KEY=B.KEY
WHERE B.KEY IS NULL;

SELECT <select_list>
FROM A
RIGHT JOIN B
ON A.KEY=B.KEY
WHERE A.KEY IS NULL;

SELECT <select_list>
FROM A
FULL JOIN B
ON A.KEY=B.KEY;

SELECT <select_list>
FROM A
FULL JOIN B
ON A.KEY=B.KEY
WHERE A.KEY IS NULL
OR B.KEY IS NULL;

  簡單的多表查詢已結(jié)束,相信看到這里的基本對簡單多表連接應(yīng)該手到擒來,至于看不懂的emmm...

用我們楊老師的話就是,自己去寫個(gè)二三十遍就有感覺了。o(^▽^)o。

高考結(jié)束,大學(xué)生活的開始,世界是屬于你們的倒計(jì)時(shí)開啟了...不管你們選擇什么專業(yè),只要是你自己選擇的,一定要相信自己會(huì)在這個(gè)專業(yè)留下一筆....。

到此這篇關(guān)于MySQL多表查詢詳解下的文章就介紹到這了,更多相關(guān)MySQL多表查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解數(shù)據(jù)庫連接的URL的寫法及總結(jié)

    詳解數(shù)據(jù)庫連接的URL的寫法及總結(jié)

    這篇文章主要介紹了詳解數(shù)據(jù)庫連接的URL的寫法及總結(jié)的相關(guān)資料這里提供了四種方法1、oracle.2、MySQL.3、SQL Server.4、DB2,需要的朋友可以參考下
    2017-07-07
  • mysql獲取隨機(jī)數(shù)據(jù)的方法

    mysql獲取隨機(jī)數(shù)據(jù)的方法

    在mysql中獲取隨機(jī)數(shù)據(jù)方法很簡單只要使用order by rand()即可了,但是如果你是百萬級(jí)數(shù)據(jù)量,使用order by rand()獲取隨機(jī)數(shù)據(jù)你會(huì)等死去,下面我來介紹具體的解決辦法
    2013-11-11
  • MySQL的Query Cache原理分析

    MySQL的Query Cache原理分析

    QueryCache(下面簡稱QC)是根據(jù)SQL語句來cache的。一個(gè)SQL查詢?nèi)绻詓elect開頭,那么MySQL服務(wù)器將嘗試對其使用QC。每個(gè)Cache都是以SQL文本作為key來存的。
    2008-07-07
  • Mysql中關(guān)于on,in,as,where的區(qū)別

    Mysql中關(guān)于on,in,as,where的區(qū)別

    這篇文章主要介紹了Mysql中關(guān)于on,in,as,where的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • PHP中常用的幾個(gè) mysql操作

    PHP中常用的幾個(gè) mysql操作

    本篇文章是對關(guān)于php操作mysql執(zhí)行數(shù)據(jù)庫查詢的一些常用操作進(jìn)行了詳細(xì)的匯總介紹,非常的細(xì)致全面,也很簡單,需要的朋友參考下
    2015-04-04
  • 詳解MySQL數(shù)據(jù)庫優(yōu)化的八種方式(經(jīng)典必看)

    詳解MySQL數(shù)據(jù)庫優(yōu)化的八種方式(經(jīng)典必看)

    關(guān)于數(shù)據(jù)庫優(yōu)化,網(wǎng)上有不少資料和方法,但是不少質(zhì)量參差不齊,有些總結(jié)的不夠到位,內(nèi)容冗雜。今天給大家分享一篇文章關(guān)于mysql數(shù)據(jù)庫優(yōu)化的八種方式,非常經(jīng)典,需要的的朋友參考下
    2017-03-03
  • mysql命令行下用戶管理方法分享

    mysql命令行下用戶管理方法分享

    如果有mysql管理工具phpmyadmin的話,我們可以通過圖形畫界面來對用戶進(jìn)行管理,但是如果沒有phpmyadmin這樣的管理工具怎么辦呢
    2012-07-07
  • 8種MySQL分頁方法總結(jié)

    8種MySQL分頁方法總結(jié)

    這篇文章主要介紹了8種MySQL分頁方法總結(jié),小編現(xiàn)在才知道,MySQL分頁竟然有8種實(shí)現(xiàn)方法,本文就一一講解了這些方法,需要的朋友可以參考下
    2015-01-01
  • MySQL模式 Strict Mode知識(shí)點(diǎn)詳解

    MySQL模式 Strict Mode知識(shí)點(diǎn)詳解

    在本篇文章里小編給各位整理的是一篇關(guān)于MySQL模式 Strict Mode知識(shí)點(diǎn)詳解內(nèi)容,需要的朋友們參考下。
    2020-03-03
  • 安裝MySQL后include目錄下沒有找到libmysql.lib

    安裝MySQL后include目錄下沒有找到libmysql.lib

    安裝了MySQL后,在其安裝目錄下的include文件夾并沒有找到libmysql.lib,主要原因是在安裝MySQL的時(shí)候,沒有勾選develop component這一選項(xiàng)造成的
    2014-08-08

最新評論

江陵县| 玉田县| 青川县| 永仁县| 大港区| 商南县| 花垣县| 乐清市| 博野县| 加查县| 江山市| 汾西县| 五指山市| 贵州省| 上高县| 广西| 平凉市| 灵川县| 汉沽区| 将乐县| 英吉沙县| 恩平市| 安平县| 宜阳县| 尖扎县| 阿尔山市| 新野县| 建水县| 乳源| 永济市| 同江市| 阳信县| 黔西县| 贵德县| 手机| 蚌埠市| 雅江县| 岳普湖县| 滦平县| 滨海县| 胶州市|