PL/SQL dba sorguları

/ TITLE  tablosunu referans alan db objelerini gösterir./

SELECT *

        FROM dba_dependencies d

       WHERE d.referenced_name = ‘TITLE’;

 

PRAGMA AUTONOMOUS_TRANSACTION ()

Ana transactiondan özerk kendi içerisinde çalışan transaction işlemidir. Transaction işlemine başlar ve işlemi bitirince commit ve rollbak yaparak ana transactiona döner.

 

/*+leading(M) full(M)*/

Sorgunun execution zamanı uzun sürmesini önlemek için kullanılan bir hinttir.  Leading edilen tablo üzerinde ilk başta işlem yapılıp daha sonra diğer tablolar ile join işlemleri yapılır.

 

/* sp nin İçerik ve bilgisini getirir.  */

select * from dba_source

where name=‘JOBS_SEL_SP’

 

SEYDI kullanıcısının oluşturduğu objeleri döner.

select * from dba_source  where owner=‘SEYDI’;

 

Tablo ismi BOOK ile başlayan tabloları döner.

select * from dba_tables where table_name like ‘BOOK%’;

Advertisements

PL\SQL Fonksiyonlar

NVL Function()

Select NVL(titleLevel,value) From Titles; If titleLevel is null return value;

NVL2 Function()

Select NVL2(titleLevel,value1,value2) From Titles ; If titleLevel is not null return value1 ; else return value2;

Decode Function()

Select decode(titleLevel,1,’Junior Developer’,2,’Senior Developer’,3,’Leader’,’Manager’)  title from Titles ; If titleLevel 1 return Junior Developer Else if 2 Senior developer else if 3 Leader else Manager;

Coalesce Function()

Select Coalesce(titleLevel,titleDescription,’isNull’) From Titles; Return First not null value(first check titleLevel,else if titleDescription,else if ‘isNull’);

Trim Function()

Select TRIM(‘  jobdescription   ’) From job;   Delete empty

 

(+) Function :

Select * from titles,jobs where titles.titleJobID=jobs.jobsID(+) ; (+) means outer join ;

 

Trunc Function ()

Select TRUNC(125.82,-2) from dual;  100  virgülden sonraki kısım kadar sıfırlanır. Tarihlerde ise bir altı gösterir. Örneğin trunc(to_date(’26-Aug-2014’),YEAR) en yakın yılın başlangıcı olan 01-Jan-2014 ‘ı döner.

concat Function()

Select Concat(string1,string2) From Job;  combine string1 and string2

Round Function()

Select Round(125.315,2) from dual; Return  value(125.315) to up (125.32)

SUBSTR Function()

Select substr(jobdescription,value1,value2) from jobs; Return jobdescription start from value1 to value2;

 

Instr Function()

Select instr(jobdescription, ‘value’, startvalue, value1) from dual; ; Return location of value after startvalue match value1;

 

Replace Function()

Select  replace (‘job’,value1,value2) FROM job; Replace value1 with value2;

 

PL\SQL komutlar

IN

Select * from Titles where titledescription in (‘doctor’,’engineer’, ‘teacher’);

Like

Select * from titles where titledescription like (‘doc’);

Select * from titles where titledescription like (‘doc%’);

Select * from titles where titledescription like (‘%doc’);

Select * from titles where titledescription like (‘%doc%’);

Alter Table

Alter table Titles drop column titlelevel ;

Alter table Titles add (titlelevel number(3),titledefinition Varchar2(50)) ;

Alter table Titles modify (titlelevel number(4) not null,titledefinition not null);

Alter table Titles Rename Column (titlelevel to title_level);

Alter table Titles RENAME TO JobTitles;

Delete From Titles Where titlelevel=’1’;

Oracle Tablo kolon düzenlemeleri

Bir Tabloya kolon ekleme:

ALTER TABLE engineer

ADD (department varchar2(50),

engineername varchar2(50) );

Bir kolonu silme :

ALTER TABLE engineer DROP COLUMN department;

Kolonu Düzenleme :

ALTER TABLE students MODIFY ( student_ID number(6) not null,

student_name varchar2(30));

Kolona komut ekleme :

COMMENT ON COLUMN tablename.column IS ‘comment … ‘

PL/SQL Dual Tablosu ve String Fonksiyonları

PL/SQL(Procedural Language/Structured Query Language), Microsofttan sonra Yazılım dünyasının en büyük ikinci şirketi Oracle tarafından geliştirilen Oracle veritabanlarına verilen özel dildir. PL/Sql’e dair genel bilgi ve ifadelerin yer alacağı bu yazıda pl\sql de kullanılabilecek string ifadelerine değinip daha sonra specific konulara değinmek istiyorum.

PL/SQL string fonksiyonlarını kullanmak için Oracle firmasının oluşturduğu DUAL tablosunu kullanacağım. Oracle’da Data Dictionary oluştururulurken oluşturulan sadece okunabilen tablodur. Tek kolon ve tek satırdan(DUMMY :x) oluşan dual SYSDATE ve USER gibi sistemin kendi ifadelerini kullanabilir. Tablonun sahibi SYS kullanıcısı olup tüm kullanıcıların erişimine açıktır. 

SELECT UPPER(‘Software Engineering’) FROM DUAL; İfadeyi büyük harflere çevirir. İfade yerine kolon yazılamsı halinde kolonun verileri büyük harf olarak yazılır.

Lower komutu ise tam tersi özellikte olup ifadeyi küçük harfe dönüştürür.

SELECT LOWER(‘Software Engineering’) FROM DUAL;  

SELECT INITCAP(‘dAN mORGAN’) FROM DUAL;  INITCAP komutu ifadenin baş harflerini büyük diğer karakterlerini küçük harfle yazar. // Sorgu sonucu Dan Morgan şeklinde olacaktır.

SELECT ASCII(‘A’) FROM DUAL; A ifadesinin ASCII kodu olan 65 sonucunu verecektir.

SELECT(CHR(83) || CHR(97) || CHR(108)) FROM DUAL; ASCII kodlara karşılık gelen harfleri yazar .–Sal

SELECT COALESCE(number, name, surname) FROM student; kolonlar arasında boş olmayan ilk kolonu yazar. Tek kolon sonuc döner. Eğer number kolonu doluysa onu yazar fakat dolu değilse ikinci kolon olan name kolonunu yazar. Eğer name kolonu da boşsa surname kolonunu yazar.

SELECT CONCAT(‘Dan ‘, ‘Morgan’) FROM DUAL;  Concat komutu iki string ifadenin birleştirilmesini sağlar. Eğer daha fazla kolonun birleştirilmesi isteniyorsa || ifadesi kullanılabilir.

SELECT CONVERT(‘Ä Ê Í Õ Ø A B C D E’,’US7ASCII’,’WE8ISO8859P1′) FROM DUAL;  İfadenin belirtilen karakter setine göre (US7ASCII,WE8ISO8859P1 bu iki db de aynı sonucu verecektir.  ) karakterleri dönüştürür. Dönüştüremediklerinin yerine ? koyar. 

A E I ? ? A B C D E ?

SELECT INSTRB(‘Dan Morgan’, ‘ ‘, 1, 1) FROM DUAL; –instrb :  output:4 INSTRB ifadesi ikinci ” arasındaki ifadenin  stringte kaçıncı sırada olduğu sonucunu döner. )

SELECT LENGTH(‘Dan Morgan’) FROM DUAL;   –output : 10 Stringin ya da kolonun karakter uzunluğunu verir.

SELECT LPAD(‘Dan Morgan’, 25, ‘x’) FROM DUAL;  — Stringi 25’e ekleyecek şekilde so tarafa x yazar. Toplam 25 karakter olmuş olur. Output : xxxxxxxxxxxxxxxDan Morgan

SELECT RPAD(‘Dan Morgan’, 25, ‘x’) FROM DUAL;  –Dan Morganxxxxxxxxxxxxxxx

SELECT LPAD(‘Dan Morgan’, 25) FROM DUAL;  — output : ”               Dan Morgan”

SELECT RPAD(‘Dan Morgan’, 25) ||'<-‘ FROM DUAL;  –output :Dan Morgan               <-

SELECT TRIM(‘   Dan Morgan   ‘) FROM DUAL;  –output:Dan Morgan Stringteki boşlukları kaldırır. Eğer özel bir ifade  kaldırılmak isteniyorsa aşağıda belirtilen şekilde kullanılabilir.

SELECT TRIM(‘D’ FROM ‘Dan Morgan’) FROM DUAL; –output:an Morgan

SELECT ‘->’ || LTRIM(‘   Dan Morgan   ‘) || ‘<-‘ FROM DUAL;  –output: ->Dan Morgan   <-  “Soldaki boşlukları kaldırıyor.”

SELECT ‘->’ || RTRIM(‘   Dan Morgan   ‘) || ‘<-‘ FROM DUAL;  –output: ->   Dan Morgan<-  “Sağdaki boşlukları kaldırıyor.”

SELECT MIN(column_name) FROM user_tables Group by  ; Group by ifadesi ile kullanılıp kolondaki en küçük değeri getirir. LEAST ile benzerdir. 

SELECT MAX(column_name) FROM user_tables Group by  ;  — kolondaki en büyük değeri getirir

SELECT REVERSE(‘Dan Morgan’) FROM DUAL;  –İfadeyi tersten yazar.  output : nagroM naD