mysql常用指令 / mysql常用命令 / mysql常用语句--mysql事务--mysql跨表update--mysql字符串与时间互转(varchar<->datetime)--mysql如何修改数据库名--mysql cast函数--show full processlist
求两个时间的差值使用TIMESTAMPDIFF
函数
TIMESTAMPDIFF(MINUTE, a.create_time, a.payment_finish_time)>=5
mysql事务。事务默认是自动提交的。
START TRANSACTION; -- DML here ROLLBACK;
【推荐】生产环境执行update或delete时,建议前后加上start transaction..rollback,预执行一下来确定是否符合预期,确定符合预期再执行也不迟。
mysql临时表
CREATE TEMPORARY TABLE tmp_table SELECT *FROM emax_base.`tax_user_sign` WHERE merchant_id=1576834320215107; -- select * from tmp_table UPDATE tmp_table SET merchant_id=1576647918146389, create_time='2020-7-28 15:00:00',tax_sign_status='FAILED'; INSERT emax_base.`tax_user_sign` SELECT * FROM tmp_table;
mysql select语句中显示行的自增序号
SELECT (@i:=@i+1) AS rownum, a.entName ,a.orderId FROM `t_business_airorders202007` a,(SELECT @i:=0) AS it
mysql 多表关联update
单表update:UPDATE sbh_soho SET NAME='test' WHERE YF_SOHO_ID =201288;
update tmp_table2 a join tmp_table1 b ON a.rownum=b.rownum join t_business_airorders202008 c on a.orderId=c.orderId set c.entName=b.entName;
→ref:Mysql跨表更新 多表update sql语句总结
mysql 表关联删除
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id ; DELETE m FROM tmp m JOIN tmp2 b ON m.usr=b.usr AND m.id>b.minId;
在mysql中修改表名的sql语句(DDL)
ALTER TABLE emax_require RENAME TO `require`;
字符串与时间互转(varchar<->datetime)
两个函数:date_format(date, format) str_to_date(str, format)
now() date_format(now(), '%Y%m%d%H%i%S') ------------------- ------------------------------------ 2021-12-21 15:02:32 20211221150232 str_to_date('20160102123059', '%Y%m%d%H%i%S') ----------------------------------------------- 2016-01-02 12:30:59
mysql数据类型转换用cast函数
需要说的是
把数据转换为字符串时,用cast(var as char),注意是char,不是varchar
把字符串转换为数字,用cast(str as SIGNED/UNSIGNED/DECIMAL) 其中type说明: 浮点数 : DECIMAL 整数 : SIGNED 无符号整数 : UNSIGNED 。 当然,数字字符串可以直接用作数字来操作。例如select '1'+2 结果是 3.
show full processlist
用于查看当前数据库有哪些线程正在运行,可以看到一共有多少个连接数,哪些是正在查询,哪些是休眠状态。在遇到mysql出现性能问题,慢sql等问题时,可以及时的查询到问题sql,以及关闭线程。
如果有root权限,则可以查看所有主题。否则,只能看到自己的线程(即正在使用的MySQL帐户关联的线程)
原文链接:https://blog.csdn.net/u013419838/article/details/100145286
mysql如何修改数据库名
mysql数据库是无法直接rename的。下面三步,你来品尝。
create database if not exists new_demodb; select concat('rename table demodb.`',table_name,'` to new_demodb.`',table_name,'`;') from information_schema.TABLES where TABLE_SCHEMA='demodb' DROP DATABASE demodb;
骚sql:select * from table1 where (col1,col2) in((v1,v2))
下面sql可以在mysql、Oracle、TiDB执行。
select *from PLAT_ORDER where
-- PRODUCT='YOUFU' and
-- CREATE_TIME<='2021-04-30' and
(id_card,amt) in(
('8CFCF8FB565C5CB74768571A13E26F453E52FFC4335A37F9BB5DF7708EEFEEF8',1100),
('258948B9D82CF27AABB5BD0918510EE1DA50DFE45724846E6A67EE282E7E6C70',50000),
('7B7C41800B30C5D5386CA5D7A615756F256EE90EC9894A8FEB338D80BF59D308',235000))
注意,在这个sql中,in后面是两层括号,即 in( (),() )。否则执行会有语法错误:
Error
(1241, 'Operand should contain 2 column(s)')
当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge
本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/13405050.html
(事务是用来做数据控制的,所以只针对DML(数据操控,增/删/改)起作用。建表和删除表属于DDL(数据定义),超出事务的范畴,所以事务对DDL不起作用。 )