select level, childid, parentid from treetable start with parentid=0 connect by parentid=prior childid
select level, t.type_id, t.type_parentid from gwd_type_of_doc t start with t.type_parentid=0 connect by t.type_parentid=prior t.type_id order siblings by sortno asc
create or replace trigger "databasename"."triggername"
before insert on "tablename"
for each row
when (new.keyid is null)
begin
select seqencename.nextval into :new.keyid from dual;
end;
待續...
-- 表
create table test (names varchar2(12),
dates date,
num int,
dou double);
-- 檢視
create or replace view vi_test as
select * from test;
-- 同義詞
create or replace synonym aa
for dbusrcard001.aa;
-- 儲存過程
create or replace produce dd(v_id in employee.empoy_id%type)
asbegin
enddd;
-- 函式
create or replace function ee(v_id in employee%rowtype) return varchar(15)
isvar_test varchar2(15);
begin
return var_test;
exception when others then
end-- 三種觸發器的定義
create or replace trigger ff
alter delete
on test
for each row
declare
begin
delete from test;
if sql%rowcount < 0 or sql%rowcount is null then
rais_replaction_err(-20004,"錯誤")
end if
endcreate or replace trigger gg
alter insert
on test
for each row
declare
begin
if :old.names = :new.names then
raise_replaction_err(-2003,"編碼重複");
end if
endcreate or replace trigger hh
for update
on test
for each row
declare
begin
if updating then
if :old.names <> :new.names then
reaise_replaction_err(-2002,"關鍵字不能修改")
end if
end if
end-- 定義游標
declare
cursor aa is
select names,num from test;
begin
for bb in aa
loop
if bb.names = "oracle" then
end if
end loop;
end-- 速度優化,前一語句不後一語句的速度快幾十倍
select names,dates
from test,b
where test.names = b.names(+) and
b.names is null and
b.dates > date('2003-01-01','yyyy-mm-dd')
select names,dates
from test
where names not in ( select names
from b
where dates > to_date('2003-01-01','yyyy-mm-dd'))
-- 查詢重覆記錄
select names,num
from test
where rowid != (select max(rowid)
from test b
where b.names = test.names and
b.num = test.num)
-- 查詢表test中時間最新的前10條記錄
select * from (select * from test order by dates desc) where rownum < 11
-- 序列號的產生
create sequence row_id
minvalue 1
maxvalue 9999999999999999999999
start with 1
increment by 1
insert into test values(row_id.nextval,....)
oracle sql程式設計學習筆記
上週學習oracle sql 程式設計的前兩章,今天做一下總結。一 多表插入和merge 1.以前學的是mysql,沒有遇到多表插入,以及merge合併更新和插入語句的情況,所以看起來還是比較新穎的。多表插入 insert all first when cond1 into tab 1 when c...
學習筆記 oracle SQL優化
資料庫設計 設計的原則 1 熟悉需求 2 符合開發規範 命名規範 明確實體與資料表的關係 不能即沒有主鍵也沒有外來鍵 3 審核資料庫設計 4 基本表的特徵 1 原子性 字段不能再分解 2 原始性 是對原始資料的記錄,不是拼 接出來的資訊 3 演繹行 有基本表和關係表中的 資料,可以派生出任何想要的資...
ORACLE SQL效能優化(學習筆記)
記錄小的表應該在from的最後 多表查詢時 寫條件時from最後的哪個表應該先寫 where條件時要先寫表之間的連線 select 字句避免用 儘量減少訪問資料庫的次數 刪除全表時用truncate替代delete 不可恢復 盡量多使用 mit 使用表的別名 alias 使用exists替代in 並...