连接查询知识点以及案例
1 #进阶6连接查询 2 /* 3 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 4 笛卡尔乘积现象:表1 有m行,表2 有n行,结果=m*n行 5 发生原因:没有有效的连接条件 6 如何避免:添加有效的连接条件 7 8 分类: 按年代分类:sql92标准 sql99标准【推荐】支持内连接+外连接(左外+内外)+交叉连接 9 按功能分类;内连接: 10 等值连接 非等值连接 自连接 11 外连接: 12 左外连接 右外连接 全外连接 13 交叉连接 14 */ 15 16 SELECT * FROM beauty; 17 18 SELECT * FROM boys; 19 20 21 #一、sql92标准 22 #1.等值连接 23 24 /* 25 ①多表等值连接的结果为多表的交集部分 26 ②n表连接,至少需要n-1个连接条件 27 ③多表的顺序没有要求 28 ④一般需要为表起别名 29 ⑤可以搭配前面介绍的所有子句使用,比如排序、分组、筛选 30 */ 31 32 #案例1:查询女神名对应的男神名 33 SELECT NAME,boyName from boys,beauty 34 WHERE beauty.boyfriend_id=boys.id; 35 36 #案例2;查询员工名和对应的部门名 37 SELECT last_name,department_name 38 FROM employees,departments 39 WHERE employees.department_id=departments.department_id; 40 41 #2.为表起别名 42 /* 43 ①提高语句的简洁度 44 ②区分多个重名的字段 45 注意:如果为表起了别名,则查询的字段就不能使用原来的表名去限划 46 */ 47 #查询员工号、工种号、工种名 48 49 SELECT last_name,e.job_id,job_title 50 FROM employees as e,jobs j 51 WHERE e.job_id=j.job_id; 52 53 #3、两个表的顺序是否可以调换 54 #查询员工名、工种号、工种名 55 SELECT last_name,e.job_id,job_title 56 FROM jobs j,employees as e 57 WHERE e.job_id=j.job_id; 58 59 #4、可以加筛选? 60 #案例:查询有奖金的员工名、部门名 61 SELECT last_name,department_name,commission_pct 62 FROM employees e ,departments d 63 WHERE e.department_id=d.department_id 64 AND e.commission_pct is not NULL; 65 66 #案例2:查询城市名中第二个字符为o的部门名和城市名 67 SELECT department_name,city 68 FROM departments d,locations l 69 WHERE d.location_id=l.location_id 70 and city LIKE '__a%'; 71 72 #5.可以加分组? 73 #案例1:查询每个城市部门个数 74 SELECT COUNT(*) 个数,city 75 FROM departments d,locations l 76 WHERE d.location_id=l.location_id 77 GROUP BY city; 78 79 #案例2:查询出有奖金的每个部门的部门名和部门的领导编号和钙部门的最低工资 80 81 SELECT department_name,d.manager_id,MIN(salary) 82 FROM departments d,employees e 83 WHERE d.department_id=e.department_id 84 and commission_pct is not NULL 85 GROUP BY department_name; 86 87 #6.可以加排序 88 89 #案例:查询每个工种的工种名和员工的个数,并且按员工个数降序 90 SELECT job_title,COUNT(*) 91 FROM employees e,jobs j 92 WHERE e.job_id=j.job_id 93 GROUP BY job_title 94 ORDER BY COUNT(*) desc; 95 96 #7.可以实现三表连接?可 97 #案例:查询员工名、部门名和所在的城市 98 99 SELECT last_name,department_name,city 100 FROM employees e,departments d,locations l 101 WHERE e.department_id=d.department_id 102 and d.location_id=l.location_id 103 and city like 's%';
作者:Esofar
出处:https://www.cnblogs.com/deyo/p/13245843.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本文来自博客园,作者:自律即自由-,转载请注明原文链接:https://www.cnblogs.com/deyo/p/13245843.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY