以下SQL语句选择来自客户的CustomerID=4
(“环绕号角”)的所有订单。我们使用Customers
和Orders
表,并分别为它们提供c
和o
的表别名。 (这里我们使用别名来缩短SQL):
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the Horn"
AND c.CustomerID=o.CustomerID;
考虑到我是初学者,你能解释一下这个语法。
答案 0 :(得分:2)
这是上面代码的一个更简单的版本,没有使用Alias(b / c就是一开始让我感到困惑的事情)...如果没有别名,则如下所示读取代码要简单得多:
SELECT OrderID, OrderDate, CustomerName
FROM Customers, Orders
WHERE Customers.CustomerID=Orders.CustomerID
答案 1 :(得分:0)
SQL的变量参数是什么?如果它是一个文本"围绕着号角",那么SQL是正确的。无论如何总是使用id来过滤更好。如果你在以这种方式启动查询之前拥有id 4会更好:
SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerId=4 AND c.CustomerID=o.CustomerID;
你究竟要解释什么?你已经解释得很好了:))
别名如果要简化或在SQL中使用可能存在具有相同列名的表(就像你的那样),所以你要输入" tableAlias的前缀。"在列之前设置从哪个表中使用该列。换句话说,您可能会生成错误的"列模糊定义"。
干杯。
答案 2 :(得分:0)
使用SELECT
语句,您可以告诉您需要哪些表格列。如果有更多表具有相同的列名,则还必须具体说明表名(tableName.columnName)。
使用FROM
语句,您可以告诉要从中选择数据的表。在这个查询中有两个表与逗号分隔,这不是一个好主意,因为有JOIN
语句以正确的方式合并两个表。
最后,使用WHERE
语句,您可以告诉条件来过滤数据。在此查询中,您只需要name ='Around the Horn'的客户,并且您还要在客户和订单表中仅选择具有相同客户ID的行。
应使用FROM
中的连接条件指定最后一个条件:
FROM Customer AS c JOIN Orders AS o ON c.CustomerID = o.CustomerID
否则使用FROM
中的逗号,它会在两个表之间执行笛卡尔积,然后只选择具有第二个WHERE
条件的正确行。
我建议你阅读初学者的SQL指南