SQL基础之多表查询(十)

连接类型和它的语法

自然连接(自然连接):

——自然加入子句

——使用子句

-> <李>

在多表中使用表前缀限制列名

<李>

使用表前缀可以提高效率

<李>

使用表别名代替全表名前缀

<李>

表别名提供一个较短的名称:

,,- SQL代码量更少,使用较少的内存

<李>


<李>

自然加入子句,会以两个表中具有相同名字的列为条件创建等值连接。

<李>

在表中查询满足等值条件的数据。

<李>

如果只是列名相同而数据类型不同,则会产生错误。

<李>

如果多个列名符合,都会做为条件。


1,查询department_id和department_name在哪些城市

选择department_id department_name, location_id城市部门自然加入位置;

 SQL基础之多表查询(十)


使用使用子句创建连接

<李>

如果多个列具有相同的名称,但自然连接的数据类型又不匹配,则可以使用使用子句来指定,使用一个等值的列

<李>

当有多个列匹配时,用使用子句匹配唯一的列

<李>

自然连接和使用子句互斥

<李>


1,查询employee_id、last_name、location_id从员工表,并且使用department_id为指定键值

选择employee_id last_name、location_id department_id使用(department_id);从员工加入部门

 SQL基础之多表查询(十)


子句创建连接

<李>

自然连接中是以具有相同名字的列为连接条件的,李,

<李>

使用在子句指定要连接任意条件或指定列连接条件

<李>

这个连接条件是与其它条件分开的

<李>

子句使语句具有更高的易读性


1,查找员工和部门的两张表员工信息,并按照department_id为条件

选择e。employee_id e。last_name、e.department_id d.department_id d。location_id从员工e加入部门d alt=" SQL基础之多表查询(十)">


使用,子句或在子句适用附加条件:查询manager_id为149年的

选择e。employee_id e。last_name、e.department_id

d.department_id, d。从员工location_id

e加入部门d

(e.department_id=d.department_id)

和e。manager_id=149;

 SQL基础之多表查询(十)

或者

选择e。employee_id e。last_name、e.department_id

d.department_id, d。从员工location_id

e加入部门d

(e.department_id=d.department_id)

e。manager_id=149;

 SQL基础之多表查询(十)


使用> <李>

在SQL: 1999中,两个表连接,只返回匹配的行,被称为内连接。

<李>

两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右)外连接。

<李>

两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为全外联接。


选择e。last_name、e.department_id d.department_name

从员工e左外连接部门d

(e.department_id=d.department_id) order by department_id desc;

 SQL基础之多表查询(十)


选择e。last_name、e.department_id d.department_name

从员工e右外连接部门d

(e.department_id=d.department_id);

 SQL基础之多表查询(十)


选择e。last_name、d.department_id d.department_name

从员工e全外连接部门d

(e.department_id=d.department_id);

 SQL基础之多表查询(十)



笛卡尔积


<李>

笛卡尔集会在下面条件下产生:

——连接条件被遗漏

——连接条件不正确

SQL基础之多表查询(十)