<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
多表查詢就是同時查詢兩個或兩個以上的表,因為有的時候使用者在檢視資料的時候,需要顯示的資料來自多張表.多表查詢有以下分類:
-- 建立部門表 create table if not exists dept3( deptno varchar(20) primary key , -- 部門號 name varchar(20) -- 部門名字 ); -- 建立員工表 create table if not exists emp3( eid varchar(20) primary key , -- 員工編號 ename varchar(20), -- 員工名字 age int, -- 員工年齡 dept_id varchar(20) -- 員工所屬部門 ); -- 給dept3表新增資料 insert into dept3 values('1001','研發部'); insert into dept3 values('1002','銷售部'); insert into dept3 values('1003','財務部'); insert into dept3 values('1004','人事部'); -- 給emp3表新增資料 insert into emp3 values('1','喬峰',20, '1001'); insert into emp3 values('2','段譽',21, '1001'); insert into emp3 values('3','虛竹',23, '1001'); insert into emp3 values('4','阿紫',18, '1001'); insert into emp3 values('5','掃地僧',85, '1002'); insert into emp3 values('6','李秋水',33, '1002'); insert into emp3 values('7','鳩摩智',50, '1002'); insert into emp3 values('8','天山童姥',60, '1003'); insert into emp3 values('9','慕容博',58, '1003'); insert into emp3 values('10','丁春秋',71, '1005');
格式
實現
結果
內連線查詢求多張表的交集
格式
操作
inner可以省略
操作
-- 查詢研發部門的所屬員工 -- 隱式內連線 select * from emp3 e ,dept3 d where e.dept_id =d.deptno and name ='研發部'; -- 顯式內連線 select * from dept3 d join emp3 e on d.deptno =e.dept_id and name ='研發部'; -- 查詢研發部和銷售部的所屬員工 select * from dept3 a join emp3 b on a.deptno = b.dept_id and (name = '研發部' or name = '銷售部') ; select * from dept3 a join emp3 b on a.deptno = b.dept_id and name in('研發部' ,'銷售部') ; -- 查詢每個部門的員工數,並升序排序 select a.name,a.deptno,count(1) from dept3 a join emp3 b on a.deptno = b.dept_id group by a.deptno,name; -- 查詢人數大於等於3的部門,並按照人數降序排序 select a.deptno, a.name, count(1) as total_cnt from dept3 a join emp3 b on a.deptno = b.dept_id group by a.deptno,a.name having total_cnt >= 3 order by total_cnt desc;
外連線分為左外連線(left outer join)、右外連線(right outer join),滿外連線(full outer join)。注意: oracle裡面有full join,可是在mysql對full join支援的不好。我們可以使用unjion來達到目的。
格式
左外連線: left outer join
select* from A left outer join B on條件;
右外連線: right outer join
select* from A right outer join B on條件;
滿外連線: full outer join
select * from A full outer join B on 條件;
操作
直接用fulljion會報錯
-- 外連線查詢 -- 查詢哪些部門有員工,哪些部門沒有員工 select * from dept3 left outer join emp3 on dept3.deptno = emp3.dept_id; -- 查詢員工有對應的部門,哪些沒有 select * from dept3 right outer join emp3 on dept3.deptno = emp3.dept_id; -- 使用union關鍵字實現左外連線和右外連線的並集 select * from dept3 left outer join emp3 on dept3. deptno = emp3.dept_id union select * from dept3 right outer join emp3 on dept3.deptno = emp3.dept_id;
介紹
子查詢就是指的在一個完整的查詢語句之中,巢狀若干個不同功能的小查詢,從而一起完成複雜查詢的一種編寫形式,通俗一點就是包含select巢狀的查詢。
子查詢可以返回的資料型別一共分為四種:
單行單列:返回的是一個具體列的內容,可以理解為一個單值資料;單行多列:返回一行資料中多個列的內容;多行單列:返回多行記錄之中同一列的內容,相當於給出了一個操作範圍;多行多列:查詢返回的結果是一張臨時表
操作
-- 查詢年齡最大的員工資訊,顯示資訊包含員工號、員工名字,員工年齡 select * from emp3 where age=(select max(age) from emp3 ); select eid,ename ,age from emp3 where age = (select max (age) from emp3); -- 查詢年研發部和銷售部的員工資訊,包含員工號、員工名字 select * from emp3 where emp3.dept_id in (select deptno from dept3 d where d.name='研發部' or d.name='銷售部'); select eid,ename , t.name from emp3 where dept_id in (select deptno, name from dept3where name ='研發部'or name ='銷售部'); -- 查詢研發部20歲以下的員工資訊,包括員工號、員工名字,部門名字 -- 方式一:關聯查詢 select * from dept3 d join emp3 e on d.deptno =e.dept_id and (d.name='研發部' and e.age<20); -- 方式二:子查詢 select eid,age ,ename , name from (select * from dept3 where name = '研發部')t1 , (select * from emp3 where age <20) t2 where t1.deptno =t2.dept_id ; select eid,age ,ename , name from (select * from dept3 where name = '研發部')t1 join (select * from emp3 where age <20) t2 on t1.deptno =t2.dept_id ;
在子查詢中,有一些常用的邏輯關鍵字,這些關鍵字可以給我們提供更豐富的查詢功能,主要關鍵字如下:
1.ALL關鍵字
2.ANY關鍵字
3.SOME關鍵字
4.IN關鍵字
5.EXISTS關鍵字
格式
特點
操作
格式
特點
操作
格式
特點
操作
格式
特點
操作
概念
MySQL有時在資訊查詢時需要進行對錶自身進行關聯查詢,即一張表自己和自己關聯,一張表當成多張表來用。注意自關聯時表必須給表起別名。
格式
操作
資料準備
-- 建立表,並建立自關聯約束 create table t_sanguo ( eid int primary key , ename varchar (20) , manager_id int, foreign key (manager_id) references t_sanguo (eid) -- 新增自關聯約束 ); --新增資料 insert into t_sanguo values (1,'劉協',NULL) , (2,'劉備',1), (3,'關羽',2), (4,'張飛',2), (5,'曹操',1), (6,'許褚',5), (7,'典韋',5), (8,'孫權',1) , (9,'周瑜',8), (10,'魯肅',8) ;
-- 進行關聯查詢 -- 1.查詢每個三國人物及他的上級資訊,如:關羽劉備 select * from t_sanguo ts ,t_sanguo ts2 where ts .manager_id =ts2.eid ; select ts.ename ,ts2.ename from t_sanguo ts ,t_sanguo ts2 where ts .manager_id =ts2.eid ; -- 2.查詢所有人物及上級(劉協(沒有上級)也輸出) select a.ename,b.ename from t_sanguo a left join t_sanguo b on a.manager_id = b.eid; -- 3.查詢所有人物、上級,上上級比如:張飛劉備劉協 select a.ename,b.ename,c.ename from t_sanguo a left join t_sanguo b on a.manager_id = b.eid left join t_sanguo c on b.manager_id = c.eid;
到此這篇關於MySQL中的多表聯合查詢的文章就介紹到這了,更多相關mysql多表聯合查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45