千鋒教育2023新版javaweb速成全套教程,零基礎(chǔ)入門到企業(yè)項(xiàng)目實(shí)戰(zhàn)

p32 - p35 關(guān)系:
鏈接分為內(nèi)連接,外連接;外連接又分為左連接、右連接
內(nèi)連接 (Inner Join)
參與表格以JOIN關(guān)鍵詞連在一起, ON指定聯(lián)結(jié)的條件;
內(nèi)連接也稱為等值連接,返回兩張表都滿足條件的部分。也就是滿足where條件的值
語法格式:SELECT 字段 FROM 表1 INNER JOIN 表2 ON 約束關(guān)系
例:select * from A inner join B on A.key=B.key
翻譯:select查詢 A表?inner join 內(nèi)關(guān)聯(lián) B表的?
?on條件?A表里面的字段key 與B表里的key相等的值的?*所有的信息;
提示:inner可省略不寫也可以。
左連接(Left Outer Join)
left join關(guān)鍵字會(huì)從左表 (table_name1) 那里返回所有的行,即使是在右表 (table_name2) 中沒有匹配的行也要展示。查詢結(jié)果以左邊表為主,左邊表要全部顯示,右邊如果沒有匹配到就顯示為null
語法格式:select 字段 from 左表1 left outer join 右表2 on 約束條件
例:select d.deptName, e.empName from dept d left outer join employee e on d.id = e.deptId;
注:left outer join 與 left join 等價(jià), 一般寫成left join?
右連接(Right Outer Join)
right join關(guān)鍵字會(huì)從右表 (table_name1) 那里返回所有的行,即使是在左表 (table_name2) 中沒有匹配的行也要展示。查詢結(jié)果以右邊表為主,右邊表要全部顯示,左邊如果沒有匹配到就顯示為null
語法格式:select 字段?from 左表1?right outer join 右表2 on?約束條件
例:select * from employee e right outer join dept d on e.deptId = d.id;
將 employee 表與 depte 表通過相同的 id 拼接起來,簡單的來說就是兩個(gè) excel 合并
注:right outer join 與 right join等價(jià),一般寫成right join
sql別名
通過SQL可以給表名稱或列名稱指定別名;
作用:
1、可以給表或表中的列提供臨時(shí)名稱,
2、可以增強(qiáng)表和列的可讀性,讓讀者看的清楚,
3、別名只存在于這個(gè)sql語句中;
例:select *
??from employee e????//這個(gè)employee是表名?表名+空格 e 就是起的別名
??where id = 1;
子查詢:將一個(gè)查詢塊嵌入另一個(gè)中,稱嵌套查詢。上層查詢塊稱父查詢,下層查詢塊稱子查詢。
用途:對(duì)子查詢進(jìn)行集合檢查來表達(dá)查詢條件
【例】查詢累計(jì)學(xué)分比“李民”多2分以上(含)的學(xué)生學(xué)號(hào)、姓名和累計(jì)學(xué)分。
SELECT Sno, Sname, Sgpa
FROM Student
WHERE Sgpa >= ( SELECT Sgpa FROM Student WHERE Sname = '李民' ) + 2
子查詢一般出現(xiàn)在四個(gè)地方:
(1) 在where?句中: ?查詢的結(jié)果可?作條件篩選時(shí)使?的值。
(2)在from?句中: ?查詢的結(jié)果可充當(dāng)?張表或視圖,需要使?表別名。
(3)在having?句中: ?查詢的結(jié)果可?作分組查詢?cè)俅螚l件過濾時(shí)使?的值
(4)在select?句中: ?查詢的結(jié)果可充當(dāng)?個(gè)字段。僅限?查詢返回單?單列的情況。