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

站長資訊網
最全最豐富的資訊網站

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

多表查詢

**交叉連接 cross join 內連接 inner join 外連接  左連接 left join 右連接 right join 聯合查詢 UNION 全連接 **

1、多表縱向合并

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

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

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

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

查詢結果

總結:

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

2、union的去重功能

查看teachers表 重新構建一個與teachers表相似的表 添加數據

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博客將兩張表連接起來再次查看

總結:

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

CROSS JOINS

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

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

1、內連接

MYSQL-多表查詢

關鍵字: inner join

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

查詢結果

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;    

查詢結果

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;

查詢結果

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;

查詢結果

4、左外連接 擴展

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

查詢結果

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    對有關聯的查詢結果再次進行過濾     -> where     -> stuid is null;

查詢結果

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;

查詢結果

7、子查詢

MYSQL-多表查詢

說明: 現在我們要查詢所有小于平均年齡的學生

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

查詢結果 現在我們接著上圖中的問題:

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;

查詢結果

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);

結果如下 假設,我們要查詢每個員工的上級領導ID,該怎么查。

    我們要查詢的是第一張表的NAME和第二張表的上級的NAME,我們發現,A表的TID和第二張表的ID是關聯的,     當我們查詢1號員工的TID的時候,由于1號員工的TID是null,所以,我們要顯示的上級NAME是NULL,     當我們查詢2號員工的上級ID時,當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;

查詢結果

9、三表查詢

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

我們最終要實現的是某個學生在某個課程上考試成績是多少

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

實現:

說明:

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

查詢結果

第二步:這次我們實現的是某個課程的對應成績

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

查詢結果

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

    說明:     我們要實現的是某個學生的某個課程對應的成績,     我們對比兩張表,發現,我只要把第一步的查詢結果與第二張表的查詢結果聯合在一次就達到了我們的最終要求。   

MYSQL-多表查詢

當然,我們指定對應的字段就可以了

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

MYSQL-多表查詢

我們可以將查詢出來的結果想象成一張獨立的表,然后,我們將這張表中的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;

查詢結果

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
久久香蕉国产| 天堂网av成人| 免费在线看一区| 亚洲一卡久久| 美日韩精品视频| 天堂成人国产精品一区| 国产亚洲欧洲| 麻豆成人在线| 亚洲精品免费观看| 日本精品久久| 中文字幕免费一区二区| 人人精品久久| 麻豆精品国产91久久久久久| 国产精品xxx| av资源中文在线| 精品欧美一区二区三区在线观看| 婷婷精品视频| 水野朝阳av一区二区三区| 亚洲精品麻豆| 国产精品久久久久久久久久齐齐 | 亚洲天堂免费电影| 欧美gv在线| 国产亚洲在线观看| 91麻豆精品激情在线观看最新| 久久99影视| 视频福利一区| 亚洲精品欧美| 久久永久免费| 香蕉成人av| 91成人精品| 日韩三级久久| 久久一区国产| 麻豆网站免费在线观看| 亚洲午夜精品久久久久久app| 亚洲欧美日本视频在线观看| 日韩高清电影一区| 免费在线欧美黄色| 亚洲天堂久久| 四虎精品永久免费| 精品久久免费| 亚洲一区日韩| 国产毛片精品| 久久国产影院| 日本伊人久久| 亚洲天堂资源| 中文字幕成人| 国产一区二区三区视频在线| 成人美女视频| 亚洲三区欧美一区国产二区| 国产a久久精品一区二区三区| 国产一级久久| 国产一区二区三区精品在线观看| 国产亚洲欧洲| 国产在线一区不卡| 日韩精品一二三四| 国产一区二区三区不卡av| 中文欧美日韩| 精品久久亚洲| 亚洲ab电影| 久久青草久久| 国产日本精品| 亚洲精品一区二区妖精| 日韩精品一级| 久久精品国产99久久| 国产日韩亚洲| 野花国产精品入口| 国产精品成人a在线观看| 亚洲一区二区小说| 欧美精品高清| 国产欧美日韩综合一区在线播放| 亚洲一级二级| 欧美激情aⅴ一区二区三区| 在线亚洲观看| 亚洲最新无码中文字幕久久| 欧美日韩亚洲国产精品| 在线国产一区| 国产成人免费精品| 欧美精品一卡| 黑森林国产精品av| 国产日韩中文在线中文字幕| 亚洲免费在线| 99久久夜色精品国产亚洲狼| 精品免费av一区二区三区| 色8久久久久| 美女久久久久| 成人精品久久| 国产精品videossex| 蜜臀a∨国产成人精品| 欧美成人基地| 91亚洲自偷观看高清| 国产情侣久久| 日韩三级精品| 精品在线91| 不卡福利视频| 丰满少妇一区| 美腿丝袜在线亚洲一区| 亚洲2区在线| 羞羞答答国产精品www一本| 色吊丝一区二区| 精品国产a一区二区三区v免费| 日韩欧美精品一区二区综合视频| 在线精品小视频| 亚洲91久久| 国产传媒在线观看| 国产一区二区三区黄网站| 欧美天堂在线| 日韩激情啪啪| 国产一级久久| 99国产精品视频免费观看一公开| 日韩av片子| 精品一区二区三区视频在线播放 | 国产一区二区三区免费在线| 国产精品白丝一区二区三区| 国产无遮挡裸体免费久久| 四虎精品一区二区免费| 中文无码久久精品| 日韩一区精品字幕| 五月天久久久| 午夜国产一区二区| 亚洲激情另类| 国产偷自视频区视频一区二区| 亚洲经典在线| 影音先锋国产精品| 免费在线成人网| 综合欧美亚洲| 日韩三区四区| 欧美中文一区| 国产欧美激情| 鲁大师精品99久久久| 精品一区二区三区中文字幕| 国产精品国产一区| 日韩在线综合| 日韩不卡视频在线观看| 伊人精品一区| 亚洲欧美网站| 日韩精品乱码av一区二区| 国产欧美三级| 久久久久久久欧美精品| 超级白嫩亚洲国产第一| 岛国av在线网站| 久久久9色精品国产一区二区三区| 久久国产成人午夜av影院宅| 日韩亚洲国产欧美| 午夜在线播放视频欧美| 亚洲一区二区三区在线免费| 日韩精品五月天| 国产精品.xx视频.xxtv| 国产精品国产三级国产在线观看| 久久国产中文字幕| 亚洲综合不卡| 88久久精品| 日产精品一区二区| 在线成人动漫av| 亚洲我射av| 国产精品一二| 伊人久久在线| 国产亚洲在线观看| 国产视频一区二| 日韩啪啪电影网| 欧美二区视频| 91欧美极品| 中文在线资源| 免费成人在线影院| 欧美极品一区二区三区| 亚洲成人二区| 日韩精品三级| 日韩免费视频| 视频一区在线播放| 久久99精品久久久久久园产越南| 日韩免费视频| 四虎成人精品一区二区免费网站| 国内一区二区三区| 香蕉国产精品| 国产精品tv| 国产一区欧美| 久久国内精品自在自线400部| 91欧美国产| 久久高清免费观看| 精品国产99| 亚洲精品欧洲| 神马午夜久久| 国产免费av一区二区三区| 色天使综合视频| 日韩影片在线观看| 日韩欧美午夜| 欧美亚洲福利| 亚洲精品中文字幕乱码| 国产精品66| 中文一区在线| 麻豆国产欧美日韩综合精品二区| 好看的av在线不卡观看| 国产福利资源一区| 在线午夜精品| 国产99在线| 青青青国产精品| 尹人成人综合网| av免费不卡国产观看| 日韩av午夜在线观看| 欧美日韩国产在线一区| 久久精品毛片|