久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

MYSQL-多表查詢-wx5c05455f3fc32的博客-51CTO博客

多表查詢

**交叉連接 cross join 內(nèi)連接 inner join 外連接  左連接 left join 右連接 right join 聯(lián)合查詢 UNION 全連接 **

1、多表縱向合并

縱向合并需要注意的是,兩張合并的表查詢結(jié)果的字段數(shù)必須一致,

MariaDB [hellodb]> select stuid,name from students     -> union      -> select tid,name from teachers;

查詢結(jié)果 我們嘗試將第二張表中的name,tid查詢的順序反過來試一下

MariaDB [hellodb]> select stuid,name from students     -> union      -> select name,tid from teachers;

查詢結(jié)果

總結(jié):

    我們發(fā)現(xiàn)縱向合并對字段的類型并不嚴格,只要與第一張表的字段數(shù)是相同的就可以,當(dāng)然,第二個查詢的結(jié)果顯示然是沒有意義的。     在別的數(shù)據(jù)庫中,例如orcal或serverSQL會報錯,因為類型不符。

2、union的去重功能

查看teachers表 重新構(gòu)建一個與teachers表相似的表 添加數(shù)據(jù)

insert teachers2 (tid,name,age,gender)values(5,'linux',22,'m'); insert teachers2 (tid,name,age,gender)values(6,'Python',22,'m');

MYSQL-多表查詢-wx5c05455f3fc32的博客-51CTO博客將兩張表連接起來再次查看

總結(jié):

    union本身亦可以去重,當(dāng)然這里只是示范一下,還有個命令可以直接去重     select distinct * from teacher2 可以在自己表中去掉重復(fù)的行 

CROSS JOINS

首先,我們之前利用union 進行了縱向連接,那么,我們可不可以橫向連接呢?當(dāng)然是可以的,縱向連接由字段數(shù)量的限制,而橫向連接是沒有字段的限制的,比如:創(chuàng)建兩個表接下來我們直接最者兩張表進行cross join 連接,

首先,第一張表的第一條記錄和第二張表的每條記錄進行整合,這就有了15條記錄。在數(shù)據(jù)庫中百萬級別的表才算有點規(guī)模,假如真的這樣做了,無疑是災(zāi)難性的。其次,這樣將兩張表連接起來是沒有意義。所以,我們使用內(nèi)連接來進行連接,找出對應(yīng)兩張表的關(guān)聯(lián)性,設(shè)定條件進行連接查找。

1、內(nèi)連接

MYSQL-多表查詢

關(guān)鍵字: inner join

MariaDB [hellodb]> select * from      -> students inner join teachers     -> on  條件 等價于 where      -> students.teacherid=teachers.tid;     由于是跨表查詢,所以,必須指明哪個表下的字段,否則系統(tǒng)無法識別來源

查詢結(jié)果

select  對字段定義別名     stuid,s.name as studentname ,s.age as studentage tid     t.name as teachername ,t.age as teacherage     from      students as s   對表定義別名     inner join      連接     teachers as t   定義別名     on              條件       s.teacherid=t.tid;    

查詢結(jié)果

2、左外連接

MYSQL-多表查詢-wx5c05455f3fc32的博客-51CTO博客說明:

MariaDB [hellodb]> select     -> stuid,s.name,tid,t.name     -> from     -> students as s      -> left outer join     -> teachers as t     -> on     -> s.teacherid=t.tid;

查詢結(jié)果

3、右外連接

MYSQL-多表查詢-wx5c05455f3fc32的博客-51CTO博客 說明:

MariaDB [hellodb]> select     -> stuid,s.name,tid,t.name     -> from     -> students as s     -> right join      -> teachers as t     -> on     -> s.teacherid=t.tid;

查詢結(jié)果

4、左外連接 擴展

MYSQL-多表查詢-wx5c05455f3fc32的博客-51CTO博客說明:

查詢結(jié)果

5、右外連接 擴展

MYSQL-多表查詢

說明:

MariaDB [hellodb]> select      -> stuid,s.name,teacherid,     -> tid,t.name      -> from     -> students as s     -> left join     -> teachers as t     -> on      -> s.teacherid=t.tid    對有關(guān)聯(lián)的查詢結(jié)果再次進行過濾     -> where     -> stuid is null;

查詢結(jié)果

6、完全外連接

MYSQL-多表查詢

說明:

如圖

select * from students left join teachers  on  students.teacherid=teachers.tid  union  select * from students right join teachers  on  students.teacherid=teachers.tid;

查詢結(jié)果

7、子查詢

MYSQL-多表查詢

說明: 現(xiàn)在我們要查詢所有小于平均年齡的學(xué)生

select * from students where age < (select avg(age) from students) ;

查詢結(jié)果 現(xiàn)在我們接著上圖中的問題:

