在SQL连接中为什么我们使用tablename.column_name
而在其他人中我们只使用列名称为什么在SQL连接中使用dot?
答案 0 :(得分:1)
如果列名存在于tablename.column_name
的多个表中,则只需使用JOIN
。它需要知道您指的是哪个表格列。
如果列名明确无误,您只需编写column_name
即可。但是一些程序员喜欢保持一致并且一直使用显式形式。
答案 1 :(得分:1)
假设您有两个表:客户端和地址。
(现在不太可能,但要告诉你我的意思)你的同事会创建一个这样的查询:
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
* NAME
和EMP_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中的.
用于将列名与表相关联。例如,有两个表Employee
和salary
,并且会有一个公共列ID
,用于查询以选择员工的薪水并输出{{1} }和salary
但不是name
。
为此,我们使用以下查询
ID
这里第一行中的SELECT Employee.name, salary.salary
FROM Employee
INNER JOIN salary
ON Employee.ID=salary.ID;
用于选择哪个表中的哪一列和最后一行中的.
用于检查两个表中的.
,以及那些表名称在ID
如果最后一行如下所示。
.
会出现冲突/混淆,因此会触发错误。
喝彩!
勒凯什