1.題目sql
第一題:ide
tb_user:spa
User_idcode |
User_nameblog |
User_phoneci |
1event |
張三table |
13800138000class |
2test |
李四 |
13800138001 |
tb_customer:
Customer_id |
User_id |
Customer_name |
Company_name |
1 |
1 |
王先生 |
中國移動廣州分公司 |
2 |
2 |
林先生 |
中通服建設有限公司 |
tb_project
Project_id |
Customer_id |
Project_name |
1 |
1 |
EOMS系統 |
2 |
2 |
ME2.0機務維修系統 |
根據以上三個表,要求輸出:
Project_id |
User_name |
User_phone |
Customer_name |
Company_name |
Project_name |
1 |
張三 |
13800138000 |
王先生 |
中國移動廣州分公司 |
EOMS系統 |
2 |
李四 |
13800138001 |
林先生 |
中通服建設有限公司 |
ME2.0機務維修系統 |
1.請按上表內容寫出對應的sql語句?
2.表結構及數據
1 CREATE TABLE `tb_user` ( 2 `id` int(11) DEFAULT NULL, 3 `user_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL, 4 `user_phone` varchar(255) CHARACTER SET latin1 COLLATE latin1_german2_ci DEFAULT NULL 5 ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 6 7 INSERT INTO `test`.`tb_user` (`id`, `user_name`, `user_phone`) VALUES ('1', '張三', '13800138000'); 8 INSERT INTO `test`.`tb_user` (`id`, `user_name`, `user_phone`) VALUES ('2', '李四', '13800138001'); 9 10 11 12 CREATE TABLE `tb_customer` ( 13 `Customer_id` int(11) DEFAULT NULL, 14 `user_id` int(11) DEFAULT NULL, 15 `Customer_name` varchar(255) DEFAULT NULL, 16 `Company_name` varchar(255) DEFAULT NULL 17 ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 18 INSERT INTO `test`.`tb_customer` (`Customer_id`, `user_id`, `Customer_name`, `Company_name`) VALUES ('1', '1', '王先生', '中國移動廣州分公司'); 19 INSERT INTO `test`.`tb_customer` (`Customer_id`, `user_id`, `Customer_name`, `Company_name`) VALUES ('2', '2', '林先生', '中通服建設有限公司'); 20 21 22 23 24 CREATE TABLE `tb_project` ( 25 `Project_id` int(11) DEFAULT NULL, 26 `Customer_id` int(11) DEFAULT NULL, 27 `Project_name` varchar(255) DEFAULT NULL 28 ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 29 30 INSERT INTO `test`.`tb_project` (`Project_id`, `Customer_id`, `Project_name`) VALUES ('1', '1', 'EOMS系統'); 31 INSERT INTO `test`.`tb_project` (`Project_id`, `Customer_id`, `Project_name`) VALUES ('2', '2', 'ME2.0機務維修系統'); 32 33 34 35 CREATE TABLE `tb_dept` ( 36 `Dept_id` int(11) DEFAULT NULL, 37 `Dept_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL, 38 `Dept_loc` varchar(255) CHARACTER SET utf8 DEFAULT NULL 39 ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 40 41 INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('10', '教研部', '北京'); 42 INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('20', 'IT部', '廣州'); 43 INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('30', '銷售部', '深圳'); 44 INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('40', '財務部', '深圳'); 45 INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('50', '董事會', '上海'); 46 INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('60', '行政部', '廈門'); 47 48 49 CREATE TABLE `tb_emp` ( 50 `Emp_id` int(11) DEFAULT NULL, 51 `Emp_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL, 52 `Job` varchar(255) CHARACTER SET utf8 DEFAULT NULL, 53 `Manage` varchar(255) DEFAULT NULL, 54 `Sal` varchar(255) DEFAULT NULL, 55 `Comm` varchar(255) DEFAULT NULL, 56 `Dept_id` int(11) DEFAULT NULL 57 ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 58 59 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1001', '甘寧', '文員', '1013', '8000.00', 'Null', '20'); 60 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1002', '劉備', '經理', '1010', '29750.00', 'Null', '20'); 61 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1006', '關羽', '經理', '1010', '24500.00', 'Null', '30'); 62 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1007', '張飛', 'Java工程師', '1008', '28500.00', 'Null', '20'); 63 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1008', '諸葛亮', '經理', '1004', '30000.00', '14000.00', '40'); 64 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1009', '張無忌', '老師', '1011', '5000.00', 'Null', '10'); 65 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1010', '張三丰', '董事長', 'Null', '58900.00', 'Null', '50'); 66 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1011', '龐統', '經理', '1010', '30000.00', 'Null', '10'); 67 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1010', '張三8', '文員', 'Null', '123', 'Null', '20'); 68 INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('1010', '張三7', '文員', 'Null', '123', 'Null', '30');
第二題:
tb_dept
Dept_id |
Dept_name |
Dept_loc |
10 |
教研部 |
北京 |
20 |
IT部 |
廣州 |
30 |
銷售部 |
深圳 |
40 |
財務部 |
深圳 |
50 |
董事會 |
上海 |
60 |
行政部 |
廈門 |
tb_emp
Emp_id |
Emp_name |
Job |
Manage |
Sal |
Comm |
Dept_id |
1001 |
甘寧 |
文員 |
1013 |
8000.00 |
Null |
20 |
1002 |
劉備 |
經理 |
1010 |
29750.00 |
Null |
20 |
1006 |
關羽 |
經理 |
1010 |
24500.00 |
Null |
30 |
1007 |
張飛 |
Java工程師 |
1008 |
28500.00 |
Null |
20 |
1008 |
諸葛亮 |
經理 |
1004 |
30000.00 |
14000.00 |
40 |
1009 |
張無忌 |
老師 |
1011 |
5000.00 |
Null |
10 |
1010 |
張三丰 |
董事長 |
Null |
58900.00 |
Null |
50 |
1011 |
龐統 |
經理 |
1010 |
30000.00 |
Null |
10 |
一、查出至少有一個員工的部門。顯示部門編號、部門名稱、部門位置、部門人數?
二、列出薪金比關羽高的全部員工?
三、列出全部員工的姓名及其直接上級的姓名 ?
四、列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門 ?
五、列出每一個部門的員工數量、平均工資 ?
六、列出全部文員的姓名及其部門名稱,部門的人數 ?
答案:
第一題: 請按上表內容寫出對應的sql語句: 答題: select P.Project_id , U.User_name,U.User_phone, c.Customer_name,c.Company_name, p.Project_name from tb_user u LEFT JOIN tb_customer c on u.id=c.user_id LEFT JOIN tb_project p on c.customer_id= p.customer_id ; 第二題: 1、查出至少有一個員工的部門。顯示部門編號、部門名稱、部門位置、部門人數 答題: select * from ( select d.dept_id , d.dept_name, d.dept_loc, count(e.emp_id) pNum from tb_dept d LEFT JOIN tb_emp e on d.dept_id=e.dept_id group by d.dept_id ) t where t.pNum>=1 ; 2、列出薪金比關羽高的全部員工 答題: select * from tb_emp where sal>( select e.sal from tb_emp e where e.emp_name='關羽'); 3、列出全部員工的姓名及其直接上級的姓名 答題: 方法1: select # e.emp_id employeeId, e.emp_name employee, # e1.emp_id leaderId , e1.emp_name leader from tb_emp e , tb_emp e1 where e.manage = e1.emp_id ; 方法2: select leader, GROUP_CONCAT(employee) employee from ( select # e.emp_id employeeId, e.emp_name employee, e1.emp_id leaderId , e1.emp_name leader from tb_emp e , tb_emp e1 where e.manage = e1.emp_id ) t group by t.leaderId ; 4、列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門 答題: select * from tb_dept d LEFT JOIN tb_emp e on d.dept_id=e.dept_id ; 5、列出每一個部門的員工數量、平均工資 答題: select e.dept_id 部門,count(e.emp_id) 員工數量, ROUND(sum(e.sal)/count(e.emp_id),2) 平均工資 from tb_emp e group by e.dept_id ; 6、列出全部文員的姓名及其部門名稱,部門的人數 答題: #列出全部文員的姓名及其部門名稱 select e.emp_name,e.dept_id,d.dept_name from tb_emp e ,tb_dept d where e.dept_id=d.dept_id and e.job='文員' #是文員所在部門下的部門人數,仍是部門下文員的人數 ? select e.dept_id,e.emp_name, d.dept_name,count(e.emp_id) from tb_emp e ,tb_dept d where e.dept_id=d.dept_id and e.job='文員' group by e.dept_id