Mysqlは、テーブルフィールド、コード、パーティションを変更し、インデックスを追加します

Mysqlノート

最近、関連するmysqlとPythonを使用して作業します。覚えていない、またはわからない場合は、記録してください。覚えやすさは、悪い書き方ほど良くありません。

テーブルフィールドとデフォルトのエンコーディングを変更します。

//更改表的字段
alter table table_name modify `real_name` double DEFAULT NULL COMMENT '';
//更改表的默认编码为utf8
ALTER TABLE `table_name` DEFAULT CHARACTER SET utf8;
//更改表内所有字段编码为utf8
alter table `table_name` convert to character set utf8;

開発中にクエリ結果がmysqlに直接書き込まれる状況に遭遇することがよくあります

CREATE TABLE test SELECT * from test1;

ただし、この種のテーブルには自動インクリメントの主キーがないため、微調整する必要があります。

//添加自增主键并置前:
alter table table_name add column id int(10) not null auto_increment primary key;
alter table table_name modify id int(10) unsigned auto_increment first;
//改变mysql列顺序,将id 放在第一位
alter table table_name modify id int(10) unsigned auto_increment first;
//改变mysql列顺序,将name 放在id后面
alter table table_name modify name varchar(10) after id;
//新增一列
ALTER TABLE `table_name` ADD `name` VARCHAR(15) NOT NULL AFTER `create_time`;

// 添加唯一索引:
ALTER TABLE table_name ADD UNIQUE user_id (`uid`,`symbol`,`dt`);
// 删除自增主键:
alter table table_name modify id int, drop primary key;
// 删除索引
ALTER  TABLE  table_name   DROP  INDEX  index_name;

パーティションを追加する

大量のmysqlデータを処理する場合、クエリ速度を最適化するためにパーティションとテーブルの操作を行う必要があります。
最も一般的なのは時間に基づいてパーティションを作成することですが、パーティションのフィールドを主キーにする必要があります。

//取消自增
alter table test modify id int;
//删除主键
alter table test drop PRIMARY KEY;
// 添加复合主键
alter table test add PRIMARY KEY(id,create_time);
// id 改为自增
alter table test modify  id int AUTO_INCREMENT;
// 最后增加分区。。 dt 是datetime 类型 
// 为什么分区的名字跟less than 的时间不一致呢? 因为less than 不包含边界!!
ALTER TABLE table_name PARTITION BY RANGE COLUMNS(dt) (
				PARTITION  p20200131  VALUES LESS THAN ('20200201'),
		        PARTITION  p20200229  VALUES LESS THAN ('20200301'),
		        PARTITION  p20200331  VALUES LESS THAN ('20200401'),
		        PARTITION  p20200430  VALUES LESS THAN ('20200501'),
		        PARTITION  p20200531  VALUES LESS THAN ('20200601'),
		        PARTITION  p20200630  VALUES LESS THAN ('20200701')
		    );
// 上面是一次性加的分区,这条是一个一个加
ALTER TABLE table_name ADD PARTITION (PARTITION p20200721 VALUES LESS THAN ('20200722') ENGINE = InnoDB);
// 查看分区
SELECT
	partition_name part,
	partition_expression expr,
	partition_description descr,
	table_rows 
FROM
	information_schema.PARTITIONS 
WHERE
	TABLE_SCHEMA = 'database_name'
	AND table_name = 'table_name';

おすすめ

転載: blog.csdn.net/Pioo_/article/details/107466781