四巨頭第六周作業
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系列中涵蓋:
- Level 1: The Basic SELECT Statement
- Level 2: History of Structured Query Language (SQL)
- Level 3: Relational Database Design
- Level 4: The Mathematics of SQL: Part 1
- Level 5: The Mathematics of SQL: Part 2
- Level 6: The Basics of Sorting Data Using the ORDER BY Clause
- Level 7: Summarizing Data Using a Simple GROUP BY Clause
- Level 8: Data Modification: UPDATE
- Level 9: Data Modification: DELETE
Level 1: The Basic SELECT Statement
在SQL Server數據庫中管理數據有很多不同的方面。在處理與管理應用程序數據相關的復雜管理問題之前,首先需要從表中檢索數據。要從SQL Server表返回數據,需要使用SELECT語句。在這個級別中,我將介紹基本SELECT語句的組件,以及如何使用它從單個SQL Server表檢索數據。
The Three Parts in a SELECT Statement
從單個表返回數據的基本選擇語句包括三個不同的部分: 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語句的每個組件。
The Column List
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系列中涵蓋:
- Level 1: The Basic SELECT Statement
- Level 2: History of Structured Query Language (SQL)
- Level 3: Relational Database Design
- Level 4: The Mathematics of SQL: Part 1
- Level 5: The Mathematics of SQL: Part 2
- Level 6: The Basics of Sorting Data Using the ORDER BY Clause
- Level 7: Summarizing Data Using a Simple GROUP BY Clause
- Level 8: Data Modification: UPDATE
- Level 9: Data Modification: DELETE
Level 1: The Basic SELECT Statement
在SQL Server數據庫中管理數據有很多不同的方面。在處理與管理應用程序數據相關的復雜管理問題之前,首先需要從表中檢索數據。要從SQL Server表返回數據,需要使用SELECT語句。在這個級別中,我將介紹基本SELECT語句的組件,以及如何使用它從單個SQL Server表檢索數據。
The Three Parts in a SELECT Statement
從單個表返回數據的基本選擇語句包括三個不同的部分: 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語句的每個組件。
The Column List
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語句。了解如何檢索表中的所有數據並限制返回的數據對於開發應用程序是非常重要的。這篇文章和練習題為你提供了基本的選項,這是本系列的第一個單元。
---------------------------------------------------
四巨頭第六周作業