mysql 初级练习题
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 初级练习题的更多相关文章
- 【Python全栈-后端开发】MySQL数据库-练习题
MySQL数据库-练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号 ...
- cogs——1578. 次小生成树初级练习题
1578. 次小生成树初级练习题 ☆ 输入文件:mst2.in 输出文件:mst2.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...
- cogs P1578【模板】 次小生成树初级练习题
1578. 次小生成树初级练习题 ☆ 输入文件:mst2.in 输出文件:mst2.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 求严格次小生成树 [输入格式 ...
- MYSQL经典练习题,熟悉DQL
MYSQL经典练习题 (本练习题可让你熟悉DQL,快速的上手DQL) 首先,先在数据库中建立基本数据库以及表项: DROP DATABASE IF EXISTS `test`; CREATE DATA ...
- MySQL经典练习题
表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id ...
- day41 mysql 学习 练习题 重要*****
MySQL 练习题[二1.表如下: 收获和注意点:***** #1 GROUP by 可以放到where s_id in ()条件局后边 GROUP BY s_id having 详见题12 #2 做 ...
- mysql 及练习题
if() 函数的用法 IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false, mysql,'女','男') as sex fr ...
- MySQL--python关联MySQL、练习题
1.python关联MySQL pymysql: 安装:pip3 install pymysql 1.0:连接到数据库中 import pymysql conn = pymysql.connect( ...
- MySQL经典练习题及答案,常用SQL语句练习50题
表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id ...
随机推荐
- React 引入import React 原理
本质上来说JSX是React.createElement(component, props, ...children)方法的语法糖. 所以我们如果使用了JSX,我们其实就是在使用React,所以我们就 ...
- 编译lua固件NodeMcu 8266
https://www.cnblogs.com/yangfengwu/p/10547024.html 因为我现在的Wifi的教程是lua语言编写的,但是有些功能需要自己编译lua固件才可以,这篇文章就 ...
- [HNOI2016]序列 CDQ+DP
[HNOI2016]序列 CDQ 链接 loj 思路 一个点最小变为l,最大变为r,不变的时候为v 那么j能在i前面就要满足. \(j<i\) \(r[j]<=v[i]\) \(v[j]& ...
- request和response文件下载案例
一.需求分析 * 文件下载需求: 1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载 * 分析: 1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析 ...
- 如何在Docker容器之间拷贝数据
[编者的话]在容器之间拷贝数据是Docker一个重要而且基本的功能.拷贝数据到其他容器是一个经常使用到的场景,如当服务器遇到不可预见的“灾难”(注:断电,宕机)时,起到备份数据的作用.本文作者详细介绍 ...
- abp 中log4net 集成Kafka
1.安装包 Install-Package log4net.Kafka.Core 2.修改log4net.config 配置文件 <?xml version="1.0" en ...
- java.lang.IllegalStateException: No instances www.xxxx.com available for localhost
在SpringCloud的项目中,我们使用了自动配置的OAuth2RestTemplate,RestTemplate,但是在使用这些restTemplate的时候,url必须是服务的名称,如果要调用真 ...
- JPA的一对多,多对多用法
一.@OneToOne关系映射 JPA使用@OneToOne来标注一对一的关系. 实体 People :用户. 实体 Address:家庭住址. People 和 Address 是一对一的关系. 这 ...
- UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx'
UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx' 报错原因是 本来应该写空间的 ...
- java多线程(一)创建线程的四种方式
1. 什么是并发与并行 要想学习多线程,必须先理解什么是并发与并行 并行:指两个或多个事件在同一时刻发生(同时发生). 并发:指两个或多个事件在同一个时间段内发生. 2. 什么是进程.线程 进 ...