首頁(yè)技術(shù)文章正文

多表連接時(shí),找不到連接條件怎么辦?教測(cè)試人員萬(wàn)能技巧一招破題

更新時(shí)間:2020-03-08 來(lái)源:黑馬程序員 瀏覽量:

Mysql查詢題,不僅在面試筆試中的出境評(píng)率高,而且非常影響薪資談判,因?yàn)橐院蟮臏y(cè)試工作中也要常常使用,所以地位非常重要。在mysql查詢題中,使用頻率最高的就是內(nèi)連接。

內(nèi)連接中,關(guān)鍵點(diǎn)是找多表的連接條件,比如找兩個(gè)表意義相同的字段。但而很多時(shí)候,這個(gè)連接條件并不好找。找不到連接條件,內(nèi)連接無(wú)法做。就算僥幸在面試中沒(méi)有出現(xiàn)多邊連接難題,但是在工作中,必定會(huì)出現(xiàn)較難的兩表連接,找不到連接條件,怎么破?有沒(méi)有一種萬(wàn)能技巧,==可以一招破解兩表連接條件?有==,特撰寫(xiě)此篇技術(shù)文章給大家分享。本文主要分為以下幾個(gè)步驟:

第一步, 準(zhǔn)備建表語(yǔ)句

第二步,將建表語(yǔ)句輸入到navicat中建立;兩個(gè)表

第三步,分析題目“查詢所有同學(xué)的sno、cno和rank列”

第四步,介紹尋找兩表連接條件的萬(wàn)能技巧

第五步,做題驗(yàn)證萬(wàn)能技巧

第六步,總結(jié)

一. 準(zhǔn)備建表語(yǔ)句

1. 準(zhǔn)備sql數(shù)據(jù)

#建立成績(jī)表

CREATE TABLE score (

sno VARCHAR (20) NOT NULL ,

cno VARCHAR (20) NOT NULL,

degree DECIMAL

);

insert into score values('103','3-245','86');

insert into score values('105','3-245','75');

insert into score values('109','3-245','68');

insert into score values('103','3-105','92');

insert into score values('105','3-105','88');

insert into score values('109','3-105','76');

insert into score values('103','3-105','64');

insert into score values('105','3-105','91');

insert into score values('109','3-105','78');

insert into score values('103','6-166','85');

insert into score values('105','6-166','79');

insert into score values('109','6-166','81');

# 建立grade表:

create table grade(low int(3),upp int(3),rank char(1));

insert into grade values(90,100,'A');

insert into grade values(80,89,'B');

insert into grade values(70,79,'C');

insert into grade values(60,69,'D');

insert into grade values(0,59,'E');

二.將建表語(yǔ)句輸入到navicat中建立兩個(gè)表

1)新建數(shù)據(jù)庫(kù)test

1583661419484_01 新建數(shù)據(jù)庫(kù)test.png


2)將sql語(yǔ)句輸入到查詢編輯器中,運(yùn)行

1583661484387_02 將sql語(yǔ)句輸入到查詢編輯器中.png


3)創(chuàng)建數(shù)據(jù)表并黏貼到excel中

1583666852632_03創(chuàng)建數(shù)據(jù)表并黏貼到excel中1.png

1583661500048_04 創(chuàng)建數(shù)據(jù)表并黏貼到excel中02.png

三、第三步做題,分析題目“查詢所有同學(xué)的Sno、Cno和rank列”

1. 分析題目

sno代表學(xué)號(hào),cno代表課程號(hào),rank代表等級(jí),分別來(lái)源于成績(jī)score表和grade登記表。所以兩表必須內(nèi)連接

2. 連接條件

內(nèi)連接的語(yǔ)法是 select * from 表A inner join 表B on 表A.列=表B.列,on后面就是連接條件,一般都是找兩個(gè)表意義相同的字段。

3.當(dāng)前困難

當(dāng)前問(wèn)題是,兩個(gè)表中沒(méi)有意義相同的字段,怎么辦?

四、介紹尋找兩表連接條件的萬(wàn)能技巧

1、兩表不用條件先連接起來(lái),得到一個(gè)笛卡爾積(笛卡爾積就是表1的行數(shù)*表2的行數(shù)得到的結(jié)果集,該結(jié)果肯定有錯(cuò)誤)

2、在此基礎(chǔ)上,找出一條正確信息,再找出一條錯(cuò)誤信息,分析為什么正確,為什么錯(cuò)誤,就能找到連接條件

五、第五步 ——做題驗(yàn)證步技巧

  1. 兩表不用條件先連接起來(lái),得到一個(gè)笛卡爾積

    1583661566129_05 兩表不用條件先連接起來(lái)1 .png


    1583661639328_06 兩表不用條件先連接起來(lái)2.png


2.在此基礎(chǔ)上,找出一條正確信息,再找出一條錯(cuò)誤信息,分析為什么正確,為什么錯(cuò)誤,就能找到連接條件

1583661623827_07 找出一條正確信息.png

3.寫(xiě)出帶有連接條件的內(nèi)連接

1583661659777_08 寫(xiě)出帶有連接條件的內(nèi)連接.png


4.完善題目,得到“查詢所有同學(xué)的Sno、Cno和rank列”這個(gè)結(jié)果

1583661683119_09 得到“查詢所有同學(xué)的Sno、Cno和rank列.png

六、總結(jié)

1.所求題目“查詢所有同學(xué)的Sno、Cno和rank列”,其爭(zhēng)取的sql語(yǔ)句是:

select sno,cno,rank from score inner join grade on degree between low and upp

2.驗(yàn)證的連接條件的萬(wàn)能方法是:

找出一條正確信息,再找出一條錯(cuò)誤信息,分析為什么正確,為什么錯(cuò)誤,就能找到連接條件。

以上方法對(duì)于容易找到連接條件的題目依然適用,故成為“內(nèi)連接查找連接條件的萬(wàn)能方法”

是不是萬(wàn)能,趕緊找題目來(lái)驗(yàn)證下吧。推薦了解黑馬程序員軟件測(cè)試培訓(xùn)課程。

猜你喜歡

測(cè)試人員如何高效進(jìn)行數(shù)據(jù)庫(kù)備份?


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!