Oracle 专题
专题目录
您的位置:database > Oracle专题 > Oracle修改表结构
Oracle修改表结构
作者:--    发布时间:2019-11-20

在本教程中,我们将学习如何使用oracle alter table语句来修改表结构。

要修改现有表的结构,请使用alter table语句。 以下说明语法:

alter table table_name action;

在上面的语句中,

  • 首先,指定要修改的表名称。
  • 其次,指出想在表名称后执行的操作。

alter table语句可用来:

  • 添加一个或多个列
  • 修改列定义
  • 删除一列或多列
  • 重命名列
  • 重命名表

下面来看看一些例子来了解每个操作的工作原理。

oracle alter table示例

我们将使用在上一个教程中创建的persons表进行演示。

-- 12c语法
create table persons(
    person_id number generated by default as identity,
    first_name varchar2(50) not null,
    last_name varchar2(50) not null,
    primary key(person_id)
);

1. oracle alter table add列的例子

要将新列添加到表中,请使用以下语法:

alter table table_name
add column_name type constraint;

例如,以下语句将一个名为birthdate的新列添加到persons表中:

alter table persons 
add birthdate date not null;

如果查看persons表格,会看到birthdate日期列被添加到列列表的末尾:

desc persons; 

name       null     type         
---------- -------- ------------ 
person_id  not null number       
first_name not null varchar2(50) 
last_name  not null varchar2(50) 
birthdate  not null date

要同时向表中添加多列,请按如下所示将新列置于括号内:

alter table table_name
add (
    column_name type constraint,
    column_name type constraint,
    ...
);

看下面的例子:

alter table persons 
add (
    phone varchar(20),
    email varchar(100)
);

在这个例子中,语句在users表中添加了两个名为phoneemail的新列。

desc persons

name       null     type          
---------- -------- ------------- 
person_id  not null number        
first_name not null varchar2(50)  
last_name  not null varchar2(50)  
birthdate  not null date          
phone               varchar2(20)  
email               varchar2(100)

2. oracle alter table modify列示例

要修改列的属性,请使用以下语法:

alter table table_name
  modify column_name type constraint;

例如,下面的语句将birthdate列更改为一个空列:

alter table persons modify birthdate date null;

我们再次验证persons表结构:

desc persons

name       null     type          
---------- -------- ------------- 
person_id  not null number        
first_name not null varchar2(50)  
last_name  not null varchar2(50)  
birthdate           date          
phone               varchar2(20)  
email               varchar2(100)

正如所看到的,birthdate日期变得无能为力。

要修改多个列,请使用以下语法:

 alter table table_name
  modify ( column_1 type constraint,
          column_1 type constraint,
         ...);

例如,以下语句将phoneemail列更改为not null列,并将email列的长度扩展为255个字符:

alter table persons modify(
    phone varchar2(20) not null,
    email varchar2(255) not null
);

再次验证persons表结构:

desc persons;

name       null     type          
---------- -------- ------------- 
person_id  not null number        
first_name not null varchar2(50)  
last_name  not null varchar2(50)  
birthdate           date          
phone      not null varchar2(20)  
email      not null varchar2(255)

3. oracle alter table drop column示例

要从表中删除现有的列,请使用以下语法:

alter table table_name
drop column column_name;

该语句从表结构中删除列,并删除存储在该列中的数据。以下示例从persons表中删除birthdate日期类型的列:

alter table persons
drop
  column birthdate;

再次查看persons表结构,就会发现birthdate列已被删除:

desc persons;

name       null     type          
---------- -------- ------------- 
person_id  not null number        
first_name not null varchar2(50)  
last_name  not null varchar2(50)  
phone      not null varchar2(20)  
email      not null varchar2(255)

要同时删除多个列,请使用以下语法:

alter table table_name 
drop (column_1,column_2,...);

例如,以下语句从个人表中删除phoneemail列:

alter table persons
drop
  ( email, phone );

我们再来看一下persons表:

desc persons;

name       null     type         
---------- -------- ------------ 
person_id  not null number       
first_name not null varchar2(50) 
last_name  not null varchar2(50)

emailphone列已按预期删除。

4. oracle alter table rename列示例

从版本9i开始,oracle添加了一个用于重命名列的子句,如下所示:

alter table table_name
rename column column_name to new_name;

例如,以下语句将first_name列重命名为forename列:

alter table persons 
rename column first_name to forename;

以下语句检查结果:

desc persons;

name      null     type         
--------- -------- ------------ 
person_id not null number       
forename  not null varchar2(50) 
last_name not null varchar2(50)

5. oracle alter table rename表的例子

要将一个表重命名为一个新的name的表名,使用下面的语法:

alter table table_name
rename to new_table_name;

例如,下面的语句将users表重命名为people表:

alter table persons rename to people;

在本教程中,您已学习如何使用oracle alter table语句来更改现有表的结构。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册