Oracle和SQLServer修改字段的类型和长度,不为空

版权声明:本文为博主原创文章,未经博主允许不得转载。谢谢合作~ https://blog.csdn.net/qq_41042595/article/details/80595073

在SQLServer数据库:

      修改字段类型和长度:

              alter table   student|表名  alter column  stucard|字段名  varchar(18)|含长度的类型|类型;

(若改多列的字段,就以逗号","相隔:

alter table student alter column (stuid varchar(5),stuname varchar(20));)

        不为空:
           alter table stud|表名  alter column stucard|字段名 varchar(18)|类型 not null;

(若改多列的字段,就以逗号","相隔:
alter table student alter column (stuid varchar(5) not null,stuname varchar(8) not null);)
(若直接"alter table stud alter column stucard not null;",将会报错:关键字 'not' 附近有语法错误。 (156))

在Oracle数据库:

      修改字段类型和长度:

         alter table student/表名 modify(stuid/字段名  varchar2(18)/含长度的类型/类型);

            (若改多列的字段,就以逗号","相隔:
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间

猜你喜欢

转载自blog.csdn.net/qq_41042595/article/details/80595073