我正在尝试从w3schools教程中了解JOIN命令,并且有一个示例。 你可以把它“翻译”给我,它到底是做什么的吗?我已经知道这些点是做什么的,但INNER JOIN,ON等等搞砸了我?
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
它是否在我的SQL数据库中创建了一个新表,或者它只是创建(让我们称之为...)“虚拟”表,我可以在当下使用它
答案 0 :(得分:1)
此处的点符号表示表格的列。
Table.Column
因此SELECT
正在检索每个表中指定的列。
JOIN
根据ON
之后显示的条件匹配表格
此查询根据具有相同CustomerID
的条件将客户连接到订单。
有关联接的详情,请查看http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
答案 1 :(得分:0)
也许首先要理解的是“点符号”。当您看到类似Orders.CustomerID的值时,SQL将读取它以表示Orders表中的CustomerID列。
INNER JOIN正在寻找您使用ON子句指定的记录的完全匹配...
因此,在此示例中,SQL将首先查找Orders表中的所有记录,这些记录的CustomerID与Customers表中的CustomerID相匹配。
然后,它将查看SELECT子句并向您显示OrderID(来自Orders表),CustomerName(来自Customers表)和Orders表中的OrderDate。
如果您正在使用SQL Server Management Studio(SSMS)或其他类似工具,它应该显示您的结果 - 有点像虚拟表......但它实际上并不创建表。
希望有所帮助,
罗素
答案 2 :(得分:0)
有内部和外部联接。我认为这篇文章很好地总结了这些差异。
What is the difference between "INNER JOIN" and "OUTER JOIN"?
就概念本身而言,您通过根据每个表中的共享值查找它们之间的共同点来“加入”表。如果您曾经使用Microsoft Excel进行过vlookup,那么您就熟悉这个概念了。在您发布的查询中,您正在从订单和客户表中选择值。您可以通过前缀Orders告诉您正在从哪个表中选择值。或客户。然后,您可以通过点后面的值(即OrderID,CustomerName,OrderDate。
)来确定哪一列查询知道拉取联合字段的方式是CustomerID字段是否匹配。
一步一步
您正在选择
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
从表格订单
FROM Orders
您希望从客户中提取相应的值。每种方法都有很多连接方法和逻辑,但您已选择上面链接中解释的INNER JOIN。
INNER JOIN Customers
加入的标准是CustomerID
ON Orders.CustomerID=Customers.CustomerID;
使用近似的Excel Vlookup类比
Lookup_value是CustomerID
Table数组是ORDERS
范围查找是您正在执行的联接类型
答案 3 :(得分:0)