MySQL(题目讲解二)

📅 2026/8/9 3:48:53
MySQL(题目讲解二)
༺ 个人主页 · 纪念229 ༻我的博客主页༒专栏目录《数据结构》༒༒专栏目录《算法》༒༒专栏目录《MySQL数据库》༒༒其它有趣的计算机知识༒༺世上本没有路走的人多了自然就有了༻本篇文章讲的是我在做MySQL题中的一些见解希望对你有所帮助。这里有个提醒sql题中有些就没给测试用列所以测试用列错误试着提交看看这题是否OJ以下是题目链接文章目录1.查找所有员工入职时候的薪水情况2.获取所有非manager的员工emp_no3.获取所有员工当前的manager1.查找所有员工入职时候的薪水情况题目如下所示题目要求查找所有员工入职时候的薪水情况给出emp_no以及salary 并按照emp_no进行逆序(请注意一个员工可能有多次涨薪的情况)看题所知给了两个表一般来说都要用上给出emp_no以及salaryemp_no两表都有salary只有salaries有显然这是多表联合查询代码展示select e.emp_no,s.salary from employees e join salaries s on e.emp_nos.emp_no where e.hire_dates.from_date order by e.emp_no desc;讲解多表联合查询分为两种1.两张表存在关联字段统称连接查询JOIN细分3类内连接 INNER JOIN只取出两边能匹配上关联键的数据你截图里这条就是​左外连接 LEFT JOIN保留左表全部数据右表匹配不到填 NULL​右外连接 RIGHT JOIN保留右表全部数据左表匹配不到填 NULL2.两张表不存在关联字段叫笛卡尔积首先多表联合查询用的两个表要用别名且用join连接要想有关联后接on 表之间的关系代码展示select e.emp_no,s.salary from employees e join salaries s on e.emp_nos.emp_no给出emp_no以及salary两表中都有emp_no说明两表有关联怎么写上面代码已解释过了注意e.emp_no, s.salary也可以写成s.emp_no, s.salary只不过s表是主表所以用它查找所有员工入职时候的薪水查找用where可以找入职时间我们看表employees中有hire_date入职时间salaries中有from_datedate NOT NULL,to_datedate NOT NULL,这里指上班从哪天开始到现在用where where e.hire_dates.from_date这么写在查找薪水即可找到员工入职时候的薪水情况最后emp_no进行逆序order by e.emp_no desc;注意括号里的内容与找所有员工入职时候的薪水情况无关用不着考察的是对题目的了解这是一个坑2.获取所有非manager的员工emp_no题目如下所示语法展示select e.emp_no from employees e left join dept_manager d on e.emp_nod.emp_no where d.emp_no ISNULL;要求请你找出所有非部门领导的员工emp_no这里讲一下内连接、左外连接、右外连接以此题目来讲两表dept_manager和emp_noon e.emp_nod.emp_no以emp_no为链接注意连接不改变表的实际结构只是展示结构发生改变内连接左右两边只留下emp_no相同的行左外连接左表不变右表emp_no 多加10001但是内容全为NULL右外连接右表不变左表去掉emp_no 10001的那一行找出非部门领导的员工emp_nowhere d.emp_no ISNULL由这题看select e.emp_no from employees e left join dept_manager d on e.emp_nod.emp_no因为是左外连接表 IS NULL作用找出该表为NULL的那一行即该题求的所有非部门领导的员工emp_no3.获取所有员工当前的manager题目如下所示语法展示select e.emp_no emp_no,m.emp_no manager from dept_emp e join dept_manager m on e.dept_nom.dept_no where e.emp_nom.emp_no;题目要求获取所有的员工和员工对应的经理讲解首先题目给了两个表说明是关联表问题获取所有的员工和员工对应的经理找的人在同一部门及on e.dept_nom.dept_no(dept_no部门编号前提)如果员工本身是经理的话则不显示说明在同一部门情况下e和m两表的编号不同where e.emp_nom.emp_no因为用的是关联表select显示的是e.xxxxx/m.xxxxx题目要求取别名即可e.xxxxx/m.xxxxx 别名/ e.xxxxx/m.xxxxx as 别名文章到此就告一段落希望对你有所帮助感谢观看