MySQL單表與多表練習(xí)題目及答案總結(jié)大全
單表練習(xí)
1. 查詢出部門(mén)編號(hào)為D2019060011的所有員工
2. 所有財(cái)務(wù)總監(jiān)的姓名、編號(hào)和部門(mén)編號(hào)。
3. 找出獎(jiǎng)金高于工資的員工。
4. 找出獎(jiǎng)金高于工資40%的員工。
5 找出部門(mén)編號(hào)為D2019090011中所有財(cái)務(wù)總監(jiān),和部門(mén)編號(hào)為D2019060011中所有財(cái)務(wù)專員的詳細(xì)資料。
6. 找出部門(mén)編號(hào)為D2019090001中所有總經(jīng)理,部門(mén)編號(hào)為D2019090011中所有財(cái)務(wù)總監(jiān),還有即不是總經(jīng)理又不是銷(xiāo)售總監(jiān)但其工資大或等于4000的所有員工詳細(xì)資料。
7有獎(jiǎng)金的工種。
8無(wú)獎(jiǎng)金或獎(jiǎng)金低于1000的員工。
9. 查詢名字由兩個(gè)字組成的員工。
10.查詢2020年入職的員工。
11. 查詢所有員工詳細(xì)信息,用編號(hào)升序排序。
12. 查詢所有員工詳細(xì)信息,用工資降序排序,如果工資相同使用入職日期升序排序。
13. 查詢每個(gè)部門(mén)的平均工資。
14. 求出每個(gè)部門(mén)的雇員數(shù)量。
15. 查詢每種工作的最高工資、最低工資、人數(shù).
16. 列出最低薪金大于4000的各種工作及從事此工作的員工人數(shù)。
17. 統(tǒng)計(jì)各部門(mén)工資總和,顯示部門(mén)編號(hào)和該部門(mén)雇員的月工資的總和,并且要滿足該部門(mén)雇員的月工資合計(jì)大于6000,輸出結(jié)果按月工資的合計(jì)升序排列。
多表練習(xí)
1. 列出所有員工的姓名及其直接上級(jí)的姓名。
2. 列出受雇日期早于直接上級(jí)的所有員工的編號(hào)、姓名、部門(mén)名稱。
3. 列出部門(mén)名稱和這些部門(mén)的員工信息,同時(shí)列出那些沒(méi)有員工的部門(mén)。
4. 列出在財(cái)務(wù)部工作的員工的姓名,假定不知道財(cái)務(wù)部的部門(mén)編號(hào)。
5. 列出薪金高于公司平均薪金的所有員工信息,所在部門(mén)名稱,上級(jí)領(lǐng)導(dǎo)。
6. 列出與陳超從事相同工作的所有員工及部門(mén)名稱。
7. 查出至少有一個(gè)員工的部門(mén)。顯示部門(mén)編號(hào)、部門(mén)名稱、部門(mén)位置、部門(mén)人數(shù)。
8. 列出薪金高于在財(cái)務(wù)部工作員工平均薪金的員工姓名和薪金、部門(mén)名稱。
單表練習(xí)答案
1.查詢出部門(mén)編號(hào)為D2019060011的所有員工。
show databases; use mysql_1; show tables; select * from employee where department_NO = "D2019060011";
效果圖:

2. 所有財(cái)務(wù)總監(jiān)的姓名、編號(hào)和部門(mén)編號(hào)。
select name,number,department_NO from employee where job = '財(cái)務(wù)總監(jiān)';
效果圖:

3. 找出獎(jiǎng)金高于工資的員工。
select * from employee where bonus > salary;
效果圖:

4. 找出獎(jiǎng)金高于工資40%的員工。
select * from employee where bonus > salary * 0.4;
效果圖:

5 找出部門(mén)編號(hào)為D2019090011中所有財(cái)務(wù)總監(jiān),和部門(mén)編號(hào)為D2019060011中所有財(cái)務(wù)專員的詳細(xì)資料。
select * from employee where (department_NO = 'D2019090011' and job = '財(cái)務(wù)總監(jiān)') -> or (department_NO = 'D2019060011' and job = '財(cái)務(wù)專員');
效果圖:

