多表查詢

一,多表關(guān)系

1.一對(duì)多

實(shí)現(xiàn):在多的一方建立外鍵,指向一的一方的主鍵

2.多對(duì)多

關(guān)系:一個(gè)學(xué)生可以選修多門課程,一門課程也可以供多個(gè)學(xué)生選擇

實(shí)現(xiàn):建立第三張中間表,中間表至少包含兩個(gè)外鍵,分別關(guān)聯(lián)兩方主鍵

3.一對(duì)一

關(guān)系:一對(duì)一關(guān)系,多用于單表拆分,將一張表的基礎(chǔ)字段放在一張表中, 其他詳情字段放在另一張表中,以提升操作效率

實(shí)現(xiàn):在任意一方加入外鍵, 關(guān)聯(lián)另外一方的主鍵,并且設(shè)置外鍵為唯一(UNIQUE)

二,多表查詢概述

1.多表查詢方法:

多表查詢使用select*from 表1,表2;這種方法時(shí)會(huì)出現(xiàn)笛卡爾積現(xiàn)象,要消除笛卡爾積就要在該語(yǔ)句后面加入where語(yǔ)句進(jìn)行篩選,找出符合某條件的結(jié)果

2.多表查詢的分類:

連接查詢

內(nèi)連接:相當(dāng)于查詢A、B交集部分?jǐn)?shù)據(jù)

外連接:

左外連接:查詢左表所有數(shù)據(jù),以及兩張表交集部分?jǐn)?shù)據(jù)

右外連接:查詢右表所有數(shù)據(jù),以及兩張表交集部分?jǐn)?shù)據(jù)

自連接:當(dāng)前表與自身的連接查詢,自連接必須使用表別名

子查詢

3.連接查詢

(1).內(nèi)連接查詢語(yǔ)法(內(nèi)連接查詢的時(shí)兩張表交集的部分)

隱式內(nèi)連接:SELECT 字段列表 FROM 表1,表2WHERE 條件......;

顯式內(nèi)連接:SELECT 字段列表 FROM 表1,[INNER] JOIN 表2 ON 連接條件...;

(2).外連接查詢語(yǔ)法

左外連接:SELECT字段列表FROM表1 LEFT [OUTER] JOIN表2 ON條件... ;

相當(dāng)于查詢表1(左表)的所有數(shù)據(jù)包含表1和表2交集部分的數(shù)據(jù)

右外連接:SELECT字段列表FROM表1 RIGHT [ OUTER] JOIN表2 ON條件...;

相當(dāng)于查詢表2(右表)的所有數(shù)據(jù)包含表1和表2交集部分的數(shù)據(jù)

(3)自連接查詢語(yǔ)法

SELECT字段列表FROM 表A別名A JOIN 表A別名B ON條件

自連接查詢,可以是內(nèi)連接查詢,也可以是外連接查詢。

4.聯(lián)合查詢(UNION,UNION ALL)

SELECT字段列表FROM表A

...

UNION [ALL ]

SELECT字段列表FROM表B

...

對(duì)于union查詢,就是把多次查詢的結(jié)果合并起來(lái),形成一個(gè)新的查詢結(jié)果集。

UNION ALL是直接將所有查詢結(jié)果直接合并,而UNION是將查詢后去重的結(jié)果

對(duì)于聯(lián)合查詢的多張表的列數(shù)必須保持一致, 字段類型也需要保持一致。

5.子查詢(嵌套查詢)

概念: SQL語(yǔ)句中嵌套SELECT語(yǔ)句,稱為嵌套查詢,又稱子查詢。

SELECT * FROM t1 WHERE column1= ( SELECT column1 FROM t2 );

子查詢外部的語(yǔ)句可以是INSERT / UPDATE / DELETE / SELECT的任何一個(gè)。

根據(jù)子查詢結(jié)果不同,分為:

?標(biāo)量子查詢(子查詢結(jié)果為單個(gè)值)

?列子 查詢(子查詢結(jié)果為- -列)

?行子查詢(子 查詢結(jié)果為- -行)

?表子查詢(子 查詢結(jié)果為多行多列

(1)標(biāo)量子查詢

子查詢返回的結(jié)果是單個(gè)值(數(shù)字、字符串、日期等),最簡(jiǎn)單的形式,這種子查詢成為標(biāo)量子查詢。

常用的操作符:=, <>, >, >=, <,<=

(2)列子查詢

子查詢返回的結(jié)果是一列(可以是多行),這種子查詢稱為列子查詢。

常用的操作符: IN、NQTIN、ANY、SOME、ALL

(3)行子查詢

子查詢返回的結(jié)果是一行(可以是多列) ,這種子查詢稱為行子查詢。

常用的操作符:=、<>、IN、NOT IN

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 目錄 ? 多表關(guān)系 項(xiàng)目開(kāi)發(fā)中,在進(jìn)行數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)時(shí),會(huì)根據(jù)業(yè)務(wù)需求及業(yè)務(wù)模塊之間的關(guān)系,分析并設(shè)計(jì)表結(jié)構(gòu),由...
    java的小粉絲閱讀 580評(píng)論 0 0
  • 上篇文章我們學(xué)習(xí)了MySQL基礎(chǔ)——約束,這篇文章我們學(xué)習(xí)MySQL基礎(chǔ)——多表查詢。 多表關(guān)系 在數(shù)據(jù)表中,各個(gè)...
    白巧克力LIN閱讀 422評(píng)論 0 2
  • 1、隱式連接 1、笛卡爾乘積笛卡爾(Descartes)乘積又叫直積。假設(shè)集合A={a,b},集合B={0,1,2...
    AKyS佐毅閱讀 2,154評(píng)論 0 1
  • 多表查詢 多表查詢是指基于兩個(gè)和兩個(gè)以上的表或是視圖的查詢.在實(shí)際應(yīng)用中,查詢單個(gè)表可能不能滿足你的需求,(如顯示...
    溫柔傾懷閱讀 584評(píng)論 0 1
  • 多表查詢分為以下幾種: 合并結(jié)果集: UNION UNION ALL 連接查詢 ...
    王紀(jì)山閱讀 970評(píng)論 0 1

友情鏈接更多精彩內(nèi)容