ALTER语句重命名,重新定义和重新排序列
该CHANGE,MODIFY和 ALTER子句可以改变现有列的名称和定义。他们有这些比较特征:
CHANGE:
可以重命名列并更改其定义,或两者都可以。
具有更多的能力MODIFY,但是以某些操作的便利为代价。 CHANGE如果不重命名,则需要命名该列两次。
使用FIRSTor AFTER,可以重新排列列。
MODIFY:
可以更改列定义,但不能更改其名称。
比CHANGE改变列定义而不重命名更方便。
使用FIRSTor AFTER,可以重新排列列。
ALTER:仅用于更改列默认值。
CHANGE是标准SQL的MySQL扩展。 MODIFY是Oracle兼容性的MySQL扩展。
要更改列以更改其名称和定义,请使用 CHANGE指定新名称和新定义的名称。例如,要将INT NOT NULL列重命名a为 b并更改其定义以BIGINT在保留NOT NULL属性的同时使用 数据类型 ,请执行以下操作:
ALTER TABLE t1 CHANGE a b BIGINT NOT NULL;
要更改列定义但不更改其名称,请使用 CHANGE或MODIFY。使用时 CHANGE,语法需要两个列名,所以您必须指定两次相同的名称才能保持名称不变。例如,要更改列的定义 b,请执行以下操作:
ALTER TABLE t1 CHANGE b b INT NOT NULL;
MODIFY 更改定义而不更改名称更方便,因为它仅需要一次列名称:
ALTER TABLE t1 MODIFY b INT NOT NULL;
要更改列名称而不是其定义,请使用 CHANGE。该语法需要列定义,因此要保持定义不变,您必须重新指定列当前具有的定义。例如,要将INT NOT NULL列 重命名b为a,请执行以下操作:
ALTER TABLE t1 CHANGE b a INT NOT NULL;
对于使用CHANGEor的 列定义更改MODIFY,定义必须包括数据类型以及应用于新列的所有属性,而不是索引属性(如PRIMARY KEYor) UNIQUE。原始定义中存在但未为新定义指定的属性不会继续执行。假设列col1被定义为,INT UNSIGNED DEFAULT 1 COMMENT 'my column'并且您按如下方式修改该列,意图仅更改INT为 BIGINT:
ALTER TABLE t1 MODIFY col1 BIGINT;
这种说法从改变数据类型INT 来BIGINT,但它也下降了 UNSIGNED,DEFAULT和 COMMENT属性。要保留它们,声明必须明确地包含它们:
ALTER TABLE t1 MODIFY col1 BIGINT UNSIGNED DEFAULT 1 COMMENT 'my column';
对于使用CHANGEor的 数据类型更改MODIFY,MySQL会尝试尽可能将现有列值转换为新类型。
警告
此转换可能会导致数据更改。例如,如果缩短字符串列,则值可能会被截断。如果转换为新数据类型会导致数据丢失,要防止操作成功,ALTER TABLE请在使用前启> 用严格SQL模式(请参见 第5.1.8节“服务器SQL模式”)。
如果使用CHANGE或MODIFY 缩短列上存在索引的列,并且结果列长度小于索引长度,则MySQL会自动缩短索引。
对于CHANGE重命名的列,MySQL会自动将这些引用重命名为已重命名的列:
引用旧列的索引,包括索引和禁用MyISAM索引。
指向旧列的外键。
对于重命名的列CHANGE,MySQL不会自动将这些引用重命名为重命名列:
生成引用重命名列的列和分区表达式。您必须使用CHANGE重新定义与ALTER TABLE重命名该列的语句相同的 语句。
视图和存储的程序引用了重命名的列。您必须手动更改这些对象的定义以引用新的列名称。
要对表格中的列重新排序,请使用FIRST 和AFTER输入CHANGE或 MODIFY操作。
ALTER ... SET DEFAULT或ALTER ... DROP DEFAULT为列指定新的默认值或分别删除旧的默认值。如果删除旧的默认值并且该列可以NULL,则新的默认值为NULL。如果该列不可用 NULL,MySQL将按照第11.7节“数据类型默认值”中所述分配默认值。
ALTER语句重命名,重新定义和重新排序列的更多相关文章
- ylb:sql语句重命名表名和列名
ylbtech-SQL Server:SQL Server-sql语句重命名表名和列名 sql语句重命名表名和列名 ylb:sql语句重命名表名和列名 返回顶部 一.更改数据库名 sp_rena ...
- sqlServer 2008修改字段类型和重命名字段名称的sql语句
sqlServer 2008修改字段类型和重命名字段名称的sql语句 //修改字段的类型 alter table fdi_news alter column c_author nvarchar(50) ...
- MySql语句中select可以嵌套么,字段的重命名可以用中文么
今天文档中看到的查询语句,SELECT后面又跟了一个SELECT嵌套,而且把字段重命名为中文,请问可以这样做么 MySql语句中select可以嵌套么,字段的重命名可以用中文么 >> my ...
- MySQL之alter语句用法总结
MySQL之alter语句用法总结 1:删除列 ALTER TABLE [表名字] DROP [列名称] 2:增加列 ALTER TABLE [表名字] ADD [列名称] INT NOT NULL ...
- SQL Server 2008数据库重命名方法
假设SQL Server 2008中有个数据库test,现在要将其改名为zhy步骤:(1) 分离数据库:打开management studio,找到test数据库-->右键-->任务--& ...
- MYSQL:alter语句中change和modify的区别
您可以使用CHANGE old_col_namecolumn_definition子句对列进行重命名.重命名时,需给定旧的和新的列名称和列当前的类型.例如:要把一个INTEGER列的名称从a变更到b, ...
- SQL语法基础之ALTER语句
SQL语法基础之ALTER语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看ALTER的帮助信息 mysql> ? ALTER Many help items fo ...
- Oracle 11gR2 用户重命名(rename user)
Oracle 11.2.0.2里新增了一个新特性——用户重命名(Rename User),在这个版本之前要想重命名用户,需要按用户导出,再fromuser touser(imp)或remap_sc ...
- 【SqlServer】SqlServer中Alter语句的使用
在修改Sql Server表结构时,常用到Alter语句,把一些常用的alter语句列举如下. 1:向表中添加字段 Alter table [表名] add [列名] 类型 2: 删除字段 Alte ...
随机推荐
- P4426 [HNOI/AHOI2018]毒瘤
挺不错的一个题. 题意即为求一个图的独立集方案数. 如果原图是一棵树,可以直接大力f[x][0/1]来dp. 由于非树边很少,考虑2^11容斥,强制某些点必选,然后再O(n)dp,这样应该过不了. 发 ...
- Digital Deletions HDU - 1404
Digital deletions is a two-player game. The rule of the game is as following. Begin by writing down ...
- 【洛谷p2430】严酷的训练
(这个题有一个很神奇的地方) 严酷的训练[传送门] 算法标签(显然01背包了最近一直在练) (他居然没写……) 这个题啊,试了好几遍没a 最后发现在第二层循环的时候应该是j>=rqyt[p[i] ...
- SQL SERVER 一组数据按规律横着放置,少则补空,如人员按一进一出的规律,进出为一组,缺少的补null
假设一组数据:人员进出刷卡数据表[SwingCard] ID MenID Door 1 1 In 2 1 In 3 1 Out 4 1 In 5 1 Out 6 1 Out 想要变成如下:一进一出为一 ...
- 函数使用八:BP_EVENT_RAISE
此函数是关联触发一个已经定义的事件,这个事件可以放到SM36里设置JOB,这样就做成了一个事件触发JOB的东西. Import EVENTID 事件ID ,对应S ...
- oracle 自动备份
此次操作是每分钟备份一张表到新表(测试) 准备: 有一张表name是test 注意事项: 1.任务中调用需要显示声明权限 AUTHID CURRENT_USER 或赋予相应权限 2.单独调用过程成功, ...
- Oracle12c版本中未归档隐藏参数
In this post, I will give a list of all undocumented parameters in Oracle 12.1.0.1c. Here is a query ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- QPainter、QPainterPath、QBrush
参考资料: https://blog.csdn.net/qq_35488967/article/details/70802973https://blog.csdn.net/wanghualin033/ ...
- C#执行Sql 时,出现“算术运算导致溢出”问题,如何解决?
昨天在C#执行oracle的sql语句时,总是报错,原先在pl/sql 执行sql语句是可以的,在C#执行就报“算术运算导致溢出”问题 SQL语句 select A.SKU_ID 商品标识,A.COL ...