Oracle:表

1.创建表
create table order (
id integer constraint order_pk primary key,
status varchar2(10);
last_modified DATE default sysdate
);

创建临时表

create global temporary table order_temp (
id integer,
status varchar2(10);
last modified DATE default sysdate
)
on commit preserve rows; --该表中的行会被保留到会话结束时才删除
2.查询表的有关信息
select table_name, tablespace_name, temporary
from user_tables
where table_name in ('order', 'order_temp');
3.获得表中列的信息
select column_name, data_type, data_length, data_precision, data_scale
from user_tab_columns
where table_name='order';

4.修改表

alter table order add modified_by integer;

虚拟列

alter table grades add (average as ((low + high)/2));

修改列的长度

alter table order modifi status varchar2(15);

修改数值列的精度

alter table order modify id number(5);

修改列的默认值

alter table order modify last_modified default sysdate - 1;

删除列

alter table order drop colum status;

添加约束

alter table orderadd constraint order_status_ckcheck (status in ('placed', 'pending', 'shipped'));
alter table order modifi status constraint order_status_nn NOT NULL;
alter table order add constraint order_modified_by_fk modified_by references test(id);

添加ON delete cascade时,如果父表删除一行,则子表匹配的所有行都删除

alter table orderdrop column_name modified_by;
alter table order add constraint order_modified_by_fk modified_by references test(id) on delete cascade;

如果父表删除一行,则子表匹配的所有行modified_id都变为空值。

alter table order drop column_name modified_by;
alter table order add constraint order_modified_by_fk   modified_by references test(id) on delete set null;

status必须要有唯一列值。

alter table orderadd constraint order_status_uq UNIQUE(status);

禁用约束

alter table orderadd constraint order_status_uq UNIQUE(status) DISABLE;

启用约束

alter table order 
enable constraint order_status_uq;

只对新数据应用某个约束

alter table order
enable novalidate constraint order_status_uq;

获得有关约束的信息

select constraint_name, constraint_type, status, deferrable, deferredfrom user_constraintswhere table_name='order'

获得有关列的约束信息

select constraint_name,column_namefrom user_cons_columns
where table_name='order';
5.重命名表
rename order to order1;

rename order1 to order;
6.向表中添加注释
comment on table order is 'order the state of order';

获得表的注释

select * from user_tab_commentswhere table_name='order';

获得列的注释

select * from user_col_commentswhere table_name='order';
7.截断表

truncate删除表中所有行,并重置表的存储区。

truncate table order;

注意:不能用于参与了视图的表,操作立即生效,数据不能回滚。

8.删除表
drop table order;

想删除部分数据行用 delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用 drop想保留表而将所有数据删除,如果和事务无关,用truncate即可。如果和事务有关,或者想触发trigger,还是用delete。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值