成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數(shù)據(jù)庫中FOR XML AUTO的使用詳解續(xù)

數(shù)據(jù)庫 SQL Server
本文我們主要介紹了SQL Server數(shù)據(jù)庫中FOR XML AUTO的使用的一些詳細(xì)的例子以及Order by對(duì)XML的影響的實(shí)例,希望能夠?qū)δ兴鶐椭?/div>

之前我們介紹過:SQL Server數(shù)據(jù)庫FOR XML AUTO的使用詳解,本文我們介紹一些稍微復(fù)雜的應(yīng)用,首先我們先看下面的代碼:

  1. CREATE TABLE Person(  
  2. ID INT IDENTITY(1,1) NOT NULL,  
  3. Name NVARCHAR(20) NOT NULL DEFAULT(''),  
  4. Age INT DEFAULT(0) NOT NULL,  
  5. Sex BIT DEFAULT(0) NOT NULL  
  6. )  
  7. --DROP TABLE [Order]  
  8. CREATE TABLE [Order](  
  9. ID INT IDENTITY(1,1) PRIMARY KEY,  
  10. PersonID INT DEFAULT(0) NOT NULL,  
  11. TotalPrice DECIMAL DEFAULT(0) NOT NULL  
  12. )  
  13. CREATE TABLE Product(  
  14. ID INT IDENTITY(1,1) PRIMARY KEY,  
  15. Price DECIMAL(8,2) DEFAULT(0.00) NOT NULL,  
  16. Img NVARCHAR(50) DEFAULT('') NOT NULL  
  17. )  
  18. CREATE TABLE OrderDetail(  
  19. ID INT IDENTITY(1,1) PRIMARY KEY,  
  20. OrderID INT DEFAULT(0) NOT NULL,  
  21. ProductID INT DEFAULT(0) NOT NULL,  
  22. Price DECIMAL(8,2) DEFAULT(0.00) NOT NULL  
  23. )  
  24. INSERT INTO Person(Name,Age,Sex)  
  25. SELECT '張三',28,1 UNION ALL  
  26. SELECT '李四',28,1 UNION ALL  
  27. SELECT '王五',28,1   
  28. INSERT INTO [Order](PersonID,TotalPrice)  
  29. SELECT 1,100.0 UNION ALL  
  30. SELECT 1,111.0 UNION ALL  
  31. SELECT 2,112.0 UNION ALL  
  32. SELECT 3,98.0 UNION ALL  
  33. SELECT 3,150.49 UNION ALL  
  34. SELECT 3,58  
  35. INSERT INTO Product(Price,Img)  
  36. SELECT 101.0,'1.png' UNION ALL  
  37. SELECT 102.0,'2.png' UNION ALL  
  38. SELECT 103.0,'3.png' UNION ALL  
  39. SELECT 104.0,'4.png' UNION ALL  
  40. SELECT 105.0,'5.png'  
  41. INSERT INTO OrderDetail(OrderID,ProductID,Price)  
  42. SELECT TOP 3 3,ID,Price FROM Product  
  43. SELECT * FROM Person  
  44. SELECT * FROM [Order]  
  45. SELECT * FROM Product  
  46. SELECT * FROM OrderDetail  
  47. Person  
  48. ID Name Age Sex  
  49. ----------- -------------------- ----------- -----  
  50. 1 張三 28 1  
  51. 2 李四 28 1  
  52. 3 王五 28 1  
  53. (3 行受影響)  
  54. [Order]  
  55. ID PersonID TotalPrice  
  56. ----------- ----------- ---------------------------------------  
  57. 1 1 100  
  58. 2 1 111  
  59. 3 2 112  
  60. 4 3 98  
  61. 5 3 150  
  62. 6 3 58  
  63. (6 行受影響)  
  64. Product  
  65. ID Price Img  
  66. ----------- --------------------------------------- --------------------------------------------------  
  67. 1 101.00 1.png  
  68. 2 102.00 2.png  
  69. 3 103.00 3.png  
  70. 4 104.00 4.png  
  71. 5 105.00 5.png  
  72. (5 行受影響)  
  73. OrderDetail  
  74. ID OrderID ProductID Price  
  75. ----------- ----------- ----------- ---------------------------------------  
  76. 1 1 1 101.00  
  77. 2 1 2 102.00  
  78. 3 1 3 103.00  
  79. 4 1 4 104.00  
  80. 5 1 5 105.00  
  81. 6 2 1 101.00  
  82. 7 2 2 102.00  
  83. 8 2 3 103.00  
  84. 9 3 1 101.00  
  85. 10 3 2 102.00  
  86. 11 3 3 103.00  
  87. (11 行受影響) 

理下其中的關(guān)系:

會(huì)員表Person與訂單表Order為一對(duì)多關(guān)系,其中Order.PersonID = Person.ID

訂單表與訂單詳情表為一對(duì)多關(guān)系,其中OrderDetail.OrderID = Order.ID

產(chǎn)品表與訂單詳情表為一對(duì)多關(guān)系,其中OrderDetail.ProductID = Product.ID

如下圖1

SQL Server數(shù)據(jù)庫中FOR XML AUTO的使用詳解續(xù)圖1

可以開始了:

先來看有那些訂單,分別為誰的訂單,以及訂單詳情,SQL腳本及查詢結(jié)果如下:

  1. 1: SELECT   
  2. 2: [Order].ID,  
  3. 3: [Order].PersonID,  
  4. 4: OrderDetail.OrderID,  
  5. 5: OrderDetail.ProductID,  
  6. 6: OrderDetail.Price  
  7. 7: FROM [Order]  
  8. 8: INNER JOIN OrderDetail ON [Order].ID = OrderDetail.OrderID  
  9. 9: FOR XML AUTO,ROOT('Record') 

查詢結(jié)果如下:

  1. 1: <Record> 
  2. 2: <Order ID="1" PersonID="1"> 
  3. 3: <OrderDetail OrderID="1" ProductID="1" Price="101.00" /> 
  4. 4: <OrderDetail OrderID="1" ProductID="2" Price="102.00" /> 
  5. 5: <OrderDetail OrderID="1" ProductID="3" Price="103.00" /> 
  6. 6: <OrderDetail OrderID="1" ProductID="4" Price="104.00" /> 
  7. 7: <OrderDetail OrderID="1" ProductID="5" Price="105.00" /> 
  8. 8: </Order> 
  9. 9: <Order ID="2" PersonID="1"> 
  10. 10: <OrderDetail OrderID="2" ProductID="1" Price="101.00" /> 
  11. 11: <OrderDetail OrderID="2" ProductID="2" Price="102.00" /> 
  12. 12: <OrderDetail OrderID="2" ProductID="3" Price="103.00" /> 
  13. 13: </Order> 
  14. 14: <Order ID="3" PersonID="2"> 
  15. 15: <OrderDetail OrderID="3" ProductID="1" Price="101.00" /> 
  16. 16: <OrderDetail OrderID="3" ProductID="2" Price="102.00" /> 
  17. 17: <OrderDetail OrderID="3" ProductID="3" Price="103.00" /> 
  18. 18: </Order> 
  19. 19: </Record> 

調(diào)整下查詢列的順序,再看下結(jié)果,變了啊:

  1. SELECT   
  2. OrderDetail.OrderID,  
  3. OrderDetail.ProductID,  
  4. OrderDetail.Price,  
  5. [Order].ID,  
  6. [Order].PersonID  
  7. FROM [Order]  
  8. INNER JOIN OrderDetail ON [Order].ID = OrderDetail.OrderID  
  9. FOR XML AUTO,ROOT('Record') 

輸出結(jié)果很猛:

  1. <Record> 
  2. <OrderDetail OrderID="1" ProductID="1" Price="101.00"> 
  3. <Order ID="1" PersonID="1" /> 
  4. </OrderDetail> 
  5. <OrderDetail OrderID="1" ProductID="2" Price="102.00"> 
  6. <Order ID="1" PersonID="1" /> 
  7. </OrderDetail> 
  8. <OrderDetail OrderID="1" ProductID="3" Price="103.00"> 
  9. <Order ID="1" PersonID="1" /> 
  10. </OrderDetail> 
  11. <OrderDetail OrderID="1" ProductID="4" Price="104.00"> 
  12. <Order ID="1" PersonID="1" /> 
  13. </OrderDetail> 
  14. <OrderDetail OrderID="1" ProductID="5" Price="105.00"> 
  15. <Order ID="1" PersonID="1" /> 
  16. </OrderDetail> 
  17. <OrderDetail OrderID="2" ProductID="1" Price="101.00"> 
  18. <Order ID="2" PersonID="1" /> 
  19. </OrderDetail> 
  20. <OrderDetail OrderID="2" ProductID="2" Price="102.00"> 
  21. <Order ID="2" PersonID="1" /> 
  22. </OrderDetail> 
  23. <OrderDetail OrderID="2" ProductID="3" Price="103.00"> 
  24. <Order ID="2" PersonID="1" /> 
  25. </OrderDetail> 
  26. <OrderDetail OrderID="3" ProductID="1" Price="101.00"> 
  27. <Order ID="3" PersonID="2" /> 
  28. </OrderDetail> 
  29. <OrderDetail OrderID="3" ProductID="2" Price="102.00"> 
  30. <Order ID="3" PersonID="2" /> 
  31. </OrderDetail> 
  32. <OrderDetail OrderID="3" ProductID="3" Price="103.00"> 
  33. <Order ID="3" PersonID="2" /> 
  34. </OrderDetail> 
  35. </Record> 

XML結(jié)構(gòu)變了,是變了,MSDN中是這樣解釋滴:

***個(gè)ID引用自O(shè)rder表,故創(chuàng)建Order節(jié)點(diǎn),PersonID同樣引用自O(shè)rder表,***步已經(jīng)創(chuàng)建Order節(jié)點(diǎn),故此處僅為節(jié)點(diǎn)添加PersonID屬性。

接下來三列OrderID,ProductID,Price引用OrderDetail表,因此在Order節(jié)點(diǎn)下創(chuàng)建OrderDetail子節(jié)點(diǎn) 列的別名顯示為屬性名稱,沒有別名使用列名,節(jié)點(diǎn)的名稱使用表別名,沒有別名使用表名。

Order By對(duì)XML結(jié)構(gòu)的影響

再看個(gè)例子,對(duì)Order.PersonID排序:

  1. SELECT   
  2. [Order].ID,  
  3. [Order].PersonID,  
  4. OrderDetail.OrderID,  
  5. OrderDetail.ProductID,  
  6. OrderDetail.Price  
  7. FROM [Order]  
  8. INNER JOIN OrderDetail ON [Order].ID = OrderDetail.OrderID  
  9. ORDER BY [Order].PersonId  
  10. FOR XML AUTO,ROOT('Record') 

輸出結(jié)果:

  1. <Record> 
  2. <Order ID="1" PersonID="1"> 
  3. <OrderDetail OrderID="1" ProductID="1" Price="101.00" /> 
  4. <OrderDetail OrderID="1" ProductID="2" Price="102.00" /> 
  5. <OrderDetail OrderID="1" ProductID="3" Price="103.00" /> 
  6. <OrderDetail OrderID="1" ProductID="4" Price="104.00" /> 
  7. <OrderDetail OrderID="1" ProductID="5" Price="105.00" /> 
  8. </Order> 
  9. <Order ID="2" PersonID="1"> 
  10. <OrderDetail OrderID="2" ProductID="1" Price="101.00" /> 
  11. <OrderDetail OrderID="2" ProductID="2" Price="102.00" /> 
  12. <OrderDetail OrderID="2" ProductID="3" Price="103.00" /> 
  13. </Order> 
  14. <Order ID="3" PersonID="2"> 
  15. <OrderDetail OrderID="3" ProductID="1" Price="101.00" /> 
  16. <OrderDetail OrderID="3" ProductID="2" Price="102.00" /> 
  17. <OrderDetail OrderID="3" ProductID="3" Price="103.00" /> 
  18. </Order> 
  19. </Record> 

其實(shí)這個(gè)結(jié)果與***個(gè)查詢結(jié)果是一樣滴,行默認(rèn)順序會(huì)影響XML結(jié)果,排序也會(huì)影響XML結(jié)構(gòu),只要當(dāng)前行與上一行數(shù)據(jù)可以合并時(shí),就會(huì)影響XML結(jié)構(gòu),再來看一個(gè)排序影響XML結(jié)構(gòu)的例子,這次以O(shè)rderDetail.ProductID排序,直接看結(jié)果:

  1. <Record> 
  2. <Order ID="1" PersonID="1"> 
  3. <OrderDetail OrderID="1" ProductID="1" Price="101.00" /> 
  4. </Order> 
  5. <Order ID="2" PersonID="1"> 
  6. <OrderDetail OrderID="2" ProductID="1" Price="101.00" /> 
  7. </Order> 
  8. <Order ID="3" PersonID="2"> 
  9. <OrderDetail OrderID="3" ProductID="1" Price="101.00" /> 
  10. <OrderDetail OrderID="3" ProductID="2" Price="102.00" /> 
  11. </Order> 
  12. <Order ID="2" PersonID="1"> 
  13. <OrderDetail OrderID="2" ProductID="2" Price="102.00" /> 
  14. </Order> 
  15. <Order ID="1" PersonID="1"> 
  16. <OrderDetail OrderID="1" ProductID="2" Price="102.00" /> 
  17. <OrderDetail OrderID="1" ProductID="3" Price="103.00" /> 
  18. </Order> 
  19. <Order ID="2" PersonID="1"> 
  20. <OrderDetail OrderID="2" ProductID="3" Price="103.00" /> 
  21. </Order> 
  22. <Order ID="3" PersonID="2"> 
  23. <OrderDetail OrderID="3" ProductID="3" Price="103.00" /> 
  24. </Order> 
  25. <Order ID="1" PersonID="1"> 
  26. <OrderDetail OrderID="1" ProductID="4" Price="104.00" /> 
  27. <OrderDetail OrderID="1" ProductID="5" Price="105.00" /> 
  28. </Order> 
  29. </Record> 

以上就是FOR XML AUTO的應(yīng)用的相關(guān)知識(shí),本文我們就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. JSP鏈接SQL Server 2005出錯(cuò)的解決方法
  2. JDBC調(diào)用帶輸出參數(shù)的存儲(chǔ)過程的實(shí)例解析
  3. SQL Server數(shù)據(jù)庫多表關(guān)聯(lián)匯總查詢的問題解決
  4. 設(shè)置SQL Server數(shù)據(jù)庫AWE機(jī)制使其支持大內(nèi)存
  5. SQL Server 2008數(shù)據(jù)庫被標(biāo)記為可疑的解決方法
責(zé)任編輯:趙鵬 來源: 博客園
相關(guān)推薦

2011-08-22 13:28:56

FOR XMLSQL Server

2011-08-24 12:49:56

SQL Server托管代碼

2011-08-22 11:39:53

SQL Server數(shù)PIVOT

2011-08-11 09:12:31

SQL Server nolock

2021-03-18 08:20:19

SQLServer數(shù)據(jù)庫SQL

2011-08-15 14:29:52

SQL Server數(shù)事務(wù)

2011-08-15 13:48:47

SQL ServerROW_NUMBER(

2011-04-02 11:02:54

SQL Server數(shù)文件恢復(fù)

2011-08-19 14:53:02

SQL ServerDataRelatio

2011-08-30 11:04:30

鏈接查詢內(nèi)連接外連接

2011-08-22 10:47:09

SQL Server流水號(hào)

2010-07-15 17:28:50

SQL Server

2010-09-08 16:03:57

SQL臨時(shí)表數(shù)據(jù)庫

2010-03-16 10:12:40

SQL Server

2011-08-25 13:41:50

SQL Server 變更跟蹤

2011-04-13 15:44:12

SQL Server數(shù)函數(shù)

2010-07-08 15:55:25

SQL Server

2011-08-09 09:31:39

SQL Server數(shù)connectionS

2009-07-07 17:42:28

2011-04-02 11:14:20

SQL Server數(shù)XML
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美精品中文字幕久久二区 | 农夫在线精品视频免费观看 | 日一区二区 | 国产三区av | 91精品国产91久久久久游泳池 | 欧美日韩中文字幕在线 | 精品国产91| 成人a视频片观看免费 | 日韩一二三 | 国产高清久久久 | 精品视频一区二区三区在线观看 | 亚洲欧美精品国产一级在线 | 美女久久久久久久 | 成人精品一区亚洲午夜久久久 | 欧美成人免费在线视频 | 亚洲国产精品成人久久久 | 色婷婷在线视频 | 日韩中文在线 | 婷婷在线视频 | 手机在线一区二区三区 | 天堂在线中文字幕 | 蜜桃精品视频在线 | 欧美午夜精品久久久久久浪潮 | 狠狠色综合久久婷婷 | 国产成人精品免费视频大全最热 | 久久精品亚洲精品 | 亚洲激情一区二区 | 99久久国产| 天堂中文字幕av | 国产精品黄色 | 91精品国产色综合久久不卡蜜臀 | 国产精品日产欧美久久久久 | 欧美激情一区二区三级高清视频 | 国产日韩精品一区二区三区 | 国产高清美女一级a毛片久久w | 国产精品一区二区三区四区 | 精品久久久精品 | 曰韩三级 | 99热.com| 国产精品视频www | 日韩视频一区 |