可以使用 INSERT ... ON DUPLICATE KEY UPDATE
语句来实现批量插入并在发生冲突时更新的操作。这种语法特别适用于需要"存在则更新,不存在则插入"的场景。
MySQL 5.x:字符集选 utf8mb4,排序规则选
utf8mb4_unicode_ci
(代替不精确的utf8mb4_general_ci
)MySQL 8.0+:字符集选 utf8mb4,排序规则选
utf8mb4_0900_ai_ci
(Unicode 9.0 标准,更高效准确)
我们经常需要在本地连接到远程服务器上的 MySQL 数据库进行开发、测试或维护。 然而,MySQL 8 默认情况下禁止 root 用户从远程主机连接,这给我们带来了不便。 本文将详细介绍如何配置 MySQL 8,使其允许 root 用户从任何 IP 地址进行连接,这在很多开发场景中非常方便。
使用 show processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到。好处是不用设置,不会保存。
三大范式是 Mysql 数据库设计表结构所遵循的规范和指导方法,目的是为了减少冗余,建立结构合理的数据库,从而提高数据存储和使用的性能。
众所周知在创建一对多映射时,要在多的一方添加外键。 但是在建立多对多关系的映射时,我们要借助一张中间表,并在中间表里添加外键,所以两张表的建表语句就是正常的建表语句,只需要添加每个表本身的字段即可,不需要添加额外属性。
- 假设有 A,B 两个实体,首先判断一个 A 对应几个 B,再判断一个 B 对应几个 A:
- 如果
两边都是 1:1
,那么 A 与 B 就是一对一
的关系;- 如果
两边只有一个 1:n
,那么 A 与 B 就是一对多
的关系;- 如果
两边都是 1:n
,那么 A 与 B 就是多对多
的关系;
Adminer(原 phpMinAdmin)是一个用 PHP 编写的全功能数据库管理工具。与 phpMyAdmin 相反,它由一个准备部署到目标服务器的文件组成。Adminer 可用于 MySQL、PostgreSQL、SQLite、MS SQL、Oracle、Firebird、SimpleDB、Elasticsearch 和 MongoDB。
出现该情况得原因一般是:
- 字段不加索引:在执行事务的时候,如果表中没有索引,会执行全表扫描,如果这时候有其他的事务过来,就会发生锁表!
- 事务处理时间长:事务处理时间较长,当越来越多事务堆积的时候,会发生锁表!
- 关联操作太多:涉及到很多张表的修改等,在并发量大的时候,会造成大量表数据被锁!
第一步:通过SQL查询出数据字典数据
第二步:导出查询结果数据到Excel文档