马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1.找出销售部分中年纪最大的员工的姓名
- mysql> select name,age from dept a ,emp_new b where a.dept1=b.dept2 and dept_name='销售'order by age desc limit 1;
- +------+------+
- | name | age |
- +------+------+
- | 荣七 | 64 |
- +------+------+
- 1 row in set (0.00 sec)
复制代码 2.求财务部分最低工资的员工姓名
- mysql> select name from emp_new e join dept d on e.dept2=d.dept1 where d.dept_name='财务' order by incoming limit 1;
- +------+
- | name |
- +------+
- | 王五 |
- +------+
- 1 row in set (0.00 sec)
复制代码 3. 列出每个部分收入总和高于 9000 的部分名称
- mysql> select dept.dept_name from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name having sum(emp_new.incoming) > 9000;
- +-----------+
- | dept_name |
- +-----------+
- | 财务 |
- | 销售 |
- +-----------+
- 2 rows in set (0.00 sec)
复制代码 4. 求工资在 7500 到 8500 元之间,年龄最大的人的姓名及部分
- mysql> select name,dept_name from emp_new join dept on emp_new.dept2=dept.dept1 where incoming between 7500 and 8500 order by age limit 1;
- +------+-----------+
- | name | dept_name |
- +------+-----------+
- | 赵六 | 销售 |
- +------+-----------+
- 1 row in set (0.00 sec)
复制代码 5.找出销售部分收入最低的员工入职时间
- mysql> select worktime_start '入职时间' from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='销售' order by incoming limit 1;
- +------------+
- | 入职时间 |
- +------------+
- | 1970-10-11 |
- +------------+
- 1 row in set (0.00 sec)
复制代码
6.财务部分收入凌驾2000元的员工姓名
- mysql> select name from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='财务' and incoming > 2000;
- +------+
- | name |
- +------+
- | 张三 |
- | 李四 |
- +------+
复制代码
7.列出每个部分的平均收入及部分名称
- mysql> select dept_name,avg(emp_new.incoming) '平均收入' from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name;
- +-----------+-----------+
- | dept_name | 平均收入 |
- +-----------+-----------+
- | 财务 | 3166.6667 |
- | 销售 | 8000.0000 |
- | 运维 | 7300.0000 |
- +-----------+-----------+
- 3 rows in set (0.00 sec)
- mysql> select dept_name,round(avg(emp_new.incoming),2) '平均收入' from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name;
- +-----------+----------+
- | dept_name | 平均收入 |
- +-----------+----------+
- | 财务 | 3166.67 |
- | 销售 | 8000.00 |
- | 运维 | 7300.00 |
- +-----------+----------+
- 3 rows in set (0.00 sec)
复制代码
8.运维部入职员工的员工号
- mysql> select sid '员工号' from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='运维';
- +--------+
- | 员工号 |
- +--------+
- | 1879 |
- +--------+
- 1 row in set (0.00 sec)
复制代码
9.财务部分的收入总和;
- mysql> select sum(incoming) '总收入' from emp_new join dept on emp_new.dept2=dept.dept1 where dept.dept_name ='财务';
- +--------+
- | 总收入 |
- +--------+
- | 9500 |
- +--------+
- 1 row in set (0.00 sec)
复制代码
10.先按部分号大小排序,再依据入职时间由早到晚排序员工信息表
- mysql> select * from emp_new join dept on emp_new.dept2=dept.dept1 order by emp_new.dept2,emp_new.worktime_start;
- +------+------+------+----------------+----------+-------+-------+-----------+
- | sid | name | age | worktime_start | incoming | dept2 | dept1 | dept_name |
- +------+------+------+----------------+----------+-------+-------+-----------+
- | 1789 | 张三 | 35 | 1980-01-01 | 4000 | 101 | 101 | 财务 |
- | 1674 | 李四 | 32 | 1983-04-01 | 3500 | 101 | 101 | 财务 |
- | 1776 | 王五 | 24 | 1990-07-01 | 2000 | 101 | 101 | 财务 |
- | 1564 | 荣七 | 64 | 1963-10-11 | 8500 | 102 | 102 | 销售 |
- | 1568 | 赵六 | 57 | 1970-10-11 | 7500 | 102 | 102 | 销售 |
- | 1879 | 牛八 | 55 | 1971-10-20 | 7300 | 103 | 103 | 运维 |
- +------+------+------+----------------+----------+-------+-------+-----------+
- 6 rows in set (0.00 sec)
复制代码
11.找出哪个部分还没有员工入职;
- mysql> select dept.dept_name from dept left join emp_new on emp_new.dept2=dept.dept1 where emp_new.dept2 is null;
- +-----------+
- | dept_name |
- +-----------+
- | 行政 |
- +-----------+
- 1 row in set (0.00 sec)
复制代码
12.列出部分员工收入大于7000的部分编号,部分名称;
- mysql> select dept.dept1,dept.dept_name from emp_new join dept on emp_new.dept2=dept.dept1 where emp_new.incoming > 7000 group by dept.dept1,dept.dept_name;
- +-------+-----------+
- | dept1 | dept_name |
- +-------+-----------+
- | 102 | 销售 |
- | 103 | 运维 |
- +-------+-----------+
- 2 rows in set (0.00 sec)
复制代码
13.列出每一个部分的员工总收入及部分名称;
- mysql> select dept.dept_name '部门名称',sum(emp_new.incoming) '员工总收入' from emp_new join dept on emp_new.dept2=dept.dept1 group by dept.dept_name;
- +----------+------------+
- | 部门名称 | 员工总收入 |
- +----------+------------+
- | 财务 | 9500 |
- | 销售 | 16000 |
- | 运维 | 7300 |
- +----------+------------+
- 3 rows in set (0.00 sec)
复制代码
14.列出每一个部分中年纪最大的员工姓名,部分名称;
- mysql> select emp_new.name,dept.dept_name from emp_new join dept on emp_new.dept2=dept.dept1 where(emp_new.dept2,emp_new.age) in (select dept2,max(age) from emp_new group by dept2);
- +------+-----------+
- | name | dept_name |
- +------+-----------+
- | 张三 | 财务 |
- | 荣七 | 销售 |
- | 牛八 | 运维 |
- +------+-----------+
- 3 rows in set (0.00 sec)
- mysql> select name as "姓名", dept_name as "部门名称" from dept,(select max(age) age,dept2 from emp_new group by dept2) em, emp_new where dept.dept1=em.dept2 and em.age=emp_new.age;
- +------+----------+
- | 姓名 | 部门名称 |
- +------+----------+
- | 张三 | 财务 |
- | 荣七 | 销售 |
- | 牛八 | 运维 |
- +------+----------+
- 3 rows in set (0.00 sec)
复制代码
15.求李四的收入及部分名称
- mysql> select e.incoming,d.dept_name from emp_new e join dept d on e.dept2=d.dept1 where e.name='李四';
- +----------+-----------+
- | incoming | dept_name |
- +----------+-----------+
- | 3500 | 财务 |
- +----------+-----------+
- 1 row in set (0.00 sec)
复制代码
16.列出部分员工数大于1个的部分名称
- mysql> select d.dept_name from emp_new e join dept d on e.dept2=d.dept1 group by d.dept_name having count(e.sid) > 1;
- +-----------+
- | dept_name |
- +-----------+
- | 财务 |
- | 销售 |
- +-----------+
- 2 rows in set (0.00 sec)
复制代码 小结
毗连方式
依业务需求选毗连类型。内毗连取匹配行;外毗连(左、右、全外)保留一侧或两侧表所有行;交叉毗连得笛卡尔积,非特定需求慎用。
理解差别毗连对结果集影响,如左毗连以左表为主,即便右表无匹配也有左表记载。
毗连条件
精准设置毗连条件,基于关联字段创建条件,保证结果正确。
防止遗漏毗连条件致笛卡尔积,使结果集巨大且无意义。
性能优化
仅选必要字段,不消`SELECT *`,降低数据传输与处理开销。
为毗连字段建索引,加快表毗连时数据匹配。
大数据量时,避免复杂嵌套子查询,可优化为毗连查询提升性能。
字段与别名
多表有同名字段,用表名.字段名明白所属,防肴杂。
公道用表与字段别名,让查询易读,别名简洁故意义。
数据完备性
多表更新删除操作,用事务确保原子性,保证数据一致性。
操作遵循外键约束,避免破坏数据关联关系。
子查询与联合查询
子查询注意实行顺序与结果集大小,避免结果集过大拖慢查询。
联合查询归并结果集,各部分列数与数据类型须一致。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |