? 什么是子查询?子查询的应用规律解析[软件测试培训]

傳智播客旗下品牌:|||||

全國咨詢/投訴熱線:400-618-4000

什么是子查詢?子查詢的應用規律解析[軟件測試培訓]

創建時間:2020年03月08日18時54分 瀏覽次數:

測試人員由于工作原因要經常檢查數據庫的數據是否正確,這個時候就需要頻繁使用多表查詢。

在多表查詢中,應用最多的就是內連接,其次就是子查詢。

為什么子查詢是在工作中應用也有這么廣泛的應用呢?原因在于子查詢非常方便靈活,所以在測試工作中會經常使用。

但尷尬的是,正式因為子查詢太靈活,很多測試新手使用并不能很好掌握導致放棄,所以特撰寫本文來分享子查詢的應用規律。本文主要分為以下幾個步驟:

第一步: 準備建表語句

第二步:將建表語句輸入到navicat中建立三個表(實際中只用了2個表)

第三步:了解查詢題做題3步驟

第四步:做題驗證步驟

第五步:總結

一、第一步:準備建表語句


1.準備sql數據

-- 員工表 employees

-- 工資表 salary

-- 部門表 departments

create table departments (

deptid int(10) primary key, 

deptname varchar(20) not null -- 部門名稱

);

insert into departments values ('1001', '市場部');

insert into departments values ('1002', '測試部');

insert into departments values ('1003', '開發部');

create table employees (

empid int(10) primary key,

empname varchar(20) not null, -- 姓名

sex varchar(4) default null, -- 性別

deptid int(20) default null, -- 部門編號

jobs varchar(20) default null, -- 崗位

politicalstatus varchar(20) default null, -- 政治面貌

leader int(10) default null

);

insert into employees values ('1', '王昭君', '女', '1003', '開發', '群眾', '9');

insert into employees values ('2', '諸葛亮', '男', '1003', '開發經理', '群眾', null);

insert into employees values ('3', '張飛', '男', '1002', '測試', '團員', '4');

insert into employees values ('4', '白起', '男', '1002', '測試經理', '黨員', null);

insert into employees values ('5', '大喬', '女', '1002', '測試', '黨員', '4');

insert into employees values ('6', '孫尚香', '女', '1001', '市場', '黨員', '12');

insert into employees values ('7', '百里玄策', '男', '1001', '市場', '團員', '12');

insert into employees values ('8', '小喬', '女', '1002', '測試', '群眾', '4');

insert into employees values ('9', '百里守約', '男', '1003', '開發', '黨員', '9');

insert into employees values ('10', '妲己', '女', '1003', '開發', '團員', '9');

insert into employees values ('11', '李白', '男', '1002', '測試', '團員', '4');

insert into employees values ('12', '孫臏', '男', '1001', '市場經理', '黨員', null);

create table salary (

sid int(10) primary key,

empid int(10) not null,

salary int(10) not null -- 工資

);

insert into salary values ('1', '7', '2100');

insert into salary values ('2', '6', '2000');

insert into salary values ('3', '12', '5000');

insert into salary values ('4', '9', '1999');

insert into salary values ('5', '10', '1900');

insert into salary values ('6', '1', '3000');

insert into salary values ('7', '2', '5500');

insert into salary values ('8', '5', '2000');

insert into salary values ('9', '3', '1500');

insert into salary values ('10', '8', '4000');

insert into salary values ('11', '11', '2600');

insert into salary values ('12', '4', '5300');


二、將建表語句輸入到navicat中建立三個表

1)新建數據庫test

1583653570708_01新建數據庫test.png


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

1583653585900_02將sql語句輸入到查詢編輯器中.png


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

1583653598443_03創建數據表并黏貼到excel中.png

1583653611254_04創建數據表并黏貼到excel中.png


三、了解子查詢題做題3步驟

1.明確題目要求:

要查詢“王昭君的工資”

2.明確什么是子查詢概念

典型的子查詢語句是sql語句中帶有()的,如下面sql語句所示:
select * from scores where studentNo in (select studentNo from students where age=18)

在括號里面的查詢叫子查詢,在括號里面的表叫做子表, 在括號外面的查詢叫主查詢,在括號外面的表叫做主表

3.子查詢做題示意圖(這里只介紹更為復雜的多表子查詢,重要)

1583653629028_05子查詢做題示意圖.png

4。文字分析示意圖(重要)

舉例我們現在已建好的表中,現在要求的就是“王昭君的工資”,按照示意圖用子查詢應該怎么做呢?

1)判斷哪個表為主表(確保所求字段所在的表為主表),哪個表為子表。 分析:題意要求“王昭君的工資”,所求的字段是工資,所以工資字段所在的工資表salary就是主表,要放在括號外面。相應的,王昭君所在的員工表employees就是子表,要放在括號里面。

2)(關鍵點1)判斷兩表的連接字段,[也是找兩表中意義相同的字段] 分析:兩個表要發生關系,也是要去找意義相同的字段,為雇員字段,也叫empid字段 這是關鍵點1

3)寫出主表語句 “select * from 主表 where 連接字段 in ()” 分析:因為子查詢一般都是做條件用的,而where又是條件查詢的關鍵詞,所以一般子查詢都是放在where后面。where做條件查詢時,前面一定是表,后面一定是字段。為什么連接字段后面不用“=”而用“in”,原因是子查詢可能返回結果為多個,所以用in更合適。()是子查詢占位符

4)寫出子表語句 “select 連接字段 from 子表 where ...”

分析:看示意圖有一塊文字非常重要“子查詢語句所求的目標(關鍵點)2,往往是題目中所求字段,替換成連接字段即可”,比如我們的題目是求“王昭君的工資”,那么子查詢求的是“王昭君的兩表連接字段”,為“王昭君的empid”,所以就是“select 連接字段 from 子表 where ...”

5)結合,就是將子查詢放在處查詢內部

5.從文字分析示意圖,可將子查詢5步驟優化為3步驟

1)分清主表和子表+兩表的連接字段(第1,2步優化為1步,在大腦中過)

2)寫出主查詢語句select * from 主表 where 連接字段 in ()

3)結合主查詢寫出子查詢語句(子查詢目標:將題目所求字段改為連接字段)

四. 第四步:做題驗證步驟

1583653647692_06做題驗證步驟.png

得到“王昭君的薪資”的sql語句就為

select * from salary where empid in (select empid from employees where empname='王昭君')

補充:為什么子查詢方便,因為主查詢缺什么(empid),子查詢就去查什么

五、總結

子查詢的做題步驟就分為以下三步:

  1. 分清主表和子表+兩表的連接字段(在大腦中過)

  2. 寫出主查詢語句select * from 主表 where 連接字段 in ()

  3. 結合主查詢寫出子查詢語句(子查詢目標:將題目所求字段改為連接字段)

補充:為什么子查詢方便,因為主查詢缺什么,子查詢就去查什么。相比inner join內連接的方法去求“王昭君的薪資”,你就知道子查詢是多么簡單了。不信,你用內連接的方法求一下。

猜你喜歡:

功能測試、性能測試和自動化測試三者之間有什么差異?

百胜彩票投注 加拿大28 贵州快3 河北快3基本走势 智慧彩票投注预测APP 极速快三 2019半灰色网赚项目 天津11选5分布走势图 K8彩票开户 利来彩票注册