oracle基礎語句

2021-10-21 16:59:10 字數 4627 閱讀 6276

資料表空間: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...