mysql查漏補缺

日期類型   
 Datetime:時間日期 格式:YYYY-mm-dd HH:ii:ss 範圍1000到9999
 Date:日期 datetime的date部分
 Time:時間段 某個區間之間
 Timestamp:時間戳 但格式與datetime完全一樣。從1970年開始的
 Year:年份 
 varchar 和 nvarchar 和char     
nvarchar(n): 包含n個字符的可變長度Unicode字符數據。n的值必須介於1與4,000之間。字節的存儲大小是所輸入字符個數的兩倍。所輸入的數據字符長度可以爲零。
varchar(n):長度爲n個字節的可變長度且非Unicode的字符數據。n必須是一個介於1和8,000之間的數值。存儲大小爲輸入數據的字節的實際長度,而不是n個字節。所輸入的數據字符長度可以爲零。
Varchar 的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian" 而char 不一樣,比如char(100),它的值是"qian",而實際上它在數據庫中是"qian "(qian後共有96個空格,就是把它填滿爲100個字節)。 
    由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉!
    varchar一般適用於英文和數字,Nvarchar適用中文和其他字符,其中N表示Unicode常量
 行子查詢
    返回結果可以是多行多列
    需求:要求查詢整個學生中年齡最大**且**最高的學生
    1.確定數據源  select * from student where age=? and height=?
    2.確定最大的年齡和最高身高 select max(age) ,max(height) from student;
    行子查詢:要構造行元素 行元素由多個字段組成 (如下的 (age,height))
    select * from student where (age,height)=(select max(age) ,max(height) from student)
表子查詢
    返回結果可以是多行多列
    需求:要求查詢每個班 最高的一個學生
    1.確定數據源  select * from student order by height desc
    2.從每個班選出第一個學生 select * from student group by id
    表子查詢:from 子查詢 :得到的結果作爲from數據源
    select * from (select * from student order by height desc) as students group by id
事務
1.開啓事務:告訴系統一下操作不直接寫入數據表 先放入事務日誌之後
 
Start transaction;
2.進行事務 update insert等
3.關閉事務
 a. 提交事務: 同步數據表(操作成功) commit;
b. 回滾事務:直接情況日誌表(操作失敗)rollback;
原理圖:
 
  設置回滾點: savepoint 回滾點名字;

 回到回滾點: rollback to 回滾點;


事務特性:
 A: Atomic 原子性 。事務的整個操作是一個整體,不可以分割。要麼全部成功要麼全部失敗
B:Consistency 一致性,事務操作前後 數據表中沒有變化
I:Isolation 隔離性,事務操作互相隔離不受影響
D:Durability 持久性 數據一旦提交 不可更改
觸發器 trigger
 觸發類型:增刪改 insert delete update
 觸發時間:前後 before after
 觸發對象:表中的每一條記錄

觸發器基本語法
 --臨時修改語句結束符
  Delimiter 自定義符號:後續代碼中只有碰到這個自定義符號語句才結束
  Create trigger 觸發器名稱 觸發時間 觸發類型 for each row
  Begin
      --觸發器內容 每一行內容都必須使用語句結束符;
  End
  --語句結束符
  自定義符號
  --將臨時修改修正過來
  Delimiter ; 

自定義函數
  Create function 函數名 ([形參列表]) returns 數據類型
  Begin
  函數體
   返回值:return 類型
  End
用select 調用函數
存儲過程
 存儲過程是一種沒有返回值的函數 。如果想要有值 則可以用out 或 inout來修飾參數
create procedure 名字([參數列表])
begin
 過程體
 end
用call調用存儲過程



發佈了53 篇原創文章 · 獲贊 5 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章