6. 找出部門(mén)編號(hào)為D2019090001中所有總經(jīng)理,部門(mén)編號(hào)為D2019090011中所有財(cái)務(wù)總監(jiān),還有即不是總經(jīng)理又不是銷(xiāo)售總監(jiān)但其工資大或等于4000的所有員工詳細(xì)資料。
select * from employee where (department_NO = 'D2019090001' and job = '總經(jīng)理') -> or (department_NO = 'D2019090011' and job = '財(cái)務(wù)總監(jiān)') -> or (job <> '總經(jīng)理' and job <> '銷(xiāo)售總監(jiān)' and salary >= 4000);
效果圖:

7有獎(jiǎng)金的工種。
select job from employee where bonus is not null;
效果圖:

8無(wú)獎(jiǎng)金或獎(jiǎng)金低于1000的員工。
select * from employee where bonus is null or bonus <= 1000;
效果圖:

9. 查詢名字由兩個(gè)字組成的員工。
select * from employee where name like '__';
效果圖:

10.查詢2020年入職的員工。
select * from employee where hire_date like '2020%';
效果圖:

11. 查詢所有員工詳細(xì)信息,用編號(hào)升序排序。
select * from employee order by number asc;
效果圖:

12. 查詢所有員工詳細(xì)信息,用工資降序排序,如果工資相同使用入職日期升序排序。
select * from employee order by salary desc,hire_date asc;
效果圖:

13. 查詢每個(gè)部門(mén)的平均工資。
select department_NO,avg(salary) from employee group by department_NO;
效果圖:

14. 求出每個(gè)部門(mén)的雇員數(shù)量。
select department_NO,count(id) from employee group by department_NO;
效果圖:

15. 查詢每種工作的最高工資、最低工資、人數(shù).
select max(salary),min(salary),count(id) from employee group by job;
效果圖:

16. 列出最低薪金大于4000的各種工作及從事此工作的員工人數(shù)。
select job,count(id) from employee group by job having min(salary) > 4000;
效果圖:

17. 統(tǒng)計(jì)各部門(mén)工資總和,顯示部門(mén)編號(hào)和該部門(mén)雇員的月工資的總和,并且要滿足該部門(mén)雇員的月工資合計(jì)大于6000,輸出結(jié)果按月工資的合計(jì)升序排列。
select department_NO,sum(salary) from employee group by department_NO having sum(salary) > 6000 order by sum(salary) asc;
效果圖:

多表練習(xí)答案
1. 列出所有員工的姓名及其直接上級(jí)的姓名。
select e1.name,e2.name from employee e1 -> join employee e2 -> on e1.number = e2.leader_NO;
效果圖:

2. 列出受雇日期早于直接上級(jí)的所有員工的編號(hào)、姓名、部門(mén)名稱。
select e1.number as 員工編號(hào), e1.name as 員工姓名, d.name as 部門(mén)名稱 from employee e1 -> join employee e2 -> on e1.leader_NO = e2.number -> join department d -> on e1.department_NO = d.number -> where e1.hire_date < e2.hire_date;
效果圖:

3. 列出部門(mén)名稱和這些部門(mén)的員工信息,同時(shí)列出那些沒(méi)有員工的部門(mén)。
select * from employee e -> right join department d -> on e.department_NO = d.number;
效果圖:

select d.name,e.* from employee e -> right join department d -> on e.department_NO = d.number;
效果圖:

4. 列出在財(cái)務(wù)部工作的員工的姓名,假定不知道財(cái)務(wù)部的部門(mén)編號(hào)。
select name from employee where department_NO in (select number from department where name = '財(cái)務(wù)部');
也可以是以下代碼: select e.name from employee e -> join department d -> on e.department_NO = d.number -> where d.name = '財(cái)務(wù)部';
效果圖:

5. 列出薪金高于公司平均薪金的所有員工信息,所在部門(mén)名稱,上級(jí)領(lǐng)導(dǎo)。
select e1.number as 員工編號(hào), e1.name as 員工姓名, e1.job as 職位, e1.salary as 薪資, e1.hire_date as 入職日期, d.name as 部門(mén)名稱, e2.name as 直接上級(jí)姓名 from employee e1 -> join department d -> on e1.department_NO = d.number -> left join employee e2 -> on e1.leader_NO = e2.number -> where e1.salary > (SELECT AVG(salary) from employee);
效果圖:

6. 列出與陳超從事相同工作的所有員工及部門(mén)名稱。
select e.number as 員工編號(hào),e.name as 員工姓名,e.job as 職位,d.name as 部門(mén)名稱 -> from employee e -> join department d -> on e.department_NO = d.number -> where e.job = (select job from employee where name = '陳超') and e.name != '陳超';
效果圖:

7. 查出至少有一個(gè)員工的部門(mén)。顯示部門(mén)編號(hào)、部門(mén)名稱、部門(mén)位置、部門(mén)人數(shù)。
select res.department_NO,d.name,d.location,res.c from (select department_NO,count(*) c from employee group by department_NO) res -> join department d -> on res.department_NO = d.number;
效果圖:

8. 列出薪金高于在財(cái)務(wù)部工作員工平均薪金的員工姓名和薪金、部門(mén)名稱。
select e.name as 員工姓名,e.salary as 薪金,d.name as 部門(mén)名稱 -> from employee e -> join department d -> on e.department_NO = d.number -> where e.salary > (select avg(e2.salary) from employee e2 -> join department d2 on e2.department_NO = d2.number where d2.name = '財(cái)務(wù)部');
效果圖:

總結(jié)
到此這篇關(guān)于MySQL單表與多表練習(xí)題目及答案總結(jié)大全的文章就介紹到這了,更多相關(guān)MySQL單表與多表練習(xí)題目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows系統(tǒng)下MySQL忘記root密碼的2種解決辦法
這篇文章主要介紹了Windows系統(tǒng)下MySQL忘記root密碼的2種解決辦法,一種是通過(guò)啟動(dòng)MySQL時(shí)跳過(guò)權(quán)限表驗(yàn)證,然后重置密碼,另一種是創(chuàng)建一個(gè)包含新密碼的文本文件,并通過(guò)MySQL的--init-file選項(xiàng)來(lái)應(yīng)用該文件中的密碼設(shè)置,需要的朋友可以參考下2024-11-11
MySQL中FIND_IN_SET(),IN( )和?LIKE區(qū)別小結(jié)
在MySQL中,FIND_IN_SET()、LIKE和IN用于字符串和值的匹配查找,FIND_IN_SET()適用于逗號(hào)分隔的字符串列表,LIKE用于模糊匹配,IN用于離散值列表,下面就來(lái)介紹了一下具體的區(qū)別,感興趣的可以了解一下2026-02-02
Mysql 索引該如何設(shè)計(jì)與優(yōu)化
這篇文章主要介紹了Mysql 索引該如何設(shè)計(jì)與優(yōu)化,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03
MySQL中使用GROUP_CONCAT數(shù)據(jù)丟失的原因分析及解決過(guò)程
MySQL的GROUP_CONCAT函數(shù)可能因group_concat_max_len限制或字符集差異導(dǎo)致數(shù)據(jù)截?cái)?常見(jiàn)問(wèn)題在于返回的字符串長(zhǎng)度超出預(yù)期,解決方案包括調(diào)整group_concat_max_len、考慮分頁(yè)處理或在應(yīng)用層處理,確保數(shù)據(jù)完整傳輸2025-09-09
MySQL自動(dòng)備份與覆蓋恢復(fù)實(shí)戰(zhàn)指南
本文詳細(xì)描述了如何使用SQL備份文件恢復(fù)MySQL數(shù)據(jù)庫(kù)的過(guò)程,包括查詢當(dāng)前數(shù)據(jù)庫(kù)的字符集和排序規(guī)則、創(chuàng)建恢復(fù)前備份目錄、備份現(xiàn)有數(shù)據(jù)庫(kù)、刪除舊庫(kù)、重建新庫(kù)、使用備份文件覆蓋恢復(fù)、以及恢復(fù)后的檢查和測(cè)試,需要的朋友可以參考下2026-03-03

