为什么在sql连接中使用dot?

时间:2014-09-08 07:17:18

标签: sql join

在SQL连接中为什么我们使用tablename.column_name而在其他人中我们只使用列名称为什么在SQL连接中使用dot?

5 个答案:

答案 0 :(得分:1)

如果列名存在于tablename.column_name的多个表中,则只需使用JOIN。它需要知道您指的是哪个表格列。

如果列名明确无误,您只需编写column_name即可。但是一些程序员喜欢保持一致并且一直使用显式形式。

答案 1 :(得分:1)

假设您有两个表:客户端和地址。

  • 客户端表包含以下列:ID,Name,AddressId
  • 地址表包含以下内容:ID,AddressField1,AddressField2

(现在不太可能,但要告诉你我的意思)你的同事会创建一个这样的查询:

 SELECT ID
 FROM Clients C
 JOIN Addresses A
 ON A.ID = C.AddressId

如果你看一下,你能确定他想拿哪个ID吗? SQL也不行,这就是你必须用表名或别名定义的原因。

如果他愿意这样做

 SELECT Name
 FROM Clients C
 JOIN Addresses A
 ON A.ID = C.AddressId

您可以轻松告诉他正在查找哪个“名称”,因为在此上下文中只有一个具有该名称的列。

答案 2 :(得分:0)

如果两个表具有相同的列名,则用于解决歧义。因此,举个例子,假设你有两个表employee和department,并且都有一个id列。

如果你想使用id字段加入两个表。然后,因为id字段是不明确的,所以你必须写这样的表名:

select * from emp inner join departement on emp.id = departement.id

即使您想在加入时从两个表中获取某些特定列,也可以使用tablename.column名称语法

select emp.name, departement.name 
from emp inner join departement on emp.id = departement.id

答案 3 :(得分:0)

最佳做法是使用并为您提供清晰度,避免混淆SQL以确定您所指的哪个表的哪个字段!

顺便说一句,tablename.column_name不一定仅用在连接中。它可以在任何地方使用。它也可以用作table_alias_name.column_name

示例:

TABLEA : EMP_ID, NAME, ADDRESS
TABLEB : EMP_ID, EMP_NAME, PHONE_NUMBER, MOBILE_NUMBER

* NAMEEMP_NAME具有相同的值

您的查询:

1. Below will cause error, since it does not know if EMP_ID belongs to TABLEA or TABLE B
SELECT EMP_ID , NAME, PHONE_NUMBER FROM TABLEA, TABLEB


2. Below queries will NOT cause error 
SELECT TABLEA.EMP_ID , NAME, PHONE_NUMBER FROM TABLEA, TABLEB;
SELECT A.EMP_ID, NAME, PHONE_NUMBER FROM TABLEA A, TABLEB B;

-- Below would be recommended best practice to use for referring to variables:
SELECT A.EMP_ID, A.NAME, B.PHONE_NUMBER FROM TABLEA A, TABLEB B;

答案 4 :(得分:0)

sql中的.用于将列名与表相关联。例如,有两个表Employeesalary,并且会有一个公共列ID,用于查询以选择员工的薪水并输出{{1} }和salary但不是name

为此,我们使用以下查询

ID

这里第一行中的SELECT Employee.name, salary.salary FROM Employee INNER JOIN salary ON Employee.ID=salary.ID; 用于选择哪个表中的哪一列和最后一行中的.用于检查两个表中的.,以及那些表名称在ID

之前给出

如果最后一行如下所示。

.

会出现冲突/混淆,因此会触发错误。

喝彩!

勒凯什