首页 > 技术文章 > MySQL其他

ralgo 2020-12-19 14:28 原文

修改root密码

用root登录mysql,然后执行

SET PASSWORD = "newpassword";

数据库字符集是utf8mb4,连接数据库时使用characterEncoding=utf-8是否可行?

数据库连接参数中的characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。

mysql的乱码

假设mysql的表的default charset=utf-8。为了防止乱码,客户端应该加上参数

jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8

或在xml文件中加入

jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8

FULL JOIN

mysql并不支持full join。

参考资料:https://stackoverflow.com/questions/3362079/is-there-a-reason-mysql-doesnt-support-full-outer-joins

为什么MySQL的默认事务隔离级别是Repeatable Read

Mysql在5.0这个版本以前,binlog只支持STATEMENT这种格式!而这种格式在读已提交(Read Committed)这个隔离级别下主从复制是有bug的,因此Mysql将可重复读(Repeatable Read)作为默认的隔离级别!

在Read Committed级别下,主从复制用什么binlog格式?

在该隔离级别下,用的binlog为row格式,是基于行的复制!Innodb的创始人也是建议binlog使用该格式!

互联网项目尽量用Read Committed的事务隔离级别

https://www.cnblogs.com/rjzheng/p/10510174.html

Group by和order by无法使用前缀索引

null值

  • 判断一个列是否为null时,不要使用等于号“=”,正确的方法时是使用“is NULL”
  • 假设有SQL:“select maybenull from xx where maybenull != 6”,这个语句是有问题的,因为它的maybenull列可能存在null值,null值同样不等于6,所以这条语句就漏掉了那些值为null的记录。正确的写法是“select maybenull from xx where maybenull != 6 or maybenull is NULL”。
  • 两个null值彼此不能判断为相等。
  • 表达式可以为null,但不能等于null。

推荐阅读