not:否定任何邏輯表達式,或是關鍵詞,如like,null,between等。
group by和having子句在select語句中使用,可以將表劃分成組並返回匹配having子句條件的組。
語法:select語句開頭
group by [all] aggregate_free_expression [,aggregate_free_expression]*
[having search_conditions]
select語句結尾
group by:指定表將劃分的組群,如果在select表項中包含集合函數,則為各組計算一個總計值。這些總計值的結果以新的列顯示,而不是新的行。在 having子句中使用者可以引用這些新的總計列。在group by之前的select_list中可以使用avg、count、max、min和sum等集合函數。表可以被任意列的組合分組。
all:在結果中包含所有組群的Transact-SQL擴展,這裡的所有組群甚至包括那些被where子句所排除的組群。如果同時使用having子句,將對all的意義進行否定。
aggregate_free_expression:不包含集合函數的表達式,Transact-SQL擴展允許在用列名稱分組的同時,用無集合函數的表達式分組。
having:為group by子句設置條件,類似於where為select語句設置條件的方法。having的查找條件可以包括集合函數表達式。除此之外,它的查找條件與where查找條件相同。
order by:按列排列結果。對select輸出的列可以用列名、列別名或列位置來引用。例如:select id as myid,name as myname from mytable group by id、select id as myid,name as myname from mytable group by myid、select id as myid,name as myname from mytable group by 1這三句是完全等價的。當然,我們不贊成用第三種用法,這將給程式的可讀性帶來不好的影響。 為了以降序排列,把DESC關鍵詞加到order by子句中你要排序的列名前。缺省是升序,你也可以用ASC關鍵詞明確指定。
limit 子句:用來限制select語句返回的行數。limit取1個或2個數字參數,如果給定2個參數,第一個指定要返回的第一行的偏移量,第二個指定返回行的最大數目。初始行的偏移量是0(不是1)。如果給定一個參數,它指出偏移量為0的返回行的最大數目。也就是說limit 5和limit 0,5完全等價。
至於procedure關鍵詞的含義,我也沒搞得太清楚,好像是對儲存過程的支持,而MySQL本身不支持儲存過程,看來是為了將來擴充的需要而保留的吧