摘要:本文主要介绍了mysql的一些常见使用方式,避免大家浪费时间去寻找,下文集中给出了会遇到的一些情况,后续慢慢新增。
部署相关
- 5.7安装 juejin.cn/post/704995…
- 8.0安装 juejin.cn/post/716916…
临时修改最大连接数
-- 查询最大连接数
SHOW VARIABLES LIKE 'max_connections';
-- 设置最大连接数
SET max_connections = 500;
查询出来的数据自定义序列号
比如我想从
1001开始序列号,那么起始值就定义为1000
select (@i:=@i+1) AS id,code,name from address,(SELECT @i := 1000) AS imy
更新表的字符集
-- 查询所有表字符集更新语句
SELECT
CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;'
)
FROM
information_schema.`TABLES`
WHERE
TABLE_SCHEMA = 'my_table';
-- 更新字符集
ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
group by不能取出来的数据用自定义顺序取
SELECT id, a, b
FROM (SELECT *,
@row_num := IF(@prev_group = a, @row_num + 1, 1) AS row_num,
@prev_group := a
FROM user, (select @prev_group := null) as null_data
ORDER BY a, b DESC) AS tt
WHERE row_num = 1;
表名称大小写敏感问题
lower_case_table_names:这个系统变量决定了MySQL如何存储表名。在Linux上,默认值是0,表示表名是大小写敏感的。在Windows上,默认值是1,表示表名不区分大小写。
show VARIABLES like "%lower_case_table_names%"
--
-- lower_case_table_names 0
表数据大小写铭感问题
collation:字符集排序规则也会影响大小写敏感性。例如,utf8_general_ci是不区分大小写的,而utf8_general_cs是区分大小写的,或者使用utf8mb4_bin,
- 创建数据库时指定字符集:在创建数据库时,你可以指定一个大小写敏感的字符集和排序规则。
mysql5.7使用utf8mb4_bin来配置大小写敏感。
在liquibase中使用存储过程
--changeset nisec:001 endDelimiter://
--comment 测试
drop procedure if exists test_procedure;//
CREATE PROCEDURE test_procedure()
BEGIN
SET @max_id = (SELECT MAX(id) FROM xx_table);
SET @new_auto_increment = IFNULL(@max_id, 0) + 1;
set @sql = concat('ALTER TABLE xx_table AUTO_INCREMENT = ',@new_auto_increment);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;//
call test_procedure();//
drop procedure if exists test_procedure;//