12 Ekim 2014, 07:00 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Oracle - OraClob EXISTS "Var, mevcuttur" anlamındaki bu sözcük, SQL' de Boolean (lojik, mantıksal) operatörüdür. İçteki SELECT komutunun sorgulanması sonucunda, en az bir tablo satırı üretilmişse,EXISTS operatörü true (doğru) değerini, hiçbir tablo satırı üretilmemişse, EXISTS operatörü (yalnış) değerini üretir. Not: EXISTS operatörü, AND, OR ve NOT gibi diğer mantıksal ifadelelerle de kullanılır. Aşağıda ki örnekte HASTA tablosunda EXISTS içerisine yazılan ifadeyi sağladığı için true değerini döndürmüş ve aşağıdaki tabloyu oluşturmuştur. SELECT * FROM HASTA WHERE EXISTS(SELECT HS_AD FROM HASTA) HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 5 I.HAKKI ALPTÜRK E 3 9 VEDAT KARAARSLAN E 2 13 ZAFER TEKBUDAK E 1 17 CELALETTİN DINÇER E 1 EXP EXP(n) e' nin n' inci üssünü sonuç olarak döndürür. (e=2.718) SELECT EXP(3) FROM HASTA EXP(3) 20 20 20 EXPLAIN PLAN EXPLAIN PLAN, Tablosunu ya utlxpin.sql'ini çalıştırarak ya da create table cümlesi ile kendiniz yaratabilirsiniz. EXTRACT FLOOR FLOOR, FLOOR(n) n sayısından küçük veya n sayısına eşit mevcut en büyük tam sayıyı sonuç olarak döndürür. Bu örnekte 9.9 ve -9.9 sayılarını FLOOR komutu ile 9.9' u 9'a ve -9.9'u da -10' a (kendisinden küçük en yakın tam sayıya) çevirir. SELECT FLOOR(9.9), FLOOR(-9.9) FROM HASTA FLOOR(9.9) FLOOR(-9.9) 9 -10 9 -10 9 -10 FOR For döngüleri özellikle belirli bir sayıda yapılan döngüler için kullanılan döngü tipidir. Döngünün kaç defa olacağını baş tarafında ki sayılar belirlemektedir. FROM FROM, Kullanılacak tabloların yazıldığı bölümdür. SELECT * FROM HASTA HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 5 I.HAKKI ALPTÜRK E 3 9 VEDAT KARAARSLAN E 2 13 ZAFER TEKBUDAK E 1 17 CELALETTİN DINÇER E 1 FUNCTION FUNCTION, Bir fonksiyon bir değer hesaplayan alt programdır. Fonksiyon ve prosedür yapıları RETURN anahtar kelimesi haricinde benzerdir. GRANT GRANT, Sistem hakları ,rolleri ve nesne haklarını bir kullanıcı veya rolden hak alarak geri alma komutudur. GREATEST GREATEST, Belirtilen sayı yada gün yada tarih içerisinden en büyüyünü bulur. SELECT GREATEST(93,42017,2005) AS ENBUYUKSAYI FROM HASTA GREATEST içerisine yazılan sayılardan en büyük rakkamı, tarihi yada mantıksal ifadeyi bularak sonuca yazdırır.Burada ki AS komutu ile de yzdığımız bu sayılar arasında ki en büyük sayıyı bularak bu alanın adını ENBUYUKSAYI olarak değiştirir. ENBUYUKSAYI 42017 42017 42017 SELECT GREATEST('ONE','TWO') AS SAYI FROM HASTA SAYI TWO TWO SELECT GREATEST(TO_DATE('11/11/2000','mm/dd/yyyy'), TO_DATE('12/12/2001')) AS ENBUTUKTARIH FROM HASTA ENBUYUKTARIH 12/12/2001 12/12/2001 12/12/2001 GROUP GROUP, Sorgu sonucu dönen kayıtları belli özelliklerine göre gruplama işleminin yapıldığı bölümdür. SELECT AVG(HS_KEY) FROM HASTA GROUP BY HS_KEY Bu örnek ile Hasta tablosu içerisinde hasta numaralarına(HS_KEY) göre gruplama yaparak, herbir gurubun ortalamasını (AVG) bulur. HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 5 I.HAKKI ALPTÜRK E 3 9 VEDAT KARAARSLAN E 2 13 ZAFER TEKBUDAK E 1 17 CELALETTİN DINÇER E 1 GROUPING GROUPING, Group by dan sonra kullanılır. SELECT HS_KEY, HS_AD, COUNT(*), GROUPING(HS_KEY) FROM HASTA GROUP BY ROLLUP(HS_AD, HS_KEY) HS_KEY HS_AD COUNT(*) GROUPING(HS_KEY) 87625 AYŞE 1 AYŞE 1 125757 BİRSEN 1 BİRSEN 1 HAVING GROUP BY kullanıldığı SQL' lerdeki grubu ilgilendiren şartların yazıldığı bölümdür. Burada grup içerisinde ki şartlar belirlenir. Bu örnekte hasta numarasına(HS_KEY) göre guruplama yapılmış. Ve HAVING komutu ile her bir group içerisinde ki hasta numarası(HS_KEY) 8' den küçük olan numaraların ortalaması alınmıştır. SELECT AVG(HS_KEY) FROM HASTA GROUP BY HS_KEY HAVING AVG(HS_KEY)<8 AVG(HS_KEY) 5 HEXTORAW SELECT RAWTOHEX(HEXTORAW('12341312314151')) FROM HASTA RAWTOHEX(HEXTORAW('19')) 19 19 IN IN(liste) Liste' nin içindeki herhangi bir değeri sağlayan kayıtlar. SELECT * FROM HASTA WHERE HS_KEY IN(SELECT MAX(HS_KEY) FROM HASTA) Hasta tablosu içerisinde hasta numarası (HS_KEY) en büyük olan kaydın tüm alanlarını(bilgilerini) getirir. HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 125853 SELMA ZENGİN K 1 ANKARA 11.11.1976 INDEX Tablolarda ki kayıtlara daha hızlı erişebilmek için kullanılan nesnelerdir. INITCAP INITCAP(d) d dizesinin ilk harfi büyük diğer harfleri küçük olarak sonuçta döndürür. SELECT INITCAP(HS_AD) FROM HASTA Bu örnek ile hastanın adı (HS_AD) alanında ki bilgilerin baş harfini büyük diğer harflerini küçük olarak değiştirir. INITCAP(HS_AD) Ahmet Kaan Yiğit INSERT Tablo'ya bilgi girişi yapmak için kullanılan bir komuttur. CREATE TABLE COZUM(ADI CHAR(20), SOYADI CHAR(20)) Yukarıda COZUM adında ADI ve SOYADI alanları olan bir tablo yarattık.Şimdide yaratmış olduğumuz bu tabloya 1 satır bilgi girişi yapalım. INSERT INTO COZUM VALUES('ÖZLEM','YILDIZ') Daha sonrada SELECT * FROM diyerek yaratmış olduğumuz tabloyu görelim. ADI SOYADI ÖZLEM YILDIZ INSTR INSTR(d1,d2,[m,n]) d1 dizesinin içerisinde ,d2 dizesini d12in m'inci karakterden başlamak üzere n'inci defaki tekrarını arar ve sonuçta bulduğu karakter sayısını döndürür eğer belirtilmezse m ve n start olarak 1' dir. SELECT HS_AD, INSTR(HS_AD, 'A') FROM HASTA Hasta tablosu içerisinde hastanın adı(HS_AD) adlı alanda A harfini arar ve A harfi kaçıncı karakterden itibaren başlarsa INSTR ile A harfinin başladığı konumunu yazar. HS_AD INSTR(HS_AD,'A') AYSE 1 OZLEM KAAN 2 OSMAN 4 OMER INSTRB SELECT INSTRB(HS_AD,'A') FROM HASTA HS_AD INSTR(HS_AD,'A') AYSE 1 OZLEM KAAN 2 OSMAN 4 OMER INTERSECT İki tane ayrı sql sonucu dönen kayıtların kesişim kümesini sonuca yansıtır. INTO INTO kelimesi INSERT kelimesinden sonra kullanılır. Tabloda ki bir satıra bilgi girişi yapabilmek için kullanılır. İlk önce bir tablo yaratalım daha sonrada INTO kelimesini kullanarak yaratmış olduğumuz bu tablo ya bir satır veri girişi yapalım. CREATE TABLE MUSTER(MUSTERIADI CHAR(20), MUSTERISOYADICHAR(20)) (Müşteri adında MUSTERI NO ve MUSTERI ADI adlı alanları olan bir tablo yarattık.) INSERT INTO MUSTER VALUES('DERYA', 'KOÇ') (Şimdi de yaratmış olduğumuz bu tablo ya bir satır bilgi girdik.Aşağıda yazmış olduğumuz kodu çalıştırarak sonuç tablosunu görebiliriz. SELECT * FROM MUSTER MUSTERIADI MUSTERISOYADI DERYA KOÇ LAST_DAY LAST_DAY(t) t tarihinin içerisinde bulunduğu ayın son gününü sonuç olarak döndürür. SELECT LAST_DAY(TO_DATE('01.01.2001')) FROM HASTA LAST_DAY(TO_DATE('01.01.2001') 31.01.2001 LENGTH LENGTH(d1) d1 dizesinin boyutunu sonuç olarak döndürür. SELECT LENGTH('COZUM') FROM HASTA LENGHT('COZUM') 5 LENGTHB SELECT LENGTHB('COZUM') FROM HASTA LENGHT('COZUM') 5 LIKE LIKE, Şarta bir bölümü uyan kayıtları listeler. Benzerlik vermek için kullanılır. '%' karakteri tüm karakterler yerine geçer. '_' karakteri ise tek karakter yerine geçer. Sadece _ işaretini çıkarmak için ' _ ' işareti kullanılır. Küçük büyük harf ayrımı vardır. HASTA tablosu içerisinde ki hastanın adı(HS_AD) alanında ki adı A ile başlayanları listeleyiniz. SELECT * FROM HASTA WHERE HS_AD LIKE 'A%' HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 137 ATİLLA BAYBAŞ E 3 149 ALPER YASEMİN E 2 241 APDULRAHMAN BAY E 2 261 AYNUR KOÇ K 1 HASTA tablosu içerisinde ki hastanın adı(HS_AD) alanında ki adının son harfi A olanları listeleyiniz. SELECT * FROM HASTA WHERE HS_AD LIKE '%A' HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 2005 SEMA SARIKAYA K 3 1005 DOĞA AMİKLİOĞLU K 2 20005 MEHLİKA ÖĞÜT K 2 8005 SÜREYYA TEKİNCAN K 1 HASTA tablosu içerisinde ki hastanın adı(HS_AD) alanında başı ve sonu belli olmayan içerisinde A harfi bulunan kayıtları listeleyiniz. SELECT * FROM HASTA WHERE HS_AD LIKE '%A%' HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 2005 KAAN MERT E 3 1005 SEMA CAN K 1 20005 SİNAN YILDIZ E 1 8005 İHSAN TEKİNCAN E 1 LINK LN LN(n) n sayısının doğal logaritmasını sonuç olarak döndürür. SELECT LN(120) FROM HASTA LN(120) 5 LOG LOG(m,n) n sayısının m tabanına göre logaritmasını sonuç olarak döndürür. SELECT LOG(10,10000) FROM HASTA LOG(10,10000) 4 LOWER LOWER(d) d dizesinin bütün harflerini küçük olarak sonuçta döndürür. Bu örnekte HASTA tablosunda hastanın adı(HS_AD) adlı alanda tüm bilgiler(satırlar) küçük harfe çevrilerek sonuca yazdırıldı. SELECT LOWER(HS_AD) FROM HASTA HS_KEY HS_AD HS_SOYAD CINSIYET ISLEMSAYI DOGUMYER DOGUMTARIHI 200 ali KANBUR E 3 1000 mert SERT K 1 2003 yasemin YILMAZ K 1 8005 seda TEKİNCAN K 1 LPAD LPAD(d1,n,d2) d1 dizisini, n karakter oluncaya kadar soldan d2 eklenmiş olarak sonuçta döndürür. SELECT LPAD('L',3,'P') FROM HASTA LPAD('L',3,'P') LPP LPP LPP LTRIM LTRIM(d1[d2])d1 dizisinin baş tarafından d2 dizesinde olan karakterler çıkartılmış olarak sonuçta döndürür, eğer belirtilmezse standart olarak d2 boşluktur. Bu örnekte HASTA tablosu içerisinde hastanın adı(HS_AD) adlı alanda baş harfi A ile başlayan adların baş harfini çıkartarak sonuca yansıtılmıştır. SELECT HS_KEY, HS_AD, CINSIYET, LTRIM(HS_AD,'A') FROM HASTA HS_KEY HS_AD CINSIYET LTRIM(HS_AD,'A') 137 ATİLLA E TİLLA 149 ALPER E LPER 241 APDULRAHMAN E PDURRAHMAN 261 SERAP K ERAP MATERIALIZED MAX MAX(Sütün) Sütün değerlerinin en büyüyünü döndürür. Burada DISTINCT komutu ile tekrarlanan kayıtlar teke düşürerek tüm kayıtlar arasında maximum kaydı bulur. ALL komutu ile de tekrarlanmış kayıtlar olsa dahi tüm kayıtlar arasında maximum en büyük hasta numarasını(HS_KEY) bulur. SELECT MAX(HS_KEY), MAX(DISTINCT HS_KEY), MAX(ALL HS_KEY) FROM HASTA MAX(HS_KEY) MAX(DISTINCT HS_KEY) MAX(ALL HS_KEY) 125853 125853 125853 MIN MIN(Sütün) Sütün değerlerinin en küçüğünü döndürür. Burada DISTINCT komutu ile tekrarlanan kayıtlar teke düşürerek tüm kayıtlar arasında minumum kaydı bulur. ALL komutu ile de tekrarlanmış kayıtlar olsa dahi tüm kayıtlar arasında minumum en küçük hasta numarasını(HS_KEY) bulur. SELECT MIN(HS_KEY), MIN(DISTINCT HS_KEY), MIN(ALL HS_KEY) FROM HASTA MIN(HS_KEY) MIN(DISTINCT HS_KEY) MIN(ALL HS_KEY) 5 5 5 MINUS MINUS, Birinci sql sonucu dönen kayıtlarla ikinci sql sonucu dönen kayıtlar arasında ki fark kümesi. MOD MOD(m,n) m sayısının n sayısına bölümünden kalanı sonuç olarak döndürür. SELECT MOD(18,12) FROM HASTA MOD(18,12) 6 6 MONTH MONTH, tarih kullanımında ay anlamındadır. MONTHS_BETWEEN MONTHS_BETWEEN(t1,t2) t1 ve t2 tarihleri arasındaki ay sayısını sonuç olarak döndürür. SELECT MONTHS_BETWEEN(TO_DATE('09-09-2001'), TO_DATE('01-02-2001')) FROM HASTA MONTHS_BETWEEN(TO_DATE('09-09-2001'), TO_DATE('01-02-2001')) 7 7 7 NEW_TIME SELECT NEW_TIME(TO_DATE('8-MAY-2000 8:00 AM'), 'PST','EST') FROM HASTA NEXT_DAY NEXT_DAY(t,d) t tarihinden sonra ki d isimli ilk günü sonuç olarak döndürür. NEXT_DAY(tarih,' gün' ) -->tarih 'den sonraki günün ilk tarihini verir. SELECT NEXT_DAY('01-MAY-2001' ,'SATURDAY') FROM HASTA NEXT_DAY('01-MAY-2001' ,'SATURDAY') 07-MAY-2001 NLS_CHARSET_DECL_LEN SELECT NLS_CHARSET_DECL_LEN (100,NLS_CHARSET_ID('US7ASCII')) FROM HASTA NLS_CHARSET_DECL_LEN (100,NLS_CHARSET_ID('US7ASCII')) 100 100 NLS_CHARSET_ID SELECT NLS_CHARSET_ID('US7ASCII'), NLS_CHARSET_ID('WE8EBCDIC37C') FROM HASTA NLS_CHARSET_ID('US7ASCII') NLS_CHARSET_ID('WE8EBCDIC37C') 1 90 1 90 NLS_CHARSET_NAME SELECT NLS_CHARSET_NAME(1),NLS_CHARSET_NAME(90) FROM HASTA NLS_CHARSET_NAME(1) NLS_CHARSET_NAME(90) US7ASCII WE8EBCDIC37C US7ASCII WE8EBCDIC37C NLS_INITCAP SELECT NLS_INITCAP('COZUM', 'NLS_SORT=XFRENCH') FROM HASTA NLS_INITCAP('COZUM', 'NLS_SORT=XFRENCH') Cozum Cozum Cozum NLS_LOWER SELECT NLS_LOWER('COZUM', 'NLS_SORT=XFRENCH') FROM HASTA NLS_LOWER('COZUM', 'NLS_SORT=XFRENCH') cozum cozum cozum NLS_UPPER SELECT NLS_UPPER('COZUM', 'NLS_SORT=XFRENCH') FROM HASTA NLS_UPPER('COZUM', 'NLS_SORT=XFRENCH') COZUM COZUM COZUM NLSSORT SELECT NLSSORT('OZLEM','NLS_SORT=XFRENCH') FROM HASTA NLSSORT('OZLEM','NLS_SORT=XFRENCH') 5A874B285000010101010100 5A874B285000010101010100 NOAUDIT Kontrol işlemini geri alma komutudur. NOT NOT' ın listenin içerisinde ki herhangi bir değeri sağlayan kayıtlar haricindeki kayıtlar yada not like şarta bir bölümü uyan kayıtlar haricinde ki kayıtlar gerektiğine not' ın yada not like komutları ile kullanılır. Aşağıda ki örnekte HASTA tablosunda hastanın adı(HS_AD) A ile başlamayan kayıtlar listelenecektir. SELECT HS_KEY, HS_AD FROM HASTA WHERE HS_AD NOT LIKE 'A%' HS_KEY HS_AD 12 SEMA 138 MERT 152 YASEMİN
__________________ | |
|
Etiketler |
oracle, oraclob |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Oracle Turkiye | YazılımMimarı | Bilim Dünyasından Son Haberler | 0 | 27 Temmuz 2012 14:25 |
Oracle RIM'i alıyor mu! | Deep | Cep Telefonlar | 0 | 18 Nisan 2012 18:15 |
Oracle | Fonzerelli | Oracle | 1 | 03 Aralık 2010 17:22 |