学生寻求CSC考试的建议

我是一名学习SQL和DB课程的学生。我的问题是:如何擅长编写查询?我们的期末考试将包含许多这样的问题,我想做得很好。我们也不允许任何形式的参考表,仅供参考。

我想我要问的是:您将如何处理?

Loewe2658 回答:学生寻求CSC考试的建议

简而言之,您也需要实践来实践sql。

,

您可能会从其他人那里获得很多意见。除了练习和阅读外,请尝试确保您了解查询的绝对基础和顺序。

始终使用table.column或alias.column来帮助防止某些来源的歧义。

了解编写查询的总体基本步骤,例如

select
      [all your alias.columns comma separated]
   from
      [your primary and/or JOIN/LEFT JOIN/etc tables]
   where
          [what is the criteria you are looking for]
      AND [use proper parenthesis to prevent ambiguity if so needed]
   group by
      [any columns if doing aggregates such as count,min,max,avg,etc]
      [you need to list all NON-AGGREGATE alias.columns]
   having
      [if any,such as count(*) > someValue]
   order by
      [any specific columns and ascending or descending order]
      [such as orderDate DESC to put most recent order at top]

我认为,获取FROM子句是最重要的事情之一,我尝试始终在第一个表/别名=第二个表/别名上列出我的表JOIN子句。缩进在这里有帮助,因此您可以查看如何从一张桌子到另一张桌子。在这一点上,不要考虑您的过滤(YET),只是如何关联表。然后,您可以为从该来源专门寻找的内容添加“ AND”条件。

订单示例。寻找最近30天内订购的客户。从该源开始,作为您的第一个FROM表,其他所有内容都从该表开始。所以我从订单开始,因为我关心何时订购。然后,我可以加入客户以获得他们的名字。

select
      c.LastName,c.FirstName,o.OrderDate
   from
      Orders o
         JOIN Customers c
            on o.CustomerID = c.CustomerID
   where
      o.OrderDate > [sql-specific current date - 30 days]
   order by
      c.LastName,c.FirstName

在过去30天内订购特定商品的另一个订单示例。在这种情况下,我可以颠倒细节的顺序,因为要订购的特定物品可能比所有物品的粒度都小。因此,更改上面的

select
      c.LastName,o.OrderDate
   from
      Items i
         JOIN OrderDetails od
            on i.ItemID = od.ItemID
            JOIN Orders o
               on od.OrderID = o.OrderID
               AND o.OrderDate > [sql-specific current date - 30 days]
               JOIN Customers c
                  on o.CustomerID = c.CustomerID
   where
      i.ItemDescription = 'SomeThing'
   order by
      c.LastName,c.FirstName

注意缩进嵌套。个人风格偏好,但至少您可以看到i到od,od到o,o到c的别名。以我的偏爱,更容易看到表的痕迹以及它们之间的直接关系。我还添加了“ AND”子句,以直接在JOIN到订单表中过滤最近30天内的订单。

左联接,我也这样做,并将条件直接保持在联接级别。如果将左联接的条件放入WHERE子句中(而没有显式处理NULL或[condition],它将把左联接变成[INNER]联接。

希望此基本指南可帮助您在编写自己的查询和课程/考试准备方面变得更加舒适。

本文链接:https://www.f2er.com/3115327.html

大家都在问