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...