標籤:des os io 使用 strong 資料 on c 時間
from子句
在查詢語句中from應該是必須的,雖然可以沒有,但是那樣沒有意義。
因為from子句是其他部分的基礎,輸出、where條件、order by等所有要訪問的表都必須包含在from子句中。
簡單的可以包含一個表,也可以合并多個資料來源的資料和多個資料類型的資料。最大訪問數量是256個表。
可以接受的資料來源:本地SQL SERVER表、子查詢、視圖、表值使用者定義的函數返回的行和列、分布式資料來源。。。
表的別名:from子句中 “表名 AS 別名”這種格式為表起一個別名。AS可以省略,但最好不要這樣。
如果表名、別名、列名等等名稱與關鍵字衝突,可以將名稱放在中括弧[]中,以表示其不是關鍵字。(非標準SQL)
同樣 如果表名、列名等名稱中間包含空格,也可以放在中括弧[]中,但絕不建議這樣做。
完整名稱 由4部分組成:Server.Database.Schema.Table 在當前資料庫中則不需要伺服器和資料庫名,也就是一般情況下我們需要些後面兩部分就可以了。使用限定的名稱有兩個好處,①避免意外的錯誤,②提高查詢的效能,所以建議養成好的習慣。
where條件
篩選from子句的輸出結果,並限制結果集中返回的行。
比較子 標準的六個 >、>=、=、=<、<、<> SQL Server特有的三個 !=、!<、!>
代數的使用 子句條件中的 col+20=60 與col=60-20 等價,但是後者可以提高效能,這個簡單的例子,道理是一樣的,所以一定要注意書寫習慣,改掉壞毛病。
其他比較子 BETWEEN IN LIKE IS SOME ANY ALL
BETWEEN x and z 相當於大於等於x且小於等於z;它經常與日期一起使用,日期時間
IN 用例一 region IN (‘Hebei’,‘Henan’); 用例二 ‘Hebei‘ IN (col1,col2,col3…)
LIKE 包含萬用字元的條件。SQL萬用字元與DOS萬用字元不同,避免混淆,現在只說SQL的萬用字元:%代表任意個數的任一字元, _代表一個任一字元, []所附字元中的一個, [^]不在所附字元中。舉例說明:‘Able’ LIKE ’A%’ ‘Able’ LIKE ’Abl_’ ‘A’ LIKE ‘[A-E]’ ‘a’ LIKE ‘abf’ ‘A’ LIKE ‘[^WXYZ]’
邏輯運算子 NOT AND OR 串連多個where條件 ,運算順序即 NOT AND OR。可以加()以增強可讀性。
SELECT…WHERE… SELECT ‘abc’ AS col WHERE 條件。如果條件為真,則返回 abc ,如果條件為假,返回為空白。
返回結果
星號* 特殊萬用字元 代表表順序的所有列;如果多個表也是所有表的所有列。tablename.*則只包括來自該表的列。
別名顯示在結果集中;如果沒有別名,運算式和常量一般顯示為空白欄位標題;包含空格或者關鍵字的別名放在方括弧、單引號或者雙引號內(不過最好還是不用那些)。
限定的列用表名限定列,防止產生誤會和錯誤。
結果集排序
通過列名指定排序 order by col1,col2…
使用運算式指定排序 order by 運算式
使用列別名指定排序 (where子句不允許使用列別名,OK)
使用列的順序位置 order by 1; 不是很好,因為有時候列的順序位置會改變
升序、降序:預設升序ASC;降序DESC。例,ORDER BY col1 DESC;
定序
謂詞
首先解釋一下謂詞的意思,根據《現代漢語》的定義,詞語分兩類:體詞包括名詞、數詞、量詞;謂詞包括動詞和形容詞。在電腦語言的環境下,謂詞是指條件運算式的求值返回真或假的過程。SQL中的謂詞跟在SELECT後面
ALL/DISTINCT ALL返回所有行(預設); DISTINCT把重複的行刪除,保留一個。
TOP(n) 在order by的條件下,TOP(n)表示返回結果的前n行;TOP(n) PERCENT 則返回結果集中的前n%。
WITH TIES 與TOP(n)一起使用,表示允許並列第n名等情況的發生
隨即行選擇 用ORDER BY NewID()排序,然後選擇第一行。newID是一個隨機數,這種方法對效能有一定影響。
SQL Server 查詢