终于有时间可以整理一下工作中常用的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','','') -- 返回 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('',3,0);
-- 向后补位 1000
select RPAD('',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='';
-- 设置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

最新文章

  1. Tomcat服务器配置
  2. Linux安装MySql.Data for mono
  3. SQL数据库基础(三)
  4. 连接Oracle远程数据库错误:ORA-12541,ORA-12514,ORA-01017的解决方法!
  5. python3 pickle, json
  6. 使用eclipse与jLink V8调试exynos 4412 u-boot
  7. 《APUE》中的函数整理
  8. HDU_2021——最少RMB问题
  9. GDAL显示线性shp文件
  10. 新手学习.net编程计划-1
  11. 黑马程序员-- C语言执行过程及注意点
  12. spring cloud + .net core实现微服务架构
  13. 进程命令(tasklist)
  14. C# 错误集锦
  15. 第45节:Java当中的变量,面向对象
  16. 我在 Mac 上都用什么
  17. docker swarm(当前官网示例)
  18. js数组去除重复
  19. 自学Linux Shell16.1-函数概念
  20. iOS开发-- 使用TFHpple解析html

热门文章

  1. drone 学习一 几个核心组件
  2. minio 安装以及使用
  3. fatal: The remote end hung up unexpectedly解决办法
  4. jdk1.8新特性应用之Iterable
  5. 第五章 MyEclipse配置hadoop开发环境
  6. css:层叠样式表-网页布局基础
  7. 重置mysql的root用户密码
  8. 关于Fiddler常见问题之一
  9. ansible初识二
  10. 「小程序JAVA实战」小程序上传短视频(46)