Les04_多表连接.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Les04_多表连接

具体内容 SQL 的标准:ANSI标准SQL的版本 SQL:92 SQL:1999是ANSI标准SQL的最新版本,正在制定更新的SQL版本(称为SQL:2003)。 一 多表查询 之前查询的数据都是一张表的,现在使用一张以上的表,就称为多表查询 1 多表连接查询 基本语法 SELECT {DISTINCT} *|列名1 别名1... FROM 表名1 别名1,表名2 别名2,... {WHERE 条件表达式} {ORDER BY 排序字段1 ASC|DESC,...} 例:使用多表查询,同时查询emp 和 dept 表 SELECT * FROM emp,dept 以上的查询使用了两张表进行同时查询, 从结果上看,返回数据 56 条,但 emp 表14条,dept表4条 例:查询emp表的记录数 SELECT COUNT(*) FROM EMP; 例:查询 dept 表的记录数 SELECT COUNT(*) FROM dept; 56条记录 = emp表中的14条× dept表中的4条 在使用多表查询时会产品生笛卡尔积。表数据越多,笛卡尔积越大。 如果假设有5张表,每张表的数据有10000条,结果将为生10000的5次方条记录 所以开发中基本上不建议过多的使用 要想去掉笛卡尔积必须使用字段进行关联操作 如何关联? 在emp表中有 deptno 字段,而在dept表中也有 deptno 字段,而且发现emp表的deptno 的取值范围都在dept表的 deptno规定的范围内,所以两张表的deptno属于关联字段 即:emp中的deptno = dept中的deptno,关联字段 在多表查询中将关联字段加入 WHERE 语句,即可消除笛卡尔积,此时称为等值联接 语法如下: SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2; 例: 修改之前的操作 SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO; 此时查询只有 14 条记录 但是,又出现了新问题,如果表名过长的话,写起来很麻烦,此时一般会为表起别名 即: SELECT * FROM EMP e ,DEPT d WHERE e.DEPTNO=d.DEPTNO; 注意:如果表有别名的话,那么在使用列名是只能用 别名.列名 使用多表查询时,最好指定别名 例:要求查询雇员的编号,姓名,部门编号,部门名称及部门位置 Select e.empno,e.ename,d.deptno,d.dname,d.loc From emp e,dept d Where e.deptno = d.deptno; 例:要求查询雇员的编号,姓名,部门编号,部门名称及部门位置要求部门位于“CHICAGO” Select e.empno,e.ename,d.deptno,d.dname,d.loc From emp e,dept d Where e.deptno = d.deptno AND d.loc=’CHICAGO’; 可用 “表名.列名” 指定要查询那张表的那个列 2 自我联接 自连接是数据库中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。 例:要求查询出每个雇员的姓名,工作,雇员的直接上级领导的姓名 分析:雇员的领导也是雇员 SELECT w.ename,w.job,m.ename FROM emp w,emp m WHERE w.mgr=m.empno ORDER BY w.empno; 例:要求扩展功能,将雇员所在的部门名称同是列出 分析:部门名称在 dept 表中 SELECT E.EMPNO,E.NAME,D.DNAME FROM EMP E,DEPT D WHERE E.DEPTNO = D.DEPTNO 3 非等值联接(NONEQUIJOIN) NONEQUIJOIN联接两个或多个表时,在条件中不使用等号(=),而是用如,,=,=,!=,BETWEEN...AND或IN等比较运算符 例:查询员工姓名,工资及 工资 等级 -- SALGRADE 工资表   --DESC SALGRADE;   --SELECT * FROM SALGRADE;   -- 显示员工的编号,

您可能关注的文档

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档