sql多表连接

张开发
2026/5/4 3:16:47 15 分钟阅读
sql多表连接
1、两个表连接eg:工资表salaries管理者表dept_manager联立两个表查找管理者的工资把其他员工的筛选掉select sa.emp_no,sa.salaryfrom salaries sa right join dept_manager deon sa.emp_no de.emp_noorder by emp_no2、三表连接题目一共三张表1学生表 studentsid 学生 ID主键sname 姓名sage 年龄2成绩表 scorescid 成绩 IDsid 学生 IDcid 课程 IDscore 分数3课程表 coursecid 课程 ID主键cname 课程名题目需求把三张表连接起来查询出学生姓名、课程名、分数只查询 年龄在 1822 岁之间 的学生成绩按分数从高到低排序代码编写SELECTs.sname,c.cname,sc.scoreFROM student sINNER JOIN score sc ON s.sid sc.sid //等值连接INNER JOIN course c ON sc.cid c.cidWHERE s.sage BETWEEN 18 AND 22 //限定范围ORDER BY sc.score ASC;3、三表不等值连接三个表部门表 dept、员工表 emp、工资等级表 salgrade1部门表 deptdeptno 部门编号dname 部门名称2员工表 empempno 员工编号ename 姓名sal 工资deptno 部门编号3工资等级表 salgradegrade 等级losal 最低薪资hisal 最高薪资题目需求把三张表链式连接查询筛选出工资在 20005000 之间的员工显示员工姓名、部门名称、工资、工资等级按部门编号升序、工资降序排序代码编写SELECTe.ename,d.dname,e.sal,g.gradeFROM emp eJOIN dept d ON e.deptno d.deptnoJOIN salgrade g ON e.sal BETWEEN g.losal AND g.hisal //不等值连接员工的工资落在这个工资等级的区间里就把这两行连起来WHERE e.sal BETWEEN 2000 AND 5000ORDER BY e.deptno ASC, e.sal DESC;4.四表连接四个表学生表 student、成绩表 sc、课程表 course、教师表 teacher1学生表 studentsid 学生 IDsname 姓名sgender 性别sage 年龄2成绩表 scscidsid 学生 IDcid 课程 IDscore 分数3课程表 coursecid 课程 IDcname 课程名tid 教师 ID4教师表 teachertid 教师 IDtname 教师姓名tdept 教师所属院系tlevel 教师职称教授 / 副教授 / 讲师 / 助教把 4 张表全部连接起来查询出学生姓名、性别、课程名、分数、教师姓名、教师院系、教师职称筛选条件全部要满足学生年龄 1822 岁课程分数 60只查询 教师职称为 教授 或 副教授 的课程成绩只保留 计算机学院、外国语学院 的教师所教课程结果按 分数降序 排序代码编写SELECTs.sname,s.sgender,c.cname,sc.score,t.tname,t.tdept,t.tlevelFROM student sJOIN sc ON s.sid sc.sidJOIN course c ON sc.cid c.cidJOIN teacher t ON c.tid t.tidWHEREs.sage BETWEEN 18 AND 22AND sc.score 60AND t.tlevel IN (教授,副教授)AND t.tdept IN (计算机学院,外国语学院)ORDER BY sc.score DESC;

更多文章