alter table student|表名 alter column stucard|字段名 varchar(18)|含长度的类型|类型;
(若改多列的字段,就以逗号","相隔:
alter table student alter column (stuid varchar(5),stuname varchar(20));)
(若改多列的字段,就以逗号","相隔:
alter table student alter column (stuid varchar(5) not null,stuname varchar(8) not null);)
alter table student modify(stuid varchar2(6),stuname varchar2(12));)
当你只改一个时,也可以不用括号,也就成了下面这条语句:
alter table student modify stuid varchar2(18);
/*
当字段没有数据或者要修改的新类型和原类型兼容时,
在SQLServer或者Oracle里 修改字段大小 比原来大或小都没关系,
SQLServer里可以直接alter修改、Oracle里可以直接modify修改。
但是
当字段有数据并用要修改的新类型和原类型不兼容时,就要间接修改,
可能新建字段来转移,可能将该字段和其信息加入到新表(只有该字段的表)。
不为空:*/
alter table student modify stuid not null;
(若改多列的字段,就以逗号","相隔:alter table student modify(stuid not null,stuname not null);)
我这上面的"|"、"/"都表示"或者"的意思......
注意:
在Oracle里:
想修改长度,(1)当表里没有数据时,你修改的数据类型长度,无论"从小改大"还是"从大改小",都不会报错,
而(2)当表有数据时你只能"改大",不可"改小",若改小了,会弹出提示,意思不就是:
要删除所有数据才可以"减小长度/精度"咯?!
[若你执着"改小长度"的话,你可以"drop table XX",要是没成为别的表的外键的话,则顺利删除,要是是别的表的外键的话,你得将那个"所谓的别的表"给删了,再删这个表,还有呀~要是你不想将原来数据删除,那你得将这个表复制到"新"表点击打开链接或者https://blog.csdn.net/qq_41042595/article/details/80644290再删除这个表]
在SQLServer里:
想修改长度,(1)当表里没有数据时,你修改的数据类型长度,无论"从小改大"还是"从大改小",都不会报错,
而(2)当表有数据时你能"改大"和"改小",只!!!要!!!你修改的长度大于等于"表里的最长数据的长度"就可以啦!!!
要是你修改的长度小于"表里的最长数据的长度",就会出现下面那三行的报错提示,要是是别的表的外键的话,处理方式也是上面所讲的一样!!!
消息 8152,级别 16,状态 14,第 2 行将截断字符串或二进制数据。语句已终止。
要是在Oracle里执行"alter table student alter column stuid varchar(18);"
错不在varchar(18),而是在"这条语句",而且会出现这样的错误提示
还有:在Oracle里,可以用int 和 varchar(数值) 类型,后台分别自动转成 number(38) 和 varchar2(数值),number的长度/精度在1~38间