mysql多表查詢

一肩碟、表的關(guān)系分析:

用戶和訂單:一個(gè)用戶可以有多個(gè)訂單强窖,但每個(gè)訂單只能屬于一個(gè)用戶,所以是一對(duì)多的關(guān)系削祈。
商品和分類:一個(gè)產(chǎn)品只能有一種分類翅溺,而一個(gè)分類可以有多種產(chǎn)品,所以是多對(duì)一的關(guān)系髓抑。
訂單和商品:一個(gè)訂單可以有多個(gè)商品咙崎,一個(gè)商品可以有多個(gè)訂單,所以是多對(duì)多的關(guān)系启昧。

二叙凡、主從表與主外鍵

當(dāng)兩張表的關(guān)系是一對(duì)多的時(shí)候,一代表主表密末,多代表從表握爷,在從表設(shè)置外鍵執(zhí)行主表的主鍵


表category.png
表product

注意插入數(shù)據(jù)時(shí)需要先設(shè)置 set names gbk

  • 聲明外鍵約束:
    alter table 從表 add [constraint] [外鍵名稱] foreign key (從表外鍵字段名) references 主表 (主表的主鍵)
    注意:外鍵名稱用于刪除外鍵約束的,一般建議以“_fk”結(jié)尾
  • 刪除外鍵約束
    alter table 從表 drop foreign key 外鍵名稱
    Paste_Image.png

注意事項(xiàng)

  • 從表外鍵不能添加主表中不存在的記錄
  • 主表不能刪除從表中已經(jīng)引用的記錄

三严里、建表規(guī)則總結(jié)

一對(duì)多的建表原則:在多的一方創(chuàng)建一個(gè)字段新啼,字段作為外鍵指向的一方的主鍵

一對(duì)多的建表原則

多對(duì)多建表原則:兩張表之間多對(duì)多的關(guān)系需要通過(guò)創(chuàng)建第三張表,也稱為中間表刹碾,中間表中至少有有兩個(gè)字段分別作為外鍵指向各自一方的主鍵

多對(duì)多建表原則

四燥撞、多表查詢

  • 內(nèi)連接(用的比較多)

    • 普通(顯示)內(nèi)連接:前提條件需要有外鍵,提交的關(guān)鍵字是 inner join ... on
      select * from A inner join B on 條件;
    • 隱式內(nèi)連接(用的是最多的):可以省略inner join ... on 關(guān)鍵字
      select * from A,B where 條件
  • 外連接

    • 左連接(看左表,即sql語(yǔ)句中 left 關(guān)鍵字前的表):前提條件需要外鍵迷帜,使用關(guān)鍵字 left join ... on
      select * from dept left outer join emp on dept.did = emp.dno
    • 右連接(看右表與左連接相反)


      內(nèi)連接和外連接的區(qū)別
  • 子查詢:一條select語(yǔ)句結(jié)果作為另一條select語(yǔ)法的一部分(查詢條件物舒、查詢結(jié)果、表等)

五戏锹、案例:

  • 本題用到下面三個(gè)關(guān)系表:
    CARD 借書卡冠胯。 CNO 卡號(hào),NAME 姓名锦针,CLASS 班級(jí)
    BOOKS 圖書荠察。 BNO 書號(hào)置蜀,BNAME 書名,AUTHOR 作者,PRICE 單價(jià)悉盆,QUANTITY 庫(kù)存冊(cè)數(shù)
    BORROW 借書記錄盯荤。 CNO 借書卡號(hào),BNO 書號(hào)焕盟,RDATE 還書日期
    備注:限定每人每種書只能借一本秋秤;

  • 要求實(shí)現(xiàn)如下15個(gè)處理:

