Mysql常用技能

summerNazi發表於2018-12-25

1.DML、DDL、DCL

1).DML(Dada Manipulation Language) 資料操縱語言(CRUD)
    A).新增
        a).單行插入 insert into A(a,b,c)values(a,b,c);
        b).多行插入 insert into A(a,b,c)values(a1,b1,c1),(a2,b2,c2);
    B).更新 
        a).set單欄位 update A set a = 1 where c = 3;
        b).set多欄位 update A set a = 1 ,b = 2 where c = 2;
    C).查詢
        a).注意where條件 select a,b,c from A;
    D).刪除
        a).注意where條件 delete from A where c = 3;
2).DDL(Dada Definition Language) 資料庫定義語言
    A).CREATE
        a).建立表
            create table A(
                 a int(10),
                 b tinyint(4),
                 c tinyint(4),
                 d char(10),
                 ...
            );
    B).ALERT 
        a).新增欄位 alter table A add tag int;
        b).修改欄位 alter table A modify COLUMN tag char(20);
        c).刪除欄位 alter table A drop COLUMN tag;
    C).DROP
        a).刪除表 drop table A;
        b).刪除庫 drop database Demo;
 3).DCL(Dada Control Language) 資料庫控制語言
     A).grant 授權
         a).grant 許可權 on 資料庫物件 to 使用者 
     B).deny 拒絕授權
         DENY 許可權 TO 使用者 
     C).revoke 撤銷授權
         a).revoke 許可權 on 資料庫物件 from 使用者 
 4).其他
     A).檢視錶結構
         a).desc A; 
         b).describe A; 
         c).show columns from A; 
     B).清空表資料
         a).truncate table A;

2.SQL語句分析

 1).EXPLAIN、DESC語句---關鍵資訊解釋
     A).Type(system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL)
     B).Possible_keys(NULL,則沒有相關的索引。在這種情況下,可以通過檢查WHERE子句看是否它引用某些列或適合索引的列來提高你的查詢效能)
     C).Key(MySQL實際決定使用的鍵(索引))
     D).Key_len(索引中使用的位元組數,不損失精確性的情況下,長度越短越好)
     E).Ref(連線匹配條件,即哪些列或常量被用於查詢索引列上的值)
     F).Rows(MySQL根據表統計資訊及索引選用情況,估算的找到所需的記錄所需要讀取的行數)
     G).Extra(MySQL解決查詢的詳細資訊)
 2).SHOW PROCESSLIST 分析

3.Mysql通過job任務排程(event)執行儲存過程

1).事件(EVENT) 呼叫 函式(f(x))(儲存過程)
    a).事件 
        Call proc_detail();
    b).儲存過程 
        CREATE PROCEDURE proc_detail()
        BEGIN
            DECLARE  id1  bigint(20);
            DECLARE  openid1  varchar(100); 
             DECLARE  unionid1  varchar(100); 
            -- 遍歷資料結束標誌
            DECLARE done INT DEFAULT FALSE;
            -- 遊標
            DECLARE cur_account CURSOR FOR select id,openid,unionid from m_users where phone_bind =1 ;
            -- 將結束標誌繫結到遊標
            DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
            -- 開啟遊標
            OPEN  cur_account;     
            -- 遍歷
            read_loop: LOOP
                    -- 取值 取多個欄位
                    FETCH  NEXT from cur_account INTO id1,openid1,unionid1;
                    IF done THEN
                        LEAVE read_loop;
                     END IF;
         
                -- 你自己想做的操作
                            insert into m_users_details(uid,openid,unionid,style) VALUES(id1,openid1,unionid1,1); 
            END LOOP;
            CLOSE cur_account;
        END

相關文章