MySQL修改,表结构大幅修改

------------------
create table t_video_file_temp
(
video_id bigint not null comment ‘视频Id‘,
file_md5 varchar(64) comment ‘视频md5‘,
file_size bigint comment ‘视频大小‘,
source_url varchar(500) comment ‘视频源地址‘,
file_url varchar(500) comment ‘视频本地地址‘,
status tinyint(2) default 0 comment ‘0待审核,1待采集,2采集中,3采集成功,4采集失败,5上传服务器并转码成功‘,
check_time timestamp comment ‘审核时间‘,
origin tinyint(3) comment ‘来源‘,
source_id varchar(50) comment ‘来源Id‘,
download_time timestamp comment ‘下载时间‘,
service_ip varchar(50) comment ‘下载服务器标识‘,
repeat_id bigint comment ‘重复Id‘,
repeat_status tinyint(1) default 0 comment ‘0未检测,1重复,2不重复‘,
source_img_url varchar(500) comment ‘图片源url‘,
img_url varchar(500) comment ‘图片地址‘,
primary key (video_id)
);
------------------
1-导入SQL文件
2-建表,执行SQL 。
INSERT INTO `t_video_file_temp`(`video_id`,`file_md5`,`file_size`,`source_url`,`file_url`,`status`,`check_time`,`origin`,`source_id`,`download_time`,`service_ip`,`repeat_id`,`repeat_status`,`source_img_url`,`img_url`)
SELECT v.video_id,f.file_md5 ,f.file_size,f.source_url,f.file_url,f.status,f.check_time,f.origin, ext.source_id ,f.download_time,f.service_ip,f.repeat_id,f.repeat_status,img.source_url,f.file_url
FROM t_video v
JOIN t_video_file AS f ON f.file_id = v.video_file_id
JOIN t_video_ext ext ON ext.video_id = v.video_id
LEFT JOIN t_video_file AS img ON v.img_file_id=img.file_id;
-- t_video状态为4的改为2
update t_video t set t.status = 2 where t.status = 4;

-- 增加字段,审核用户名,是否删除,删除用户名,删除时间
ALTER TABLE `t_video` ADD COLUMN `user_name` varchar(50) ;
ALTER TABLE `t_video` ADD COLUMN `is_delete` tinyint(1) default 0 comment ‘1删除‘ ;
ALTER TABLE `t_video` ADD COLUMN `delete_user_name` varchar(50) ;
ALTER TABLE `t_video` ADD COLUMN `delete_time` timestamp NULL default NULL ;
-- 删除主外键,
ALTER TABLE `t_video` DROP FOREIGN KEY `FK_Reference_2`;
ALTER TABLE `t_video` DROP FOREIGN KEY `FK_Reference_3`;
-- 删除视频文件ID ,封面图片ID
alter table `t_video` drop column `img_file_id` ;
alter table `t_video` drop column `video_file_id` ;
alter table `t_video` drop column `userId` ;
-- 修改t_video_file名称 如:t_video_file_qaz 。还原t_video_file_temp表名
alter table t_video_file rename t_video_file_qaz ;
alter table t_video_file_temp rename t_video_file ;
-- t_video_ext 增加字段 发布时间
ALTER TABLE `t_video_ext` ADD COLUMN `release_time` timestamp NULL default NULL ;
-- ---------------------------------------

ALTER TABLE `t_video`
MODIFY COLUMN `video_id` bigint(20) NOT NULL AUTO_INCREMENT FIRST ;

ALTER TABLE `t_video_ext`
MODIFY COLUMN `classification` varchar(30) NULL DEFAULT NULL COMMENT ‘1搞笑,2美食,3,动物圈,4运动,5鬼畜调教,6美妆,7服饰,8健身,9资讯,10明星,11Korea相关,12电影相关,13电视剧‘ AFTER `source_url`;

-- 增加外键
ALTER TABLE `t_video_ext` ADD CONSTRAINT `FK_Reference_1` FOREIGN KEY (`video_id`) REFERENCES `t_video` (`video_id`);

-- 增加外键
ALTER TABLE `t_video_file` ADD CONSTRAINT `FK_Reference_5` FOREIGN KEY (`video_id`) REFERENCES `t_video` (`video_id`);

时间: 2024-10-07 13:34:58

MySQL修改,表结构大幅修改的相关文章

