MySQL 練習(xí)筆記 | 員工部門表實(shí)例

創(chuàng)建部門表和員工表

create table if not exists s_dept(
dept_no int(3) unsigned zerofill primary key auto_increment,
dept_name varchar(32) not null,
is_valid char(2) not null 
)engine = innodb default charset = utf8;
create table if not exists s_staff(
staff_no int(6) unsigned primary key auto_increment,
staff_name varchar(32) not null,
is_valid char(2) not null,
dept_no int(3) unsigned zerofill,
foreign key(dept_no) references s_dept(dept_no)
)engine = innodb auto_increment = 100001 default charset = utf8;
心得:
  • auto_increment 初始值可在創(chuàng)建表的時(shí)候定義
  • zerofill 補(bǔ)0
  • 關(guān)聯(lián)外鍵的兩個(gè)列名類型必須一致,否則會(huì)報(bào)錯(cuò)

插入數(shù)據(jù)

insert into s_dept(dept_name, is_valid) values ('辦公室', 'Y'), ('技術(shù)部', 'N'), ('人力資源部', 'Y'), ('銷售部', 'Y');

insert into s_staff(staff_name, is_valid, dept_no) values ('張三', 'Y', 001), ('李四', 'N', 002), ('王五', 'Y', 002), ('黃三', 'Y', 001), ('陳二', 'Y', 001);

得到部門表和員工表如下:


s_dept (部門表)

s_staff (員工表)

第一題

  1. 請查詢員工表前三條有效記錄
展示字段:staff_no       staff_name        dept_name
思路:

員工表和部門表左連接溜畅,on dept_no相同蜕劝,where 有效浪秘,order by 員工號(hào)矫废,limit 3

select a.staff_no, a.staff_name, b.dept_name from s_staff as a
left join s_dept as b
on a.dept_no = b.dept_no
where a.is_valid ='Y' and b.is_valid = 'Y'
order by a.staff_no
limit 3;
運(yùn)行結(jié)果:
第一題結(jié)果
心得:
  1. 為什么第三個(gè)不是王五呢岂膳?
    答:沒有指定order by 的結(jié)果集磺樱,不能保證結(jié)果的順序,查詢優(yōu)化器按照能盡快出結(jié)果的方式去查詢婆咸,所以結(jié)果順序未知
  2. MySQL中select語句中子句的執(zhí)行順序:
  • 先連接from后數(shù)據(jù)源竹捉; 如果有join,則先執(zhí)行on后的條件尚骄,滿足條件再連接數(shù)據(jù)源
  • 執(zhí)行where條件; 按指定條件查詢
  • 執(zhí)行group by; 分組 常與聚合函數(shù)一起使用
  • 執(zhí)行having;group by 才會(huì)有having块差,對(duì)group by 的結(jié)果篩選
  • 執(zhí)行order by; 按照指定字段排序
  • select輸出結(jié)果
  • limit 限制結(jié)果集

重申:having子句可以讓我們篩選成組后的各種數(shù)據(jù)倔丈,where子句在聚合前先篩選記錄憨闰,也就是說作用在group by和having子句前。而 having子句在聚合后對(duì)組記錄進(jìn)行篩選

第二題

  1. 請查詢員工號(hào)最大的員工
展示字段:staff_no       staff_name        dept_name
思路1:

員工表左連接部門表需五,on同上鹉动,order by 員工號(hào),limit1

select a.staff_no, a.staff_name, b.dept_name from s_staff as a
left join s_dept as b
on a.dept_no = b.dept_no
order by a.staff_no
limit 1;
思路2:

員工表左連接部門表宏邮,on同上泽示,where 查詢篩選 選擇最大員工號(hào) 使用max

select a.staff_no, a.staff_name, b.dept_name from s_staff as a
left join s_dept as b
on a.dept_no = b.dept_no
where a.staff_no = (select max(c.staff_no) from s_staff as c);
第二題
心得:

where的條件可以是某字段 等于 子查詢語句的查詢結(jié)果

第三題

  1. 前臺(tái)頁面查看每個(gè)部門有多少人,而且按照人數(shù)降序排序蜜氨,人數(shù)為0的部門不顯示
