MySQL:ALTER COLUMN、MODIFY COLUMN 和 CHANGE COLUMN

ALTER COLUMN、MODIFY COLUMN 和 CHANGE COLUMN 语句修改列:

  • ALTER COLUMN:改变、删除列的默认值。

这个语句会直接修改 .frm 文件而不涉及表数据,所以操作很快。

-- 改变列的默认值
ALTER TABLE test ALTER COLUMN age SET DEFAULT 17;

-- 删除列的默认值
ALTER TABLE test ALTER COLUMN age DROP DEFAULT;
  • MODIFY COLUMN:修改列数据类型;改变列的默认值、删除列的默认值(备注:这个操作会做读、插入操作,即:拷贝了整张表到一张新表)。
-- 修改列的数据类型(备注:未执行语句之前是 name VARCHAR(10))
ALTER TABLE test MODIFY COLUMN name VARCHAR(20);

-- 改变列的默认值
ALTER TABLE test MODIFY COLUMN name VARCHAR(20) NOT NULL DEFAULT ‘a‘;

-- 删除列的默认值
ALTER TABLE test MODIRY COLUMN name VARCHAR(20);
  • CHANGE COLUMN:重命名列;重命名列和修改列的数据类型(备注:单独修改列的数据类型报错)。
-- 重命名列
ALTER TABLE test CHANGE COLUMN name new_name VARCHAR(20) NOT NULL;

-- 重命名列和修改列的数据类型(备注:未执行语句之前是 new_name VARCHAR(20))
ALTER TABLE test CHANGE COLUMN new_name latest_name VARCHAR(50);

还是自己写 SQL 验证更靠谱!

原文地址:https://www.cnblogs.com/miaooooo/p/12375292.html

时间: 2024-11-08 20:08:45

MySQL:ALTER COLUMN、MODIFY COLUMN 和 CHANGE COLUMN的相关文章

mysql之ALTER COLUMN、CHANGE COLUMN、MODIFY COLUMN的区别

ALTER COLUMN:设置或删除列的默认值(操作速度非常快) 例子: alter table film alter column rental_duration set default 5; alter table film alter column rental_duration drop default; CHANGE COLUMN:列的重命名.列类型的变更以及列位置的移动 例子: ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32)

MySQL如何妥善更改大表表结构(Alter table structure of a single column

MySQL如何妥善更改大表表结构(Alter table structure of a single column http://blog.sina.com.cn/s/blog_445e807b0101egpf.html 在网上搜到的一段很有帮助的三段脚本,贴出来供参考,以飨读者,做个笔记:##  Script 1#  Alter table structure of a single column of a large table#CREATE TABLE WorkingTableNew LI

MySQL 5.7新特性之generated column

MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕以下几个问题展开: generated column是什么 virtual column与stored column的区别 如果我对generated column做一些破坏行为会怎么样 generated column上创建索引 generated column上创建索引与Oracle的函数索引的

mysql Out of range value adjusted for column导致Warning(1265)Data truncated for column 'column_name' at row 1

今天下午,我们的一个开发来找我,说线上有个环境报了"Warning(1265)Data truncated for column 'column_name' at row 1",定义的字段长度decimal(32,4),实际的小数点有超过4位的,但是大部分的账户登录查询的时候都没有问题,已知的就一个账户进行查询的时候会出现这个问题,看数据没有什么特别异常的. 于是,过去协助排查,临时拷贝了个存储过程,还真蹊跷,查询其他数据都没有问题,但是一到这一条记录就报错,在update报错的语句前

[MySQL学习]STRICT_ALL_TABLES对应的OUT of RANGE VALUE FOR COLUMN和DATA truncated FOR COLUMN

昨天在存储过程中用了语句insert into a select from b.在应用中发现bigint字段插入到int字段的时候,数值被截断了,插入后已经不是所要的值.因为存储过程中没有用到异常捕捉的处理,所以一开始并未发现错误,只是在比对数据的时候才发现不对.后来比对了两张表,才发现是字段类型不一样.接下来就试着验证了一下(window下的测试环境). 创建两张表 CREATE TABLE T_INT(id INT ,vname VARCHAR(20)); CREATE TABLE T_BI

mysql中出现的Data truncated for column

1.先描述一下自己出现的问题. 如果你想把允许为空值的勾去掉...恰巧数据库中的数据 processed_f 为空没有值....这时候你对数据表结构做更改的时候就会出现Data truncated for column processed_f 的提示..解决方式即为  给数据库中的字段processed_f    赋值 .这时候你在保存.就不会出现这个错误了. 2.网上他人遇到的..mysql中想一个数据库中插入一条记录时,有可能因为好多原因,会出现Data truncated for colu

mysql命令 出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'

1.安装 brew install msyql 2.更新 brew upgrade mysql 3.启动 To have launchd start mysql now and restart at login: brew services start mysqlOr, if you don't want/need a background service you can just run: mysql.server start 4.登录 mysql -uroot 5.查看用户及密码 selec

mysql插入数据 报错[Err] 1136 - Column count doesn't match value count at row 1(表中有自增列)

版本:8.0.16 创建了一张表:create table user_table(uid int primary key auto_increment,uname varchar(10))auto_increment=1 插入数据报错: 经查找 ,有三种方式可以解决这个问题: 1.插入数据得时候,带入列名: insert into user_table("uname") values ("刘一") 2.自增键这列设置为0 insert into user_table

ERROR 1074 (42000): Column length too big for column 'Flist' (max = 21845); use BLOB or TEXT instead

1.版本 1)操作系统 cat /etc/issue cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m cat /proc/version cat /proc/version Linux version 2.6.32-504.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct