zoukankan      html  css  js  c++  java
  • MYSQL 测试常用语句使用技巧

     终于有时间可以整理一下工作中常用的sql语句,基本的sql语句及增删改查就不说了。对于测试而言,经常用到的还是造数据,取随机数据和查询。比如造数据时,为了确保数据真实性,可能时间是随机的,用户是随机的。对null值得处理和update。下面列出我工作中使用较多的一些sql使用技巧,希望能帮助到大家。
    时间处理
    select UNIX_TIMESTAMP(NOW());   -- 将时间转换为时间戳 1518428395
    select FROM_UNIXTIME(1518428166);  -- 将时间戳转换为时间 2018-02-12 17:36:06
    select FROM_UNIXTIME(1518428166,'%Y-%m-%d')  -- 2018-02-12
    SELECT STR_TO_DATE(NOW(),'%Y-%m-%d'); -- 2018-02-12 java代码调用会出错
    SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %k:%i:%s');  -- 2018-02-12 17:44:33
    select date_format(DATE_SUB(NOW(),INTERVAL +1 DAY), '%Y%m%d') -- 20180211  +为减去多少天  -为加多少天
    SELECT DATE_SUB(CURDATE(),INTERVAL -1 DAY); -- 2018-02-13

    随机数

    set @min=1;
    set @max =3;
    select FLOOR(RAND() * @max-@min+1)+@min;  -- 返回1-3之间的随机数
    
    select FLOOR(RAND() * 56); -- 产生0-56的随机整数数
    SELECT FORMAT(rand()*55,2); -- 0-55随机数,保留2位小数

    小数处理

    SELECT FORMAT(22.6655,2); --  四舍五入  保留2位小数
    SELECT truncate(1.228,2); --  只舍不入  保留2位小数

    UNION和 UNION ALL区别

    select 'a1','a2' FROM DUAL UNION  -- 会合并成1条数据 结果1
    select 'a1','a2' from DUAL;
    select 'a1','a2' FROM DUAL UNION ALL -- 不会合并 还是2条数据 结果2 select 'a1','a2' from DUAL;

     其他使用技巧

    select 53+IFNULL(NULL,0);-- IFNULL 返回53
    -- case WHEN
    select uid, (CASE ISNULL(leader_uid) WHEN TRUE THEN 0 ELSE leader_uid END ) leader_uid ,channel_id from ( select uid,b.leader_uid,channel_id from t_mer a LEFT JOIN t_mer_group b on a.uid = b.member_uid) a
    -- IFNULL(expr1,expr2)
    select uid, IFNULL(leader_uid,0) ,channel_id from ( select uid,b.leader_uid,channel_id from t_mer a LEFT JOIN t_mer_group b on a.uid = b.member_uid) a

    UPDATE

    update t_user_game_binding t set t.member_uid = (select uid from t_mer where channel_id = t.chl_id limit 1);
    -- 比上面那个高效
    UPDATE t_user_game_binding LEFT JOIN t_mer ON t_user_game_binding.chl_id = t_mer.channel_id SET member_uid = t_mer.uid

    Insert

    -- insert包含join
    INSERT INTO t_user_game_binding_1 (user_id,outter_game_id,chl_id,member_uid)
    SELECT a.user_id,a.outter_game_id,a.chl_id,b.uid FROM t_user_game_binding a LEFT JOIN t_mer b on a.chl_id=b.channel_id;
    
    INSERT ignore t_user_game_binding_1…… -- 忽略错误
    -- 根据条件insert insert into ... select ..from dual where EXISTS ()
    INSERT  INTO  `test` (`t1`) SELECT 'x' from dual  where  not EXISTS  (select * from test);
    -- 避免插入重复的数据详情点击 https://www.cnblogs.com/duanxiaojun/p/6855680.html?utm_source=itdadao&utm_medium=referral
    
    

     其他使用技巧

    http://www.jb51.net/article/42229.htm 随机取数据
    -- 随机排序
    SELECT * FROM t_game ORDER BY RAND() LIMIT 1;       
    
    select CONCAT('a','111','2') -- 返回 a1112
    
    select * from t_user_register_chl t where t.user_register_chl =1 and user_register_account REGEXP '^[a-z].*$' -- 正则表达式匹配
    -- 正数 负数转换
    select -1*55,ABS(-11);
    -- 向前补位  0001
    select LPAD('1',3,0);
    -- 向后补位  1000
    select RPAD('1',3,0);

    修改DDL

    alter table tableName modify column redeem_code VARCHAR(500) NOT NULL DEFAULT '' COMMENT '兑换码'; -- 修改字段长度
    alter table t_user_checked_record ADD id BIGINT auto_increment primary key; -- 增加自增列

    mysql 性能分析 EXPLAIN 

    https://www.cnblogs.com/EasonJim/p/8108040.html

    EXPLAIN select * from user_base_info t where uid='10001';
    -- 设置cache大小
    SET GLOBAL max_binlog_cache_size =1009715200;
    SET GLOBAL binlog_cache_size =1009715200;
    -- select into 一定要初始化变量
    SET @id = NULL;
    SET @n = NULL;
    select game_id,outter_game_id INTO @id,@n from t_game where game_id%5=0 limit 1;
    select @id,@n;

    关于教程:http://www.w3school.com.cn/sql/index.asp

  • 相关阅读:
    @Controller @RestController
    HOMEWORD2
    cudnn、cuda
    jupyter使用
    python学习——os模块
    python学习——导入模块、__name__
    python学习——文件
    python学习——函数、内置函数
    python学习——for循环的应用
    python学习——字典、集合、数据类型总结
  • 原文地址:https://www.cnblogs.com/milanmi/p/8202358.html
Copyright © 2011-2022 走看看