Mysql經常使用技能

1.DML、DDL、DCLsql

1).DML(Data 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(Data 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(Data Control Language) 數據庫控制語言
     A).grant 受權
         a).grant 權限 on 數據庫對象 to 用戶 
           EG:
              Ⅰ.爲用戶受權host
                  update user set host = ’hostName’ where user = ’adminName’; 
              Ⅱ.爲用戶受權db[hostName=%,adminName@'%'(%任何主機)]
                  ①所有權限
                      grant all privileges  on dbName.* to adminName@hostName identified by "adminPassword";
                  ②部分權限
                      grant select,update on dbName.* to adminName@hostName identified by 'adminPassword';
              Ⅲ.刷新系統權限
                  flush privileges;
     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)執行存儲過程ide

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
相關文章
相關標籤/搜索