標籤:資料載入 var update 標記 let 操作 sed 提高 物理
--查看錶的結構
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)
);
[email protected] 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;
--查看錶的大小
[email protected] test11g> select segment_name,segment_type,bytes from user_segments
2 where segment_name=‘EMP‘;
SEGMENT_NAME SEGMENT_TYPE BYTES
--------------- ---------- ----------
EMP TABLE 65536
Oracle基礎 10 表 table