<optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

    <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
  1. 
    
  2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

  3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

        1. <listing id="r9hwm"></listing>
          <delect id="r9hwm"></delect>
          <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>

          sql語句的順序

          sql語句的順序

          SQL 語句的執行順序 問題

          SELECT

          從數據庫中檢索行,并允許從一個或多個表中選擇一個或多個行或列。雖然 SELECT 語句的完整語法較復雜,但是其主要的子句可歸納如下:

          SELECT select_list

          [ INTO new_table ]

          FROM table_source

          [ WHERE search_condition ]

          [ GROUP BY group_by_expression ]

          [ HAVING search_condition ]

          [ ORDER BY order_expression [ ASC | DESC ] ]

          可以在查詢之間使用 UNION 運算符,以將查詢的結果組合成單個結果集。

          語法

          SELECT statement ::=

          < query_expression >

          [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }

          [ ,。n ] ]

          [ COMPUTE

          { { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,。n ]

          [ BY expression [ ,。n ] ]

          ]

          [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }

          [ , XMLDATA ]

          [ , ELEMENTS ]

          [ , BINARY base64 ]

          }

          ]

          [ OPTION ( < query_hint > [ ,。n ]) ]

          < query expression > ::=

          { < query specification > | ( < query expression > ) }

          [ UNION [ ALL ] < query specification | ( < query expression > ) [。n ] ]

          < query specification > ::=

          SELECT [ ALL | DISTINCT ]

          [ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]

          < select_list >

          [ INTO new_table ]

          [ FROM { < table_source > } [ ,。n ] ]

          [ WHERE < search_condition > ]

          [ GROUP BY [ ALL ] group_by_expression [ ,。n ]

          [ WITH { CUBE | ROLLUP } ]

          ]

          [HAVING <search_condition>]

          詳細的請看一下sql的幫助文件。

          SQL語句是按什么順序執行的

          分析器會先看語句的第一個詞,當它發現第一個詞是SELECT關鍵字的時候,它會跳到FROM關鍵字,然后通過FROM關鍵字找到表名并把表裝入內存。

          接著是找WHERE關鍵字,如果找不到則返回到SELECT找字段解析,如果找到WHERE,則分析其中的條件,完成后再回到SELECT分析字段。 最后形成一張我們要的虛表。

          其它的先不說了,只說WHERE。 WHERE關鍵字后面的是條件表達式。

          如果學過C語言等編程語言就會知道,條件表達式計算完成后,會有一個返回值,即非0或0,非0即為真(true),0即為假(false)。同理WHERE后面的條件也有一個返回值,真或假,來確定接下來執不執行SELECT。

          例: SELECT * FROM STUDENT WHERE SNO = '1'; 分析器先找到關鍵字SELECT,然后跳到FROM關鍵字將STUDENT表導入內存,并通過指針p1找到第一條記錄,接著找到WHERE關鍵字計算它的條件表達式,如果為真那么把這條記錄裝到一個虛表當中,p1再指向下一條記錄。 如果為假那么p1直接指向下一條記錄,而不進行其它操作。

          一直檢索完整個表,關把虛表返回給用戶。 再說EXISTS謂詞,EXISTS謂詞也是條件表達式的一部分。

          當然它也有一個返回值(true或false)。 例: SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE SC。

          Sno = Student。Sno AND SC。

          Cno = '1'); 這是一個SQL語句的嵌套使用,但和上面說的SQL語句的執行過程也是相同的。嵌套的意思也就是說當分析主SQL語句(外面的那個SELECT,我們權且先這么叫它)到WHERE關鍵字的時候,又進入了另一個SQL語句中。

          那么也就是說,分析器先找到表Student并裝入內存,一個指針(例如p1)指向Student表中的第一條記錄。然后進入WHERE里分析里面的SQL語句,再把SC表裝入內存,另一個指針(例如p2)指向SC表中的第一條記錄,分析WHERE后面的條件表達式,依次進行分析,最后分析出一個虛表2,也就變成 SELECT Sname FROM Student WHERE EXISTS 虛表2 如果虛表為空表,EXISTS 虛表2 也就為false,不返回到SELECT,而p1指向下一條記錄。

          如果虛表2不為空也就是有記錄,那么EXISTS 虛表2 為true同,返回到SELECT并把p1指向的記錄添加到主SQL語句的虛表1當中。

          為什么SQL語句要按標準順序寫

          好像自已在書寫 SQL 語句時由于不清楚各個關鍵字的執行順序, 往往組織的 SQL 語句缺少很好的邏輯, 憑感覺 "拼湊" ( 不好意思, 如果您的 SQL 語句也經常 "拼湊", 那您是不是得好好反省一下呢?). 確實是爽了自己, 可苦了機器, 服務器還需要在我們的雜亂無章的 SQL 語句中尋找它下一句需要執行的關鍵字在哪里. 效率嘛, 由于我們的感覺神經對秒以下的變化實在不敏感, 暫且就認為自已寫的 SQL 順序無關緊要, "反正沒什么變化!", 呵呵.其實服務器對每句 SQL 解析時間都會有詳細記錄的, 大家可以看一下自已按習慣寫的 SQL 和按標準順序寫的SQL解析時間差別有多大. 因此,建議大家在平時工作中 SQL 語句按標準順序寫, 一是專業, 二是實用, 呵呵, 不過覺得最主要的是心里感覺舒服.。

          用SQL語句實現兩個語句的順序執行

          有兩種方法:

          方法一: 使用linked_server_*_name,例如:

          select * from ERP..*

          linked_server_name Linked server referencing the OLE DB data source

          catalog Catalog in the OLE DB data source that contains the object

          schema Schema in the catalog that contains the object

          object_name Data object in the schema

          SQL Server用linked_server_name取linked server相關配置信息,然后將catalog、schema、object_name作為參數傳遞給OLEDB。例如遠程鏈接服務器為SQL Server時catalog為數據庫實例名,schema為owner id (dbo);鏈接服務器為Oracle時 (OLEDB),catalog為空,schema為用戶

          注意點:

          a). 遠程鏈接服務器為Oracle時schema、object_name必須大寫(其他類型的不清楚),否則會報錯

          消息 7314,級別 16,狀態 1,第 1 行

          鏈接服務器 "ERP" 的 OLE DB 訪問接口 "MSDAORA" 不包含表 ""CRM"."INQ""。該表不存在,或者當前用戶沒有訪問該表的權限。

          b). 必須使用完整的名稱。例如SQL Server本地執行sql,dbo可以省略不寫,使用遠程鏈接服務器時則必須提供

          方法二:使用openquery,例如:

          select *

          from openquery(ERP,'select t.* from(select inq.*,rownum as rindex from inq order by img01) t where *>=51 and *<=100')

          優點:

          a). SQL Server只是將openquery中的sql發送給遠程服務器執行,因此可以使用遠程鏈接服務器的所有sql語法(例如Oracle語法),sql對象也不必大寫

          b). 數據類型的異常很少(個別情況下還是會發生)

          c). openquery的寫法同樣可用于update、insert、delete

          d). 鏈接服務器為Oracle時,schema不必出現在sql語句中

          關于使用鏈接服務器方面的一些限制、前提條件,可以參考https://**en-us/library/aa172718(SQL.80).aspx

          https://**en-us/library/aa213288(SQL.80).aspx

          請教一條sql語句的執行順序

          這個我正好有收藏O(∩_∩)O哈哈~

          1、FROM:對FROM子句中的前兩個表執行笛卡爾積(Cartesian product)(交叉聯接),生成虛擬表VT1

          2、ON:對VT1應用ON篩選器。只有那些使<join_condition>;為真的行才被插入VT2。

          3、outer(JOIN):如 果指定了OUTER JOIN(相對于CROSS JOIN 或(INNER JOIN),

          保留表(preserved table:左外部聯接把左表標記為保留表,右外部聯接把右表標記為保留表,

          完全外部聯接把兩個表都標記為保留表)

          中未找到匹配的行將作為外部行添加到 VT2,生成VT3.如果FROM子句包含兩個以上的表,

          則對上一個聯接生成的結果表和下一個表重復執行步驟1到步驟3,直到處理完所有的表為止。

          4、WHERE:對VT3應用WHERE篩選器。只有使<where_condition>;為true的行才被插入VT4.

          5、 group by:按GROUP BY子句中的列列表對VT4中的行分組,生成VT5.

          6、CUBE|ROLLUP:把超組(Suppergroups)插入VT5,生成VT6.

          7、HAVING:對VT6應用HAVING篩選器。只有使<having_condition>;為true的組才會被插入VT7.

          8、SELECT:處理SELECT列表,產生VT8.

          9、DISTINCT:將重復的行從VT8中移除,產生VT9.

          10、order by:將VT9中的行按ORDER BY 子句中的列列表排序,生成游標(VC10).

          TOP:從VC1

          轉載請注明出處華閱文章網 » sql語句的順序

          短句

          mysql的update語句

          閱讀(391)

          mysql中的update語句怎么寫 首先,單表的UPDATE語句:UPDATE [LOW_PRIORITY] [IGNORE] tbl_nameSET col_name1=expr1 [, col_name2=expr2 。][WHERE where_de

          短句

          愛情英文語句

          閱讀(308)

          關于愛情的英文句子 1) I love you not because of who you are, but because of who I am when I am with you.我愛你,不是因為你是一個怎樣的人,而是因為我喜歡與你在一起時的感覺。

          短句

          if的多條件判斷語句

          閱讀(794)

          多個if條件語句怎么使用 1. 第一種應用的格式為雙路條件選擇。語法格式如下:if (條件表達式){語句序列1}else{語句序列2}if和else都是Java的關鍵字,執行if語句時,程序先計算條

          短句

          感恩的英語句

          閱讀(360)

          關于感恩的英語句子Society grateful - grateful to my parents because they gave me their precious lives Society grateful - grateful to my te

          短句

          投票的語句

          閱讀(317)

          叫人投票的句子有哪些今天你支持我一票,明天我回報你千萬點。走過路過,不要錯過,投一票給我們。我們衷心的希望得到您的支持。您的支持將成為我們以后奮斗的莫大動力。你的一小票,我們的一大步。如果你有時間沒,麻煩你我投一票你的一票對我

          短句

          關于酒的語句

          閱讀(341)

          關于酒的句子有哪些1、煙籠寒水月籠沙,夜泊秦淮近酒家。唐-杜牧《泊秦淮》2、一曲新詞酒一杯,去年天氣舊亭臺,夕陽西下幾時回。北宋-晏殊《浣溪沙》3、莫笑農家臘酒渾,豐年留客足雞豚。南宋-陸游《游山西村》4、勸君更盡一杯酒,西出陽關無故

          短句

          for語句的省略

          閱讀(729)

          for(表達式1;表達式2;表達式;)分別省略表達式1,2,3都什么意思 首先看到你的問題我就覺得你想進行騷操作。(1)省略1是可以的,但是需要在for語句之前定義變量。如:int i=0;for(;i<10

          短句

          flashon語句

          閱讀(360)

          flash語句 1、按鈕事件處理 box_btn.onPress=function(){ trace("ok"); }; 按鈕實例名稱.事件處理方法=function(){ //處理程序 }; 例如: n=1 box_btn.onRelease=function(

          短句

          經典摘抄語句

          閱讀(305)

          經典句子摘抄50句 1,記住該記住的,忘記該忘記的。改變能改變的,接受不能改變的。 2,能沖刷一切的除了眼淚,就是時間,以時間來推移感情,時間越長,沖突越淡,仿佛不斷稀釋的茶。 3,怨言

          短句

          flashif語句

          閱讀(364)

          FLASH if語句是什么var i = 0;//定義變量i,賦值0,標準寫法var i:int=0;var m = false;//定義變量,賦值false,標準寫法var m:Boolean=false;onMouseMove = function ()

          短句

          銷售和話術經典語句

          閱讀(346)

          銷售中的經典語言有哪些 長久以來,人們的內心有一個正確的圖像,如果與現實出現反差,就會產生認知不和諧,人們會有一種不安的感覺,會產生一種壓力,進而產生動力,自行負責,自動自發,

          短句

          cfor語句嗎

          閱讀(317)

          c語言中for語句是怎么用的 1、for是C語言中的一個關鍵字,主要用來控制循環語句的執行。 2、下面舉例說明for語句的使用方法: int i; for(i=0; i<3; i++) // i=0是初始化部分;i<3是循環判斷條件部分(當滿足此條件時才進

          短句

          在select語句中

          閱讀(495)

          在 select 語句中什么情況采用group by GROUP BY 是分組查詢, 一般 GROUP BY 是和 聚合函數配合使用,你可以想想你用GROUP BY 按下面A這個字段分組,那其他字段內容不同,變成一對多又改如何顯示呢,比如下面所示A B1 a

          短句

          sql語句notlike

          閱讀(2465)

          請教sql語句中not like的用法 標準SQL中用like進行模糊查詢,有兩個通配符:%百分號代表任意個字符,_下劃線代表一個字符。例如查詢姓名中包含“曉”的人,where子句可以寫成:where name like '%曉%'姓名由兩個字構成,并且第二

          短句

          mysql的update語句

          閱讀(391)

          mysql中的update語句怎么寫 首先,單表的UPDATE語句:UPDATE [LOW_PRIORITY] [IGNORE] tbl_nameSET col_name1=expr1 [, col_name2=expr2 。][WHERE where_de

          短句

          愛情英文語句

          閱讀(308)

          關于愛情的英文句子 1) I love you not because of who you are, but because of who I am when I am with you.我愛你,不是因為你是一個怎樣的人,而是因為我喜歡與你在一起時的感覺。

          短句

          if的多條件判斷語句

          閱讀(794)

          多個if條件語句怎么使用 1. 第一種應用的格式為雙路條件選擇。語法格式如下:if (條件表達式){語句序列1}else{語句序列2}if和else都是Java的關鍵字,執行if語句時,程序先計算條

          短句

          感恩的英語句

          閱讀(360)

          關于感恩的英語句子Society grateful - grateful to my parents because they gave me their precious lives Society grateful - grateful to my te

          短句

          for語句的省略

          閱讀(729)

          for(表達式1;表達式2;表達式;)分別省略表達式1,2,3都什么意思 首先看到你的問題我就覺得你想進行騷操作。(1)省略1是可以的,但是需要在for語句之前定義變量。如:int i=0;for(;i<10

          短句

          關于酒的語句

          閱讀(341)

          關于酒的句子有哪些1、煙籠寒水月籠沙,夜泊秦淮近酒家。唐-杜牧《泊秦淮》2、一曲新詞酒一杯,去年天氣舊亭臺,夕陽西下幾時回。北宋-晏殊《浣溪沙》3、莫笑農家臘酒渾,豐年留客足雞豚。南宋-陸游《游山西村》4、勸君更盡一杯酒,西出陽關無故

          短句

          投票的語句

          閱讀(317)

          叫人投票的句子有哪些今天你支持我一票,明天我回報你千萬點。走過路過,不要錯過,投一票給我們。我們衷心的希望得到您的支持。您的支持將成為我們以后奮斗的莫大動力。你的一小票,我們的一大步。如果你有時間沒,麻煩你我投一票你的一票對我

          短句

          查詢語句排序

          閱讀(336)

          sql語句 嵌套查詢 排序 select a.id,a.name,b.time from a a left join b b on a.id = b.id order by b.time descselect a.id,a.name,b.time from a a inner join b b on

          <optgroup id="r9hwm"></optgroup><nav id="r9hwm"><label id="r9hwm"></label></nav>

            <tt id="r9hwm"><tr id="r9hwm"></tr></tt>
          1. 
            
          2. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

          3. <optgroup id="r9hwm"><samp id="r9hwm"><dl id="r9hwm"></dl></samp></optgroup>

                1. <listing id="r9hwm"></listing>
                  <delect id="r9hwm"></delect>
                  <optgroup id="r9hwm"><samp id="r9hwm"><ol id="r9hwm"></ol></samp></optgroup>
                  亚洲丰满少妇xxxxx高潮