# MySql常用命令
# mysql锁超时
# 事务未提交
SELECT * FROM information_schema.INNODB_TRX;
# 通过返回的trx_mysql_thread_id 查询,host是服务器和端口
SELECT
ID,
USER,
HOST,
DB,
COMMAND,
TIME,
STATE,
INFO
FROM information_schema.PROCESSLIST
WHERE ID = 2923270;
SELECT
r.trx_id AS 等待事务ID,
r.trx_mysql_thread_id AS 等待线程ID,
r.trx_query AS 等待SQL,
b.trx_id AS 阻塞事务ID,
b.trx_mysql_thread_id AS 阻塞线程ID,
b.trx_query AS 阻塞SQL,
TIMESTAMPDIFF(SECOND, b.trx_started, NOW()) AS 阻塞时间_秒,
l.lock_table AS 锁表,
l.lock_index AS 锁索引,
l.lock_type AS 锁类型,
l.lock_mode AS 锁模式,
-- 生成批量 KILL 命令(阻塞时间超过阀值才包含)
GROUP_CONCAT(
CASE
WHEN TIMESTAMPDIFF(SECOND, b.trx_started, NOW()) > 1
THEN CONCAT('KILL ', b.trx_mysql_thread_id, ';')
ELSE NULL
END
SEPARATOR ' '
) AS 批量Kill命令
FROM information_schema.innodb_lock_waits w
JOIN information_schema.innodb_trx r
ON w.requesting_trx_id = r.trx_id
JOIN information_schema.innodb_trx b
ON w.blocking_trx_id = b.trx_id
JOIN information_schema.innodb_locks l
ON w.requested_lock_id = l.lock_id
GROUP BY b.trx_id, r.trx_id, l.lock_table, l.lock_index, l.lock_type, l.lock_mode;
-- 批量修改
UPDATE table1 t1 INNER JOIN table2 t2
ON t1.id = t2.id
SET t1.update_time = t2.update_time;
-- 在test_table 表的 order_type 字段之后,新增一个字段 order_status,设置对应的类型,长度,是否为null,默认值,注释
ALTER TABLE test_table ADD COLUMN `order_status` tinyint(2) NOT NULL DEFAULT '0' COMMENT '订单状态 0未支付 1已支付' AFTER `order_type`;
ALTER TABLE pms_product ADD COLUMN `album_video` varchar(255) DEFAULT NULL COMMENT '轮播视频' AFTER `album_pics`;
-- 修改一个字段的类型
ALTER TABLE test_table MODIFY test_value VARCHAR(10) NOT NULL DEFAULT '' COMMENT '字段注释';
-- 修改一个字段的名称,此时要重新指定该字段的类型
ALTER TABLE test_table CHANGE test_value_old test_value_new VARCHAR(10) NOT NULL DEFAULT '' COMMENT '字段注释';
alter table pms_product_evaluation modify `evaluation_content` varchar(255) DEFAULT '' COMMENT '评价内容';
-- 删除test_table表的 test_value字段
ALTER TABLE test_table DROP COLUMN test_value;
--首页轮播广告表 sms_home_advertise
ALTER TABLE sms_home_advertise ADD COLUMN created_by varchar(64) DEFAULT NULL COMMENT '创建人';
ALTER TABLE sms_home_advertise ADD COLUMN created_time datetime DEFAULT NULL COMMENT '创建时间';
ALTER TABLE sms_home_advertise ADD COLUMN updated_by varchar(64) DEFAULT NULL COMMENT '修改人';
ALTER TABLE sms_home_advertise ADD COLUMN updated_time datetime DEFAULT NULL COMMENT '修改时间';
ALTER TABLE sms_home_advertise ADD COLUMN is_del int(1) DEFAULT '0' COMMENT '0:未删除,1:已删除';
-- 添加索引
ALTER TABLE `kxx_pro`.`oms_order_product` ADD INDEX `idx_productid` (`express_number`, `order_state`, `order_id`, `product_id`);
mysql 保留两位小数
https://www.cnblogs.com/xiaomai333/p/7647381.html
函数
TRUNCATE 直接截取,不四舍五入
https://www.cnblogs.com/miracle-luna/p/12041781.html
floor 返回小于等于该值的最大整数
select floor(1.23),floor(-1.23);
group_concat 拼接字符串
https://www.cnblogs.com/llq1214/p/11202866.html
group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
varchar字符串 默认:utf8mb4_general_ci 区分大小写:utf8mb4_bin
# mysql服务器操作命令
# 查询库
show databases;
# 使用库
use jumpserver;
# 查询表
show tables;
BigDecimal.ROUND_HALF_UP
ROUND_DOWN
RoundingMode.HALF_EVEN
拼接
SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ",") FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'kxx_yb_dev' AND TABLE_NAME = 'ums_lottery_win_award_record';
列转行
select GROUP_CONCAT(id,"|") from yb_giveaways_trans_his;
去掉GROUP_CONCAT拼接中的逗号,使用 SEPARATOR
select GROUP_CONCAT(id SEPARATOR '|') from yb_giveaways_trans_his;
mysql like多个值
https://blog.csdn.net/forypt/article/details/105676763
模糊匹配集合 REGEXP
SELECT id FROM yb_giveaways_buy_his WHERE related_id REGEXP 'id":"1238|id":"1288' and stat='2' ;