java 实现 sql join_Sql 数据库 join 连接
sql里面有兩個(gè)連接一個(gè)是union,另一個(gè)就是join
他們兩個(gè)的區(qū)別:
union 連接的是行 是一行一行的連? 而 join 連接的是列(字段)??? (他們倆的區(qū)別暫時(shí)就就知道這點(diǎn))
join連接的使用的前提:
1.必須要有至少一個(gè)表(一個(gè)表可以用自連接)
2.必須要有相關(guān)聯(lián)的列(字段),主鍵外鍵啥的。
join 分為 內(nèi)連接(inner join)、外連接(left outer join 和 right outer join)、交叉連接(cross join)和自連接。
首先, 內(nèi)連接 inner join? 這個(gè)用的比較多
作用就是 當(dāng)要查詢的多個(gè)列在不同的表中時(shí),為了進(jìn)行跨表查詢而使用的
用法:
select SName,SAge,CName from Student? inner join Class on Class.classid=Student.sclassid;
這個(gè)查詢里面SName和 SAge是Student表里的,CName是Class表里的? 這里面是根據(jù)Class里的classid(主鍵)和Student表里的sclassid關(guān)聯(lián)的
如果要是有等多個(gè)表,嫌總是寫(xiě)表名麻煩可以給各個(gè)表設(shè)個(gè)名,如下
select SName,SAge,CName from Student as S1? inner join Class as C1 on C1.classid=S1.sclassid;
然后,外連接 left outer join 和 right outer join? 這個(gè)用的也比較多 主要是用在找一個(gè)表在另一個(gè)表中沒(méi)有的數(shù)據(jù)
left outer join 就是左表記錄都顯示出來(lái)對(duì)右表能找到數(shù)據(jù)的對(duì)應(yīng)匹配數(shù)據(jù),對(duì)右表找不到的匹配記錄為null
right outer join 同做很相似 就不多說(shuō)了,你懂得。。
用法:
select SName,SAge,english from Student? left outer join Score on Score.studentid=Student.sid where sid? not in studentid
這個(gè)查詢就是查詢沒(méi)有考試的學(xué)生。。
交叉連接 Cross join
這個(gè)吧,,應(yīng)該用的不多 我也不會(huì)用呃 他得到數(shù)據(jù)就連接的兩個(gè)表數(shù)據(jù)的積
自連接
這個(gè)用的也不多,所以直接寫(xiě)下用法就不介紹了
用法:
select * from Student inner join (select SName,SAge,SID from Student where SAge>10) as TS1 onStudent.Sid=TS1.sid
總結(jié)
以上是生活随笔為你收集整理的java 实现 sql join_Sql 数据库 join 连接的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: FastCGI中文规范
- 下一篇: redhat6 删除mysql_Red