1.找出借書超過(guò)5本的讀者,輸出借書卡號(hào)及所借圖書冊(cè)數(shù)。(2分)
SELECT CNO,COUNT(*) FROM BORROW GROUP BY CNO HAVING COUNT(*)>5
2.查詢借閱了"水滸"一書的讀者京髓,輸出姓名及班級(jí)航缀。(3分)
SELECT * FROM CARD c WHERE EXISTS(SELECT * FROM BORROW a,BOOKS b WHERE a.BNO = b.BNO AND b.BNAME=N‘水滸’ AND a.CNO=c.CNO)
3.查詢過(guò)期未還圖書堰怨,輸出借閱者(卡號(hào))芥玉、書號(hào)及還書日期。(3分)
SELECET CNO AS "卡號(hào)"备图,BNO as "書號(hào)"灿巧,RDATE as "還書日期" FROM BORROW WHERE RDATE < NOW();
4.查詢書名包括"網(wǎng)絡(luò)"關(guān)鍵詞的圖書,輸出書號(hào)揽涮、書名抠藕、作者。(2分)
SELECET BNO,BNAME,AUTHOR FROM BOOKS WHERE BNAME LIKE "%網(wǎng)絡(luò)%"
5.查詢現(xiàn)有圖書中價(jià)格最高的圖書蒋困,輸出書名及作者盾似。(2分)
SELECET BNAME,AUTHOR FROM BOOKS WHERE PRICE = (SELECT MAX(PRICE) FROM BOOKS)
6.查詢當(dāng)前借了"計(jì)算方法"但沒(méi)有借"計(jì)算方法習(xí)題集"的讀者,輸出其借書卡號(hào)雪标,并按卡號(hào)降序排序輸出零院。(4分)
SELECET bo.CNO FORM BORROW bo,BOOKS WHERE bo.BNO = BOOKS.BNO and BOOKS.BNAME="計(jì)算方法" AND NOT EXISTS(SELECT * FORM BORROW r,BOOKS b WHERE r.BNO = b.BNO AND b.BNAME="計(jì)算方法題集") ORDER BY bo.CNO DESC;
7.將"C01"班同學(xué)所借圖書的還期都延長(zhǎng)一周村刨。(2分)
UPDATA bo SET RDATE=DATEADD(Day,7,bo.RDATE) FROM CARD c,BORROW bo WHERE c.CNO=b.CNO AND c.CLASS="c01";
8.從BOOKS表中刪除當(dāng)前無(wú)人借閱的圖書記錄告抄。(2分)
DELETE FROM BOOKS WHRER BNO NOT IN (SELECT DISTINCT BNO FROM BORROW)
9.在BORROW表上建立一個(gè)觸發(fā)器,完成如下功能:如果讀者借閱的書名是"數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用"嵌牺,就將該讀者的借閱記錄保存在BORROW_SAVE表中(注ORROW_SAVE表結(jié)構(gòu)同BORROW表)打洼。(4分)

10.建立一個(gè)視圖,顯示"力01"班學(xué)生的借書信息(只要求顯示姓名和書名)逆粹。(3分)

11.查詢當(dāng)前同時(shí)借有"計(jì)算方法"和"組合數(shù)學(xué)"兩本書的讀者募疮,輸出其借書卡號(hào),并按卡號(hào)升序排序輸出僻弹。(3分)

  • 運(yùn)用到的知識(shí)點(diǎn)


    排序和聚合

    分組和常見(jiàn)查詢語(yǔ)句格式

    多表查詢

    子查詢
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酝锅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子奢方,更是在濱河造成了極大的恐慌搔扁,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蟋字,死亡現(xiàn)場(chǎng)離奇詭異稿蹲,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鹊奖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門苛聘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人忠聚,你說(shuō)我怎么就攤上這事设哗。” “怎么了两蟀?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵网梢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我赂毯,道長(zhǎng)战虏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任党涕,我火速辦了婚禮烦感,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膛堤。我一直安慰自己手趣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布肥荔。 她就那樣靜靜地躺著绿渣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪次企。 梳的紋絲不亂的頭發(fā)上怯晕,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音缸棵,去河邊找鬼舟茶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛堵第,可吹牛的內(nèi)容都是我干的吧凉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼踏志,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼阀捅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起针余,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饲鄙,失蹤者是張志新(化名)和其女友劉穎凄诞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忍级,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帆谍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轴咱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汛蝙。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖朴肺,靈堂內(nèi)的尸體忽然破棺而出窖剑,到底是詐尸還是另有隱情,我是刑警寧澤戈稿,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布西土,位于F島的核電站,受9級(jí)特大地震影響器瘪,放射性物質(zhì)發(fā)生泄漏翠储。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一橡疼、第九天 我趴在偏房一處隱蔽的房頂上張望援所。 院中可真熱鬧,春花似錦欣除、人聲如沸住拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滔岳。三九已至,卻和暖如春挽牢,著一層夾襖步出監(jiān)牢的瞬間谱煤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工禽拔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刘离,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓睹栖,卻偏偏與公主長(zhǎng)得像硫惕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子野来,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 多表查詢分為以下幾種: 合并結(jié)果集: UNION UNION ALL 連接查詢 ...
    王紀(jì)山閱讀 884評(píng)論 0 1
  • 多表查詢就是從多張表中查找所需數(shù)據(jù)恼除,并且整合在一起顯示出來(lái)的意思 多表查詢擁有多種實(shí)現(xiàn)方式:內(nèi)連接、外連接曼氛、子查詢...
    鐘小胖子閱讀 253評(píng)論 0 0
  • 一 介紹 本節(jié)主題 多表連接查詢 復(fù)合條件連接查詢 子查詢 準(zhǔn)備表 company.employeecompany...
    lkning閱讀 221評(píng)論 0 0
  • 抱恙恍惚入站臺(tái)豁辉,星夜久坐車未來(lái)令野。背倚蒼圖微尋夢(mèng),面朝涼風(fēng)輕入懷秋忙。星消月隱盡萬(wàn)戶彩掐,魂斷心藏?zé)o太白』易罚可笑浮生終似夢(mèng),寧...
    43240c69301b閱讀 356評(píng)論 0 0
  • 由于Android平臺(tái)下的可編程圖形硬件支持是 OpenGL ES 2.0標(biāo)準(zhǔn)狗超,因此本教程向巴友們介紹 OpenG...
    困惑困惑困惑閱讀 1,857評(píng)論 0 3