国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL中join語句的基本使用教程及其字段對性能的影響

2024-07-24 12:45:17
字體:
供稿:網(wǎng)友

join語句的基本使用

SQL(MySQL) JOIN 用于根據(jù)兩個或多個表中的字段之間的關(guān)系,從這些表中得到數(shù)據(jù)。

JOIN 通常與 ON 關(guān)鍵字搭配使用,基本語法如下:

... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona
table1 通常稱為左表,table2 稱為右表。ON 關(guān)鍵字用于設(shè)定匹配條件,用于限定在結(jié)果集合中想要哪些行。如果需要指定其他條件,后面可以加上 WHERE 條件 或者 LIMIT 以限制記錄返回?cái)?shù)目等。

下面以最常見的兩表連接來說明 MySQL JOIN 的用法,關(guān)于多表 JOIN 請參見《MySQL JOIN 多表》。

MySQL JOIN 分類

JOIN 按照功能大致分為如下三類:

    INNER JOIN(內(nèi)連接):取得兩個表中存在連接匹配關(guān)系的記錄。 LEFT JOIN(左連接):取得左表(table1)完全記錄,即是右表(table2)并無對應(yīng)匹配記錄。 RIGHT JOIN(右連接):與 LEFT JOIN 相反,取得右表(table2)完全記錄,即是左表(table1)并無匹配對應(yīng)記錄。

    關(guān)于 MySQL FULL JOIN 全連接

    MySQL 沒有提供 SQL 標(biāo)準(zhǔn)中的 FULL JOIN(全連接):兩個表記錄都取出,而不管彼此是否有對應(yīng)記錄。要解決此問題,可以使用 UNION 關(guān)鍵字來合并 LEFT JOIN 與 RIGHT JOIN,達(dá)到模擬 FULL JOIN 的目的。

    MySQL INNER JOIN

    INNER JOIN 用于取得兩個表中存在連接匹配關(guān)系的記錄。下面是兩個原始數(shù)據(jù)表:

    20151216104417019.png (366×317)

    article 表中文章的所屬用戶是通過 uid 這個字段與 user 表關(guān)聯(lián)起來的。通過觀察數(shù)據(jù)不難發(fā)現(xiàn),對于 uid=3 的用戶,并沒有發(fā)表任何文章;而文章中 aid=4 卻無法在 uid 表中找到對應(yīng)記錄(可能是該用戶被刪除而其所屬的文章卻被保留了下來)。

    我們列出所用文章與用戶一一對應(yīng)的數(shù)據(jù)。

    SELECT … INNER JOIN … ON 語句如下:

    SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid

    返回查詢結(jié)果如下:

    20151216104447947.png (273×126)

    對于 INNER JOIN,等同與下面的 SQL 語句:

    SELECT article.aid,article.title,user.username FROM article,user WHERE article.uid = user.uid

    CROSS JOIN

    CROSS JOIN 即交叉連接,在不指定 ON 條件下:

    SELECT article.aid,article.title,user.username FROM article CROSS JOIN user

    得到的結(jié)果是被連接的兩個數(shù)據(jù)表的乘積,即笛卡爾積。

    實(shí)際上,在 MySQL 中(僅限于 MySQL) CROSS JOIN 與 INNER JOIN 的表現(xiàn)是一樣的,在不指定 ON 條件得到的結(jié)果都是笛卡爾積,反之取得兩個表完全匹配的結(jié)果。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 桂东县| 刚察县| 长岭县| 柞水县| 肥西县| 攀枝花市| 台东市| 朔州市| 阳西县| 阿瓦提县| 横山县| 霍邱县| 三亚市| 曲靖市| 同德县| 开阳县| 花垣县| 洛宁县| 广州市| 介休市| 黔西县| 石楼县| 治县。| 黑河市| 商洛市| 万全县| 惠安县| 城口县| 晋中市| 中西区| 耒阳市| 抚顺县| 栖霞市| 鹤山市| 普定县| 红原县| 海城市| 驻马店市| 苏尼特左旗| 威海市| 五寨县|