- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.0 数据查询(二)
多表查询 目标 使用等值和不等值连接在SELECT 语句中查询多个表中的数据 使用外连接查询不满足连接条件的数据 使用自连接 从多个表中获取数据 笛卡尔集 笛卡尔集会在下面条件下产生: 省略连接条件 连接条件无效 所有表中的所有行互相连接 为了避免笛卡尔集, 可以在 WHERE 加入有效的连接条件。 笛卡尔集 多表联合查询 多表联合查询 两个表的连接有四种连接方式: 等值连接 非等值连接 外连接 自连接 等值连接 通过两个表具有相同意义的列,可以建立相等连接条件。使用相等连接进行两个表的查询时,只有连接列在两个表中都出现且值相等的行才会出现在查询结果中。 在下面的示例中,将显示雇员姓名、所在的部门编号和名称,在雇员表emp中是没有雇员的部门名称信息的,只有雇员所在部门的编号,部门的信息在另外的部门表dept中,两个表具有相同的部门编号列deptno,可以通过该列建立相等连接。 【示例1】 显示雇员的名称和所在的部门的编号和名称 SELECT emp.ename,emp.deptno,dept.dname FROM emp,dept WHERE emp.deptno = dept.deptno; 说明: 相等连接语句的格式要求是,在FROM从句中依次列出两个表的名称,在表的每个列前需要添加表名,用“.”分隔,表示列属于不同的表。在WHERE条件中要指明进行相等连接的列。 以上训练中,不在两个表中同时出现的列,前面的表名前缀可以省略。 上例子可以简化为如下的表示: SELECT ename,emp.deptno,dname FROM emp,dept WHERE emp.deptno=dept.deptno; 等值连接基本语法 使用连接在多个表中查询数据。 在 WHERE 字句中写入连接条件。 在表中有相同列时,在列名之前加上表名前缀。 区分重复的列名 使用表名前缀在多个表中区分相同的列。 使用表名可以提高效率。 在不同表中具有相同列名的列可以用别名加以区分。 表的别名 使用别名可以简化查询。 使用表名前缀可以提高执行效率。 多个连接条件与 AND 操作符 【示例3】 显示工资大于3000的雇员的名称、工资和所在的部门名称 SELECT e.ename,e.sal,d.dname FROM emp e,dept d WHERE e.deptno=d.deptno AND e.sal3000; 连接多个表 连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。 【示例4】 显示工资大于10000的雇员的姓氏、部门名称和部门所在的城市 SELECT e.last_name,e.salary,d.department_name,l.city FROM employees e,departments d,locations l WHERE e.department_id=d.department_id AND d.location_id=l.location_id AND e.salary 10000; 非等值连接 【示例5】 显示雇员名称,工资和所属工资等级 SELECT e.ename, e.sal, s.grade FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal; 外连接 在以上的例子中,相等连接有一个问题:如果某个雇员的部门还没有填写,即保留为空,那么该雇员在查询中就不会出现;或者某个部门还没有雇员,该部门在查询中也不会出现 为了解决这个问题可以用外连,即除了显示满足相等连接条件的记录外,还显示那些不满足连接条件的行 外连操作符为”(+)”,它可以出现在相等连接条件的左侧或右侧。出现在左侧或右侧的含义不同。 【示例6】 显示雇员的名称、工资和所在的部门名称及没有任何雇员的部门 SELECT e.ename,e.sal,d.dname FROM emp e,dept d WHERE e.deptno(+)=d.deptno; 【示例7】显示雇员的名称、工资和所在的部门名称及没有属于任何部门的雇员 SELECT e.ename,e.sal,d.dname FROM emp e,dept d WHERE e.deptno=d.deptno(+); 实验与思考 比较下面两个SQL语句的执行结果,并思考原因: 外连接语法 使用外连接可以查询不满足连接条件的数据。 外连接的符号是 (+)。 自连接 说明: 为EMP表分别起了两个别名worker和manager,第一个表是雇员表,第二个表是经理表,因
您可能关注的文档
最近下载
- 天津财经大学2024届毕业生就业质量报告.pdf VIP
- 部编人教版五年级数学上册《小数乘法(全章)》PPT教学课件.ppt VIP
- 数字集成电路部分课后习题chapter11ex.pdf VIP
- 安全通信与安全通信标准EN50159.pdf VIP
- 消防安全管理方案.docx VIP
- 锂电池储能系统技术协议.docx VIP
- 四年级数学下册《每日一练》全52套.pdf VIP
- 2025年福建厦门海关口岸门诊部招聘检验检测岗8人笔试附带答案详解.docx VIP
- 部编版语文四年级上册全册教案.pdf VIP
- DB37_T 4614.2-2023 “爱山东”政务服务平台移动端 第2部分:运营管理规范.docx VIP
文档评论(0)