使用SQL Alias vs Inner Join,有什么区别?

时间:2017-02-12 20:04:07

标签: sql

http://www.w3schools.com/sql/sql_alias.asp中,它提到使用别名来执行以下查询,

SELECT 
    Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM 
    Customers, Orders
WHERE 
    Customers.CustomerName = "Around the Horn" 
    AND Customers.CustomerID = Orders.CustomerID;

这让我对JOIN的使用感到困惑。是不是这种查询加入了两个表中的列?这种查询和JOIN之间有什么区别?

3 个答案:

答案 0 :(得分:2)

JOIN和别名是两个不同的概念..别名用于创建替代名称(通常更短)以便更容易的对象引用和更容易阅读..因此您可以拥有列名别名或表名别名,例如:

select a.col1 
from my_table as a 

a是表my_table的别名
 或

select a.col1  as c1
from my_table as a 

其中c1是col1的别名

JOIN用于表之间的构建关系 加入可能是暗示或明显的

在您的代码中,您使用了implici join,并且保持关系的表之间的条件基于where子句

但你可以使用更明确的方式使用explict join

SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers
INNER JOIN  Orders on Customers.CustomerID=Orders.CustomerID;
WHERE  Customers.CustomerName="Around the Horn" 

答案 1 :(得分:0)

  

两者相同,没有区别。

可读性存在差异。 在我看来,PLSQL(ORACLE)开发人员在编写查询时选择别名,然后选择public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button exit =(Button)findViewById(R.id.button2); exit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast t =Toast.makeText(getApplicationContext(),getString(R.string.exitMessage),Toast.LENGTH_SHORT); t.show(); finish(); } }); } }

选择的TSQL(SQL Server)开发人员

答案 2 :(得分:0)

您的问题的答案是您的查询与内部联接之间没有区别,但很多时候,在未明确定义关系的表之间进行写入查询或表格可能不需要关系。在这些情况下,您将使用左连接从第一个表返回数据,并使用右侧表中的零到多个项。使用您的格式,使写入和阅读更加困难。至于表别名,例如在编写自联接时,您需要使用它们,因此理解它们是必不可少的。