标签:搜索 sim 技术 purchase 一个 结果 期望 关于 tom
The Series
本文是 Stairway Series的一部分: Stairway to T-SQL DML
此Stairway将为您提供如何使用SQLServer的Transact-SQL(T-SQL)方言处理来自SQLServer表的数据的基本理解。DML是一种数据操作语言,是处理数据的语言的一个方面。它包括SELECT、INSERT、UPDATE和DELETE语句。这个Stairway将提供一些SQL语言的历史和一些关于集合理论的一般概念。每个级别都将建立在之前的级别上,所以当您完成时,您将很好地理解如何从SQL Server中选择和修改数据。
这里是不同的等级,将在这个Stairway系列中涵盖:
在SQL Server数据库中管理数据有很多不同的方面。在处理与管理应用程序数据相关的复杂管理问题之前,首先需要从表中检索数据。要从SQL Server表返回数据,需要使用SELECT语句。在这个级别中,我将介绍基本SELECT语句的组件,以及如何使用它从单个SQL Server表检索数据。
从单个表返回数据的基本选择语句包括三个不同的部分: Column List、from子句和WHERE子句。使用这些不同组件构造基本选择语句的语法如下所示:
SELECT <Column List>
FROM <table name>
WHERE <where criteria>;
“<Column List>”将包含一个列的清单,你想要返回的查询中,将包含“< table_name >”表的数据被选中时,和“<标准>“确定将用于限制的搜索条件从SELECT语句返回的行。注意WHERE子句是可选的。
请注意,我在这个Stairway上的所有示例将使用AdventureWorks SQL Server 2005数据库,该数据库可以在此位置从Codeplex获得:http://sqlserversamples.codeplex.com/。
让我们看一下下面非常简单的SELECT语句,它从AdventureWorks数据库中的表中选择一些数据。您可以使用SQL Server Management Studio中的查询窗口来运行本文中描述的每个查询语句,同时将数据库设置为AdventureWorks。
SELECT ProductCategoryID ,
Name
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这里,我从生产中选择了两个不同的列,ProductCategoryID和Name。ProductCategory表。由于这个SELECT语句有一个WHERE子句,它将从表返回的行限制为只具有ProductCategoryID值小于2的行。
现在您已经了解了SELECT语句的基本思想,让我更详细地介绍SELECT语句的每个组件。
Column List遵循SELECT关键字,并且是指定要从表中返回的列的位置。列通过指定列名来标识。如果列出多个列,则用逗号分隔。在以后的级别中,我们将研究从指定表中返回值以外的值的可能性,在第一级中,我们将坚持基础。在上面的例子中,让我们来看看列列表是什么样子的,如果它只选择一个列,或者一个表的所有列。
如果我只想返回产品的名称列。ProductCategory表我的查询是这样的:
SELECT Name
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这里,您可以看到,我只在上述查询中的SELECT和FROM关键字之间指定了Name列。但是如果我想要指定生产中的所有列。ProductCategory表我将运行以下查询:
SELECT ProductCategoryID ,
Name ,
rowguid ,
ModifiedDate
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这个SELECT语句中,您可以看到,我已经识别出了4个不同的列,每个列由一个逗号分隔。这些列可以在单行上一起列出,也可以在不同的行上以不同的方式进行分类,就像我所做的那样。还有一种方法可以从表中选择所有列,这是通过指定星号而不是指定单个列名。下面是使用*说明的SELECT语句:
SELECT *
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在应用程序中使用*(通常称为“*”)时需要注意。由于*将返回表中的所有列,如果您更改了一个表以包含额外的列,那么将在不修改实际SELECT语句的情况下返回额外的列。然而,如果您已经指定了所有列的名称,那么当添加一个新列时,它将不会返回,除非您将它添加到列列表中。使用*可以接受测试,但是如果您想遵循最佳实践,请不要在应用程序代码中使用它。原因是大多数应用程序期望从给定的SELECT语句返回固定数量的列。当将列添加到表中,并且使用*方法来识别表列时,返回的附加列可以破坏未被编码处理这些额外数据的应用程序。
FROM 子句
在FROM子句中,要确定要选择的数据表。在这里,我们只讨论从from子句中的单个表中筛选数据。注意,当我们学习更多的SQL知识之后,就可以用FROM子句识别多个表,并从中选择数据。
有许多不同的方法可以确定要选择数据表。事实上有四种不同的方式,其中三种我会在这篇文章中提到,第四种我以后会提到。
第一种方法是通过标识表名和它所属的模式来指定一个表。这就是迄今为止我在所有示例中识别所有表名的方法。在我的每个例子中,我都让生产作为表名。然而实际的表名只是产品类别,它包含在生产模式中。
在FROM子句中确定表的第二种方法是只声明表名。当FROM子句只包含表名时,SQL Server将假定表包含在数据库用户的默认模式下,或在dbo模式下。后面让我再详细解释一下这个概念。
当您向仅标识表名的SQL Server提交查询时,SQL Server将需要解析此表所位于的模式。这是因为在给定的数据库中,只要它们处于不同的模式,就可以有多个具有相同名称的表。为了确定一个表在SQL服务器上的模式,需要经过两个步骤。第一步是为提交查询的数据库用户使用默认模式,并将其默认模式附加到表名,然后查找该表。如果SQL Server使用用户默认模式查找表,那么步骤2就不会执行。如果SQL Server没有使用用户默认模式找到表,那么会在dbo模式中进行SQL Server检查以找到该表。无论您的数据库是否包含一个模式,最好的做法是使用后跟表名的模式名来标识FROM子句中的表。通过这样做,可以减少SQL服务器的工作量,以解决表名的问题,并促进计划缓存重用。
确定表的第三种方法是使用三部分名称,其中最后两部分是模式和表名,第一部分是数据库名称。这里是一个SELECT语句,类似于我之前的SELECT语句,它使用了三个部分的名称:
SELECT *
FROM AdventureWorks.Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这里可以看到,我将数据库名称添加到生产中。在FROM子句中标识的产品类别表。
通过对FROM子句中的表使用三部分命名约定,SQL Server Management Studio中的查询窗口的数据库上下文可以设置为任何数据库,数据库引擎仍然知道用于查询的数据库、模式和表。当构建需要在实例中从多个数据库检索数据的应用程序时,使用三个部分的名称有助于在单个应用程序中从多个数据库中检索数据。
最后一种方法是使用一个四部分的名称,第四部分(在数据库名称前面)标识链接服务器的名称。由于链接服务器不在这个楼梯的范围内,我将不再进一步讨论这个主题。如果您应该运行包含4个部分的表名,您将知道该表与一个链接服务器相关联。
WHERE子句
SELECT语句的WHERE子句是可选的。WHERE子句用于约束从SELECT语句返回的行。数据库引擎根据WHERE子句计算每一行,然后如果它们满足WHERE子句中标识的搜索条件或条件,则只返回行。当编写更多的SELECT语句时,将发现大多数SELECT语句可能包含WHERE子句。
一个简单的WHERE子句将包含单个搜索条件,而更复杂的WHERE子句可能包含许多条件。当在WHERE子句中使用多个条件时,它们将在逻辑上由使用和逻辑操作符组合在一起。选择语句中可能包含的不同条件的数量没有限制。在示例中,到目前为止,我只使用了一个条件。让我们回顾几个例子,其中有更复杂的WHERE子句。
这里有一个SELECT语句,它有两个不同的搜索条件:
SELECT *
FROM Production . Product
WHERE Color = ‘Blue‘
AND Product ID > 900 ;
在该语句中,第一个条件将检查该行是否在颜色列中具有蓝色值。第二个条件检查产品Id列中的值是否大于900。由于和操作符都使用了这两个条件,因此需要从这个查询返回一个行。
让我们看看一个更复杂的WHERE子句:
SELECT
*
FROM Production .Product
WHERE Product ID > 900
AND ( Color = ‘Blue‘
OR Color = ‘Green‘
) ;
这个示例看生产。产品的值大于900的产品行,颜色列中的值不是蓝色就是绿色。通过查看这个查询,您可以看到我在两个不同的颜色列下放置了括号。这就设置了条件被相互计算的顺序,就像在数学表达式中的那样。通过使用括号,在评估和运算符之前,将评估两个颜色条件之间的或操作。在使用和不加括号的情况下,这些逻辑运算符是进程的顺序是基于逻辑运算符优先级的规则。优先规则规定,如果不包含括号,则执行之前或操作的操作。
让我在之前的WHERE子句中添加一个NOT运算符:
SELECT
Name
, Color
FROM Production . Product
WHERE Product ID > 900
AND NOT ( Color = ‘Blue‘
OR Color = ‘Green‘
) ;
在操作之后,我添加了NOT运算符,表示我想要的不是蓝色或绿色的产品。当我在Adventure Works数据库中运行这个查询时,我得到的产品是银色、黄色和黑色。
有关搜索条件的所有不同可能性的完整列表,请参考在线书籍:http://msdn.microsoft.com/en-us/library/ms173545.aspx,并获得更多关于逻辑运算符优先级的信息,您可以阅读该链接:http://msdn.microsoft.com/en-us/library/ms190276.aspx。
整合:商业案例
现在轮到您使用我共享的信息来构建您自己的基本选择语句。在本节中,我将为您提供一些练习,您可以练习编写SELECT语句来满足描述的业务案例。
练习# 1:
假设你已经被人力资源部的负责人要求为那些有很多病假和假期的员工列出所有员工的价值观。在这个列表中,人力资源主管告诉你“大量休假”的定义如下:员工的病假时间必须大于68,休假时间大于98。您可以在Human.Resources中找到这些列和EmployeeID列。员工表。在AdventureWorks数据库中编写和测试代码。完成后,在下面的部分中检查您的代码。
练习# 2:
有一些问题你的经理有一些具体的订单号码。您的经理希望您列出与一些特定订单相关的所有列,这样她就可以查看与每个订单相关的销售人员。您的经理指定她只对包含SalesOrderHeader行的报告感兴趣,该报告包含在43702和43712之间的SalesOrderId。当你写完这个SELECT语句时,请检查下面的答案。
答案练习# 1:
您的查询应该如下所示:
SELECT EmployeeID ,
SickLeaveHours ,
VacationHours
FROM HumanResources.Employee
WHERE SickLeaveHours > 68
AND VacationHours > 98 ;
查询的结果应该返回以下三行:
EmployeeID SickLeaveHours VacationHours
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
109 69 99
179 69 99
224 69 99
答案练习# 2:
您的查询应该是这样的,如果您阅读了上面提到的文档,以便了解更多关于搜索条件和操作符之间的信息:
SELECT *
FROM Sales.SalesOrderHeader
WHERE SalesOrderID BETWEEN 43702 AND 43712 ;
或您可能已编写了与此类似的代码:
SELECT SalesOrderID ,
RevisionNumber ,
OrderDate ,
DueDate ,
ShipDate ,
Status ,
OnlineOrderFlag ,
SalesOrderNumber ,
PurchaseOrderNumber ,
AccountNumber ,
CustomerID ,
ContactID ,
SalesPersonID ,
TerritoryID ,
BillToAddressID ,
ShipToAddressID ,
ShipMethodID ,
CreditCardID ,
CreditCardApprovalCode ,
CurrencyRateID ,
SubTotal ,
TaxAmt ,
Freight ,
TotalDue ,
Commen
The Series
本文是 Stairway Series的一部分: Stairway to T-SQL DML
此Stairway将为您提供如何使用SQLServer的Transact-SQL(T-SQL)方言处理来自SQLServer表的数据的基本理解。DML是一种数据操作语言,是处理数据的语言的一个方面。它包括SELECT、INSERT、UPDATE和DELETE语句。这个Stairway将提供一些SQL语言的历史和一些关于集合理论的一般概念。每个级别都将建立在之前的级别上,所以当您完成时,您将很好地理解如何从SQL Server中选择和修改数据。
这里是不同的等级,将在这个Stairway系列中涵盖:
在SQL Server数据库中管理数据有很多不同的方面。在处理与管理应用程序数据相关的复杂管理问题之前,首先需要从表中检索数据。要从SQL Server表返回数据,需要使用SELECT语句。在这个级别中,我将介绍基本SELECT语句的组件,以及如何使用它从单个SQL Server表检索数据。
从单个表返回数据的基本选择语句包括三个不同的部分: Column List、from子句和WHERE子句。使用这些不同组件构造基本选择语句的语法如下所示:
SELECT <Column List>
FROM <table name>
WHERE <where criteria>;
“<Column List>”将包含一个列的清单,你想要返回的查询中,将包含“< table_name >”表的数据被选中时,和“<标准>“确定将用于限制的搜索条件从SELECT语句返回的行。注意WHERE子句是可选的。
请注意,我在这个Stairway上的所有示例将使用AdventureWorks SQL Server 2005数据库,该数据库可以在此位置从Codeplex获得:http://sqlserversamples.codeplex.com/。
让我们看一下下面非常简单的SELECT语句,它从AdventureWorks数据库中的表中选择一些数据。您可以使用SQL Server Management Studio中的查询窗口来运行本文中描述的每个查询语句,同时将数据库设置为AdventureWorks。
SELECT ProductCategoryID ,
Name
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这里,我从生产中选择了两个不同的列,ProductCategoryID和Name。ProductCategory表。由于这个SELECT语句有一个WHERE子句,它将从表返回的行限制为只具有ProductCategoryID值小于2的行。
现在您已经了解了SELECT语句的基本思想,让我更详细地介绍SELECT语句的每个组件。
Column List遵循SELECT关键字,并且是指定要从表中返回的列的位置。列通过指定列名来标识。如果列出多个列,则用逗号分隔。在以后的级别中,我们将研究从指定表中返回值以外的值的可能性,在第一级中,我们将坚持基础。在上面的例子中,让我们来看看列列表是什么样子的,如果它只选择一个列,或者一个表的所有列。
如果我只想返回产品的名称列。ProductCategory表我的查询是这样的:
SELECT Name
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这里,您可以看到,我只在上述查询中的SELECT和FROM关键字之间指定了Name列。但是如果我想要指定生产中的所有列。ProductCategory表我将运行以下查询:
SELECT ProductCategoryID ,
Name ,
rowguid ,
ModifiedDate
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这个SELECT语句中,您可以看到,我已经识别出了4个不同的列,每个列由一个逗号分隔。这些列可以在单行上一起列出,也可以在不同的行上以不同的方式进行分类,就像我所做的那样。还有一种方法可以从表中选择所有列,这是通过指定星号而不是指定单个列名。下面是使用*说明的SELECT语句:
SELECT *
FROM Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在应用程序中使用*(通常称为“*”)时需要注意。由于*将返回表中的所有列,如果您更改了一个表以包含额外的列,那么将在不修改实际SELECT语句的情况下返回额外的列。然而,如果您已经指定了所有列的名称,那么当添加一个新列时,它将不会返回,除非您将它添加到列列表中。使用*可以接受测试,但是如果您想遵循最佳实践,请不要在应用程序代码中使用它。原因是大多数应用程序期望从给定的SELECT语句返回固定数量的列。当将列添加到表中,并且使用*方法来识别表列时,返回的附加列可以破坏未被编码处理这些额外数据的应用程序。
FROM 子句
在FROM子句中,要确定要选择的数据表。在这里,我们只讨论从from子句中的单个表中筛选数据。注意,当我们学习更多的SQL知识之后,就可以用FROM子句识别多个表,并从中选择数据。
有许多不同的方法可以确定要选择数据表。事实上有四种不同的方式,其中三种我会在这篇文章中提到,第四种我以后会提到。
第一种方法是通过标识表名和它所属的模式来指定一个表。这就是迄今为止我在所有示例中识别所有表名的方法。在我的每个例子中,我都让生产作为表名。然而实际的表名只是产品类别,它包含在生产模式中。
在FROM子句中确定表的第二种方法是只声明表名。当FROM子句只包含表名时,SQL Server将假定表包含在数据库用户的默认模式下,或在dbo模式下。后面让我再详细解释一下这个概念。
当您向仅标识表名的SQL Server提交查询时,SQL Server将需要解析此表所位于的模式。这是因为在给定的数据库中,只要它们处于不同的模式,就可以有多个具有相同名称的表。为了确定一个表在SQL服务器上的模式,需要经过两个步骤。第一步是为提交查询的数据库用户使用默认模式,并将其默认模式附加到表名,然后查找该表。如果SQL Server使用用户默认模式查找表,那么步骤2就不会执行。如果SQL Server没有使用用户默认模式找到表,那么会在dbo模式中进行SQL Server检查以找到该表。无论您的数据库是否包含一个模式,最好的做法是使用后跟表名的模式名来标识FROM子句中的表。通过这样做,可以减少SQL服务器的工作量,以解决表名的问题,并促进计划缓存重用。
确定表的第三种方法是使用三部分名称,其中最后两部分是模式和表名,第一部分是数据库名称。这里是一个SELECT语句,类似于我之前的SELECT语句,它使用了三个部分的名称:
SELECT *
FROM AdventureWorks.Production.ProductCategory
WHERE ProductCategoryID < 2 ;
在这里可以看到,我将数据库名称添加到生产中。在FROM子句中标识的产品类别表。
通过对FROM子句中的表使用三部分命名约定,SQL Server Management Studio中的查询窗口的数据库上下文可以设置为任何数据库,数据库引擎仍然知道用于查询的数据库、模式和表。当构建需要在实例中从多个数据库检索数据的应用程序时,使用三个部分的名称有助于在单个应用程序中从多个数据库中检索数据。
最后一种方法是使用一个四部分的名称,第四部分(在数据库名称前面)标识链接服务器的名称。由于链接服务器不在这个楼梯的范围内,我将不再进一步讨论这个主题。如果您应该运行包含4个部分的表名,您将知道该表与一个链接服务器相关联。
WHERE子句
SELECT语句的WHERE子句是可选的。WHERE子句用于约束从SELECT语句返回的行。数据库引擎根据WHERE子句计算每一行,然后如果它们满足WHERE子句中标识的搜索条件或条件,则只返回行。当编写更多的SELECT语句时,将发现大多数SELECT语句可能包含WHERE子句。
一个简单的WHERE子句将包含单个搜索条件,而更复杂的WHERE子句可能包含许多条件。当在WHERE子句中使用多个条件时,它们将在逻辑上由使用和逻辑操作符组合在一起。选择语句中可能包含的不同条件的数量没有限制。在示例中,到目前为止,我只使用了一个条件。让我们回顾几个例子,其中有更复杂的WHERE子句。
这里有一个SELECT语句,它有两个不同的搜索条件:
SELECT *
FROM Production . Product
WHERE Color = ‘Blue‘
AND Product ID > 900 ;
在该语句中,第一个条件将检查该行是否在颜色列中具有蓝色值。第二个条件检查产品Id列中的值是否大于900。由于和操作符都使用了这两个条件,因此需要从这个查询返回一个行。
让我们看看一个更复杂的WHERE子句:
SELECT
*
FROM Production .Product
WHERE Product ID > 900
AND ( Color = ‘Blue‘
OR Color = ‘Green‘
) ;
这个示例看生产。产品的值大于900的产品行,颜色列中的值不是蓝色就是绿色。通过查看这个查询,您可以看到我在两个不同的颜色列下放置了括号。这就设置了条件被相互计算的顺序,就像在数学表达式中的那样。通过使用括号,在评估和运算符之前,将评估两个颜色条件之间的或操作。在使用和不加括号的情况下,这些逻辑运算符是进程的顺序是基于逻辑运算符优先级的规则。优先规则规定,如果不包含括号,则执行之前或操作的操作。
让我在之前的WHERE子句中添加一个NOT运算符:
SELECT
Name
, Color
FROM Production . Product
WHERE Product ID > 900
AND NOT ( Color = ‘Blue‘
OR Color = ‘Green‘
) ;
在操作之后,我添加了NOT运算符,表示我想要的不是蓝色或绿色的产品。当我在Adventure Works数据库中运行这个查询时,我得到的产品是银色、黄色和黑色。
有关搜索条件的所有不同可能性的完整列表,请参考在线书籍:http://msdn.microsoft.com/en-us/library/ms173545.aspx,并获得更多关于逻辑运算符优先级的信息,您可以阅读该链接:http://msdn.microsoft.com/en-us/library/ms190276.aspx。
整合:商业案例
现在轮到您使用我共享的信息来构建您自己的基本选择语句。在本节中,我将为您提供一些练习,您可以练习编写SELECT语句来满足描述的业务案例。
练习# 1:
假设你已经被人力资源部的负责人要求为那些有很多病假和假期的员工列出所有员工的价值观。在这个列表中,人力资源主管告诉你“大量休假”的定义如下:员工的病假时间必须大于68,休假时间大于98。您可以在Human.Resources中找到这些列和EmployeeID列。员工表。在AdventureWorks数据库中编写和测试代码。完成后,在下面的部分中检查您的代码。
练习# 2:
有一些问题您的经理有一些具体的订单号码。您的经理希望您列出与一些特定订单相关的所有列,这样她就可以查看与每个订单相关的销售人员。指定您的经理她只对包含SalesOrderHeader行的报告感兴趣,该报告包含在43702和43712之间的SalesOrderId。当你写完这个SELECT语句时,请检查下面的答案。
答案练习# 1:
您的查询应该如下所示:
SELECT EmployeeID ,
SickLeaveHours ,
VacationHours
FROM HumanResources.Employee
WHERE SickLeaveHours > 68
AND VacationHours > 98 ;
查询的结果应该返回以下三行:
EmployeeID SickLeaveHours VacationHours
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
109 69 99
179 69 99
224 69 99
答案练习# 2:
您的查询应该是这样的,如果您阅读了上面提到的文档,以便了解更多关于搜索条件和操作符之间的信息:
SELECT *
FROM Sales.SalesOrderHeader
WHERE SalesOrderID BETWEEN 43702 AND 43712 ;
或您可能已编写了与此类似的代码:
SELECT SalesOrderID ,
RevisionNumber ,
OrderDate ,
DueDate ,
ShipDate ,
Status ,
OnlineOrderFlag ,
SalesOrderNumber ,
PurchaseOrderNumber ,
AccountNumber ,
CustomerID ,
ContactID ,
SalesPersonID ,
TerritoryID ,
BillToAddressID ,
ShipToAddressID ,
ShipMethodID ,
CreditCardID ,
CreditCardApprovalCode ,
CurrencyRateID ,
SubTotal ,
TaxAmt ,
Freight ,
TotalDue ,
Comment ,
rowguid ,
ModifiedDate
FROM Sales.SalesOrderHeader
WHERE SalesOrderID >= 43702
AND SalesOrderID <= 43712 ;
您的查询应该返回11行。5行具有2001-07 - 02的OrderDate值,5行具有2001-07 - 03的OrderDate值,2行具有2001-07 - 04的OrderDate值。
关于这个解决方案的一个问题是所有的列名称都被识别了,而之前的解决方案用星号来指定所有的列。通过名称标识所有列是一种更好的编码实践,因为即使在表中添加了额外的列,您的SELECT语句也总是返回相同的列数。当你的应用程序希望从你的选择语句中返回指定的列时这是非常重要的。
理解基本的SELECT语句。
为了成为一个SQL Server应用程序程序员,您需要首先了解基本的SELECT语句。了解如何检索表中的所有数据并限制返回的数据对于开发应用程序是非常重要的。这篇文章和练习题为你提供了基本的选项,这是本系列的第一个单元。
t ,
rowguid ,
ModifiedDate
FROM Sales.SalesOrderHeader
WHERE SalesOrderID >= 43702
AND SalesOrderID <= 43712 ;
您的查询应该返回11行。5行具有2001-07 - 02的OrderDate值,5行具有2001-07 - 03的OrderDate值,2行具有2001-07 - 04的OrderDate值。
关于这个解决方案的一个问题是所有的列名称都被识别了,而之前的解决方案用星号来指定所有的列。通过名称标识所有列是一种更好的编码实践,因为即使在表中添加了额外的列,您的SELECT语句也总是返回相同的列数。当你的应用程序希望从你的选择语句中返回指定的列时这是非常重要的。
理解基本的SELECT语句。
为了成为一个SQL Server应用程序程序员,您需要首先了解基本的SELECT语句。了解如何检索表中的所有数据并限制返回的数据对于开发应用程序是非常重要的。这篇文章和练习题为你提供了基本的选项,这是本系列的第一个单元。
---------------------------------------------------
标签:搜索 sim 技术 purchase 一个 结果 期望 关于 tom
原文地址:https://www.cnblogs.com/hawking-520/p/8850253.html