聚合函數 <code>sum</code> <code>max</code> <code>min</code> <code>avg</code> <code>count</code>
group by
group by 子句可以包含任數目的字段 group by 子句中每個列都是建所列或有效表達式(不能是聚合函數) 除了聚會計算語句之外,<code>select</code>語句中的每個列都必須在group中出現 如果分組中有<code>null</code>值,則分為一組 <code>group by</code> 子句必須在<code>where</code>字句之後,<code>order by</code>子句之前
<code>where</code>過濾行,<code>having</code>過濾的是分組,<code>where</code>沒有分組的概念
一般在使用<code>group by</code>子句時,也應該給出<code>order by</code>子句,這是保證資料正确排序的唯一方法,不能依賴<code>group by</code>排序資料 例` select order_num,sum(quantity*item_price) as ordertotal
使用子查詢 子查詢最常用在<code>where</code>和 <code>in</code> 操作中
<code>union</code>規則:
<code>union</code>必須有2個<code>select</code>語句組成 <code>union</code>的每個查詢必須包含相同的<code>列,表達式,聚合函數</code> 列資料類型相同
<code>union all</code> 保留重複的資料 <code>union</code>預設去除重複的資料
mysql的全文索引
<code>match()</code>指定被搜尋的列,<code>against()</code>指定要使用的搜尋表達式 <code>myisam</code>支援全文索引,<code>innodb</code>并不支援 建立全文索引<code>fulltext(column)</code> <code>select note_text from products where match(note_text) against('rabbit')</code>
插入資料 <code>insert table(xx) values (xx)</code>
更新資料 <code>update table set xx = xx</code>
删除資料 <code>delete from table where xx=xx</code>
注意 <code>delete</code>并不删除表本身,隻是删除一行,删除所有行用 <code>truncate table</code>
建立試圖 ,試圖本身不包含資料,最常用的就是隐藏複雜的sql,建立格式為
<code>create view viewname as select xx</code>
建立存儲過程
存儲過程接收三個參數 pl(product lower)産品最低價 ph 最高價,pa平均價
存儲過程接受一個參數,輸出一個參數 (<code>in out</code>)
帶業務的存儲過程 1表示<code>true</code>,0表示<code>false</code>
使用遊标
1.使用遊标前,必須聲明(定義它),這個過程實際沒有檢索資料,他隻是定義要使用的select語句 2.一旦聲明後就要打開遊标已供使用 3.在遊标結束使用時,必須關閉遊标 4.打開遊标後使用<code>fetch</code>進行使用
建立遊标
使用遊标例子2
觸發器的使用
1 .在建立觸發器時,需要給出4條資訊:<code>1. 唯一的觸發器名</code>,<code>2.觸發器關聯表</code>,<code>3.觸發器應該響應的活動(delete,update,insert)</code>,<code>觸發器何時執行(處理之前或之後)</code> 2 . <code>隻有表才支援觸發器,試圖和臨時表不支援觸發器</code>
觸發器例子(但是mysql 5.0 之後不能傳回結果集)
事物管理 <code>transaction</code> <code>rollback</code> <code>commit</code> <code>save point</code>