MySQL--常见ALTER TABLE 操作】的更多相关文章

删除列 alter table table-name drop col-name; 增加列(单列) alter table table-name add col-name col-type comment 'xxx'; 增加列(多列) alter table table-name add col-name col-type comment 'xxx', add col-name col-type(col-length) comment 'xxx'; 增加表字段并指明字段放置为第一列 alter…
通常情况下,修改表的结构一般不会有太大问题,无非就是一个 alter table 操作,但是对于大表做 alter 操作是一个大问题,请小伙伴们慎重. mysql执行大部分修改表结构操作方法是创建一个空表,从旧表查询所有的数据插入,然后删除旧表.如果内存不足,或者表很大,而且还有很多索引的情况下,可能需要花费数个小时,甚至数天才能完成.所以如果是操作线上数据库,甚至会影响到服务的正常进行,操作一定要慎重.如有需要可以查询其他方法操作进行. 在这里,如果是修改列的默认值的话,是有一个小技巧的.列的…
一 库操作(文件夹) 1 数据库命名规则 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2 数据库相关操作 创建库 create database 数据库名 ;    (注意要引号结尾)    (默认latin1) 在创建数据库的时候也可指定编码格式,如: create database 数据库名 charset utf8; 选择数据库 use 数据库名 切换到指定数据库下 查看库 show databas…
1.修改表名:alter table 原表名 rename to 新表名; 2.新增列:alter table 表名 add column 列名 varchar(20) ; 3.删除列:alter table 表名 drop column 列名; 4.修改列名: alter table 表名 change 原列名 新列名 varchar(20) ; 5.修改列属性:alter table 表名 modify 列名 varchar(20) ;…
##================================## ## 修改表的存储引擎 ## SHOW TABLE STATUS LIKE 'TB_001' \G; ALTER TABLE TB_001 TYPE = MYISAM; ##================================## ## 查看表中列属性 ## SHOW COLUMNS FROM TB_001; ##================================## ## 修改表名 ## ren…
mysql的alter table操作的性能对于大表来说是个大问题.mysql大部分修改表结构操作的方法都是用新的结构创建一个 新表,从旧表中查出数据插入新表,然后在删除旧表.这样的操作很耗费时间,而且还有可能中断mysql服务. 这里推荐一种方法来提高alter table的操作速度.(请注意数据备份) 修改数据表的.frm文件,步骤如下: 1.创建一个有相同结构的新表,并进行所需修改(例如增加ENUM常量值). 2.执行FLUSH TABLES WITH READ LOCK.加锁禁止打开所有…
mysql的alter table操作的性能对打表来说是个大问题. mysql执行大部分修改表结构的方法是用新的结构创建一个空表,从旧表中查出所有的数据插入新表,然后删除旧表.这样操作就可能需要花费很长时间,如果内存不足而表又很大,而且还有很多索引的情况下尤其如此. 一般而言大部分AlterTable操作将导致mysql服务中断. 不是所有的alter table操作都会引起表重建 alter table允许使用alter column,modify column和change column语句…
在修改/增加表字段的时候,发现很慢, show processlist; 时, Waiting for table metadata lock 能一直锁很久. 官网的一段话,可以理解下 http://dev.mysql.com/doc/refman/5.5/en/metadata-locking.html 8.10.4. Metadata Locking MySQL 5.5.3 and up uses metadata locking to manage access to objects (t…
在MySQL5.5和之前版本,在运行的生产环境对大表(超过数百万纪录)执行Alter操作是一件很困难的事情.因为将重建表和锁表,影响用户者的使用.因此知道Alter操作何时结束对我们是非常重要的.甚至当执行Create index的时候.如果启用了 fast_index_creation,则不会重建表,但是仍然会锁表.fast_index_creation特性引进在MySQL5.5和更高版本里.在MySQL5.1中如果使用了innodb plugin则也可以使用该特性.   自从MySQL5.6…
原文:sql点滴41-mysql常见sql语法 ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 修改表名:alter table t_book rename to bbb; 添加列:alter table 表名 add column 列名 varchar(30); 添加带注释的列:alter table directory add index_url varchar(256) default null comment '章节书目链接' after di…
部分生产环境采用mysqldump --single-transaction的方式在夜间进行数据库备份,而同事恰好在备份期间执行了alter table操作,操作部分成功部分失败,为啥呢? 在mysqldump对single-transaction参数的解释为: Creates a consistent snapshot by dumping all tables in asingle transaction. Works ONLY for tables stored instorage eng…
日常使用mysql数据库遇到的一些问题,做下记录,会持续更新. 一.MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法 环境:linux,mysql5.6 错误:Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 原因: 同一…
部分生产环境采用mysqldump --single-transaction的方式在夜间进行数据库备份,而同事恰好在备份期间执行了alter table操作,操作部分成功部分失败,为啥呢? ##========================================================================## 以下测试在MySQL 5.6.36上执行,该问题存在版本差异! MySQL 5.5 版本测试结果:<MySQL--当mysqldump --single-t…
use mysql: ALTER TABLE `proc` MODIFY COLUMN `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL AFTER `sql_mode`; 具体原因请看:http://www.cnblogs.com/jackluo/p/3395147.html…
在工作中常遇到要维护数据库表的列,这里主要介绍sql语句中的ALTER TABLE 语句.ALTER TABLE 语句用于在已有的表中添加.修改或删除列. 如需在表中添加列,请使用下列语法: ALTER TABLE table_name ADD column_name datatype 要删除表中的列,请使用下列语法: ALTER TABLE table_name DROP COLUMN column_name 注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN c…
--===================================================================== 事件起因:开发发现有表插入数据失败,查看后发现INT类型自增值已经到了最大值,无法继续插入,需要修改INT类型为BIGINT类型. --===================================================================== 作为一群自认为还算有点经验的老DBA,大家相互商量下,决定删除复制,然后禁止访问…
1.Mysql服务突然启不来了,报错: 在分析时发现MySQL Server 5.0\data下面有个名称为用户名,扩展名为.err的文件: 150725 20:01:19 [Note] 自己的安装目录\MySQL\MySQL Server 5.0\bin\mysqld-nt: Shutdown complete 150725 21:26:35 InnoDB: Error: unable to create temporary file; errno: 9 150725 21:26:35 [ER…
MySQL:5.6.35 OS:redhat5.8 今天更新数据库某些表字段,有如下两SQL: ①alter table xx modify xxxx;(表大概是77w) ②alter table sb add sbsb;(表大概是95w) 奇怪的是①产生的state为:copy to tmp table ②产生的state为:altering table 两表同样是百万级别的:后者执行虽慢,但是消耗时间不到1200s,而后者跑了2800s. 开始怀疑alter中的add 和modify 两个操…
ALTER COLUMN 语法: ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} 作用: 设置或删除列的默认值.该操作会直接修改.frm文件而不涉及表数据.所以,这个操作非常快. 例子: mysql> alter table film alter column rental_duration set default 5; mysql> alter table film alter column rental_durati…
不用不知道,用了没用? 昨天在线上创建了一个表,其中有两个列是timestamp类型的,创建语句假设是这样的: create table timetest(id int, createtime timestamp,updatetime timestamp); 但是在创建完成之后,显示一下它的创建语句show create table timetest; CREATE TABLE `timetest` (`id` int(11) DEFAULT NULL,`createtime` timestam…
今天做数据迁移, 发现事务有时候可以回滚, 有时候不可以回滚, 最后一点点调试发现中间有段修改表结构的语句, 最终导致回滚失败. 1.MySQL最常用的两个表类型: InnoDB和MyISAM.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持.存储过程.视图.行级锁定等等高级数据库功能,若回滚失败,先检查表类型. SHOW ENGINES 语句可以查看当前的数据库支持的存储类 SHOW CREATE TABLE 表名;可以查看表的…
mysql中in多个字段 1. 基本用法 SELECT * FROM USER WHERE , , ); 2. 多个字段同时使用 SELECT * FROM USER WHERE (, ),(, ),(, )); 3. 多表同时多个字段使用 SELECT * FROM USER WHERE (legal_id, type) NOT IN ( SELECT a.legal_id, a.type FROM USER AS a, role_user_relation AS b WHERE a.lega…
1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5:创建一个数据库表 mysql> CREATE TABLE…
先看一下定义(密密麻麻) ALTER TABLE tbl_name [alter_specification [, alter_specification] ...] [partition_options] alter_specification: table_options | ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name] | ADD [COLUMN] (col_name column_definition,.…
nvicat-->mysql表设计-->创建索引. (1)使用ALTER TABLE语句创建索引,其中包括普通索引.UNIQUE索引和PRIMARY KEY索引3种创建索引的格式: PRIMARY KEY 主键索引:mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) NIQUE唯一索引:mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) INDEX普通索引…
1.场景描述 早上7:25 接到Report中心同学告警,昨天业务报表数据没有完整跑出来,缺少500位业务员的数据,并且很快定位到,缺少的是huabei_order库上的数据.Report中心的数据是BI每天5:15从huabei_order库的从库上抽取.查看监控告警,从库实例确实在4:50 --6:00 有延迟,但已恢复.数据不完整,直接原因就是主从延迟. 7:55 请求BI重新抽取数据,重新生成报表. 8:20 报表数据验证无误. 问题还没结束: 忽略监控告警的不及时.不完整. 还需要回答…
当我用Navicat尝试修改已有记录的mysql数据表的主键为自动增长时,报出以下错误 1602 ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry ’1′ for key ‘PRIMARY’ 解决方法: 第1步:将主键字段值为0的那条记录值改为其他大于0且不重复的任意数 第2步:修改主键字段为auto_increment 第3步:把刚才修改过的那条记录的值还原 来自:http://blog.s…
删表 DROP TABLE Syntax DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE] 可一次删除一张或多张表.需具有所删除表上的DROP权限.表定义文件和数据文件均被移除.表被删除后表上的用户权限不会被自动删除.参数里表中指定的表名不存在则报错,但对于存在的表仍会删除.可通过指定IF EXISTS阻止表不存在时引发的错误(此时对于不存在的表仅产生一个NOTE).对于分区表,除了…
数据库运行一段时间后,有可能会有磁盘磁片产生,此时我们需要进行optimize table操作 # 获取需要optimize的表:如下为获取总大小小于80G的表进行操作:mysql -utroot -S /tmp/mysql_3306.sock -sNe "select concat(table_schema,'.',table_name), table_schema,table_name,ENGINE, sum(data_length/1024/1024) as data_mb , sum(i…
MySQL Bugs: #34354: Feature request: EXPLAIN ALTER TABLE https://bugs.mysql.com/bug.php?id=34354 [SQL]EXPLAIN ALTER TABLE `answer` MODIFY COLUMN `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '修改字符集为utf8mb4,兼容表情符' AF…