sql語句的各種關鍵字解析過程的詳細總結方法(sql關鍵字大全)

發(fā)布時間:2023-08-14
本文主要介紹sql語句各種關鍵字解析過程的詳細總結方法(sql關鍵字百科),下面一起看看sql語句各種關鍵字解析過程的詳細總結方法(sql關鍵字百科)相關資訊。
由于最近需要研究sql查詢的性能,我們研究了sql語句的解決方案。在園里,我們寫了很多相關的文章,各有側重。本文詳細介紹了一條sql語句每個關鍵字的逐步分析過程,歡迎大家互相學習,以及sql語句的解析順序。簡單的sql語句按以下順序進行分析:1之后的表。來自身份數據源的語句查詢。以及一些子句,比如(1-j1)笛卡爾積,(1-j2)過濾,(1-j3)添加外部列。應用對象后,虛擬表vt1從進程中生成。(1-j1)由該步驟占據的笛卡爾積(交叉連接)生成兩個相關表和一個虛擬表vt1-j1。(1-j2)過濾基于虛擬表vt1-j1,過濾所有滿足謂詞條件的列,生成虛擬表vt1-j2。(1-j3)添加一個外部行。如果使用外部連接,它將被添加到不滿足上表中條件的列vt1-j2中,虛擬表vt1-j3將生成一個外部行。2。vt1過程中由過濾器生成的臨時表,以及where子句中的列入到vt2表中。3項。組和列組將根據vt2生成一個表組。生成此表。4項。在該表中,有不同的過濾器組,并且術語滿足加入vt4表的條件。第五條。選擇要處理的元素會在select子句中生成一個vt5表。(5-1)通過計算的表達式和vt5-1 select子句中的表達式的計算(5-2)重復vt5-1中的列并對其進行約簡以產生vt5-2的完全不同的外觀(5-3)過濾掉合格列的orderby子句定義的結果以產生vt5-3表。通過vt5-3的形式和分類,根據訂單的條件子句的結果,從表中導出vc6的訂單表??蛻艉陀唵蔚睦邮紫龋瑒?chuàng)建一個客戶表并插入以下數據:客戶號sidi,madrid,frndo,madrid,krlos,madrid,mrphs,xi ;創(chuàng)建一個訂單表并插入以下數據:訂單號、客戶號、frndo、frndo、krlos、krlos、krlos和mrphs無效。如果我們要查詢從馬德里訂購少于3的客戶并顯示他們的訂單號,訂單將按從小到大排序。復制代碼代碼如下:選擇c.customerid,count (o.orderid)作為numorders,從客戶到c. left外部連接dbo。訂單是o在c.customerid = o在c.city = 馬德里。該組有一個計數(o . orderid) lt;3 through c . customerid . num orders的查詢結果如下:客戶號num orders \zero frn do ii接下來,我們將詳細介紹sql如何計算結果:from子句from子句標識要查詢的表。如果指定了表操作,將從左到右進行處理。基于一個或兩個表的每個表的操作都會返回一個輸出表,左表的輸出就是下一個表的操作輸入的結果。比如crosstab (1-j1)笛卡爾積,(1-j2) filter,從外部列添加的(1-j3)的相關操作。句子生成虛擬表vt1。步驟1-j1:執(zhí)行笛卡爾積(交叉鏈接)笛卡爾積將列出兩個表的行的所有可能組合,并生成表vt1-j1。如果左表m列和右表n列,然后vt1-j1表生成笛卡爾積,則m n n列。step by step 1-j1相當于執(zhí)行:select *客戶c的交聯(lián)訂單o結果如下: (共4×7列)c . customerid c . city o . orderid o . customerid madrid-frn do madrid-frn do madrid-krlos madrid-krlos madrid-krlos madrid-four krlos madrid-madrid-six mrph。馬德里七個無效frndo馬德里一個frndo frndo馬德里兩個frndo frndo馬德里三個krlos frndo馬德里四個krlos frndo馬德里五個krlos frndo馬德里六個mrphs frndo馬德里七個無效krlos馬德里一個fr。ndo krlos madrid ii frn do krlos madrid iii krlos krlos madrid iv krlos krlos madrid v krlos madrid vi mrp hs krlos madrid vii invalid mrphs zion i frn do mrp hs zion ii frn do mrp hs tin an san krlos mrphs zion四krlos mrphs zion五krlos mrp hs zion六mrp hs zion七nullstep 1-j2:過濾應用,(連接條件)過濾是sql的三個過濾條件的首次實現(xiàn)。當過濾條件被應用于前一步驟中生成的虛擬表(vt1-j1)時,過濾條件被滿足并被添加到虛擬表vt1-j2中to merid c . city o . orderid o . customerid fr ndo madrid-fr ndo fr ndo madrid ii fr ndo krlos madrid iii krlos krlos madrid iv krlos krlos madrid v krlos mrphs zion vi mrphssstep 1-j3:添加外部列的這一步只有在使用外部連接時才會發(fā)生。左(右或全部),您可以將一個或兩個表標記為預訂表。作為一個保留表,這意味著您想要的所有列都將返回到表中,即使表中的數據沒有 t滿足添加mark以將保留表置于子句之外的篩選條件。left,在表的右側添加rightouter是保留表,all-outer連接將這兩個表標記為保留表。步驟1-j3根據虛擬表vt1-j2,加上餐桌上列不滿足預定的條件,根本沒有預定,也沒有對應的列表,所以標記為空。在此過程中生成的vt1-j3虛擬表。c . customerid c . city o . orderid o . customeridémadrid invalid無效frn do madrid-frn do frn do madrid ii frn do krlos madrid iii krlos krlos madrid iv krlos krlos madrid v krlos mrp hs zion six mrph如果from子句中有多個表操作,sql將從左到右進行處理,左邊生成的臨時表結果將作為右邊表的輸入表。步驟where子句將過濾器應用于上一步中生成的臨時表,并根據過濾條件生成臨時表vt2。注意:因為數據沒有分組,所以您可以 不要使用聚合運算。例如,你可以 不要使用orderdate = max這樣的句子。此外,你可以 不要使用在select子句中創(chuàng)建的變量的別名,因為select子句尚未處理。例如,你可以 不要寫下面的句子:選擇年份(order)作為orderyear。訂購年份> 2008年。通過應用這個過濾器,由c.city = 馬德里如下:c . customerid c . city o . orderid o . customerid無效fr ndo madrid-fr ndo fr ndo madrid ii fr ndo krlos馬德里iii krlos krlos。馬德里四krlos krlos馬德里五krlos這種情況下需要使用c.customerid = o。在此步驟中,customerid篩選器中的子句“沒有訂單的客戶”被過濾掉,但在步驟1-j3中,它重新加入外部列。但是,因為您只想返回來自馬德里的客戶,所以在篩選的城市中需要where子句(in c.city = madrid)。如果將它放在篩選器上,不屬于馬德里的客戶將被添加到外部列中。這里和地方的區(qū)別需要在這里說明。主要區(qū)別是在濾鏡前加了外列,哪里是崗位。如果該列被過濾掉,它將增加到1-j3。;不需要添加外部列,兩個過濾器是相同的。第三步group by子句該子句將上一步數據生成的臨時表分組,每一行只分成一組,生成虛擬表vt3。vt3表包含vt2表中的所有數據和組標識符。這是生成的臨時表vt3如下:group c . customerid c . customerid c . city o . orderid o . customerid在馬德里無效。無效fr ndo fr ndo madrid-fr ndo fr ndo madrid ii fr ndo krlos madrid iii krlos。kros kros madrid four kros kros madrid five krlos sql最后返回結果,每個包必須返回一行(除非被過濾掉)。因此,當一個組使用一條sql語句時,該組后面的處理子句如selection和having子句只能用于該組,該組后面的列必須使用聚合函數(如maximum、minimum、count、avg等。)來保證每組只返回。步驟4 having子句having子句過濾上一步生成的臨時表和只作用于后一組的數據,滿足將該組添加到虛擬表vt4的條件。應用此過濾器時:復制代碼如下:擁有count (o.orderid) 3后,生成的vt4表內容如下:group c . customerid c . customerid c . city o . orderid o . customerid無效。無效fr ndo fr ndo madrid-fr ndo fr ndo madrid ii fr ndo有一點需要注意的是,它使用了count (o. orderid)而不是quantity (*)。因為外部列被添加到查詢中,所以計數方忽略空列,這將導致意外的結果。第五步select子句雖然出現(xiàn)在sql語句之前,但是選擇是在第五步處理的,表的select子句的返回最終會返回給調用者。這個子句有三個階段:(5-1)計算表達式,和(5-2)。不同處理,(5-3)頂部過濾應用。步驟5-1中的計算表達式select子句中的表達式可以返回或操作上一步中返回的表的基本列。如果sql語句是一個聚合查詢,在3個步驟之后,您只能使用列組,并且必須對表中不是組的列使用聚合操作。沒有一個基本列必須是別名,如year,orderyear。注意:不能在select子句中使用上一步中創(chuàng)建的別名,甚至不能選擇該子句。原因是很多sql操作同時操作(一個操作),不再引入并發(fā)操作。因此,在別名中創(chuàng)建的select子句中只能使用以下術語,如order。例如,選擇年份(訂單)作為orderyear。訂購年度。在這個例子中,復制代碼如下:select c.customerid,count (o.orderid) as numorders,結果將是一個虛擬表vt5-1:c . customerid num orders fifssa zero frn do兩步5-2 distinct子句:如果使用的sql語句不同,sql將刪除重復的列,生成虛擬表vt5-2。5-3:應用上述步驟頂部的選項是函數的t-sql顯示顯示多少行?;陧樞蛟趏rderby子句中定義了對指定數量的列的查詢。這個過程產生一個虛擬表vt5-3。如上所述,這一步取決于序列順序來確定應該首先顯示哪些列。如果你不 如果不使用join子句指定結果的順序,則每個返回的結果都可能不一致。在我們的例子中,步驟5-3稍微有點,因為我們沒有 不要使用熱門關鍵詞。步驟6:在該步驟中,對上一步中order by子句返回的虛擬表進行排序,并根據order by子句中指定的順序返回游標vc6。orderby子句也是惟一的,可以使用select子句創(chuàng)建別名。注意:這一步與以往不同,這一步的結果是指針,而不是基于集合論的table.sql。一組不確定行的順序只是一個邏輯組的成員,所以成員的順序并不重要。帶有orderby子句的sql返回一個對象,組織的每個部門根據具體的sequence.ansi都需要這樣一個對象作為游標,了解這一點對你理解sql很重要。以上步驟如圖所示。本書主要內容參考微軟sql server 2008: t-sql查詢中的內容。如果你想了解更多關于sql查詢的知識,可以找這本書。你看,我有英文原版pdf,你想找我就找我。
了解更多sql語句各種關鍵字解析過程的詳細總結方法(sql關鍵字百科)相關內容請關注本站點。
上一個:小綠葉蟬防治
下一個:嘉定紫藤園幾月份好看

dnh,dnh公司流量計產品的優(yōu)勢
CC0402KRX5R5BB224,X5R 0402 220nF ±10% 6.3V
傻傻不知道,高氨基酸的白茶,都有啥作用?
禁忌喝傳統(tǒng)涼茶 其實有害
怎樣安裝監(jiān)控連接電視機頂盒(怎樣安裝監(jiān)控連接電視視頻教程)
切記,茶不能這樣喝!喝茶注意事項之二
華碩驅動下載后怎么安裝(華碩驅動器怎么下載)
牢記七點方可正確使用殺蟲劑
電腦黑屏電源鍵亮著怎么處理,聯(lián)想小新14電腦黑屏電源鍵亮著怎么處理
米6突然黑屏怎么辦,米11突然黑屏無法重啟
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos