目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7094.3k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(4.7k)
赞(0)

SQL92标准中的查询

等值连接

image-20211109210650492

等值连接

为了确定一个雇员的部门名,需要比较 EMPLOYEES 表中的 DEPARTMENT_ID 列与DEPARTMENTS 表中的 DEPARTMENT_ID 列的值。在 EMPLOYEES 和DEPARTMENTS 表之间的关系是一个相等 (equijoin) 关系,即,两 个 表 中DEPARTMENT_ID 列的值必须相等。

等值连接特点:

  1. 多表等值连接的结果为多表的交集部分;
  2. n表连接,至少需要n-1个连接条件;
  3. 多表不分主次,没有顺序要求;
  4. 一般为表起别名,提高阅读性和性能;
  5. 可以搭配排序、分组、筛选….等子句使用;

注意:


等值连接也被称为简单连接 (simple joins) 或内连接 (inner joins)。

等值连接的使用

image-20211110160356636

  • SELECT 子句指定要返回的列名:

    − employee last name、employee number 和 department number,这些是

EMPLOYEES 表中的列

− department number、department name 和 location ID,这些

是 DEPARTMENTS 表中的列

  • FROM 子句指定数据库必须访问的两个表:

− EMPLOYEES 表

− DEPARTMENTS 表

  • WHERE 子句指定表怎样被连接:

    EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID,因为 DEPARTMENT_ID 列是两个表的同名列,它必须用表名做前缀以避免混淆。

增加搜索条件

image-20211110161209183

添加查询条件

除连接之外,可能还要求用 WHERE 子句在连接中限制一个或多个表中的行。

限制不能缺的列

image-20211110161457766

限制不明确的列名

  • 需要在 WHERE 子句中用表的名字限制列的名字以避免含糊不清。没有表前缀,DEPARTMENT_ID 列可能来自 DEPARTMENTS 表,也可能来自 EMPLOYEES 表,这种情况下需要添加表前缀来执行查询。
  • 如果列名在两个表之间不相同,就不需要限定列。但是,使用表前缀可以改善性能,因为MySQL服务器可以根据表前缀找到对应的列。
  • 必须限定不明确的列名也适用于在其它子句中可能引起混淆的那些列,例如 SELECT子句或 ORDER BY 子句。

使用表别名

image-20211110161836968

表别名定义原则

  • 表别名不易过长,短一些更好。
  • 表别名应该是有意义的。
  • 表别名只对当前的 SELECT 语句有效。

多表连接

image-20211110162219581

示例一:

查询雇员 King 所在的部门名称。

示例二:

显示每个雇员的 last name、departmentname 和 city。

实时效果反馈

1.n表连接,至少需要个连接条件。

A n

B 1

C n-1

D n+1

2.等值连接是使用作为连接条件。

A 值的相等性

B 值的相反性

C 值的不同性

D 值的相似性

答案

1=>C 2=>A

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2