为什么在sql联接中使用点?

为什么在sql联接中使用点?,sql,join,Sql,Join,在SQL联接中,为什么我们使用tablename.column\u name,而在其他联接中,我们仅使用列名为什么在SQL联接中使用dot?如果联接中的多个表中存在列名,则只需使用tablename.column\u name。它需要知道您所指的是哪个表的列 如果列名是明确的,您可以只写列名。但是一些程序员更喜欢保持一致,并且始终使用显式形式。如果两个表具有相同的列名,则使用显式形式来解决歧义。让我们举一个例子,假设您有两个表employee和department,其中都有一个id列 如果要使用

在SQL联接中,为什么我们使用tablename.column\u name,而在其他联接中,我们仅使用列名为什么在SQL联接中使用dot?

如果联接中的多个表中存在列名,则只需使用tablename.column\u name。它需要知道您所指的是哪个表的列


如果列名是明确的,您可以只写列名。但是一些程序员更喜欢保持一致,并且始终使用显式形式。

如果两个表具有相同的列名,则使用显式形式来解决歧义。让我们举一个例子,假设您有两个表employee和department,其中都有一个id列

如果要使用id字段连接这两个表。然后,由于id字段不明确,因此必须按如下方式写入表名:

select * from emp inner join departement on emp.id = departement.id
 SELECT ID
 FROM Clients C
 JOIN Addresses A
 ON A.ID = C.AddressId
即使要在连接时从两个表中获取某些特定列,也可以使用tablename.column name语法

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

这是最好的使用方法,它使您能够清楚地了解并避免SQL在确定您所引用的表的哪个字段时出现混淆

顺便说一句,tablename.column_name不一定单独用于联接。它可以在任何地方使用。它也可以用作表\u别名\u名称。列\u名称

例如:

TABLEA : EMP_ID, NAME, ADDRESS
TABLEB : EMP_ID, EMP_NAME, PHONE_NUMBER, MOBILE_NUMBER
*名称和EMP_名称具有相同的值

您的查询:

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;

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

Clients表包含以下列:ID、Name、AddressId Addresses表包含以下内容:ID、AddressField1、AddressField2 现在不太可能了,但为了向您展示我的意思,您的同事创建了一个如下的查询:

select * from emp inner join departement on emp.id = departement.id
 SELECT ID
 FROM Clients C
 JOIN Addresses A
 ON A.ID = C.AddressId
如果你看一下,你能确定他要拿哪个身份证吗? SQL也不能,这就是为什么必须使用表名或别名进行定义

如果他愿意的话

 SELECT Name
 FROM Clients C
 JOIN Addresses A
 ON A.ID = C.AddressId
你可以很容易地分辨出他要找的是哪个名字,因为在这个上下文中只有一列有这个名字。

。在sql中,用于将列名与表关联。例如,有两个表作为Employee和salary,有一个公共列作为ID,用于查询选择员工的薪资并输出薪资和姓名,但不输出ID

为此,我们使用下面的查询

SELECT Employee.name, salary.salary
FROM Employee
INNER JOIN salary
ON Employee.ID=salary.ID;
给你。在第一行中,用于选择表的哪一列和。最后一行用于检查这两个表中的ID,前面给出了这些表的名称

如果最后一行如下所示

ON ID=ID;
可能会出现冲突/混乱,因此会触发错误

干杯


Rakesh

因为我们要连接两个表,所以必须指定它是哪个表,因为多个表可能具有相同的列名,需要确定您实际引用的列如果您给出一个语法混乱的示例查询,这将是一个更好的问题!因为这是最佳实践,让您能够清楚地了解并避免SQL在确定您所引用的表的哪个字段时出现混淆!顺便说一句,tablename.column_name不一定单独用于联接。它可以在任何地方使用。它也可以用作表\u别名\u名称。列\u名称