select * from ( select  s.stuid, s.name s_name, s.teacherid, t.tid, t.name t_name from  students s   left outer join  teachers t  on   s.teacherid=t.tid  union  select s.stuid,  s.name,  s.teacherid,  t.tid,  t.name  from  students s   right outer join   teachers  t   on   s.teacherid=t.tid ) as a  where   a.teacherid is null   or   a.tid is null;

查詢結(jié)果

8、自連接

說明:

create table employee ( id int, name char(10), leader_id int     ); 插入信息 insert employee values(1,'A',null); insert employee values(2,'B',1); insert emplyee values(3,'C',2); insert emplyee values(4,'D',3);

結(jié)果如下 假設(shè),我們要查詢每個員工的上級領(lǐng)導(dǎo)ID,該怎么查。

    我們要查詢的是第一張表的NAME和第二張表的上級的NAME,我們發(fā)現(xiàn),A表的TID和第二張表的ID是關(guān)聯(lián)的,     當(dāng)我們查詢1號員工的TID的時候,由于1號員工的TID是null,所以,我們要顯示的上級NAME是NULL,     當(dāng)我們查詢2號員工的上級ID時,當(dāng)A表的TID等于B表的ID的時候,條件達成,顯示B表的姓名。以此類推 
select A.name as employee_name,B.name as leader_name from employee as A left join employee as B on A.leaderid=B.id;

查詢結(jié)果

9、三表查詢

    說明:     假設(shè)我們有兩張表,學(xué)生表和課程表     學(xué)生表存放的是:     stu_id,stu_name,stu_cassid     課程表中存放的是:     cours_id, cours_name     在數(shù)據(jù)庫中,有很多邏輯結(jié)構(gòu),一對一,一對多,多對多。結(jié)合實際情況,我們一個學(xué)生可能同時學(xué)習(xí)多個課程,每個課程可能有好多學(xué)生學(xué),所以,由此可以看出是多對多的關(guān)系,     要實現(xiàn)多對多,在數(shù)據(jù)庫中我們可以創(chuàng)建第三個表來實現(xiàn),     第三張表中存放的是     id,stu_id,cours_id,score     但是這個兩個字段顯然都不合適做主鍵,所以,就可以添加一個字段ID做主鍵。再添加一個score字段,存放課程成績

我們最終要實現(xiàn)的是某個學(xué)生在某個課程上考試成績是多少

第一步:首先我們實現(xiàn)兩張表來進行查詢,這樣條理會清晰很多

實現(xiàn):

說明:

MariaDB [hellodb]> select stu.name,sc.score      -> from     -> students as stu      -> inner join     -> scores as sc     -> on     -> stu.stuid=sc.stuid;

查詢結(jié)果

第二步:這次我們實現(xiàn)的是某個課程的對應(yīng)成績

    說明;     我們暫時不考慮學(xué)生表中的信息,只查詢成績表和課程表,     只取兩個表的交集部分,依舊還是使用inner join
MariaDB [hellodb]> select course.course,sc.score     -> from     -> scores as sc     -> inner join     -> courses as course     -> on     -> course.courseid=sc.courseid;

查詢結(jié)果

第三步:將以上兩個步驟連接起來,就達到了我們的要求

    說明:     我們要實現(xiàn)的是某個學(xué)生的某個課程對應(yīng)的成績,     我們對比兩張表,發(fā)現(xiàn),我只要把第一步的查詢結(jié)果與第二張表的查詢結(jié)果聯(lián)合在一次就達到了我們的最終要求。   

MYSQL-多表查詢

當(dāng)然,我們指定對應(yīng)的字段就可以了

select * from  students inner join scores on students.stuid=scores.stuid; 查詢結(jié)果

MYSQL-多表查詢

我們可以將查詢出來的結(jié)果想象成一張獨立的表,然后,我們將這張表中的courseid與課程表中的courseid相等作為條件,將課程名稱取出來。

MariaDB [hellodb]> select     -> stu.name as student_name,     -> co.course as course_name,     -> sc.score      -> from     -> students as stu     -> inner join     -> scorses as sc     -> on     -> stu.stuid=sc.stuid     -> inner join     -> courses as co     -> on     -> sc.courseid=co.courseid;

