SQL 查询生成器

SQL 查询生成器或设计器让开发人员可以轻松地设计查询。但是,如果您不知道如何编写查询,并且发现执行排序、分组和连接操作具有挑战性。或者,如果您发现设计复杂查询具有挑战性,请使用此生成器通过图形用户界面设计您想要的查询。

SQL 查询生成器示例

在我们开始使用这个简单的查询设计器或生成器之前,我们必须选择数据库。如果它是默认的“master”,请将其更改为所需的数据库。在这里,我们选择了 Adventure Works DW 2014。

右键单击此窗口中的空白区域将打开上下文菜单。请从中选择“在编辑器中设计查询…”选项。

Choose Design Query in Editor option from context menu 2

单击该选项后,将打开一个单独的窗口,如下所示。在设计任何内容之前,您应该了解 SQL 查询生成器或设计器中的不同窗格。

  1. 图表窗格:此窗格用于选择表、视图或函数。GUI 将根据数据库关系自动连接表。选择所需的表后,我们可以通过勾选这些列来选择所需的列。
  2. 网格窗格:所有选定的列都将显示在这些窗格中。此部分便于应用排序(ORDER BY ASC 和 ORDER BY DESC)以及对列名进行分组(GROUPING 语句)。
  3. 查询窗格:SQL 设计器将在该窗格中为我们自动创建语句。
SQL Query Builder or Designer Window 3

右键单击 SQL 查询设计器图表窗格 (1) 并选择“添加表…”选项,将所需的表添加到生成器中。

Add a Table 4

从下面的屏幕截图中,您可以观察到我们选择了 DimCustomers 表。

Select the Required Table Name 5

我们再添加一个表(FactInternetSales)来展示连接。如您所见,查询生成器或设计器已使用 CustomerKey 列自动连接了 DimCustomers 和 FactInternetSales 这两个表。

shows Tables with Relationships 7

请通过勾选图表窗格中的列名来选择所需的列。在此 SQL 查询生成器或设计器示例中,我们从两个表中选择了 First Name、Last Name、Education、Occupation、Yearly Income、Sales Amount、Tax Amount 和 order quantity 列。

Choose Required Column Names in Query Builder or Designer 8

查询设计器别名示例

网格窗格中的别名字段有助于应用别名功能。在设计器网格窗格中,请根据您的要求更改列名。

排序示例

网格中的 Sort Type 属性允许应用 ORDER BY 功能。请在网格窗格中将 Sort Type 更改为 Ascending 或 Descending。

我们正在使用 SQL Server 查询生成器或设计器按升序排序 First Name,并按降序排序 Yearly Income。

请根据您的要求更改 Sort Order 选项。在此示例中,它将首先按 First Name 的升序对数据进行排序。然后它将按 Yearly Income 的降序对数据进行排序。

Sort Type options 11

SQL 查询生成器或设计器分组

通常,查询生成器不会在设计器的第二区域显示任何分组选项。要执行 Group By,请右键单击空白区域,然后从上下文菜单中选择“添加 Group By”选项。

我们使用查询设计器或生成器对 First Name、Last Name、Education 和 Occupation 进行了分组。对于其余列,我们计算了聚合,例如 Yearly Income、Sales、Tax Amount 的总和以及 Orders Quantity 的计数。

Group By and Aggregate Functions 14

查询设计器中的过滤器

在查询生成器或设计器中,我们为 Sales Amount 添加了大于 1000 的过滤器。由于我们对聚合数据 Sum(Sales Amount) 应用了过滤条件,因此它使用了 HAVING Clause。否则,它将使用 WHERE Clause。

Apply Filters or Where Clause 15

单击 OK 按钮关闭窗口。下面的代码片段将向您展示生成的最终 Transact 语句。

SELECT DimCustomer.FirstName AS [First Name], 
       DimCustomer.LastName AS [Last Name], 
       DimCustomer.EnglishEducation AS Education, 
       DimCustomer.EnglishOccupation AS Occupation, 
       SUM(DimCustomer.YearlyIncome) AS [Anual Income], 
       COUNT(FactInternetSales.OrderQuantity) AS [Total Orders], 
       SUM(FactInternetSales.SalesAmount) AS Sales, 
       SUM(FactInternetSales.TaxAmt) AS Tax
FROM DimCustomer INNER JOIN
       FactInternetSales ON 
     DimCustomer.CustomerKey = FactInternetSales.CustomerKey
GROUP BY DimCustomer.FirstName, DimCustomer.LastName, 
         DimCustomer.EnglishEducation, DimCustomer.EnglishOccupation
HAVING   (SUM(FactInternetSales.SalesAmount) > 1000)
ORDER BY [First Name], SUM(DimCustomer.YearlyIncome) DESC 

让我们通过单击顶部的执行按钮来看看由简单生成器设计的查询是否执行完美。

Query Builder or Designer 17

评论已关闭。