1.题目

第一题

tb_user:

User_id

User_name

User_phone

1

张三

13800138000

2

李四

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.表结构及数据

 CREATE TABLE `tb_user` (
`id` int(11) DEFAULT NULL,
`user_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`user_phone` varchar(255) CHARACTER SET latin1 COLLATE latin1_german2_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `test`.`tb_user` (`id`, `user_name`, `user_phone`) VALUES ('', '张三', '');
INSERT INTO `test`.`tb_user` (`id`, `user_name`, `user_phone`) VALUES ('', '李四', ''); CREATE TABLE `tb_customer` (
`Customer_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`Customer_name` varchar(255) DEFAULT NULL,
`Company_name` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `test`.`tb_customer` (`Customer_id`, `user_id`, `Customer_name`, `Company_name`) VALUES ('', '', '王先生', '中国移动广州分公司');
INSERT INTO `test`.`tb_customer` (`Customer_id`, `user_id`, `Customer_name`, `Company_name`) VALUES ('', '', '林先生', '中通服建设有限公司'); CREATE TABLE `tb_project` (
`Project_id` int(11) DEFAULT NULL,
`Customer_id` int(11) DEFAULT NULL,
`Project_name` varchar(255) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `test`.`tb_project` (`Project_id`, `Customer_id`, `Project_name`) VALUES ('', '', 'EOMS系统');
INSERT INTO `test`.`tb_project` (`Project_id`, `Customer_id`, `Project_name`) VALUES ('', '', 'ME2.0机务维修系统'); CREATE TABLE `tb_dept` (
`Dept_id` int(11) DEFAULT NULL,
`Dept_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`Dept_loc` varchar(255) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('', '教研部', '北京');
INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('', 'IT部', '广州');
INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('', '销售部', '深圳');
INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('', '财务部', '深圳');
INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('', '董事会', '上海');
INSERT INTO `test`.`tb_dept` (`Dept_id`, `Dept_name`, `Dept_loc`) VALUES ('', '行政部', '厦门'); CREATE TABLE `tb_emp` (
`Emp_id` int(11) DEFAULT NULL,
`Emp_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`Job` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`Manage` varchar(255) DEFAULT NULL,
`Sal` varchar(255) DEFAULT NULL,
`Comm` varchar(255) DEFAULT NULL,
`Dept_id` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '甘宁', '文员', '', '8000.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '刘备', '经理', '', '29750.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '关羽', '经理', '', '24500.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '张飞', 'Java工程师', '', '28500.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '诸葛亮', '经理', '', '30000.00', '14000.00', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '张无忌', '老师', '', '5000.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '张三丰', '董事长', 'Null', '58900.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '庞统', '经理', '', '30000.00', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '张三8', '文员', 'Null', '', 'Null', '');
INSERT INTO `test`.`tb_emp` (`Emp_id`, `Emp_name`, `Job`, `Manage`, `Sal`, `Comm`, `Dept_id`) VALUES ('', '张三7', '文员', 'Null', '', 'Null', '');

第二题

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

1、查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数?

2、列出薪金比关羽高的所有员工?

3、列出所有员工的姓名及其直接上级的姓名 ?

4、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门 ?

5、列出每个部门的员工数量、平均工资 ?

6、列出所有文员的姓名及其部门名称,部门的人数 ?

答案:

第一题:
请按上表内容写出对应的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

mysql 初级练习题的更多相关文章

  1. 【Python全栈-后端开发】MySQL数据库-练习题

    MySQL数据库-练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号 ...

  2. cogs——1578. 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  3. cogs P1578【模板】 次小生成树初级练习题

    1578. 次小生成树初级练习题 ☆   输入文件:mst2.in   输出文件:mst2.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...

  4. MYSQL经典练习题,熟悉DQL

    MYSQL经典练习题 (本练习题可让你熟悉DQL,快速的上手DQL) 首先,先在数据库中建立基本数据库以及表项: DROP DATABASE IF EXISTS `test`; CREATE DATA ...

  5. MySQL经典练习题

    表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id ...

  6. day41 mysql 学习 练习题 重要*****

    MySQL 练习题[二1.表如下: 收获和注意点:***** #1 GROUP by 可以放到where s_id in ()条件局后边 GROUP BY s_id having 详见题12 #2 做 ...

  7. mysql 及练习题

    if() 函数的用法 IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false, mysql,'女','男') as sex fr ...

  8. MySQL--python关联MySQL、练习题

    1.python关联MySQL pymysql: 安装:pip3 install pymysql 1.0:连接到数据库中 import pymysql conn = pymysql.connect( ...

  9. MySQL经典练习题及答案,常用SQL语句练习50题

    表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id ...

随机推荐

  1. React 引入import React 原理

    本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以我们如果使用了JSX,我们其实就是在使用React,所以我们就 ...

  2. 编译lua固件NodeMcu 8266

    https://www.cnblogs.com/yangfengwu/p/10547024.html 因为我现在的Wifi的教程是lua语言编写的,但是有些功能需要自己编译lua固件才可以,这篇文章就 ...

  3. [HNOI2016]序列 CDQ+DP

    [HNOI2016]序列 CDQ 链接 loj 思路 一个点最小变为l,最大变为r,不变的时候为v 那么j能在i前面就要满足. \(j<i\) \(r[j]<=v[i]\) \(v[j]& ...

  4. request和response文件下载案例

    一.需求分析 * 文件下载需求: 1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载 * 分析: 1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析 ...

  5. 如何在Docker容器之间拷贝数据

    [编者的话]在容器之间拷贝数据是Docker一个重要而且基本的功能.拷贝数据到其他容器是一个经常使用到的场景,如当服务器遇到不可预见的“灾难”(注:断电,宕机)时,起到备份数据的作用.本文作者详细介绍 ...

  6. abp 中log4net 集成Kafka

    1.安装包 Install-Package log4net.Kafka.Core 2.修改log4net.config 配置文件 <?xml version="1.0" en ...

  7. java.lang.IllegalStateException: No instances www.xxxx.com available for localhost

    在SpringCloud的项目中,我们使用了自动配置的OAuth2RestTemplate,RestTemplate,但是在使用这些restTemplate的时候,url必须是服务的名称,如果要调用真 ...

  8. JPA的一对多,多对多用法

    一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...

  9. UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx'

    UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx' 报错原因是 本来应该写空间的 ...

  10. java多线程(一)创建线程的四种方式

    1.   什么是并发与并行 要想学习多线程,必须先理解什么是并发与并行 并行:指两个或多个事件在同一时刻发生(同时发生). 并发:指两个或多个事件在同一个时间段内发生. 2.   什么是进程.线程 进 ...