熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

快速掌握MySQL數據庫中SELECT語句[2]

2013-11-23 21:07:03  來源: MySQL 

  where子句設置了搜索條件它在insertupdatedelete語句中的應用方法也與在select語句中的應用方法完全相同搜索條件緊跟在關鍵詞where的後面如果用戶要在語句中使用多個搜索條件則可用and或or連接搜索條件的基本語法是[not] expression comparison_operator expression;[not] expression [not] like match_string;[not] expression is [not] null;[not] expression [not] between expression and expression;[not] column_name join_operator column_name;[not] boolean_expression

  and用來聯結兩個條件並在兩個條件都是TRUE的時候返回結果當在同一語句中使用多個邏輯運算符時and運算符總是最優先除非用戶用括號改變了運算順序

  or用來聯結兩個條件當兩個條件中有任一條件是TRUE的時候返回結果當在同一語句中使用多個邏輯運算符時運算符or通常在運算符and之後進行運算當然用戶可以使用括號改變運算的順序

  between用來標識范圍下限的關鍵詞and後面跟范圍上限的值范圍where @val between x and y包含首尾值如果between後面指定的第一個值大於第二個值則該查詢不返回任何行

  column_name在比較中使用的列名在會產生歧義時一定要指明列所在的表名

  comparison_operator比較運算符見下表

WordWRAP: breakword bgColor=#fff>以下是引用片段
符號   意義
=      等於
>      大於
<      小於
>=     大於等於
<=     小於等於
!=     不等於
<>     不等於

  在比較charvarchar型數據<的意思是更接近字母表頭部>代表更接近字母表尾部一般來說小寫字母大於大寫字母大寫字母大於數字但是這可能依賴於服務器操作系統的比較順序

  在比較時末尾的空格是被忽略的例如Dirk等於Dirk

  在比較日期時<表示早於>表示晚於

  在使用比較運算符比較character和datetime數據時需用引號將所有數據引起來

  expression可能是列名常數函數或者是列名或常數的任意組合以及以算術運算符或逐位運算符連接的函數算術運算符如下表所示

以下是引用片段
符號   意義
+      加號
      減號   
*      乘號
/      除號

  is null在搜索一個NULL值時使用

  like關鍵詞對charvarchar和datetime(不包括秒和毫秒)可以使用likeMySQL中like也可以用在數字的表達式上

  當用戶在搜索datetime型數據最好是使用關鍵詞like因為完整的datetime記錄包含各種各樣的日期組件例如用戶在列arrival_time中加入一個值:而子句where arrival_time=:卻沒有發現它因為MySQL把錄入的數據轉換成了Jan :AM然而子句where arrival_time like%:%就能找到它

  boolean_expression返回truefalse值的表達式

  match_string由字符和通配符組成的串用單引號或雙引號引起來是匹配模式通配符如下表所示

WordWRAP: breakword bgColor=#fff>以下是引用片段
符號       意義
%          或多個字符的字符串
_           任何一單個字符
not     否定任何邏輯表達式或是關鍵詞
             如likenullbetween等
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中可以使用avgcountmaxmin和sum等集合函數表可以被任意列的組合分組

  all在結果中包含所有組群的TransactSQL擴展這裡的所有組群甚至包括那些被where子句所排除的組群如果同時使用having子句將對all的意義進行否定

  aggregate_free_expression不包含集合函數的表達式TransactSQL擴展允許在用列名稱分組的同時用無集合函數的表達式分組

  having為group by子句設置條件類似於where為select語句設置條件的方法having的查找條件可以包括集合函數表達式除此之外它的查找條件與where查找條件相同

  order by按列排列結果對select輸出的列可以用列名列別名或列位置來引用例如select id as myidname as myname from mytable group by idselect id as myidname as myname from mytable group by myidselect id as myidname as myname from mytable group by 這三句是完全等價的當然我們不贊成用第三種用法這將給程序的可讀性帶來不好的影響 為了以降序排列把DESC關鍵詞加到order by子句中你要排序的列名前缺省是升序你也可以用ASC關鍵詞明確指定

  limit 子句用來限制select語句返回的行數limit取個或個數字參數如果給定個參數第一個指定要返回的第一行的偏移量第二個指定返回行的最大數目初始行的偏移量是(不是)如果給定一個參數它指出偏移量為的返回行的最大數目也就是說limit 和limit 完全等價

  至於procedure關鍵詞的含義我也沒搞得太清楚好象是對存儲過程的支持而MySQL本身不支持存儲過程看來是為了將來擴充的需要而保留的吧

[]  []  


From:http://tw.wingwit.com/Article/program/MySQL/201311/29617.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.