# MySQL綜合練習(xí)

表結(jié)構(gòu)

--部門(mén)表
create table dept
(
deptno int(3) primary key,
dname varchar(14),
loc varchar(13)
);

--雇員表
create table emp
(
empno int(4) not null primary key,
ename varchar(10),
job varchar(10),
mgr int(4),
hiredate datetime,
sal double,
comm double,
deptno int(3),
foreign key(deptno) references dept(deptno)
);

--工資級(jí)別表
create table salgrade
(
grade int(3) primary key,
losal int(3),
hisal int(3)
); 

2.插入數(shù)據(jù)(進(jìn)行初始化)

use company;

--往部門(mén)表中查數(shù)據(jù)
insert into dept values(10,'Accounting','New York');
insert into dept values(20,'Research','Dallas');
insert into dept values(30,'Sales','Chicago');
insert into dept values(40,'Operations','Boston');
insert into dept values(50,'Admin','Washing');

--往雇員表中插數(shù)據(jù)
insert into emp values(7369,'Smith','Clerk',7902,'1980-12-17',800,0,20);
insert into emp values(7499,'Allen','Salesman',7698,'1981-2-20',1600,300,30);
insert into emp values(7844,'Turner','Salesman',7499,'1981-9-8',1500,0,30);
insert into emp values(7698,'Tom','Manager',0,'1981-9-8',6100,600,40);
insert into emp values(7876,'Adams','Clerk',7900,'1987-5-23',1100,0,20);
insert into emp values(7900,'James','Clerk',7698,'1981-12-3',2400,0,30);
insert into emp values(7902,'Ford','Analyst',7698,'1981-12-3',3000,null,20);
insert into emp values(7901,'Kik','Clerk',7900,'1981-12-3',1900,0,30);

--往工資級(jí)別表中插數(shù)據(jù)
insert into salgrade values(1,700,1200);
insert into salgrade values(2,1201,1400);
insert into salgrade values(3,1401,2000);
insert into salgrade values(4,2001,3000);
insert into salgrade values(5,3001,5000);
insert into salgrade values(6,5001,10000);

1.查詢雇員表中工資最高的雇員的員工號(hào)穴张、員工姓名、工資和部門(mén)號(hào)缝呕。

SELECT
    empno,
    ename,
    sal,
    deptno
FROM emp
WHERE sal = (SELECT max(sal) FROM emp);

2.薪水大于1200的雇員澳窑,按照部門(mén)編號(hào)進(jìn)行分組,分組后的平均薪水必須大于1500供常,查詢各分組的平均工資摊聋,按照工資的倒序進(jìn)行排列。

SELECT
    avg(sal) avg_sal,
    deptno
FROM
    emp
WHERE
    sal > 1200
GROUP BY
    deptno
HAVING
    avg_sal > 1500
ORDER BY
    avg_sal DESC;

3.查詢每個(gè)雇員和其所在的部門(mén)名

SELECT
    ename,dname
FROM
    emp,dept
WHERE(emp.deptno = dept.deptno);

-- 或者(推薦)(on中就寫(xiě)連接條件栈暇,where中就寫(xiě)過(guò)濾條件麻裁,各司其職)

SELECT
    ename,
    dname
FROM
    emp
JOIN dept ON (emp.deptno = dept.deptno);

4.查詢每個(gè)雇員姓名及其工資所在的等級(jí)

SELECT
    ename,
    grade
FROM
    emp e
JOIN salgrade s ON (
    e.sal BETWEEN s.losal
    AND s.hisal
);

5.查詢雇員名第2個(gè)字母不是a的雇員的姓名、所在的組名、工資所在的等級(jí)悲立。

SELECT
    ename,
    dname,
    grade
FROM
    emp e
JOIN dept d ON (e.deptno = d.deptno)
JOIN salgrade s ON (
    e.sal BETWEEN s.losal
    AND s.hisal
)
WHERE
    ename NOT LIKE '_a%';

6.查詢每個(gè)雇員和其經(jīng)理的姓名

SELECT
    e1.ename,
    e2.ename
FROM
    emp e1,
    emp e2
WHERE
    (e1.mgr = e2.empno);

SELECT
    e1.ename,
    e2.ename
FROM
    emp e1
JOIN emp e2 ON (e1.mgr = e2.empno);

7.查詢每個(gè)雇員和其經(jīng)理的姓名(包括公司老板本身(他上面沒(méi)有經(jīng)理))

SELECT
    e1.ename,
    e2.ename
FROM
    emp e1
LEFT JOIN emp e2 ON (e1.mgr = e2.empno);

8.查詢每個(gè)雇員的姓名及其所在部門(mén)的部門(mén)名(包括沒(méi)有雇員的部門(mén))

SELECT
    ename,
    dname
FROM
    emp e
RIGHT JOIN dept d ON (e.deptno = d.deptno);

9.查詢每個(gè)部門(mén)中工資最高的人的姓名鹿寨、薪水和部門(mén)編號(hào)

-- 先求出每個(gè)部門(mén)中的最高工資:
select max(sal) max_sal,deptno from emp group by deptno
-- 在使用連接查詢:
select ename,sal,e.deptno
from emp e join
(select max(sal) max_sal,deptno from emp group by deptno) t
on(e.sal = t.max_sal and e.deptno = t.deptno);

10.查詢每個(gè)部門(mén)平均工資所在的等級(jí)

select deptno,avg_sal,grade from salgrade
join(select deptno,avg(sal) avg_sal from emp group by deptno) t
on(t.avg_sal between salgrade.losal and salgrade.hisal);
或者:
select deptno,avg_sal,grade from
(select deptno,avg(sal) avg_sal from emp group by deptno) t
join salgrade s on(t.avg_sal between s.losal and s.hisal);

11.查詢每個(gè)部門(mén)內(nèi)平均的薪水等級(jí)

先求每個(gè)人的薪水等級(jí)
select ename,deptno,grade from emp join salgrade s 
on(emp.sal between s.losal and s.hisal);
再按組進(jìn)行分組求平均
select deptno,avg(grade) from
(select ename,deptno,grade from emp join salgrade s 
on(emp.sal between s.losal and s.hisal)) t
group by deptno;

12.查詢雇員中有哪些人是經(jīng)理人:

select ename from emp where empno in(select distinct mgr from emp);
或者:
select ename from emp join
(select distinct mgr from emp) t
on(emp.empno=t.mgr);

13.平均薪水最高的部門(mén)的部門(mén)編號(hào)

 1:先求出每個(gè)部門(mén)的平均薪水和部門(mén)號(hào)(把這個(gè)看成一張表)
select avg(sal) avg_sal,deptno from emp group by deptno;
 2:再求出平均薪水最高值(把這個(gè)看成一個(gè)值)
select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno) t;

 3:對(duì)1表使用2條件進(jìn)行查詢即可
select avg_sal,deptno from
(select avg(sal) avg_sal,deptno from emp group by deptno) t1
where avg_sal=
(select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno) t2);

14.求平均薪水最高的部門(mén)的部門(mén)名稱

select dname from dept where deptno = 
( select deptno from
     (select avg(sal) avg_sal,deptno from emp group by deptno) t1
  where avg_sal=
     (select max(avg_sal) from (select avg(sal) avg_sal,deptno from emp group by deptno) t2)
);

15.查詢平均薪水的等級(jí)最低的部門(mén)名稱

1.求平均薪水
select avg(sal) avg_sal,deptno from emp group by deptno;

2.求平均薪水的等級(jí)
select avg_sal,deptno,grade from
  (select avg(sal) avg_sal,deptno from emp group by deptno) t
join salgrade s on(t.avg_sal between s.losal and hisal);

3.求平均薪水的等級(jí)最低的那個(gè)值
select min(grade) from
(  select avg_sal,deptno,grade from
      (select avg(sal) avg_sal,deptno from emp group by deptno) t
   join salgrade s on(t.avg_sal between s.losal and hisal)
) t3;

4.平均薪水的等級(jí)最低的部門(mén)的部門(mén)編號(hào)(將2和3組合起來(lái),將2看成要查詢的表薪夕,將3看成查詢條件)
select deptno from
(   select avg_sal,deptno,grade from
       (select avg(sal) avg_sal,deptno from emp group by deptno) t
    join salgrade s on(t.avg_sal between s.losal and hisal)
) t2
where grade=
(   select min(grade) from
    (   select avg_sal,deptno,grade from
           (select avg(sal) avg_sal,deptno from emp group by deptno) t
            join salgrade s on(t.avg_sal between s.losal and hisal)
    ) t3
);

5.平均薪水的等級(jí)最低的部門(mén)名稱
select dname,deptno from dept where deptno in
(  select deptno from
     (   select avg_sal,deptno,grade from
             (select avg(sal) avg_sal,deptno from emp group by deptno) t
         join salgrade s on(t.avg_sal between s.losal and hisal)
     ) t2
   where grade=
      (   select min(grade) from
         (   select avg_sal,deptno,grade from
                    (select avg(sal) avg_sal,deptno from emp group by deptno) t
                 join salgrade s on(t.avg_sal between s.losal and hisal)
      ) t3
      )
);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末脚草,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子原献,更是在濱河造成了極大的恐慌馏慨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姑隅,死亡現(xiàn)場(chǎng)離奇詭異写隶,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)讲仰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)慕趴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鄙陡,你說(shuō)我怎么就攤上這事冕房。” “怎么了趁矾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵耙册,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我毫捣,道長(zhǎng)详拙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任蔓同,我火速辦了婚禮饶辙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牌柄。我一直安慰自己畸悬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布珊佣。 她就那樣靜靜地躺著蹋宦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咒锻。 梳的紋絲不亂的頭發(fā)上冷冗,一...
    開(kāi)封第一講書(shū)人閱讀 51,604評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音惑艇,去河邊找鬼蒿辙。 笑死拇泛,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的思灌。 我是一名探鬼主播俺叭,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泰偿!你這毒婦竟也來(lái)了熄守?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤耗跛,失蹤者是張志新(化名)和其女友劉穎裕照,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體调塌,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晋南,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了羔砾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片负间。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蜒茄,靈堂內(nèi)的尸體忽然破棺而出唉擂,到底是詐尸還是另有隱情,我是刑警寧澤檀葛,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腹缩,受9級(jí)特大地震影響屿聋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜藏鹊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一润讥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧盘寡,春花似錦楚殿、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至影涉,卻和暖如春变隔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蟹倾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工匣缘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猖闪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓肌厨,卻偏偏與公主長(zhǎng)得像培慌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柑爸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355