MySQL琐碎知识点
# MySQL 大小写敏感问题
# 不同系统下的MySQL
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的; 4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写。
# 修改大小写敏感
-- 应在创建数据库的时候就设置好,否则就得单个表,单个字段进行修改
-- 查看utf8mb4的校对规则
-- SHOW COLLATION LIKE 'utf8mb4\_%';
ALTER TABLE `aa` MODIFY COLUMN `ID` VARCHAR(38) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NOT NULL;
每个字符集有一个默认校对规则,例如,utf8默认校对规则是utf8_general_ci.并存在校对规则命名约定:它们以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感),_cs(大小写敏感)或_bin(二元/大小写也敏感)结束
# MySQL 的 STR_TO_DATE 函数
奇奇怪怪的行为
-- 错误日期 union all 时会变成 0000-00-00(正常日期不会),但是单独查询不报错
select STR_TO_DATE('2022-04-31', '%Y-%m-%d') union all
select STR_TO_DATE('2022-02-30', '%Y-%m-%d') union all
select STR_TO_DATE('2022-02-31', '%Y-%m-%d');
# MySQL实现类似DENSE_RANK()效果
前提是子查询是按该字段排序过的,否则不能实现该结果
数据
| weibo_id | weight | id | RN | PERT_OLD |
| 4524098644993942 | 0.253893631002748370 | 1 | 18 | 1 |
| 4524111164205859 | 0.093070061064090660 | 4 | 19 | 4 |
| 4524138758532594 | 0.015839159909128677 | 16 | 20 | 16 |
| test100 | 0.500000000000000000 | -1 | 21 | -1 |
| test101 | 0.500000000000000000 | -1 | 21 | -1 |
| test102 | 0.500000000000000000 | -2 | 22 | -2 |
| test103 | 0.500000000000000000 | -2 | 22 | -2 |
| test104 | 0.500000000000000000 | -3 | 23 | -3 |
| test106 | 0.500000000000000000 | -5 | 24 | -5 |
| test107 | 0.500000000000000000 | 1 | 25 | 1 |
SELECT T.*
,@R := case WHEN @RANK = T.id THEN @R ELSE @R + 1 END AS RN
,@RANK := T.id AS PERT_OLD
FROM topn T, ( SELECT @R := 0, @RANK := '' ) B
-- 应该为
SELECT T.*
,@R := case WHEN @RANK = T.id THEN @R ELSE @R + 1 END AS RN
,@RANK := T.id AS PERT_OLD
FROM (select * from topn order by id) T, ( SELECT @R := 0, @RANK := '' ) B
# MySQL创建用户,分配远程连接权限
# 创建数据库创建用户,时其可以远程访问(并且设置密码类型):
create user 'banana'@'%' identified with mysql_native_password by 'banana';
# 如果已经有用户,设置为可远程访问,可以使用:
alter user 'banana'@'%' identified with mysql_native_password by 'banana';
# 设置可以读写刚创建的demo数据库:
grant all privileges on leetcode.* to 'banana'@'%' with grant option;
# 刷新缓存:
flush privileges;
# PostgreSQL 和 MySQL 的区别(MySQL的一些缺点)
postgresql和mysql的区别 (opens new window)
# FULL JOIN修改(兼容MySQL)
编辑 (opens new window)
上次更新: 2023/11/07, 15:27:19