ORACLE中通过SQL语句(alter table)来增加、删除、修改字段

本文详细介绍了如何使用SQL语句进行表结构的增删改操作,包括添加、修改和删除字段的方法,并提供了创建主键约束及对其进行管理和调整的具体步骤。

添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….);

修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….);

删除字段的语法:alter table tablename drop (column);

 

添加、修改、删除多列的话,用逗号隔开。

 

使用alter table 来增加、删除和修改一个列的例子。

 

创建表结构:
create table test1
(id varchar2(20) not null);

 

增加一个字段:

alter table test1
add (name varchar2(30) default ‘无名氏’ not null);

 

使用一个SQL语句同时添加三个字段:

alter table test1
add (name varchar2(30) default ‘无名氏’ not null,

age integer default 22 not null,

has_money number(9,2)

);

 

修改一个字段

alter table test1
modify (name varchar2(16) default ‘unknown’);

 

另:比较正规的写法是:

-- Add/modify columns 
alter table TABLE_NAME rename column FIELD_NAME to NEW_FIELD_NAME;

 

删除一个字段

alter table test1
drop column name;

 

需要注意的是如果某一列中已经存在值,如果你要修改的为比这些值还要小的列宽这样将会出现一个错误。

例如前面如果我们插入一个值
insert into test1
values (’1′,’我们很爱你’);

然后曾修改列: alter table test1
modify (name varchar2(8));
将会得到以下错误:
ERROR 位于第 2 行:
ORA-01441: 无法减小列长度, 因为一些值过大

---------------------------------------------------------------------------------------------------------------

高级用法:

重命名表
ALTER TABLE
 table_name RENAME TO new_table_name;

 

修改列的名称

语法:
ALTER TABLE table_name RENAME COLUMN supplier_name to sname;

范例:
alter table s_dept rename column age to age1;

 

附:创建带主键的表>>

create table student (
studentid int primary key not null,
studentname varchar(8),
age int);

 

1、创建表的同时创建主键约束
(1)无命名
create table student (
studentid int primary key not null,
studentname varchar(8),
age int);
(2)有命名
create table students (
studentid int ,
studentname varchar(8),
age int,
constraint yy primary key(studentid));


2、删除表中已有的主键约束
(1)无命名
可用 SELECT * from user_cons_columns;
查找表中主键名称得student表中的主键名为SYS_C002715
alter table student drop constraint SYS_C002715;
(2)有命名
alter table students drop constraint yy;


3、向表中添加主键约束
alter table student add constraint pk_student primary key(studentid);

### 使用方法 `GET_ITEM_INSTANCE_PROPERTY` 函数用于获取指定实例的项(Item)的属性值。该函数的语法如下: ```plsql GET_ITEM_INSTANCE_PROPERTY( item_name VARCHAR2, instance_num NUMBER, property NUMBER ) RETURN ANYDATA; ``` - `item_name`:指定项的名称,格式为 `block_name.item_name`。 - `instance_num`:项实例的编号。 - `property`:要获取的属性的编号,这些编号对应着不同的属性,如 `ITEM_VALUE` 表示项的值。 示例代码: ```plsql DECLARE v_value ANYDATA; BEGIN v_value := GET_ITEM_INSTANCE_PROPERTY('dept.deptno', 1, ITEM_VALUE); -- 后续处理 v_value END; ``` ### 常见问题及解决方案 #### 1. Item 不存在 要保证在函数里使用的 Item 名称准确无误,包括大小写。Oracle Forms 对大小写敏感,所以 Item 名称的大小写必须和表单设计时一致。同时要确认在当前表单里,对应的 Block 和 Item 确实存在,可在表单设计器中查看表单结构。还要确保 Item 在当前作用域内是可见且可访问的,某些情况下,Item 可能在特定条件下才会显示或启用。另外要保证表单已经完全加载,并且所有的 Block 和 Item 都已经初始化,可在合适的触发器(如 `WHEN - NEW - FORM - INSTANCE`)中执行相关代码。 ```plsql -- 示例代码,确保 item_name 准确 DECLARE v_value ANYDATA; BEGIN v_value := GET_ITEM_INSTANCE_PROPERTY('block_name.item_name', 1, ITEM_VALUE); -- 后续处理 END; ``` #### 2. 实例编号无效 要确保传入的实例编号是有效的,若实例编号超出了实际的实例数量,会导致错误。可以先通过 `GET_BLOCK_PROPERTY` 函数获取块中实例的数量,然后再使用有效的实例编号。 ```plsql DECLARE v_instance_count NUMBER; v_value ANYDATA; BEGIN v_instance_count := GET_BLOCK_PROPERTY('block_name', NUM_INSTANCES); IF v_instance_count > 0 THEN v_value := GET_ITEM_INSTANCE_PROPERTY('block_name.item_name', 1, ITEM_VALUE); -- 后续处理 END IF; END; ``` #### 3. 属性编号错误 要确保传入的属性编号是正确的,不同的属性有不同的编号。可参考 Oracle Forms 的官方文档来获取正确的属性编号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值