mysql 分库分表语句
时间: 2023-06-28 09:04:33 浏览: 255
MySQL 分库分表可以通过以下两种方式实现:
1. 按照业务进行水平切分,即将一个大表按照某个字段(如用户 ID)进行分片,分散到多个数据库的同样结构的表中,从而实现数据的扩展。
2. 将一个单库中的大表按照某个规则(如时间、地域等)拆分成多个表,每个表存储一段时间或一定的数据量,将数据平均分配到多个表中,从而实现数据的分散存储。
下面是一些 MySQL 分库分表的语句示例:
1. 创建数据库:
```
CREATE DATABASE db1;
```
2. 创建表:
```
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
3. 分库:
```
CREATE DATABASE db2;
USE db2;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
4. 分表:
```
CREATE TABLE `user_2019` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `user_2020` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
5. 数据迁移:
将原表的数据迁移到分表或分库中,可以使用 INSERT INTO SELECT 语句实现。例如,将 user 表中 ID 大于 100 的数据迁移到 db2 库的 user 表中:
```
INSERT INTO db2.user (id, name, age)
SELECT id, name, age
FROM user
WHERE id > 100;
```
以上是一些 MySQL 分库分表的语句示例,具体实现方式需要根据实际情况而定。
阅读全文