mysql 初級練習題

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');
View Code

 

 

第二題

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
相關文章
相關標籤/搜索