oracle 資料庫常用語句

2021-08-03 12:43:57 字數 3693 閱讀 3372

1、oracle分頁

1)select * from (select a.*, rownum rn from (select * from tabel order by xx) a where rownum<5) where rn>2;

注:在oracle中用rownum來記錄資料的順序,這個語句的意思是,按某個字段排序並查詢出表中所有資料,根據資料的順 序,

先找出資料排

序號小於5的資料,然後再找到大於2的資料。

2)select * from emp where rowid in (select rid from (select rownum rn,rid from (select rowid rid from table order by xx) a 

where  rownum<=5)  where rn>=2) 

注:這裡是根據rowid來查詢資料,由於這個語句子查詢查詢的字段很少,故有人認為他的速度比較快。但這裡有乙個小問

題,就是當這個語

句和上面的語句按相同列排序,兩條sql查出的資料並不相同,具體什麼原因我也不清楚,請知道的

大神告知一下。

2、delete和truncate的區別

delete是dml(資料操作語言),該操作會放在rollback segement中,提交了事物才生效,如果用相應的trigger,執行時將

會被 觸發。truncate是ddl(資料定義語言),該操作執行時立即生效,原資料並沒放在rollback segement中,沒有回滾一說,

也不 觸發trigger。

注:當批量刪除資料時,建議用truncate,速度較快,但也存在一定的安全隱患

3、oracel表解鎖

1)找到被鎖定表的session

select object_name, machine, s.sid, s.serial# 

from gv$locked_object l, dba_objects o, gv$session s 

where l.object_id= o.object_id 

and l.session_id = s.sid; 

2)釋放session,進行解鎖

alter system kill session 'xx, ***xx'; 

4、表空間

1)作用:控制資料庫所佔的磁碟空間;分類管理,提供效率;備份和恢復資料

2)建立表空間

create tablespace 表空間名 datafile 『d:\***.dbf』 size 20m;

注:***.dbf為資料檔名,size最大值為500m

3)擴大表空間

a、新增資料檔案:alert tablespace 表空間名 add datafile 『d:\***2.dbf』 size 20m;

b、增加資料檔案大小:alert tablespace 表空間名 『d:\*** .dbf』 resize 20m;

注:當你不知道對應的資料檔案在哪個位置,可通過一下sql查詢出對應的位置:

select f.* from dba_data_files f where f.tablespace_name='表空間名'

c、設定檔案自動增長:alert tablespace 表空間名 『d:\***.dbf』autoextend on next 10m  maxsize  500m;

4)改變表空間狀態

聯機:alert tablespace 表空間名 online

離線:alert tablespace 表空間名 offline

唯讀:alert  tablespace 表空間名 read only

讀寫:alert  tablespace 表空間名 read write

5)移動表空間資料檔案

a、確定資料檔案的表空間:

select tablespace_name from dba_data_files where file_name=

』d:\***.dbf』;

b、使表空間離線:

alert  t

ablespace 表空間名 off

line c、

移動資料檔案到制定位置:

host move 

『d:\***.dbf』『

c:\***.dbf』

d、邏輯修改資料檔案:alert  tablespace 表空間名 rename datafile 『d:\***.dbf』 to 『c:\***.dbf』

e、使表空間聯機:alert tablespace 表空間名 online

5、查詢某個欄位在資料庫中的哪些表出現

select  *  from user_tab_columns uc,user_tables ut

where ut.table_name=uc.table_name 

and column_name =upper('box_no') ;

6、資料庫字串分割

1)定義返回型別

create or replace type split_type is table of varchar2 (4000);

2)實現分割方法

create or replace function split (

p_str       in varchar2,

p_delimiter in varchar2 default(','))

return split_type

isj int := 0;

i int := 1;

len int := 0;

len1 int := 0;

str varchar2 (4000);

my_split split_type := split_type ();

begin

len := length (p_str);

len1 := length (p_delimiter);

while j < len  loop

j := instr (p_str, p_delimiter, i);

if j = 0  then

j := len;

str := substr (p_str, i);

my_split.extend;

my_split (my_split.count) := str; 

if i >= len then

exit;

end if;

else

str := substr (p_str, i, j - i);

i := j + len1;

my_split.extend;

my_split (my_split.count) := str;

end if;

end loop;

return my_split;

end split;

3)迴圈獲取分割內容

for m in ( select * from table(split(strlabellnolist,'|')) ) loop

.......

end loop;

Oracle資料庫常用語句

1 建立表空間 注釋 creat tablespace 表名 datafile 虛擬機器所在目錄 字尾一定是.bdf size 100m 初始大小100兆 autoextend on 自動擴充套件大小 next 10 每次擴充套件10m 2 刪除表空間 drop tablespace 表名 3 建立...

Oracle資料庫常用語句

建表語句 create table test1 id varchar2 20 not null primary key 增加乙個表字段 alter table test1 add name varchar2 20 default null not null 增加多個表字段 alter table t...

Oracle資料庫的常用語句

1 查詢使用者連線 select username,machine,program,status,count machine as 連線數量 from v session where type background group by username,machine,program,status o...