資料表空間:tbs_user1_data
索引表空間:tbs_user1_index
使用者:user_1
表:table_t
-- 建立資料表空間
create
next
500m maxsize unlimited extent management local uniform size 8m;
-- 建立索引表空間
create
next
500m maxsize unlimited extent management local uniform size 8m;
需要在dba角色的使用者下建立
-- 建立使用者user_1,密碼為user_1
create
user user_1 identified by
"user_1"
;-- 使用者關聯表空間
create
user user_1 identified by
"user_1"
default
tablespace tbs_user1_data quota unlimited on tbs_user1_data ;
需要在dba角色的使用者下建立
alter
user user_1 quota unlimited on tbs_user1_index ;
-- 建立表table_t
create
table table_t (
id varchar2 (
32 byte ) visible default
' 'not
null
,-- 欄位id varchar2型別,預設空字串,不能為空(去掉not null 可為空)
phone number (
11) visible default
0not
null
,-- 欄位phone 數字型別,預設0,不能為空
amt number (18,
2) visible default
0not
null
-- 欄位amt 數字型別儲存2位小數(金額可用)
);
備註:
varchar2() ----0-4000,可變長度
char() ----0-2000,固定長度,用空格在資料的右邊補到固定長度
number(6,2) —6位整數、2位小數
number(2) --2位整數
comment
ontable table_t is
'表注釋'
;
-- 新增字段備註
comment
oncolumn table_t.id is
'編號'
;
-- 新增主鍵約束
alter
table table_t add
constraint pk_table_t primary
key(id)
;-- 新增主鍵約束(tablespace tbs_user1_index 表放在tbs_user1_index表空間)
alter
table table_t add
constraint pk_table_t primary
key(id)
using
index
tablespace tbs_user1_index;
-- 建立索引
create
index n1_table_t on table_t (phone asc
,amt asc
)tablespace tbs_user1_index;
-- 建立唯一索引
create
unique
index ui1_table_t on table_t (phone)
tablespace tbs_user1_index;
不加表空間的話,去掉tablespace tbs_user1_index
alter
table table_t add name varchar2(32)
default
' ';
-- 新增表字段name
comment
oncolumn table_t.name is
'名字'
;-- 新增字段備註
-- 授予test使用者下的table_1表許可權給logadm
grant
allprivileges
on test.table_1 to logadm;
-- 將test使用者下的table_1表的查詢許可權賦予logadm使用者
grant
select
on test.table_1 to logadm;
-- 授予test使用者下的說有表許可權給logadm(需要在test使用者下)
grant
allprivileges
onall
tables
inschema
public
to logadm;
-- 查詢包含某個欄位的表(欄位要大寫)
select table_name from user_tab_cols where column_name =
'id'
;
insert
into table_t(id,phone,amt)
values
('001'
,'13200000000'
,100
);
update table_t set amt =
200where id =
'001'
;
select
*from table_t where id =
'001'
;
delete
from table_t;
truncate
table table_t;
區別:
條件刪除
delete是可以帶where的,所以支援條件刪除;而truncate只能刪除整個表;
事務回滾
由於delete是資料操作語言(dml),操作時原資料會被放到 rollback segment中,可以被回滾;而truncate是資料定義語言(ddl),操作時不會進行儲存,不能進行回滾。
清理速度
在資料量比較小的情況下,delete和truncate的清理速度差別不是很大。但是資料量很大的時候,truncate不需要支援回滾,所以使用的系統和事務日誌資源少。delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項,所以會慢,但是相對來說也較安全。
高水位重置
隨著不斷地進行表記錄的dml操作,會不斷提高表的高水位線(hwm),delete操作之後雖然表的資料刪除了,但是並沒有降低表的高水位,隨著dml運算元據庫容量也只會上公升,不會下降。所以如果使用delete,就算將表中的資料減少了很多,在查詢時還是很和delete操作前速度一樣。
而truncate操作會重置高水位線,資料庫容量也會被重置,之後再進行dml操作速度也會有提公升。
create
table table_t1 as
select
*from table_t;
create
table table_t1 as
select
*from table_t where1=
2;-- 複製結構,不要資料
drop
table table_t;
alter
table table_t drop
column name;
alter
table table_t drop
constraint 主鍵名;
drop
index 索引名;
delete
from table_t where id =
'001'
;
select partition_name from user_tab_partitions where table_name=
'table_t'
;select
*from all_tab_partitions where table_name=
'table_t'
;
Oracle基礎語句
1 連線資料庫 connect uuu ooo connect sys ok as sysdba 2 建立表空間 create tablespace stu 表空間名 datafile e stu.dbf size 100m autoextend on next 5m maxsize 500m 3 ...
Oracle 基礎語句
傳送門 易百教程 oracle oracle資料庫伺服器由乙個資料庫和至少乙個資料庫例項組成。資料庫是一組儲存資料的檔案,而資料庫例項則是管理資料庫檔案的記憶體結構。此外,資料庫是由後台程序組成。資料庫和例項是緊密相連的,所以我們一般說的oracle資料庫,通常指的就是例項和資料庫。su oracl...
ORACLE 基礎語句總結
例 alter table tablename add kssj varchar 8 例 alter table tablename drop column hahaha 例 comment on column tablename.欄位 is 注釋 create table 表名 欄位 grbh v...