展示字段:dept_no        dept_name          人數(shù)
思路:拆分
  1. 將員工表按照部門編碼 group by統(tǒng)計(jì)數(shù)量得到臨時(shí)表 temp:部門編碼械筛、人數(shù)
  2. 將部門表和temp表,根據(jù)部門編碼左連接 left join,得到:部門編碼飒炎、部門名埋哟、人數(shù)
  3. 降序排列,所以需要order by... desc
  4. 題目要求人數(shù)為0的時(shí)候不顯示郎汪,這時(shí)候
    a. 一個(gè)思路是在 order by 后使用 having, 但是 having 是對(duì)分組后的結(jié)果進(jìn)行過濾的條件限制赤赊,主查詢中并沒有 group by闯狱, 所以不能使用
    b.另一個(gè)思路是 where, 是查詢數(shù)據(jù)的過濾條件,where 子句執(zhí)行順序早于order by砍鸠,所以放在 order by 之前
select a.dept_no, a.dept_name, temp.dept_num from s_dept as a
left join
(select b.dept_no, count(b.dept_no) as dept_num from s_staff as b group by b.dept_no) as temp
on a.dept_no = temp.dept_no
where temp.dept_num > 0
order by temp.dept_num desc;
第三題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扩氢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爷辱,更是在濱河造成了極大的恐慌录豺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饭弓,死亡現(xiàn)場離奇詭異双饥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弟断,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門咏花,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阀趴,你說我怎么就攤上這事昏翰。” “怎么了刘急?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵棚菊,是天一觀的道長。 經(jīng)常有香客問我叔汁,道長统求,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任据块,我火速辦了婚禮码邻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘另假。我一直安慰自己像屋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布边篮。 她就那樣靜靜地躺著开睡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苟耻。 梳的紋絲不亂的頭發(fā)上篇恒,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音凶杖,去河邊找鬼胁艰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腾么。 我是一名探鬼主播奈梳,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼解虱!你這毒婦竟也來了攘须?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤殴泰,失蹤者是張志新(化名)和其女友劉穎于宙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悍汛,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捞魁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了离咐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谱俭。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宵蛀,靈堂內(nèi)的尸體忽然破棺而出昆著,到底是詐尸還是另有隱情,我是刑警寧澤术陶,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布凑懂,位于F島的核電站,受9級(jí)特大地震影響瞳别,放射性物質(zhì)發(fā)生泄漏征候。R本人自食惡果不足惜杭攻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一祟敛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兆解,春花似錦馆铁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至现拒,卻和暖如春辣垒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背印蔬。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工勋桶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓例驹,卻偏偏與公主長得像捐韩,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鹃锈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 引出 ?請思考如下問題荤胁? –查詢所有員工的每個(gè)月工資總和,平均工資屎债? –查詢工資最高和最低的工資是多少仅政? –查詢公...
    C_cole閱讀 7,288評(píng)論 0 3
  • 1. 了解SQL 1.1 數(shù)據(jù)庫基礎(chǔ) ? 學(xué)習(xí)到目前這個(gè)階段,我們就需要以某種方式與數(shù)據(jù)庫打交道扔茅。在深入學(xué)習(xí)MyS...
    鋒享前端閱讀 1,062評(píng)論 0 1
  • 1. SQL 簡介 SQL 的目標(biāo) 理想情況下已旧,數(shù)據(jù)庫語言應(yīng)允許用戶: 建立數(shù)據(jù)庫和關(guān)系結(jié)構(gòu) 完成基本數(shù)據(jù)管理任務(wù)...
    板藍(lán)根plank閱讀 2,344評(píng)論 0 11
  • 一、SQL速成 結(jié)構(gòu)查詢語言(SQL)是用于查詢關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言召娜,它包括若干關(guān)鍵字和一致的語法运褪,便于數(shù)據(jù)庫元件...
    shadow雨軒閱讀 514評(píng)論 0 3
  • 約好和我的大學(xué)同學(xué)見面,在她的培訓(xùn)機(jī)構(gòu)里有很多教室玖瘸,還有一間大的會(huì)議室秸讹,剛剛收拾出來。簡直作為我的家長教育課堂再合...
    閻渝錦閱讀 157評(píng)論 0 0