修改表字段操作(新增、修改、删除)

对于表字段的操作,有时总时忘记怎么写,不特意去记忆的话,总是不出来,喜欢百度以下。以下时介绍Sql Server与Oracle两种数据结构的语法,对字段结构的增、改、删的区别。

  • Sql Server 语法对表字段ddl操作
----sql  server
--新增字段
ALTER TABLE [表名] ADD [列名] [列类型];
--在表UserTest添加字段IdNo类型为varchar(30),可为空
ALTER TABLE UserTest add Alias varchar(30) null;
--删除字段
ALTER TABLE [表名] DROP COLUMN [列名];
--删除表UserTest的IdNo字段
ALTER TABLE UserTest drop column IdNo;
---修改字段名
execute sp_rename [表名].[列名],[新列名]
--修改表UserTest的字段IdNo名为IdCode
execute sp_rename 'UserTest.IdNo','IdCode'
---修改字段类型
Alter table [表名] Alter column [列名] [列类型]
--修改表UserTest字段IdCode的类型为int
Alter table UserTest Alter column state int null;

--很奇怪的现象,绝大部分开发人员都不维护字段注释的
--给表字段添加注释
execute sp_addextendedproperty 'MS_Description',[注释],'user','DB schema','table',[表名],'column',[列名];
----添加dbo下的userTest表的IdCode字段注释为"证件号码"
execute sp_addextendedproperty 'MS_Description','证件号码','user','dbo','table','userTest','column','IdCode';

在建表,或新增字段的时候,绝大部分的开发人员是不去给字段添加注释comment的。

  • Oracle 语法对表字段ddl操作
--Oracle
ALTER TABLE [表名] ADD [列名] [列类型];
--在表UserTest添加字段IdNo类型为varchar(30),可为空
ALTER TABLE UserTest add Alias varchar2(30) null;

--修改字段名
alter table [表名] rename column [列名] to [新列名];
--修改表UserTest的字段IdNo名为IdCode
alter table UserTest rename column IdNo to IdCode;

--修改字段类型
alter table [表名] modify ([列名] [列类型]);
--修改表UserTest字段IdCode的类型为int
alter table UserTest modify (IdCode varchar2(30));

--删除
alter table [表名] drop column [列名];
--删除表UserTest的IdNo字段
ALTER TABLE UserTest drop column IdNo;

--很奇怪的现象,绝大部分开发人员都不维护字段注释的,都不会去编写如下sql
--添加字段注释
COMMENT on column [表名].[字段名] is '证件号码';
--添加userTest表的userName字段注释为"用户姓名"
COMMENT on column UserTest.IdNo is '证件号码';
  • 变更表字段类型时注意点
    1、如果修改的字段无数据,那么可以直接执行。
--修改字段类型
alter table [表名] modify ([列名] [列类型]);
--修改表UserTest字段IdNo的类型为int
alter table UserTest modify (IdCode varchar2(30));

2、如果该字段有数据并且新类型和原类型不兼容
那么需要临时新建一个字段来过度

--1. 先修改原字段名为临时名
alter table UserTest rename column IdNo to IdNo_temp;
--2. 再新增一个原来字段名字段
ALTER TABLE UserTest add IdNo varchar2(30) null;
--3. 将IdNo_temp数据更新到IdNo字段
Update UserTest set IdNo = IdNo_temp;
--4. 删除掉临时字段
ALTER TABLE UserTest drop column IdNo_temp;

这四步下来,就更改好了IdNo的字段类型。