Oracle基礎 10 表 table

j04212發表於2014-02-12

--檢視錶的結構

desc ygb; 

select * from user_tab_columns
where table_name='YGB';


--新建表ygb

create table ygb(
  bh number(3),
  eid varchar2(6) constraint eid_p primary key,
  ename varchar2(10),
  bdate date,
  sex char(1),
  city varchar2(20)
);     


JOHN@ test10g> create table tbstest
  2  (id int,
  3   dt date
  4  )
  5  tablespace tbs_test;    --指定表存放的表空間     


--通過查詢新建表

create table emptest as 
select * from emp;          


如果此表有幾百萬行,並且你的時間不允許,那麼還有兩種方法可以提高建立含有大量資料的新表的速度。可以使用 parallel 和 nologging 選項來提高裝載大表的速度。parallel 選項允許你用多個程式並行執行資料載入,並且 nologging 選項指示不要把該資訊記錄進重做日誌檔案和回滾段(除了為內務處理目的外)。如下所示:

create table employee_new
as select * from employees
parallel degree 4
nologging;


另一種方法是將一個表簡單的從一個表空間移動到另一個表空間。

alter table employee move new_tablespace;

當移動一個表時,行的 rowid 改變了,因而使該表的索引不可用。你必須重新建立索引或者在你移動該表後重建它們。


--重新命名錶

alter table ygb rename to newname;


--刪除表

drop table emp;                          --刪除表
drop table emp purge;                    --刪除表,不放到回收站
drop table emp cascade constraints;      --將約束一起刪除

truncate table emp;                      --截斷表


--修改表的結構

alter table emp add (job_id number);                        --追加列 
alter table emp modify (job_id number(4,0) default 1001);   --修改列
alter table emp drop column job_id;                         --刪除列
  alter table emp drop (job_id);
alter table emp rename column job_id to jobid;              --重新命名列
income integer generated always as (salary+jiangjin);       --虛擬列 


如果要刪除列的那個表中包含了大量的資料,你可以將該列標記為未用,而不用完全刪除資料。你在任何查詢或試圖中都不會看到該列,並且所有定義在該列上的所有依賴物件(如約束和索引)都被刪除。事實上,用詞方法可以快速“刪除”一個大資料列。

alter table emp set unused column job_id;    --標記未使用列


然後,可以在某個維護時間中使用以下命令永久刪除這兩列。

alter table emp drop unused columns;          --刪除未使用列     


如果認為表中行太多可能潛在的消耗撤銷空間,可以用可選的 checkpoint 子句刪除一列。通過在一定數目的行後使用檢查點,將在刪除該列的同時減少撤銷資料的產生。參見下面的例子。每當在emp中刪除10000行,資料庫就使用一個檢查點:

alter table emp drop unused columns checkpoint 10000;

alter table emp read write;     --讀寫狀態
alter table emp read only;      --只讀狀態


可以在只讀表上執行以下操作:

select
create/alter/drop index
alter table add/modify/drop/enable/disable constraint
進行物理特性更改的 alter table
rename table 和 alter table rename to
drop table

 

--建立會話級臨時表

create global temporary table temp_tb1(col_a varchar2(30)) 
on commit preserve rows;
 
--建立事務級臨時表

create global temporary table temp_tb2(col_a varchar2(30)) 
on commit delete rows

--insert

insert into ygb
values(bhseq.nextval,101,'A','2-3-86','男','西安'); 

--update

update gzb
set salary=salary*1.1
where eid=108;       

--delete

delete from ygb
where eid=108;       


--檢視錶的大小

IKKI@ test11g> select segment_name,segment_type,bytes from user_segments
  2  where segment_name='EMP';

SEGMENT_NAME    SEGMENT_TYPE  BYTES
--------------- ----------    ----------
EMP             TABLE         65536

 


 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27633655/viewspace-1080348/,如需轉載,請註明出處,否則將追究法律責任。

相關文章