在线修改表结构mysql5.5版本和pt-online-schema-change

一.测试环境 系统:Centos 6.2 数据库:mysql Ver 14.14 Distrib 5.5.18, for Linux (x86_64) using readline 5.1 percona工具:percona-toolkit-2.2.12 测试数据库大小:tx_ljxz_71--16G.t_log_item--3G 二.在线修改表结构的过程 mysql在线修改表结构 1 按照原始表(original_table)的表结构和DDL语句,新建一个不可见的临时表(tmp_table)

MySQL在线修改表结构pt-osc

MySQL在线修改表结构pt-osc 重所周知 MySQL的DDL操作操作是相比比较昂贵的.因为MySQL在修改表期间会阻塞任何读写操作. 基本上业务处于瘫痪.如果数据量较大可能需要好几个小时才能完成,无法容忍这个操作.Percona开发了一系列的工具 Percona Toolkit包,其中有一个工具pt-online-schema-change可以在线执行DDL操作,不会阻塞读写操作从而影响业务程序.当然也有其他的工具 例如 MySQL5.6的online ddl 还有gh-ost 本文主要讲

mysql初识(三)修改表结构

mysql 修改表结构 以下均用表名test5  只有一个字段hobby操作修改表名alter table test5 rename newtest; 修改字段的同时更名语句结构 alter table 表名 change 字段名 新的字段名 [first|after 字段名]first|after 可写可不写 写上就是改变字段的位置 是在最前或者在某字段的后面alter table newtest change hobby hob char(20); 只是修改字段语句机构 alter tabl

MySQL创建修改表结构

一. 数据库的概述 1.什么是数据库 DB,DataBase 数据库:依照某种数据模型进行组织并存放到存储器的数据集合 DBMS,DataBase Management System 数据库管理系统:用来操纵和管理数据库的大型服务软件 DBS,DataBase System 数据系统:即DB+DBMS,指带有数据库并整合了数据库管理软件的计算       机系统 2.E-R数据模型 实体-关系 模型(Entity-Relationship Model) 3.常见的数据库服务软件 类型 厂商 Or

Mysql复制表结构、表数据以及修改主键

mysql查看表结构命令 show columns from 表名; 1.复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错.     2.只复制表结构到新表 CRE

mysql笔记--数据库基本增删改查 修改表结构

数据库基本增删改查 1. 增-添加/插入数据,insert into 插入哪张表,那些列,什么值, 语句:insert into 表名(列1,列2,列3)values (值1,值2,值3): 可以不按原列的顺序插入,也可以插入部分列,但是值与列要一一对应,不能混乱!!! 一次插入多行数据 : Insert into 表名(列1,列2)values (值1,值2),(值1,值2): 2. 改-更新数据update 更新哪张表,哪些列,哪些值 语句:update 表名 set 列1=值1,列2=值2

MariaDB(MySQL)修改表结构报表空间满

今天数据库表修改表结构,需要添加一列: ALTER TABLE `xxxx_learn` ADD COLUMN `learn_stage_code` VARCHAR(32) NULL DEFAULT '99' COMMENT '学段' AFTER `qualified_rate`; 结果一直报错: ERROR 1114 (HY000) at line 303: The table 'xxxx_learn' is full 刚开始以为可能硬盘空间不够,df -h 查显示正常,所有分区都有空闲. 看

Mysql修改表结构工具OnlineSchemaChange使用心得

OnlineSchemaChange是Facebook开源的在线修改表结构的工具,具体原理这里不多说了,有兴趣的同学可以看下官方文档:https://github.com/facebookincubator/OnlineSchemaChange/wiki 这里主要介绍下在迁移的时候使用的情况,首先官网的OSC工具不支持主从同步,当时测试是在单库上进行测试,而生产环境是有主从的,结果在主库上直接运行了OSC,可以看到如下的输出: 可以看到主库运行基本正常,表结构也正常修改了,并没有锁表影响到线上正

通过替换frm文件方式修改表结构

版本:5.6.16 在自己的虚拟环境中,测试创建一个表,表结构如下:mysql> drop table yoon_temp;Query OK, 0 rows affected (0.09 sec) mysql> show create table yoon\G*************************** 1. row ***************************       Table: yoonCreate Table: CREATE TABLE `yoon` (  `i