mysql 数据库表散列 分表示例

本文介绍了一种使用MySQL实现表的水平分割的方法,并通过创建联合表来统一查询两个分表的数据。文中包含了创建分表、插入数据、创建联合表及查询的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CREATE TABLE IF NOT EXISTS person1 (
   id INT(11) NOT NULL AUTO_INCREMENT,
   NAME VARCHAR(50) DEFAULT NULL,
   sex INT(1) NOT NULL DEFAULT '0',
    PRIMARY KEY (id)
 ) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;




CREATE TABLE IF NOT EXISTS person2 (
   id INT(11) NOT NULL AUTO_INCREMENT,
   NAME VARCHAR(50) DEFAULT NULL,
   sex INT(1) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
 ) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;




INSERT INTO person1 (NAME, sex) VALUES('张映', 0);




INSERT INTO person2 (NAME, sex) VALUES('tank', 1);
-- 1、备份原始的表
-- 2、创建新表
-- 3、把原始表的数据导入到分表中
-- RENAME TABLE person TO person_bak,members_tmp TO members;  
-- INSERT INTO person1(person1.id,person1.name,person1.sex) SELECT (person.id,person.name,person.sex)FROM person where person.id <= 10000
-- INSERT INTO person2(person2.id,person2.name,person2.sex) SELECT (person.id,person.name,person.sex)FROM person where person.id > 10000


CREATE TABLE IF NOT EXISTS allperson (
   id INT(11) NOT NULL AUTO_INCREMENT,
   NAME VARCHAR(50) DEFAULT NULL,
   sex INT(1) NOT NULL DEFAULT '0',
   INDEX(id)
 ) ENGINE=MERGE UNION=(person1,person2) INSERT_METHOD=LAST AUTO_INCREMENT=1 ;


SELECT id,NAME,sex FROM allperson;




INSERT INTO allperson (NAME, sex) VALUES('tank2', 0);
UPDATE allperson SET sex = 0 WHERE id = 1;




SELECT id,NAME,sex FROM person2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值