一共3張表 knowledge , knowledge_question , knowledge_answer ,數(shù)據(jù)在 6000~10000 之間。
成都創(chuàng)新互聯(lián)公司服務項目包括海城網(wǎng)站建設、海城網(wǎng)站制作、海城網(wǎng)頁制作以及海城網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,海城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到海城省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
執(zhí)行的語句:
執(zhí)行時間約 10分鐘 ,查看執(zhí)行計劃如下:
全部都是全表掃描,根據(jù)MySQL聯(lián)表查詢的算法 Nested-Loop Join ,MySQL查詢的結果集是3張表的笛卡爾積,所以效率特別低。
耗時變成 20毫秒
給Where條件建立索引,并不一定會使用。
比如:在表 knowledge 的字段 update 上建立索引 idx_time :
結果執(zhí)行上來看,并沒有使用索引 idx_time 。
如果where條件從 k.update_time'2019-01-03 12:00:00' 修改為 k.update_time='2019-01-03 12:00:00' (從 變成 = )
則會使用索引 idx_time
在建立索引的時候,會遇到 Table Metadata Lock 的問題,可以先 show processlist ,找到占用表鎖的連接,然后 kill 。
MySQL中常見的連接查詢有:等值連接,使用=連接兩列數(shù)據(jù),所有能夠匹配的結果都會被顯示出來;內連接,關鍵字INNER JOIN ON,連接效果等同于等值連接;左連接,關鍵字LEFT JOIN ON,關鍵字左側的表的所有數(shù)據(jù)均顯示,關鍵字右側的表匹配內容顯示,無對應內容使用NULL填充;右連接,關鍵字RIGHT JOIN ON,關鍵字右側的表的所有數(shù)據(jù)均顯示,關鍵字左側的表匹配內容顯示,無對應內容使用NULL填充;一般情況下,左連接和右連接可以實現(xiàn)相同的連接效果。如果對這部分內容感興趣,可以從黑馬程序員獲取測試相關課程了解一下。
Hello,寫的語言格式有些丑
練習題目:
3、多表連接(等值連接)
①案例1 :查詢員工名、部門名
②為表起別名
# ③添加篩選條件
# 案例:查詢 工資5000 的工種名和員工名、工資
④添加分組和篩選
#01 案例:查詢每個部門的員工個數(shù)和部門名
⑤排序
#01 案例:查詢每個部門的員工個數(shù)和部門名
⑥ 三表連接
# 案例:查詢員工名、部門名和所在城市
4、多表連接(等值連接)練習
傳統(tǒng)模式的多表連接
1. 顯示所有員工的姓名,部門號和部門名稱。
2. 查詢90 號部門員工的job_id 和90 號部門的location_id
3. 選擇所有有獎金的員工的last_name? , department_name , location_id , city?
----------- 三表連查
4. 選擇city 在Toronto 工作的員工的
last_name? , job_id , department_id , department_name?????----------- 三表連查
5. 查詢每個工種、每個部門的部門名、工種名和最低工資? ----------- 三表連查
6. 查詢每個國家下的部門個數(shù)大于2 的國家編號
5、非等值查詢
2.非等值連接
#案例1:查詢員工的工資以及對應的工資級別
#案例2:查詢名字中第三個字符為a,第五個字符為e的員工的工資以及對應的工資級別
6、內連接
#案例1 :查詢員工名、部門名
案例2:查詢有獎金的員工名、部門名
案例3:查詢城市名、員工名和部門名
9、練習
一、查詢編號3的女神的男朋友信息,如果有則列出詳細,如果沒有,用null填充
#二、查詢哪個城市沒有部門
三、查詢部門名為SAL或IT的員工信息
#四、選擇指定員工的姓名,員工號,以及他的管理者的姓名和員工號,結果類似于下面的格式
/*
employees?????? Emp#?????? manager? ? Mgr#
kochhar??????????? 101? ???? king??????? ?
100
*/
10、單行子查詢
案例1:誰的工資比Abel高
①查詢Abel的工資
②查詢員工的信息滿足工資①的結果
案例2:題目:返回job_id與141號員工相同,salary比143號員工多的員工 的姓名,job_id 和工資
①查詢141的job_id
②查詢143的salary
③查詢? 姓名,job_id 和工資,滿足job_id=①并且salary②
案例3:返回公司工資最少的員工的last_name,job_id和salary
①查詢最低工資
②查詢員工的last_name,job_id和salary滿足 salary=①
案例4:查詢最低工資大于50號部門最低工資的部門id和其最低工資
①查詢50號部門的最低工資
②查詢每個部門的最低工資
③篩選最低工資①
11、多行子查詢
二、多行子查詢
案例1:返回location_id是1400或1700的部門中的所有員工姓名
①查詢location_id是1400或1700的部門編號
②查詢department_id滿足①結果的員工姓名
案例2:返回其它部門中比job_id為‘IT_PROG’部門任意工資低的員工的員
工號、姓名、job_id 以及salary
①查詢job_id為‘IT_PROG’部門工資
②返回其它部門中,工資any ①的結果
題目:返回其它部門中比job_id為‘IT_PROG’部門所有工資都低的員工
#的員工號、姓名、job_id 以及salary
12、子查詢練習題
#1. 查詢和Zlotkey 相同部門的員工姓名和工資
#2. 查詢工資比公司平均工資高的員工的員工號,姓名和工資。
#①查詢公司平均工資
② 查詢工資①的員工的員工號,姓名和工資。
#3. 查詢各部門中工資比本部門平均工資高的員工的員工號, 姓名和工資
①查詢各部門的平均工資
②查詢員工的員工號, 姓名和工資,滿足本部門并且工資①
4. 查詢姓名中包含字母u 的員工在相同部門的員工的員工號和姓名
①查詢姓名中包含字母u的員工的部門
② 部門=①的員工的員工號和姓名
5. 查詢在部門的location_id 為1700 的部門工作的員工的員工號
①查詢loaction_id =1700的部門編號
② 查詢員工號,滿足部門號=①
#6. 查詢管理者是King 的員工姓名和工資
①查詢員工名是king的編號
#② 查詢員工姓名和工資,領導的編號=①
#7. 查詢工資最高的員工的姓名,要求first_name 和last_name 顯示為一列,列名為 姓. 名
①查詢最高工資
②查詢姓名,工資=①
14、子查詢鞏固練習
# 1 、查詢工資最低的員工信息
#①查詢公司的最低工資
②查詢員工信息,滿足 salary=①
2. 查詢平均工資最低的部門信息
①查詢每個部門的平均工資
②查詢①結果中avg(salary) 字段中的最低值
# ③查詢部門編號,滿足平均工資= ②結果
④查詢部門信息,滿足? department_id= ③
3*. 查詢平均工資最低的部門信息和該部門的平均工資
4. 查詢平均工資最高的 job 信息
①查詢每個job的平均工資
②查詢①結果中的 avg(salary)的最高值
③查詢每個工種的平均工資,滿足 平均工資=②
④工種表和③連接? , 查詢平均工資最高的 job 信息 ?
# 5. 查詢平均工資高于公司平均工資的部門有哪些?
#①查詢公司的平均工資
②查詢每個部門的平均工資,并且平均工資①
6. 查詢平均工資最高的部門的? manager 的詳細信息:
①查詢平均工資最高的部門編號
②查詢部門編號=①的manager的詳細信息
文章標題:mysql連接查詢怎么用 mysql查詢數(shù)據(jù)庫連接
標題網(wǎng)址:http://jinyejixie.com/article34/dopsjpe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司、響應式網(wǎng)站、網(wǎng)站營銷、品牌網(wǎng)站建設、企業(yè)建站、微信公眾號
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)