精华内容
下载资源
问答
  • 某位同事要求对某张表(InnoDB,且已有数据)增添一个字段,无默认值要求: 添加之前的中数据: mysql> select * from t1; +------+ | id | +------+ | 1 | | 2 | | 3 | +------+ 3 rows in set (0.02 sec) ...
    某位同事要求对某张表(InnoDB表,且已有数据)增添一个字段,无默认值要求:
    添加之前的表中数据:
    mysql> select * from t1;
    +------+
    | id   |
    +------+
    |    1 |
    |    2 |
    |    3 |
    +------+
    3 rows in set (0.02 sec)
    
    mysql> alter table t1 add col1 char(1);
    Query OK, 3 rows affected (0.24 sec)
    Records: 3  Duplicates: 0  Warnings: 0

    添加字段之后的表中数据:

    mysql> select * from t1;
    +------+------+
    | id   | col1 |
    +------+------+
    |    1 | NULL |
    |    2 | NULL |
    |    3 | NULL |
    +------+------+
    3 rows in set (0.00 sec)

    过了一会儿,他要求设置新添字段的默认值为'N':

    mysql> alter table t1 modify col1 char(1) default 'N';
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0

    查看此时的表中数据:

    mysql> select * from t1;
    +------+------+
    | id   | col1 |
    +------+------+
    |    1 | NULL |
    |    2 | NULL |
    |    3 | NULL |
    +------+------+
    3 rows in set (0.00 sec)

    操作到这里,可以说同事的这个需求就算告一段落了。不过如果把刚才的时间倒回到这个小需求的开始点,同事如果一次性的提出了完整的需求:添加一个char(1)类型的字段,默认值为‘N’:

    mysql> alter table t1 add col1 char(1) default 'N';
    Query OK, 3 rows affected (0.19 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    查看表中数据:
    mysql> select * from t1;
    +------+------+
    | id   | col1 |
    +------+------+
    |    1 | N    |
    |    2 | N    |
    |    3 | N    |
    +------+------+
    3 rows in set (0.00 sec)

    两次基本上相同的操作,但表中旧数据中的新添字段的结果却是不一样的。

    我记录这段操作过程并不是想说明字段类型填充的默认值的原理,因为它不是一个复杂的概念,只是觉得日后需留意一些类似的小细节。

     

     

    转载于:https://my.oschina.net/liuliufa/blog/75813

    展开全文
  • ALTER TABLE table_name ADD `add_field` tinyint(1) DEFAULT NULL COMMENT '新增字段'; 使用Navicat for MySQL执行该语句会报一个错误,如下图所示: 2013 - Lost connection to MySQL server during query,翻译...


    1. 问题描述

    有一张MySQL数据库表,业务变动,需要新增一个业务字段,于是直接用下面的SQL语句进行字段新增:

    ALTER TABLE table_name ADD `add_field` tinyint(1) DEFAULT NULL COMMENT '新增字段';
    

    使用Navicat for MySQL执行该语句会报一个错误,如下图所示:
    image.png
    2013 - Lost connection to MySQL server during query,翻译过来就是在查询过程中,MySQL服务器失去连接。

    该问题是大约一年前遇到的,最近整理笔记看到了,趁有时间做一些整理记录。但是当时的具体环境已经无法复现了。

    2. 解决办法

    这个错误在官方文档的附录中可以找到相关说明,可以参考我翻译的官方文档:
    B.3.2.3 MySQL 服务器连接断开

    通过查阅官方文档,不难看出其实比较符合第一条解释。结合当时那家公司的网络,确实经常的时断时续的,网络环境比较差。

    MySQL的这个错误除了官方说的几种情况,还需要针对自己的业务场景进行适当探索和甄别,具体情况具体分析。这里再记录一下另一种可能,因为ALTER TABLE操作是比较耗时的,所以也很有可能是因为超时原因报的错误。查询关于超时时间的系统变量:

    SHOW VARIABLES LIKE '%timeout%';
    

    高性能MySQL这本书的第四章Schema与数据优化提到了以下内容:

    MySQLALTER TABLE操作的性能对大表来说是个问题。MySQL执行大部分修改表结构操作的方法是用新的结构创建一个空表,从旧表中查出所有数据插入新表,然后删除旧表。这样操作可能需要花费很长时间,如果内存不足表又很大,而且还有很多索引的情况下尤其如此。

    一般而言,大部分ALTER TABLE操作将导致MySQL服务中断。对于常见场景,能使用的技巧只有两种:一种是先在一台不提供服务的机器上执行ALTER TABLE操作,然后和提供服务的主库进行切换;另一种技巧是影子拷贝,就是用要求的表结构创建一张与源表无关的新表,然后通过重命名和删表操作交换两张表。

    ALTER TABLE允许使用ALTER COLUMNMODIFY COLUMNCHANGE COLUMN三种语句修改列。这三种操作都是不一样的。

    可以结合MySQL错误日志,找到需要修改的系统变量,进行相应修改即可。

    展开全文
  • mysql sql新增字段

    2021-03-30 17:04:22
    mysql sql新增字段 修改表字段属性 修改表字段名称 修改表名 等操作 新增表字段数据status 允许为空 默认为空 放在字段update_by后:ALTER TABLE ‘TABLE_NAME’ ADD COLUMN ‘status’ VARCHAR(50) NULL DEFAULT ...

    mysql sql新增字段 修改表字段属性 修改表字段名称 修改表名 等操作

    新增表字段数据status 允许为空 默认为空 放在字段update_by后:ALTER TABLE ‘TABLE_NAME’ ADD COLUMN ‘status’
    VARCHAR(50) NULL DEFAULT NULL COMMENT ‘添加状态’ AFTER ‘UPDATE_BY’ ;

    第一个NULL 允许为空 第二个为 默认值为空 DEFAULT NULL

    修改表属性:
    ALTER TABLE ‘TBALE_NAME’ MODIFY COLUMN ‘status’
    BIGINT(10) NULL DEFAULT NULL COMMNET ‘status修改类型’
    修改表字段名
    ALTER TABLE ‘TBALE_NAME’ CHANGE status called_status VARCHAR (50) NULL DEFAULT NULL COMMENT ‘修改字段名称’;

    展开全文
  • COLUMN `要新加的字段` varchar(64) null DEFAULT null comment '注释'; 格式: ALTER TABLE 【名字】 ADD 【列名称】 【类型】 NULL/NOT NULL DEFAULT “默认数据” COMMENT ‘注释说明’ --痛苦的...
    ALTER TABLE
      指定相应的数据库表
    ADD
      COLUMN `要新加的字段` varchar(64) null DEFAULT null after '某字段' comment '注释';
    

    格式:
    ALTER TABLE 【表名字】 ADD COLUMN【列名称】 【类型】(大小) NULL/NOT NULL DEFAULT “默认数据” AFTER ‘某已有字段’ COMMENT ‘注释说明’

    第一个null/not null 意思是 此字段可为null/不可为null。
    after为新字段放在某个字段之后。

    –痛苦的单边李之记录

    展开全文
  • 添加varcher类型 ALTER TABLE 表名 ADD 字段名 varchar(32); 不允许为空 ALTER TABLE 表名 ADD 字段名 varchar(32) NOT NULL; double类型 ALTER TABLE 表名 ADD 字段名 DOUBLE(10,2);
  • 首先给usercategory表新增libraryid字段: alter table usercategory add libraryid varchar(50) 修改picturelibrary表的libraryid字段为表usercategory的外键 alter table usercategory add constraint ...
  • mysql表新增/删除字段

    2018-06-15 11:30:06
    ALTER TABLE `t_check_store` ADD COLUMN `estimated_begin_time` datetime DEFAULT NULL COMMENT '预计开始时间' AFTER `status`;ALTER TABLE `t_check_store` DROP contract_status;
  • 直接看下面代码: ...意思为:修改 addonarticle17 结构,增加 tags 字段,设置为 VARCHAR(255) 数据类型,默认值为 '' 空字符串。 其他类似代码: ALTER TABLE `addonarticle17` ADD ...
  • mysql创建/新增字段

    2021-02-23 09:45:07
    mysql创建 CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `aid` int(11) NOT NULL DEFAULT '0' COMMENT 'refer文章id', `title` varchar(100) NOT NULL COMMENT '文章标题',...
  • #新增字段 ALTER TABLE 表名 ADD 字段 类型(长度) NULL DEFAULT NULL COMMENT ‘备注’; #在表头新增 ALTER TABLE 表名 ADD 字段 类型(长度) NULL DEFAULT NULL COMMENT ‘备注’ FIRST; #在指定字段后新增 ALTER ...
  • 例如:我有一个这样的image_apply,然后给它里面新增字段,并且它的类型,注释也要用脚本新增上去 ALTER TABLE image_apply ADD home_address VARCHAR(100) null default null comment '家庭住址'; ALTER TABLE ...
  • Mysql表新增自增长字段 在表原有的基础上新增一列自增长字段 代码如下: alter table 表名 add 新增字段名 int(10) UNIQUE AUTO_INCREMENT; 设置自增长初始值的语句 alter table 表名 AUTO_INCREMENT=...
  • 一、navicat中新建procedure CREATE DEFINER=`portal`@`%` PROCEDURE `pro_AddColumn`( IN tab VARCHAR(100) ) BEGIN IF NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_name=tab AND COLUMN_...
  • SQL---mysql新增字段

    万次阅读 多人点赞 2018-03-14 10:28:44
    ALTER TABLE people ADD COLUMN name VARCHAR(100) DEFAULT NULL COMMENT '姓名' AFTER age; 修改 people 增加字段name 长度100 默认为null 备注:姓名 在age字段后面; ...
  • Mysql新增字段

    2021-06-18 15:41:16
    项目中使用MySql数据库,经常要提供一些SQL脚本给用户。所以修改结构时经常会有ALTER TABLE语句产生。想着如果增加、删除字段时能够先判断字段是否存在,那将会更加方便。 解决方案 create table student ( id ...
  • Mysql新增字段到大数据导致锁

    万次阅读 2018-06-15 17:14:47
    昨天晚上7点左右,对一张进行加字段,大概200多万条记录,字段90多个的大,结果造成mysql,进而导致服务不可用。执行语句如下:[sql] view plain copyALTER TABLE `sc_stockout_order` ADD `route_...
  • 由于升级,其中一个的结构有变化,需要增加一个字段,需要判断这个是否存在 //代码如下 mysql_connect('localhost', 'root', '11'); mysql_select_db('库名'); $field = mysql_query('Describe 表名 字段名')...
  • 一、新增字段、指定新增字段、加注释 alter table add 新增字段 varchar(50) default null comment '注释' after 要加在那个字段的后面 二、删除字段
  • 主要介绍了mysql创建存储过程实现往数据新增字段的方法,结合实例形式对比分析了通过存储过程新增字段相关操作技巧,需要的朋友可以参考下
  • 请问是否可以为新增的text类型字段添加默认值? 我报错: [Err] 1101 - BLOB/TEXT column 'enrolNotice' can't have a default value

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,013
精华内容 405
关键字:

mysql表新增字段

mysql 订阅