Mysql经典入门练习题(六)

建表:

-- 创建部门表
   CREATE TABLE dept(
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20)
   );
   
   INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');
   
   
  -- 创建员工表
  CREATE TABLE emp (
   id INT PRIMARY KEY AUTO_INCREMENT,
   NAME VARCHAR(10),
   gender CHAR(1), -- 性别
   salary DOUBLE, -- 工资
   join_date DATE, -- 入职日期
   dept_id INT,
   FOREIGN KEY (dept_id) REFERENCES dept(id) -- 外键,关联部门表(部门表的主键)
  );
  
  
  INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('孙悟空','男',7200,'2013-02-24',1);
  INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('猪八戒','男',3600,'2010-12-02',2);
  
  INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('唐僧','男',9000,'2008-08-08',2);
  INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('白骨精','女',5000,'2015-10-07',3);
  INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('蜘蛛精','女',4500,'2011-03-14',1);

题目:

1.查询所有的员工信息 和对应的部门信息
2.查询员工表的名称,性别,部门表的名称
3.内连接
4.添加一个新的职工 小明
5.左连接查询
6.右连接查询
7.添加一个新的部门
8.查询最高的工资是多少
9.查询工资最高的员工信息
10.查询工资最低的员工信息
11.查询员工的工资小于平均工资的人
12.查询财务部所有的员工信息
13.查询财务部所有的员工信息 和 市场部的员工信息
14.查询 员工的入职日期是2011-11-11 之后的员工信息 和 部门信息

🚴‍♂️
🚴‍♂️
🚴‍♂️
🚴‍♂️
🚴‍♂️
🚴‍♂️
🚴‍♂️
🚴‍♂️
🚴‍♂️

参考答案

#查询所有的员工信息 和对应的部门信息
select * from emp,dept where emp.dept_id = dept.id;
#查询员工表的名称,性别,部门表的名称
select emp.`NAME`,emp.gender,dept.`NAME` from emp,dept where emp.dept_id = dept.id;
#内连接
select emp.`name`,emp.gender,emp.salary,dept.`name` FROM emp INNER JOIN dept on emp.dept_id = dept.id;
#添加一个新的职工 小明
INSERT INTO emp VALUES(6,'小明','男',3000,'2019-12-09',3);
#左连接查询
select emp.`NAME`,emp.gender,emp.salary,dept.`NAME` FROM emp LEFT JOIN dept ON emp.dept_id = dept.id;
#右连接查询
select * from emp RIGHT JOIN dept ON emp.dept_id = dept.id;
#添加一个新的部门
INSERT INTO dept VALUES(4,'司法部');
#查询最高的工资是多少
select MAX(salary) FROM emp;
#查询工资最高的员工信息
select * from emp where emp.salary>=(select MAX(salary) from emp);
#查询工资最低的员工信息
select * from emp where emp.salary<=(select MIN(salary) FROM emp); 
#查询员工的工资小于平均工资的人
select * from emp where salary<=(select AVG(salary) from emp);
#查询财务部所有的员工信息
select * from emp RIGHT JOIN dept ON dept.`NAME`='财务部' HAVING emp.dept_id = dept.id;
#查询财务部所有的员工信息 和 市场部的员工信息
select * from emp RIGHT JOIN dept ON dept.`NAME` = '财务部' or dept.`NAME` = '市场部' HAVING emp.dept_id = dept.id;
#查询 员工的入职日期是2011-11-11 之后的员工信息 和 部门信息
select * from emp RIGHT JOIN dept on emp.join_date >= '2011' HAVING emp.dept_id = dept.id;

本系列题目均从网上收集,sql自己重写并修改了一些bug和错误,基本上应该没有错误,如有错误或问题可以评论留言,感谢观看

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值