Oracle数据库 实例说明:表的创建、重命名、属性/字段/列的添加删除与修改

本文详细介绍了Oracle数据库中表的创建、重命名、属性的增删改查操作,包括兼容性的注意事项和实际操作示例。在修改属性时,如果字段无数据或新旧类型兼容则可直接修改,否则需要通过新建字段转移数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理一下oracle数据库下关于表与属性的一些操作

1、表的创建

create table Test(
    roomNo INTEGER NOT NULL,
    hotelNo VARCHAR2(16) NOT NULL,
    type VARCHAR2(32) NULL,
    price VARCHAR2(32) NULL,
    PRIMARY KEY (roomNo,hotelNo),
    CONSTRAINTS check_type CHECK(type in ('Single','Double','Family')),
    CONSTRAINTS check_roomNo CHECK(roomNo BETWEEN 1 AND 100)
)

2、表的重命名

直接重命名

rename test to room;

间接重命名

create room as select * from test;
drop test;

3、修改属性

添加属性

alter table room add (test varchar(20) null);

删除属性

alter table room drop column test;

修改属性名称

alter table room rename column roomNo to roomNum;
alter table room rename column hotelNo to hotelNum;

修改属性类型
1、假设字段数据为空,则不管改为什么字段类型,可以直接执行:

alter table room modify (hotelNum varchar2(20));

现在插入2条数据继续后续测试

insert into Room(roomNum,hotelNum,type,price)values('1','1','Single','32');
insert into Room(roomNum,hotelNum,type,price)values('2','这也是一个测试','Single','32');

2、假设字段有数据,则varchar2(20)改为nvarchar2(20)可以直接执行,扩大属性长度也是可以的。
但是以下情况会报错,比如int转varchar,又如想缩小属性的范围,又如nvarchar转varchar,都是不允许的,会报错
ORA-01463: 不能使用当前约束条件修改列数据类型
ORA-01441: 无法减小列长度, 因为一些值过大
ORA-01439: 要更改数据类型, 则要修改的列必须为空

alter table room modify (hotelNum nvarchar2(20));//成功
alter table room modify(hotelNum varchar(20));//成功
alter table room modify(roomNum varchar(20));//报错
alter table room modify(hotelNum varchar(10));//报错
alter table room modify(hotelNum varchar(20));//报错

varchar与nvarchar的差别

3、假设字段有数据,而且类型更改失败,比如hotelNum在2中被修改为nvarchar(20), 我现在想修改为varchar(40),可以使用下面方法。


alter table room rename column hotelNum to hotelNo;//修改原来属性的名字

alter table room add hotelNum varchar2(40);//添加属性

update room set hotelNum=trim(hotelNo);//把原来的属性的值复制到新建的属性

alter table room drop column hotelNo;//删除原属性(会报错,因为hotelNo是主键)
//解决
alter table room drop primary key;//删除主键
alter table room drop column hotelNo;
alter table room add primary key(roomNum,hotelNum);//恢复主键

总结:
1、当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。
2、当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移。

4、有用的查询操作

查询当前scheme下的所有表

select table_name from tabs;

参考博客

http://www.cnblogs.com/flyingfish/archive/2010/01/15/1648448.html
http://blog.youkuaiyun.com/gdjlc/article/details/23762549
http://www.cnblogs.com/lonelyxmas/p/4099601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值