多表連接時,找不到連接條件怎麼辦?教測試人員萬能技巧一招破題

Mysql查詢題,不僅在面試筆試中的出境評率高,而且非常影響薪資談判,因爲以後的測試工作中也要常常使用,所以地位非常重要。在mysql查詢題中,使用頻率最高的就是內連接。

內連接中,關鍵點是找多表的連接條件,比如找兩個表意義相同的字段。但而很多時候,這個連接條件並不好找。找不到連接條件,內連接無法做。就算僥倖在面試中沒有出現多邊連接難題,但是在工作中,必定會出現較難的兩表連接,找不到連接條件,怎麼破?有沒有一種萬能技巧,==可以一招破解兩表連接條件?有==,特撰寫此篇技術文章給大家分享。本文主要分爲以下幾個步驟:

  1. 第一步, 準備建表語句
  2. 第二步,將建表語句輸入到navicat中建立;兩個表
  3. 第三步,分析題目“查詢所有同學的sno、cno和rank列”
  4. 第四步,介紹尋找兩表連接條件的萬能技巧
  5. 第五步,做題驗證萬能技巧
  6. 第六步,總結

一. 第一步 —— 準備建表語句

  1. 準備sql數據
-- # 建立成績表
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');

二.第二步——將建表語句輸入到navicat中建立兩個表

1)新建數據庫test

 

2)將sql語句輸入到查詢編輯器中,運行

3)創建數據表並黏貼到excel中

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

  1. 分析題目
sno代表學號,cno代表課程號,rank代表等級,分別來源於成績score表和grade登記表。所以兩表必須內連接
  1. 連接條件
內連接的語法是 select * from 表A inner join 表B on 表A.列=表B.列,on後面就是連接條件,一般都是找兩個表意義相同的字段。

3.當前困難

當前問題是,兩個表中沒有意義相同的字段,怎麼辦?

四、 第四步 —— 介紹尋找兩表連接條件的萬能技巧

1、兩表不用條件先連接起來,得到一個笛卡爾積(笛卡爾積就是表1的行數*表2的行數得到的結果集,該結果肯定有錯誤)
2、在此基礎上,找出一條正確信息,再找出一條錯誤信息,分析爲什麼正確,爲什麼錯誤,就能找到連接條件

五、第五步 ——做題驗證步技巧

1.兩表不用條件先連接起來,得到一個笛卡爾積

2.在此基礎上,找出一條正確信息,再找出一條錯誤信息,分析爲什麼正確,爲什麼錯誤,就能找到連接條件

3.寫出帶有連接條件的內連接

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

六、第六步——總結

1.所求題目“查詢所有同學的Sno、Cno和rank列”,其爭取的sql語句是:

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

2.驗證的連接條件的萬能方法是:

找出一條正確信息,再找出一條錯誤信息,分析爲什麼正確,爲什麼錯誤,就能找到連接條件。

以上方法對於容易找到連接條件的題目依然適用,故成爲“內連接查找連接條件的萬能方法”

是不是萬能,趕緊找題目來驗證下吧....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章