查詢結(jié)果

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
日韩中文av| 欧美伊人影院| 蜜臀国产一区| 精品一区91| 成人综合一区| 四虎成人av| 麻豆国产91在线播放| 国产欧美自拍一区| 国产精品嫩模av在线| 久久国产乱子精品免费女| 日本亚洲最大的色成网站www| 天堂av在线一区| 一区二区电影| 青青伊人久久| 国产精品日本一区二区三区在线| 国产欧美日韩影院| 国产精品99久久免费| 久久一区精品| 成人精品亚洲| 快she精品国产999| 国产乱子精品一区二区在线观看| 国产精品大片| 欧美久久天堂| 婷婷激情综合| 亚洲一区二区三区中文字幕在线观看| 日韩av网站在线免费观看| 国产无遮挡裸体免费久久| 国产精品久久777777毛茸茸| 国产精品久久观看| 日韩一级网站| 国产探花一区二区| 日本不良网站在线观看| 欧美日韩日本国产亚洲在线 | 日本免费一区二区视频| 久久99青青| 美女一区网站| 视频在线观看91| 国产精品久久久久久久久免费高清| 欧美激情精品| 亚洲午夜黄色| 青青草91视频| 久久婷婷久久| 日韩精品欧美成人高清一区二区| 精品免费视频| 久久夜色精品| 国产成人精品一区二区三区视频| 欧美成人精品| 国产香蕉精品| 午夜欧美视频| 久久av中文| 欧美亚洲激情| 天堂va在线高清一区| 亚洲天堂免费| 国产理论在线| 亚洲影视一区| 日韩久久视频| 日韩精品三级| 欧美性感美女一区二区| 国产欧美日韩一区二区三区在线| 91精品国产自产在线观看永久∴| 婷婷视频一区二区三区| 国产粉嫩在线观看| 亚洲三级网站| 日韩欧美一区二区三区在线观看| 日韩精品视频网站| 精品成人免费一区二区在线播放| 日韩国产在线一| 日韩专区欧美专区| 亚洲国产福利| 国产免费播放一区二区| 亚洲精品国产偷自在线观看| 久久一区欧美| 日韩国产在线一| 99国产精品久久久久久久 | 精品精品国产三级a∨在线| 免费国产自线拍一欧美视频| 视频在线不卡免费观看| 日韩精品久久久久久| 日韩亚洲一区在线| 日本高清久久| 亚洲免费高清| 日本а中文在线天堂| 国产欧美一区二区色老头| 影音先锋久久| 卡一卡二国产精品| 日本一区二区中文字幕| 99久久九九| 精品国产亚洲一区二区在线观看| 亚洲尤物av| 亚洲精品a级片| 人人精品亚洲| 成人精品高清在线视频| 久久国产精品免费一区二区三区| 国产一区二区高清| 日韩精品一区二区三区免费观影 | 成人在线黄色| 日韩国产在线不卡视频| 国产视频一区欧美| 久久久亚洲一区| 国产精品不卡| 精品视频一区二区三区在线观看| 国产调教精品| 蜜桃视频在线观看一区二区| 极品日韩av| 亲子伦视频一区二区三区| 色乱码一区二区三区网站| 老牛国内精品亚洲成av人片| 久久国内精品自在自线400部| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲深深色噜噜狠狠爱网站| 亚洲h色精品| 日本高清不卡一区二区三区视频| 91免费精品| 国产999精品在线观看| 精品99在线| 久久精品国产免费| 欧美激情精品| 精品一级视频| 久久97视频| 国模大尺度视频一区二区| 免费日韩一区二区三区| 国产高清精品二区| 国产欧美日韩综合一区在线播放| 欧美日本一区| 日韩精品亚洲专区| 日本午夜精品| 最新亚洲激情| 亚洲欧美久久| 免费久久精品| 9色精品在线| 人人精品人人爱| 午夜视频一区二区在线观看| 午夜精品影视国产一区在线麻豆| 日韩一区二区三区高清在线观看| 日本v片在线高清不卡在线观看| 日本一不卡视频| 国产欧美日韩一级| 国产精品亚洲片在线播放| 欧美激情麻豆| 都市激情国产精品| 久久免费大视频| 国产麻豆久久| 欧美成人日韩| 美女久久网站| 91欧美极品| 久久午夜影院| 亚洲成人不卡| 日韩中文字幕av电影| 日本亚洲欧美天堂免费| 国产精品久久乐| 色乱码一区二区三区网站| 久久精品高清| 亚洲精品黄色| 老司机精品视频网| 日韩毛片视频| 欧美资源在线| 亚洲综合福利| 国产精品毛片久久久| 亚洲精品福利电影| 亚洲综合三区| 国产美女精品视频免费播放软件| 精品视频在线你懂得| 婷婷综合网站| 日韩精选在线| 精品久久电影| 欧美国产91| 欧美一级网站| 亚洲成人va| 亚洲一级淫片| 久久精品色播| 欧美1区免费| 日韩福利视频网| 日韩国产在线| 亚洲综合激情在线| 欧美丰满日韩| 在线精品一区| 高清一区二区三区av| 久久xxxx| 成人在线视频免费看| 日本 国产 欧美色综合| 精品一区二区三区视频在线播放| 亚洲a一区二区三区| 日韩成人一级| 精品免费av在线| 日韩午夜视频在线| 久久精品电影| 亚洲免费福利一区| 日韩欧美另类一区二区| 五月激激激综合网色播| 色黄视频在线观看| 日韩欧美中文字幕一区二区三区| 久久电影tv| 日本成人在线网站| 亚洲天堂久久| 精品一区二区男人吃奶| 蜜芽一区二区三区| 久久久夜夜夜| 国产欧美高清视频在线| 欧美日韩精品一本二本三本| 精品欧美日韩精品|