09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】
1.為什么要拆表?
去除冗余數(shù)據(jù)2.表與表之間的關(guān)系
一對(duì)一比如人和身份證QQ和QQ密碼 一對(duì)多(多對(duì)一)比如:學(xué)生和成績的關(guān)系 多對(duì)多比如:老師和學(xué)生的關(guān)系3.多表查詢
使用的表格demo1student、demo2和demo3數(shù)據(jù)如下:
1)合并結(jié)果集
sql語句
-- 合并結(jié)果集 union和union all-- union 默認(rèn)會(huì)去除完全一樣的數(shù)據(jù) SELECT * FROM demo2 UNION SELECT * FROM demo3;-- union all 不會(huì)去除重復(fù)數(shù)據(jù) SELECT * FROM demo2 UNION ALL SELECT * FROM demo3;查詢結(jié)果:
1)– union 默認(rèn)會(huì)去除完全一樣的數(shù)據(jù)
2)– union all 不會(huì)去除重復(fù)數(shù)據(jù)
SELECT * FROM demo2 UNION ALL SELECT * FROM demo3;2)連接查詢
a.笛卡爾積
b.內(nèi)連接inner
sql語句
-- 內(nèi)連接 -- 將demo2和demo1student中分?jǐn)?shù)相同的數(shù)據(jù)取出來合并在一起 SELECT * FROM demo2 INNER JOIN demo1student ON demo2.score=demo1student.score; -- 將demo2和demo1student中id相同的數(shù)據(jù)取出,并且只顯示這些信息:demo1student.id,demo1student.name,demo1student.age,demo1student.gender -- 因?yàn)閐emo2和demo1student有3個(gè)id相同,所以會(huì)查詢出三個(gè)數(shù)據(jù) SELECT demo1student.id,demo1student.name,demo1student.age,demo1student.gender FROM demo2 INNER JOIN demo1student ON demo2.id=demo1student.id;查詢結(jié)果:
1)– 將demo2和demo1student中分?jǐn)?shù)相同的數(shù)據(jù)取出來合并在一起
2)– 將demo2和demo1student中id相同的數(shù)據(jù)取出,并且只顯示這些信息:demo1student.id,demo1student.name,demo1student.age,demo1student.gender
– 因?yàn)閐emo2和demo1student有3個(gè)id相同,所以會(huì)查詢出三個(gè)數(shù)據(jù)
SELECT demo1student.id,demo1student.name,demo1student.age,demo1student.gender FROM demo2 INNER JOIN demo1student ON demo2.id=demo1student.id;c.外連接outer
select * from table1 left/right outer join table2 on 條件
d.自然連接natural
對(duì)比內(nèi)連接和自然連接來說明:自然連接
自然連接可以自動(dòng)去除重復(fù)這里是id
sql語句
-- 自然連接natural SELECT * FROM demo2 INNER JOIN demo3; -- 內(nèi)連接 SELECT * FROM demo2 NATURAL JOIN demo3; -- 自然連接查詢結(jié)果
3)子查詢
sql語句
-- 子查詢 -- 語句含義:查出分?jǐn)?shù)比id=4學(xué)生的年齡與分?jǐn)?shù)和大的學(xué)生信息 SELECT * FROM demo1student WHERE score>(SELECT age+score FROM demo1student WHERE id=4);-- 這里只是為了說明子查詢?cè)趺从?#xff0c;出的這個(gè)示例本身沒有任何意義。查詢結(jié)果:
4.查詢的實(shí)際應(yīng)用(見下節(jié))
地址:MySQL數(shù)據(jù)查詢應(yīng)用(實(shí)戰(zhàn))(一)http://blog.csdn.net/baidu_37107022/article/details/72629784
MySQL數(shù)據(jù)查詢應(yīng)用(實(shí)戰(zhàn))(二)http://blog.csdn.net/baidu_37107022/article/details/72630044
總結(jié)
以上是生活随笔為你收集整理的09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 08--MySQL自学教程:DQL(数据
- 下一篇: 10--MySQL数据查询应用(实战)(