mysql總結

1,事務的屬性(ACID)

    1.1,原子性(A):事務是一個不可分割的單位,事務中的操作要麼全部執行,要麼全部不執行.

    1.2,一致性(C):事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態

    1.3,隔離性(I):多個事務之間互不干擾

    1.4,持久性(D):事務一旦提交,就會永久性的改變數據庫的數據

2,事務例子

SET autocommit = 0;#關閉自動提交
START TRANSACTION;#開啓事務
SELECT 1;#語句1
SELECT 2;#語句2
COMMIT;#提交事務
ROLLBACK;#回滾事務

3,事務隔離級別

    3.1,讀未提交:允許事務讀取未被提交的事務,會出現髒讀,不可重複讀,幻讀

    3.2,讀已提交:只允許讀取提交的事務,可以避免髒讀,但會出現不可重複讀和幻讀

    3.3,可重複讀:確保事務多次從一個字段中讀取相同的值,但事務期間不允許修改,避免髒讀和不可重複讀,但依然會幻讀

    3.4,串行化:確保事務從一個表中讀取相同的行,在這個事務之間,禁止其他事務對這個表進行更新操作,沒有併發問題,但性能較低

4,視圖

    4.1,創建或修改

create or replace view 視圖名
as
查詢語句;

    4.2,操作和表大致相同,增刪改會更新原始表的數據

    4.3,不能更新的視圖

        4.3.1,分組函數:distinct,group,by,having,union,union all

        4.3.2,常量視圖

        4.3.3,select中包含子查詢

        4.3.4,包含join或者from後面有多個表

        4.3.5,from加上一個不可更新的視圖

        4.3.6,where子查詢引用了from子句中的表

5,變量

    全局變量對所有連接有效,重啓之後恢復默認;

    會話變量只對本次連接有效;

    用戶變量是對當前連接有效的自定義變量;

    局部變量僅僅在定義它的begin end塊中有效(放在第一句)

    5.1,查看所有系統變量:SHOW GLOBAL(SESSION) VARIABLES;

    5.2,查看滿足條件系統變量:SHOW GLOBAL(SESSION) VARIABLES LIKE '%char%'

    5.3,精確查看系統變量:select @@GLOBAL(SESSION)系統變量名

    5.4,爲系統變量賦值:set GLOBAL(SESSION) 系統變量名 = 值;或set @@GLOBAL(SESSION).系統變量名 = 值

    5.5,自定義變量[用戶變量]:

        5.5.1,申明:set @變量名=值|set @變量名:=值|select @變量名:=值

        5.5.2,賦值:select 字段 into @變量名 from 表

        5.5.3,查看:select @變量名

    5.6,自定義變量[局部變量]:

        5.6.1,申明:DECLARE 變量名 類型 | DECLARE 變量名 類型 DEFAULT 值

        5.6.2,賦值:set 變量名=值 | set 變量名 := 值 | select @變量名:=值 | select 字段 into 變量名 from 表

        5.6.3,查看:select 變量名

6.存儲過程:一組預先編譯好的sql語句的集合,類似於java中的方法

    6.1,好處:代碼重用;簡化操作;減少連接數據庫;提高效率

    6.2,創建:

DELIMITER $
CREATE PROCEDURE 存儲過程名(參數列表)
BEGIN
	存儲過程體
END $

參數列表(參數模式 參數名 參數類型)
    參數模式
        in:入參
        out:出參
        inout:入出參數

結束符:DELIMITER 符號

調用
    call 存儲過程名(參數列表)

    6.3,刪除:drop PROCEDURE 存儲過程名;

    6.4,查看:show create procedure 存儲過程名

 

7,函數

    7.1,創建:

DELIMITER $
CREATE FUNCTION 函數名(參數列表) RETURNS 返回類型
BEGIN
	函數體
END $
DELIMITER ;

參數列表(參數名 參數類型)

函數體包含return語句

調用select 函數名(參數列表)

 

8,case結構

case 字段|變量|表達式
  when 值1 then 返回值1(語句)
  when 值2 then 返回值2(語句)
  else 默認值(語句)
end [case]

case
  when 條件1 then 返回值1(語句)
  when 條件2 then 返回值2(語句)
  else 默認值(語句)
end [case]

語句只能放在函數或存儲過程中

 

9,if結構

if 條件1 then 語句1;
elseif 條件2 then 語句2;
else 語句n;
end if;

10,循環結構

分類:while, loop, repeat

循環控制:
    iterate:類似continue
    leave:類似break

while循環:
    [標籤:]while 循環條件 do
        循環體;
    end while [標籤]

loop循環:(搭配leave使用)
    [標籤:]loop
        循環體;
    end loop [標籤]

repeat循環:
    [標籤:]repeat
        循環體;
    until 條件
    end repeat[標籤]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章