表
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。