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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章