SQL Programlama

Embed Size (px)

Citation preview

  • 8/2/2019 SQL Programlama

    1/34

    SQLID AD MAAS } Kolon ad (field)1 Kazm 10000 }2 Metin 75000 } Kayt (rows) .. .. }Kolon Kolon Kolon

    Table : Database'de saklanan kolonlarn birleiminden oluan kmedir. Table'n data tipi yoktur.Row : Tek kayt demektir.Column : Table'daki kolon adna ait kaytlardr. rnein, 'AD' kolonu demek 'AD' kolonuna girilenverilerin tmdr.Field : Kolon balklar ile kayt bal olanlardr.

    Primary Key : Unique + not null (Tek olmal ve bo geilemez.)Foreign Key : Primary key gibidir. Fakat null deerler alabilir.Table'lar ilikisel veri taban(compact) olmaldr. Tablolar arasnda bir iliki kurulmaldr.Oracle database'i ile kullanc arasnda SQL_NET iliki kurar. Protokoller belirlenir, bir isim altndakonfigurasyonlar birletirilir. Bylece database ismi tanmlanmasyla ona ait tm konfigurasyonlaroluturulur.RDBMS : Oracle'n server tarafndaki protokoludr. Hzl eriim salar. Gvenlik son derece gldr.Client / server desteklidir.TCP/IP : Oracle'n server tarafndaki protokoludr.IP numaralar sayesinde client / server mimarisiiletiimi kurulur. RDBMS gibi ortak zellikler tar.Referantional : Tablolar arasndaki referanslarn belirtilmesidir. Bazen bir kolonun deerlerinin bakabir tablodaki kolonlardan veri lamas gerekmektedir. bu durumda referans verilir.Bir projeye balarken u aamalar yaplr;

    i.

    ii. yi bir analiziii.

    iv. Analizin tablolara gre dizayn ve aralarndaki ilikilerv.

    vi. Ak emas ve dkman hazrlanmasvii.

    viii. Test edilmesiix.

    x. retime geilmesi

    Database'e zerinde giri,deiiklik,silme vb. lemlersql ile olur. Tablolar fiziksel olarak gzkmezler.Database iinde sakldrlar. Operatrler kullanlabilir.Data Dictionary: Database'deki kullanclar, yaratlan tablolar vb. Nesneler hakknda detayl bilgilerbulunan tablodur. Belli bal fonksiyonlarla ulalabilir.SQL : Tablolar arasnda iletiim kurar, sorgulama yapar.SQL *Plus : Ek olarak bloklar oluturulabiliyor. Mantksal dngler ve komutlar oluturulabiliyor. IF,FOR vb.PL / SQL : Server'a balanp insert, update, delete vb. Database zerinde direkt ilemler yaplabilir.Database'e en hzl ulam ve sorgulama biimidir.

  • 8/2/2019 SQL Programlama

    2/34

    Yazlan komutlar bufferda ilem yapar. O yzden her yeni komut yazldnda nceki komutusiler.

    Yazlm kontrolu(syntax) her satrn sonunda kontrol edilir.

    eitli formatlarla kt alnabilir.

    Direkt komut sonunda sonu alnr.,

    Select ile data okunur.

    nsert, update,delete (DML) ile var olan bir tablo zerinde deiiklikler yaplabilir.

    Create,alter,drop,rename, truncate(DDL) ile yapsal deiiklikler yaplabilir.

    Commit,rollback,savepoint (tranaction) ile yaplan ileri onaylar veya geri alr, iptal edilebilir.

    Grant,revoke (DCL) ile objelerin kullanlmasna hak vermek veya geri almak iindir. Gvenlik

    kurulur.

    Exit (^D) ile SQL'den k salanr. Bylece yaplan ilemler iptal olur.

    NOT: Tnsnames.ora Database hakknda bilgiler bu dosyada sakldr.Listener.ora Server tarafnda bulunan config dosyasdr.NOT: Komut yazlmdaki keli parantezler o alann zorunlu olmadn belirtir. {} iaretleri o alan iinbirden fazla deer alacan gsterir. Byk harf yazlanlar oldugu gibi yazlr. Kk harf yazanlaraklamadr.

    SQL de deiken tanmlamakDESC tablo_ad;Kolon tiplerinden bazlar;NUMBER(rakam,ondalk) Saysal ifadelerdir. Rakam alan saynn max alabilecei tamsay ksmnverir. Ondalk alan ise max. decimal deerini verir.

    VARCHAR2(say) Karakter ifadelerdir. Say ile belirtilen alan, max. karakter saysdr.DATE Tarih ve saat ifadeleridir. lke kodu desteiyle eitli formatlarda databasede tutulurlar.CHAR(say) Karakter ifadesidir. VARCHAR2den tek fark databasede saklanma eklidir. Max 255karakter alabilir. Say ile belirtilen alan, max. karakter saysdr.

    SELECT komutuSelect komutu ile database'den istenilen kriterlere gre veri getirlir.

  • 8/2/2019 SQL Programlama

    3/34

    Yazlm:SELECT [DISTINCT] {*,column [alias] ,.}FROM Tablo[WHERE koullar][ORDER BY {column,expr} [ASC|DEXC] ] ;SELECT :Seilen kolonlar alr.

    DISTINCT :Belirtilen kolondaki ayn deerlere sahip verilerden sadece birini alr. rnein personelkodu xxx olann personel ad gibi.alias :Kolon adlarnn daha ak olmas iin tanmlanr.FROM table :Belirtilen tabloyu aar.WHERE :Belirli kriterler koullar oluturulur. Tablolar arasnda birletirmeler yaplabilir.ORDER BY :Seilen kolona gre sral kayt getirir.

    ASC :Artan srada listelenir. Varsaylan budur.DESC : Artan srada listelenir. Varsaylan budur.* : Tm kolonlar seilmi anlamndadr.Listelemede rakamlar saa yanak, karakterler sola dayal gzkr. Kolon adlar byk harfgrntlenir.Aritmatik ilemler kullanlabilir (+,-,/,*). rnein;Select maas+maas*0.10 From Personel_Table;

    Bazen bir matematiksel ilemler daha uzun veya daha karmak olabilir. Fonksiyon tanmlayarak kolonasorgulatp bir sonu retebiliriz. Matematiksel ilemlerde ncelik sras;

    i.

    ii. Parantezler (,)iii.

    iv. *,/,+,-v.

    vi. soldan saa doru ncelik sras,

    eklindedir.Column Alias : Kolon bana aklayc isim verilebilir. Trnak iaretleri (") ile aklayc kelime belirtilir.Tek kelime iin " iareti kullanlmasada olur. rnein;Select ad AS "Ad" From Personel_Table;Concatenation Operator: Birden fazla stringi veya kolonu yan yana birletirip listelemek iin kullanlr.fadeler string olmaldr. Zaten karakter ve tarih formatndaki deerler trnak( ' ) iaretleri ierisindebelirtilir. rnein;Select ad||' ' ||soyad AS "Ad Soyad" From Personel_Table;Null : Deeri hi girilmeyen kolonlar NULL deerini alrlar. NULL sfr veya boluk karakteri deildir.

    Yokluk demektir. Bir rakam ile NULL deer zerinde matematiksel ilemler yaplamaz.NVL Fonksiyonu: Null deeri yerine yeni deer atar. Alan tipi ne turde ise alaca deer o trdeolmaldr.

    Yazlm:NVL (null_deeri_alan,yeni_deer)rnein;NVL(Maas,0); Maas kolonundaki null deerlerin yerine sfr atar.veya NVL(Ad,' '); Ad kolonundaki null deerlerin yerine bos karakter atar.En nemli kullanm amac hesplamalara ilemin yarda kesilmesini engellemek iindir. rnein maasazam miktar eklensin. Ama baz personele zam yaplmad varsaylrsa bu kiiler icin zam kolon deerinull'dur. Buna gre;SELECT maas+NVL(zam,0) From Personel_Table;Tab : Tm tablolarn adlarnn sakland alandr. rnein tm tablolarn listesini vermek iin aadakiiki yazlm da kullanabiliriz.;

    Yazlm;

    SELECT * From Tab;SELECT table_name From user_tables;

  • 8/2/2019 SQL Programlama

    4/34

    Desc : Tablonun kolonlarnn adlarn, kolonlarn tipini ve null deer alp alamayaca durumlarngosterir.Order by komutuORDER BY : Seilen kolona gre sralama yapar. DESC artan srada, ASC azalan srada listeler. Nulldeerler sralamaya alnmazlar. rnein azalan srada ada gore liste alnsn;SELECT ad,soyad FROM Personel_Table ORDER BY ad DESC;Eer kolonlar birden fazla ise kolon numaras ile de tanm belirtilebilir;SELECT ad,soyad FROM Personel_Table ORDER BY 1 DESC;Eer birden fazla kolona gre sralama yaplmak istenirse, nce yazlan kolon baz alnarak dier kolonagre sral listeler.

    SELECT ad,soyad FROM Personel_Table ORDER BY 1,2 DESC;Where komutuWHERE : Sorgulamalar snrlandrmak amacyla koullar konulur. rnein departman 38 kodlupersonel listesi;SELECT ad ||' ' ||soyad FROM Personel_Table WHERE Dept_Id=38;, >=,

  • 8/2/2019 SQL Programlama

    5/34

    LIKE : Benzerlik vermek iin kullanlr. '%' karakteri tum karakterler yerine geer. '_' karakteri ise tekkarakter yerine geer. Sadece _ iaretini karmak iin ' \_ ' iareti kullanlr. Kk byk harf ayrmvardr.'%t' t harfiyle balayanlar.'%t%' t harfi geen tm kaytlar.'B_K%' B ba harfi ile balayan ve 3. Harfi K olan tm kaytlar.karakterleri arasnda deer girilirse kolon iinde rnein soyad 'M' ile balayan personeller;SELECT ad ||' ' ||soyad FROM Personel_TableWHERE soyad LIKE ' M% ' ;

    Is null komutuIS NULL : Kaydn null olup olmadn kontrol eder. rnein maa null olan kaytlar listelesin;SELECT ad ||' ' ||soyad FROM Personel_Table

    WHERE maas IS NULL ;

    NOT : Belirtilen koulun tam ters koulunu verir. rnein maa null olmayan kaytlar listelesin;SELECT ad ||' ' ||soyad FROM Personel_Table

    WHERE maas IS NOT NULL ;

    SQL *Plus zerinde Sorgu HazrlanmasndaKullanlacakYardmc KomutlarSql komutlar sadece hafzada tutulurlar. letilen her komut hafza tutulur. O yzden kullancnn iinikolaylatrmak iin baz ek komutlara ihtiya duyulmutur.Sql Plusa girmek iin komut satrnda u ekilde girilir;

    SQLPLUS [kullanc ad [/ifre [@Database]]]

    A[PPEND] Text Satr sonuna kelime ekler.C[HANGE] /eski/yenieski text yerine yeni text ekler. Yeni alan bo braklrsa eski alan olarakbelirtilen text silinir.

    CL[EAR] BUFF[ER] SQL hafzasndaki tm satrlar siler, hafzay boaltr.

    DELAktif olarak bulunduu satr siler. Satr no belirtilirse o satr siler.

    I[NPUT] Text Satr arasna Text ifadesiyle belirtilen cumleyi ekler.

    L[IST] Hafzadaki tm satrlar listeler.

    L[IST] m n Sadece m ile n arasndaki satrlar listeler.

    R[UN] Hafzadaki SQL satrn altrr. Ayn ilevi "R,r,/, ; " karakterleride yapar.

    n Text n satrndaki cmleyi Text ifadesi belirtilen alana yazlan cmle ile deitirir.

  • 8/2/2019 SQL Programlama

    6/34

    0 Text Bulunduu satrdan bir nceki satra yeni alan aar ve texti oraya ekler.

    SAVE Dosya Hafzadaki komutu belirtilen dosya ad altnda saklar.

    GET Dosya Belirtilen dosyay hafzaya yukler.

    START DosyaBelirtilen dosyay direkt altrr. Hafzaya yuklemez. @ iaretide ayndr.

    ED[IT] DosyaBelirtilen dosyay bir editr iinde aar.

    SPOOL Ekranda yaplan her trl ii dosyaya atar. SPOOL OFF ile dosyaya kayt ilemini durdurur.

    EXIT SQLden k salar.

    HELP Komut Belirtilen komut iin aklayc bilgi verir.

    SQL Plus FonksiyonlarFonksiyonlar sayesinde;

    Datalar zerinde hesap yapabilir, Datalar zerinde deiiklikler yaplabilir, Grup oluturularak bu kaytlar iin kullanlabilir. Tarih datas eitli formatlarda grntlenebilir, Kolon tipleri deitirilebilir. ie fonksiyonlar tanmlanabilir. ncelikle iteki fonksiyon alr. kan sonuca gre dtaki

    fonksiyon ilem grr.

    Sys.Dual : Oracle databaseinde bulunan tek kolon ve tek satrdan oluan bir tablodur. Belirli birtablodan deerler almadan fonksiyonlarn kullanlmas gerektiginde bu tablo kullanlr.

    Karakter FonksiyonlarLOWER(Text) : Text olarak belirtilen alan kk harfe evirir.

    UPPER(Text) : Text olarak belirtilen alan byk harfe evirir.

    INITCAP(Text) : Text olarak belirtilen alann ba harfini byk dierlerini kk harfe evirir.

    CONCAT (Text1,Text2) : Text1 olarak belirtilen alan ile Text2 alann birletirir. || simgeside ayndr.

  • 8/2/2019 SQL Programlama

    7/34

    SUBSTR(Text,m,n) : Text alannn m. karakterinden itibaren (m. karakter dahil) n kadar karakter alr.

    LENGTH(Text) : Text alann karakter uzunluunu saysal olarak verir.

    NVL(KOLON,DEER) : Kolonun ald deer null ise deer alannda belirtilen deeri verir.

    Karakter FonksiyonlarLOWER(Text) : Text olarak belirtilen alan kk harfe evirir.UPPER(Text) : Text olarak belirtilen alan byk harfe evirir.

    INITCAP(Text) : Text olarak belirtilen alann ba harfini byk dierlerini kk harfe evirir.

    CONCAT (Text1,Text2) : Text1 olarak belirtilen alan ile Text2 alann birletirir. || simgeside ayndr.

    SUBSTR(Text,m,n) : Text alannn m. karakterinden itibaren (m. karakter dahil) n kadar karakter alr.

    LENGTH(Text) : Text alann karakter uzunluunu saysal olarak verir.

    NVL(KOLON,DEER) : Kolonun ald deer null ise deer alannda belirtilen deeri verir.

    Saysal FonksiyonlarROUND(Say,m): Say alanna girilen rakam, m olarak belirtilen ondalk kadar yuvarlar. rnein;ROUND(45.923,2) 45.92

    ROUND(45.923,0) 46

    ROUND(45.923,-1) 50

    ROUND(45.951,2) 45.92

    ROUND(45.929,2) 45.93

    TRUNC(Say,m): Say alanna girilen rakam, m olarak belirtilen ondalk kadar sondan keser.

    TRUNC(54.923,2) 45.92

  • 8/2/2019 SQL Programlama

    8/34

    TRUNC(54.923,-1) 40

    TRUNC(54.929,2) 45.92MOD(m,n) : m says n saysna bolundugunde kalan rakam bulur.

    Zamansal Fonksiyonlar ve lemleriTarih + say Tarihe say kadar gun ekler.Tarih - say Tarihe say kadar gun karr.

    Tarih - Tarih

    ki tarih arasndaki gn farkn saysal olarak verir.Tarih + say / 24 Tarihe say kadar saat ekler.

    SYSDATE Sistem tarihini verir. Oraclen varsaylan tarih format DD-MON-YY eklindedir. zerindearitmatiksel ilemler yaplabilir.

    MONTHS_BETWEEN(tarih1,tarih2)ki tarih arasn ay olarak bulur.

    ADD_MONTHS (tarih,n)Tarihe n kadar ay ekler.

    NEXT_DAY(tarih,' gn' )tarih'den sonraki gnn ilk tarihini verir.

    LAST_DAY(tarih,' gn' ) tarih'den nceki gnn ilk tarihini verir.

    ROUND(tarih[,' fmt '] ) tarih'I belirtilen formata gre aya veya yla gre yuvarlar.

    TRUNC(tarih[,' fmt '] ) tarih'I belirtilen formata gre aya veya yla gre keser.

    evirme FonksiyonlarTO_CHAR(Say,[fmt]) : Girilen tarih veya sayy karakter tipine evirir.Tarih parametreleri;

    YYYY Yl rakamsal olarak gosterir.

    YEAR Yl yazsal olarak verir.

  • 8/2/2019 SQL Programlama

    9/34

    BC Millattan once ve sonras icin zaman verir.

    MM Ay rakamsal olarak gsterir.

    MONTH Ay yazsal olarak verir. Belirtilen lkenin tarih yazsyla

    verir.

    MON Ay yazsal sadece ilk 3 harfini verir. Belirtilen lkenin tarih

    yazsyla verir.

    RM Ay roma rakamyla gsterir.

    DD

    Gn rakamsal olarak gsterir.

    DAY Gn yazsal olarak verir.

    Saysal parametreleri;

    9. Rakamdr.

    1. Sfr rakam verir.

    $ Rakamn bana $ iareti koyar.. Ondalk haneye ayrr., Rakam 3er hane ayrarark aralarna virgl koyar.MI Negatif saylar iin sonuna itareti koyar.rnein " x nolu kii xxx'dir." Formatnda ekrana liste oluturalm (id number);SELECT TO_CHAR(id) || ' nolu kisi ' ||name||'dir.'rnein sistem tarihini DD-MM-YYYY olarak gsterelim;SELECT TO_CHAR(sysdate,' DD-MM-YYYY')rnein sistem zamann HH:MI olarak gsterelim;SELECT TO_CHAR(sysdate,' HH:MI' )TO_NUMBER (Karakter) : Girilen karakteri saysal ifadeye evirir.TO_DATE(char, [fmt]) : Girilen karakteri belirtilen formatta tarih formatna evirir.rnein tarih kolonundaki deerleri, 7 /11/1998 tarihine eit olanlarn listesini oluturalm. Ama kolondeerleri string olarak ayn uzun ad, gn ve yl saysal olarak kaytldr. Bu sorunu zmek iinkullanlr;SELECT no, maasFROM PersonelWHERE MAAS_TARIH=TO_DATE('KASIM 7, 1998', 'Month dd,YYYY')

  • 8/2/2019 SQL Programlama

    10/34

    Tablolar Arasnda liki Kurulmas (JOIN) * Birden fazla tabloyla iliki kurularak ortak sorgulama yaplmasdr. Tablolar belli bir ortak kolona

    gre birletirmek iin join yntemi kullanlr. Bunun iin ncelikle tablolardaki kolonlar ayn tipte ve aynbyklkte olmaldr.

    Yazlm:

    SELECT table1.kolonlar,table2.kolonlar

    FROM table1, table2

    WHERE table1.kolon1=table2.kolon2ki tabloyu birletirmek iin iki tabloda ortak bulunan kolonlar where kotulu iinde etitleriz.rnein personel ad ve bulunduu departman listesi icin;

    SELECT a.*,b.*

    FROM personel a , departman b

    WHERE a.dept_id=b.dept_idBylece personel tablosundan personel ad ve soyad, departman tablosundan departman ad bilgisigetirilir.* Baz durumlarda tablo birletirme koulu bir aralk eklinde oluabilir. Yani tablolar birletirirkenanahtar sahalarn belirli bir aral seilebilir.

    SELECT table1.kolonlar, table2.kolonlar

    FROM table1, table2

    WHERE table1.kolon1 BETWEEN table2.min2 AND table2. max2* (OUTER JOIN) Bir dier durumda tablodaki verilerin deerleri null olabilir. Fakat biz null deerleresahip olanlarda birlertirmek istersek eksik olan tablonun yanna (+) iareti eklenir.

    SELECT table1.kolonlar, table2.kolonlar

    FROM table1, table2

    WHERE table1.kolon1 (+) = table2.kolon2* (SELF JOIN) Bir baka durumda ayn tablodaki kendi iindeki kolonlar arasnda iliki kurulabilir. Bazdurumlarda kolonlardaki deerleri eit olma durumlarna gre sorgu dzenlenebilir.

  • 8/2/2019 SQL Programlama

    11/34

    SELECT table1.kolonlar

    FROM table1 a, table1 b

    WHERE table1.a = table1. b

    Grup (GROUP) Fonksiyonlar

    Bazen belli bir koula uygun belli bir topluluk iin sorgu kurulabilir. Bu durumda grup ilemi yaplr.rnein departmanlara gre grup oluturulup o departmandaki personel says hesaplanabilir. Grupfonksiyonlar sadece grup ifadeleriyle kullanlabilir.

    Yazlm:

    SELECT kolonlar, grup fonksiyonlar

    FROM table

    [WHERE kotul]

    [GROUP BY grup_kolonu]

    [HAVING group_kotulu]

    [ORDER BY kolon]

    GROUP BY satr ile kolonlar zerinde kk gruplar oluturulur.

    HAVING satr ile bu oluturulan grup iin grup koullar tanmlanabilir. Where koulundan fark WHERE

    kayt zerinde koul koyar, HAVING ise sadece grup kaytlar zerinde koul konabilir ve grupfonksiyonlar kullanlabilir.

    AVG(Kolon) : Belirtilen kolonun ortalamasn bulur.

    COUNT(Kolon) : Belirtilen kolonun kayt saysn bulur. Count(*) ile o grupta oluturulan kayt sayshesaplanr. Null deerler iin nvl fonksiyonu kullanlr. nk kolon iindeki null deerler ilemealnmaz.

    MAX(Kolon) : Belirtilen kolondaki kaytlarn deerlerinin maksimum deerini bulur. Saysal,

    karakteristik veya tarihsel olarak kendi iinde sralama yapabilir.

  • 8/2/2019 SQL Programlama

    12/34

    MIN(Kolon) : Belirtilen kolondaki kaytlarn deerlerinin minimum deerini bulur. Saysal, karakteristikveya tarihsel olarak kendi iinde sralama yapabilir.

    SUM(Kolon) : Belirtilen kolondaki kaytlarn deerlerinin saysal toplamn bulur.

    VARIANCE(Kolon) : Belirtilen kolondaki kaytlarn deerlerinin matematiksel varyansn bulur.

    rnein bir personel listesindeki departmanlarn ayr ayr departman iindeki personelin max ve minmaas alan kiilerin maaslarn isteyelim;

    SELECT Departman_id, MAX(Maas) , MIN(maas)

    TABLE Personel

    GROUP BY Departman_idVeya 38 nolu departmandaki personel saysn bulalm;

    SELECT COUNT(*)

    TABLE Personel

    WHERE Departman_id = 38Veya tm departmanlardaki maalarnn ortalamas 80.000.000 den byk olanlarn listesinioluturalm;

    SELECT Departman_id, AVG(Maas)

    TABLE Personel

    GROUP BY Departman_id

    HAVING AVG(maas) > 80000000Baz durumlarda i ie grup oluturulmas istenebilir. Bu durumda u ekilde yazlr.

    GROUP BY Kolon1, Kolon2 ,

    rnein Departman adna ve personel yasna gre grup oluturalm.

    SELECT Departman_id, Yas

    TABLE Personel

    GROUP BY Departman_id, Yas

    Altsorgular(SUBQUERY)

  • 8/2/2019 SQL Programlama

    13/34

    Subquery, bir sorgu oluturulurken, bu sorguya ait kriterleri baka bir sorgu belirleme durumudur.Ksaca sonucu bilinmeyen koullar olduunda bu yntem kullanlr.

    Yazlm:

    SELECT ..

    FROM

    WHERE kolon=( SELECT

    FROM .

    WHERE .)

    Select cmlesi parantes iinde tanmlanr. = koulu kondu ise select cmlesi tek deer dndrmekzorundadr. Eer birden fazla deer iin koul konulmas gerekirse " in, not in " kelimesi kullanlr. Tekkayt dndnde = yerine >,>=,

  • 8/2/2019 SQL Programlama

    14/34

    SELECT dept_id,nameFROM PersonelWHERE dept_id=( SELECT dept_id

    FROM PersonelWHERE name='Kazm')

    alma Annda Sorguya Dardan Deer AlmaBir sorgu oluturulurken bazen baz alanlarn deerleri deikendir. Bu yzden sorguya dardan deergirilmesi ve bu deere gre bir sorgu oluturulmas gerekir. Bunun iin anahtar kelimenin bana &

    karakteri getirilir.

    rnein istenilen departmankoduna gre personelin ad ve soyad listeleyelim;

    SELECT ad,soyad

    FROM Personel

    WHERE Dept_id = &Departman_koduEkran:

    Departman_kodu iin deer gir: 38

    eski 1: select ad,soyad from Personel where Dept_id = &Departman_kodu

    yeni 1: select ad,soyad from Personel where Dept_id = 38Eer sorgu yazlm sorunlu ise bu giri yapldktan sonra anlalr ve kesinlikle girilen deer kolon tipinee olmaldr. rnein &anahtar_kelime eklinde trnak arasnda belirtilmise giri olarak sadece textdeer girilir. Ama &anahtar_kelime trnak iinde belirtilmemise giri yaplrken trnak iinde giriyaplmaldr. Birden fazla &anahtar_kelime tanmlanrsa srayla sorgu sorulur ve tm deerlergirildikten sonra sorgu oluturulur. Eer where koulunda &anahtar_kelimesi kullanlmsa giriyaplrken matematiksel koul eklinde giri yapabiliriz.

    Eer anahtar kelimenin bana && konulursa sorgu srasnda sadece bir kerelik sorgu sorulur.Bundan sonra anahtar kelimenin deeri ilk girilen deer olarak geerlidir.DEFINE deiken=deer : Belirtilen deikene karakter atanr.

    ACCEPT : Kullancya aklayc mesaj verilerek istenilen tipte veri girii yaplmas salanr. & iaretiyleyaplan ilemin daha kontrollu eklidir.

    Yazlm :

    ACCEPT deiken [datatipi] [ FORMAT ] [PROMPT text] [HIDE]

  • 8/2/2019 SQL Programlama

    15/34

    Deiken Giri yaplacak verinin deerinin tutulduu anahtar kelimedir.

    Datatipi Girii yaplacak verinin veri tipidir.

    FORMAT Giri yaplacak verinin giri dzeni salanr. rnein rakam iin 9999 (4 haneli say) ,karakter iin A10 (10 karakterlik yer) .

    PROMPT Kullancya girecei deer iin aklayc mesaj grntler.

    HIDE Giri yaplrken verinin grntlernmeden giri yaplmas salanr. rnein ifre girilerinde.rnekler;

    ACCEPT adi PROMPT Adnz giriniz:

    ACCEPT yas NUMBER PROMPT Yanz giriniz:

    ACCEPT yil NUMBER FORMAT 9999 PROMPT Bulunduunuz yl giriniz:

    ACCEPT sifre CHAR PROMPT Tifrenizi giriniz: HIDErnek: Personel adna gre personel bilgilerini gsterelim. Bunun iin bir .sql uzantl dosyada yazalm.Bu program start ile altralm.

    Ornek.sql

    SET ECHO OFF

    ACCEPT adi PROMPT Adnz Giriniz:

    SELECT * FROM Personel

    WHERE UPPER(Personel.ad) LIKE UPPER(&adi)

    /

    SET ECHO ON

    Start Ornek.sql yazlarak sql altrlr.

    Bazen parametre girilerini daha balangta vermek istenirse;

    Start Dosya_ad Parametreler,

    rnein yukardaki rnek iin Start Ornek Kazm

    Tablolarn Yaratlmas

  • 8/2/2019 SQL Programlama

    16/34

    Databasede verilerin saklanmas amacyla tablolar yaratlr. Tablo yaratabilmek iin o kullancnn bunayetkisi olmaldr. Ayn zamanda limitsiz tablespace hakkna sahip olmaldr.

    Yazlm :

    CREATE TABLE [kullanc.]table(kolon datatipi(boyutu) [DEFAULT deer]

    [CONSTRAINT constraint_name] constraint_type]

    [table_constraint]

    [PCTFREE integer] [PCTUSED integer]

    [TABLESPACE tablespace] [STORAGE storage_clause]

    [CACHE]

    [ENABLE enable_clause]

    [DISABLE disable_clause]

    [AS subquery]

    KullancTablonun yaratcsdr. Onun sahip olduu haklara ve mekana sahiptir.

    Kolon Tablonun kolon adlarn belirler. Bir tablodaki kolon says 1-254 arasnda olmaldr.

    Datatipi Bir kolonun veri tipini belirler.

    Varchar2(boyut): Boyut ile belirtilen max miktar kadar karakterdir.Max

    deeri 2000dir.

    Char(boyut) : Boyut ile belirtilen max miktar kadar karakterdir.Max.

    deeri 255dir.

    Number : e38 e kadar olan tm saysal deerlerdir.

    Number(m,n) : m kadar (max e38) saynn n kadar ondalk alan iin

    deer alr.

    Date : Tarih ve saat deerlerini bir tutar.

  • 8/2/2019 SQL Programlama

    17/34

    Boolean : Mantksal ifadeleri saklar. Yani doru ise True,

    yanl ise false.

    Long : Max 2GB a kadar byk olan alanlar iin yer tutar.

    Raw : Grafiksel yapdaki veriler iin tanmlanr.

    DEFAULT Herhangi bir kolona deer girilmezse, direkt olarak deer atamaya yarar. Girilen deerinveri tipi ile ayn olmas gerekir.

    CONSTRAINT O kolon iin daha aklayc olmas asndan ve yaps asndan kullanlr.

    table_constraintO tablo iin daha aklayc olmas asndan belirtilen etikettir.

    PCTFREE Tablo zerinde yaplan kayt gncelleme ilemleri iin, kayt bloklarndaki ayrlacakrezervasyon yzde deeridir. 1-99 arasnda bir tamsaydr. 0, tm bloklara yeni kayt giriine izinverilir. Varsaylan deer 10dur. Yani gncelleme iin her bloun %10unu rezerve eder. Geri kalan%90nn ise yeni kayt girilerine ayrr.

    PCTUSED Tablonun her veri blou iin Oraclenin koruduu, kullanlm alann min yzdesini verir.1-99 arasnda bir tamsaydr.Varsaylan deeri 40dr. Verilen parametre deerinin altna dek blokiin, yeni kayt girii seimliktir. PCTFREE+PCTUSED

  • 8/2/2019 SQL Programlama

    18/34

    Database ile ilgili her trl bilgiyi buraya atar. Buradan verilere ulaabiliriz. Kullanclar, tablolar,indexler, constraintsler vb. birok aklayc bilgiler tutulur. Btn tablo ve viewerlarn adlarn veaklamalarn grnek iin ;

    SELECT * FROM Dictionary;

    Dictionarynin yapsn grmek iin;

    DESC dictionary

    sim Tip

    -------------------- --------------------------

    TABLE_NAME VARCHAR2(30)

    COMMENTS VARCHAR2(2000)

    Dictionaryde bulunan objelerden bazlar;

    User_tablesHangi kullanc ile login olundu ise o kullancya ait tablolar listeler.

    All_tablesBtn kullanclarn yaratt tablolar listeler.

    Dba_tablesDatabase ile ilgili her trl tablolar listelenir.

    V$_tablesSystemin performansn lmek iin tutulan bilgilerdir.

    V$_librarycacheCachein yeterli olup olmadn anlamak iin baklr.

    V$_rollstatRollback segmentinin yeterli olup olmadn anlamak iin baklr.

    rnek : Login sifresiyle giren kullancnn yaratt tablolarn listesini alalm;

    SELECT table_name FROM user_tables

    rnek: Tm obje isimlerinin listesini alalm;

    SELECT object_name FROM user_objects

    Database zerinde Transaction KontrolKomutlar

  • 8/2/2019 SQL Programlama

    19/34

    Transaction, datann tutarl ekilde korunmasn salayan yntemdir. Database zerinde kayt yapma ,silme, dzeltme vb. ilemlerin yaplabilmesi iin aadaki komutlara ihtiya vardr;

    INSERT INTO : Tabloya yeni bir kayt eklenmesini salar.

    Yazlm;

    INSERT INTO table [(kolon1, kolon2, )] VALUES (deer1, deer2, )

    Kolon Tablonun kayt yaplaca kolon adlarn belirler. Bir tablodaki kolon says 1-254 arasnda ve otabloda var olmaldr.

    DeerO kolon iin alaca deer verilir. Kolon tipiyle ayn olmaldr. Eer kolon adlar belirtilmezsedeerler kolon srasna gre deer almaldr. Deerlere sysdate, user vb. hazr fonksiyonlar aktarlabilir.Eer bir alana deer verilmesi istenmiyorsa, yani bo deer verilmesi isteniyorsa NULL deeri verilir.

    rnek: Personel tablosuna yeni bir personel giriti yapalm;

    INSERT INTO personel (ad,soyad,maas,ayrilma_tarihi,kayit_giris_tarihi)

    VALUES (Kazm,Sarkaya,400000000,NULL,SYSDATE)

    Ayn rnek iin kolon srasn bildiimiz dsnlrse u ekildede yazlabilir;

    INSERT INTO personel

    VALUES (Kazm,Sarkaya,400000000,NULL,SYSDATE)

    Sadece tek kayt girii yaplyorsa, rahat veri girii yaplmas iin deerlere deiken tanmlayarak verigirii salayabiliriz. Bylece table her altnda yeni veri girii yaplr.

    rnek: Personel tablosuna her altrdmzda yeni bir personel girii yapalm;

    INSERT INTO personel (ad,soyad,maas,ayrilma_tarihi,kayit_giris_tarihi)

    VALUES (&Adi,&Soyadi,&maas,NULL,SYSDATE)

    rnek: Daha gvenli ve rahat giri yaplacak ekilde kayt yaplacak script yazalim;

    SET ECHO OFF

  • 8/2/2019 SQL Programlama

    20/34

    ACCEPT ad PROMPT Adn giriniz:

    ACCEPT soyad PROMPT Soyad giriniz:

    ACCEPT maas PROMPT Maan giriniz:

    INSERT INTO personel(ad,soyad,maas,ayrilma_tarihi,kayit_giris_tarihi)

    VALUES (&ad,&soyad,&maas,NULL,SYSDATE)

    /

    SET ECHO OFF

    Kayt yaplacak kolonlarn deerleri bilinmiyorsa veya baka bir tablodan deer alnmas gerekiyorsaaadaki yap kullanlr;

    Yazlm;

    INSERT INTO table [(kolon1, kolon2, )] Altsorgu

    rnek: Personel tablosuna departman tablosundan departman kodu 38 olan personellerin deerleriniaktaralm;

    INSERT INTO personel(ad,soyad,maas,ayrilma_tarihi,kayit_giris_tarihi)

    SELECT adi,soyadi,maasi,ayrilma,kayit_giris

    FROM departman

    WHERE dept_id=38

    UPDATE : Tablodaki kolonlarn deerlerini deitirmek iin kullanlr.

    Yazlm;

    UPDATE tableSET kolon1=deer1, kolon2=deer2,

    [WHERE kotul]

    Kolon Tabloda deiiklik yaplacak kolon addr. Bir tablodaki kolon says 1-254 arasnda ve otabloda var olmaldr.

    DeerO kolon iin alaca deer verilir. Kolon tipiyle ayn olmaldr. Eer kolon adlar belirtilmezse

    deerler kolon srasna gre deer almaldr. Deerlere sysdate, user vb. hazr fonksiyonlar aktarlabilir.Eer bir alana deer verilmesi istenmiyorsa, yani bo deer verilmesi isteniyorsa NULL deeri verilir.

  • 8/2/2019 SQL Programlama

    21/34

    rnek: 41 nolu departmann maan %13 artralm;

    UPDATE Personel

    SET maas=maas+maas*13/100

    WHERE dept_id=41

    rnek: 649 nolu personelin departman kodu 10 olsun;

    UPDATE Personel

    SET dept_id=10

    WHERE personel_id=649

    Eer WHERE koulu konulmazsa tm tablo iin kolon deerini deitirir. Koulu SET ile deitirdiimizkolona veremeyiz.

    DELETE : Tabloda belirtilen kayd siler.

    Yazlm;

    DELETE FROM table

    [WHERE kotul]

    rnek : Personelin maalar 100.000.000 dan kk olan kaytlar silelim;

    DELETE FROM Personel

    WHERE maas

  • 8/2/2019 SQL Programlama

    22/34

    kaytlar silinemez. ROLLBACK komutu ile silinen kaytlar kurtarabiliriz(Tabi ki en son COMMIT komutukullanlana kadar).

    COMMIT : Btn yaplan ilemleri kesin olarak kalc olmasn salar. Bylece yaplan deiikliklerivarsa dier kullanclarda grr.

    SAVEPOINT x : lemi belirli bir yere ynlendirmek iin kullanlr. X ile belirtilen alan iin iaretkonularak istenildiinde bu iarete kadar ilemler yaplabilir.

    ROLLBACK x : Btn yaplan ilemleri kesin olarak iptal eder. SAVEPOINT komutu ile belirlenen x kodlualana kadar olan tm itleri iptal eder.

    Yazlm;

    ROLLBACK [TO SAVEPOINT x]

    rnek:

    UPDATE personel ..

    SAVEPOINT dn

    DELETE FROM Personel

    INSERT INTO ..

    ROLLBACK dn teklindeki bir itlemle personel kaydnn silinmesi ve yeni kayt eklenmesi ilemi iptaledildi. Ama ilk yaplan deiiklik kald.

    Read uncommitted Commit olmadan grnmez. O halde byle level yoktur.

    Read committed Oraclen varsaylan deeridir. Committen sonra ilem grr.

    SerializableYaplan insert ilemleri gzkmez. Eski datalar gzkr.Read only Transaction itleminde sadece okuma var demektir.

    ALTER TABLE : Yeni bir kolon eklemek, kolonun tipini veya uzunluunu deitirmek vb. yapsaldeiiklikler yaplmas iin kullanlr. Eer kolon zerinde deiiklikler yaplacaksa dikkat edilmesigereken koullar vardr. rnein kayt uzunluu 15 iken uzunluunu 10a indirirsek kayt iindekibilgiler kesilir. Kolonlar ekleyebilir ve yapsal deiiklikler yapabiliriz. Constraint yapsn ekler, silebilir,enable ve disable yapabiliriz.

    Yazlm;

    ALTER TABLE table

    [ADD (kolon datatipi [DEFAULT deer] [NOT NULL]) , ]

  • 8/2/2019 SQL Programlama

    23/34

    [ADD [CONSTRAINT aklama] tipi (kolon)]

    [MODIFY (kolon datatipi [DEFAULT deer] [NOT NULL]) , ]

    [DROP [CONSTRAINT aklama] tipi (kolon)]

    [ENABLE | DISABLE CONSTRAINT aklama]

    ADD Yeni bir kolon ekler.

    MODIFYKolonun ieriini, uzunluunu ve tipini deitirir. Bunun iin kaytlarn deeri null olmaldr.

    DROP Kolonu siler.

    Kolon Tabloda itlem yaplacak kolon addr.

    Datatipi Kolonun alaca tipi belirler.

    DEFAULT deerKolonun ilk alaca deerdir. Kolon hi deer atanmaz ise burada deer ile ifadeedilen sabit veri aktarlr.

    ENABLE Unique veya primary key indexlerin otomatik yaratlmasn salar. Btn kaytlarntanmlanan unique veya primary key tanmna uymas gerekir.

    DISABLE Unique veya primary key tanmn kaldrr.

    rnek : Personel tablosuna ek maas isminde 15 uzunluunda bir kolon yaratalm. lk deer 0 olsun.

    ALTER TABLE Personel

    ADD (ekmaas number(15) DEFAULT 15)

    rnek : Personel tablosundaki pers_id ile departman tablosundaki dept_id arasnda FOREIGN KEY

    kuralm.

    ALTER TABLE Personel

    ADD CONSTRAINT personel_dept_id_fk

    FOREIGN KEY (dept_id)

    REFERENCES personel(pers_id)

    rnek : Personel tablosundaki maas kolonundaki alan uzunluunu 15e karalm.

  • 8/2/2019 SQL Programlama

    24/34

    ALTER TABLE Personel

    MODIFY (maas number(15))

    rnek : Personel tablosundaki maas kolonu silinsin.

    ALTER TABLE Personel

    DROP (maas number(15))

    rnek: Personel tablosundaki personel_id primary key iin index yaratlmas otomatikletirelim;

    ALTER TABLE Personel

    ENABLE CONSTRAINT Personel_id_pk

    DROP TABLE : Tabloyu fiziksel olarak siler. Rollback komutu ile silinen tablo geri getirilemez. Tabloyuancak yetkisi olan kullanc silebilir.

    Yazlm;

    DROP TABLE table

    [CASCADE CONSTRAINTS]

    rnek: Personel tablosunu silelim;

    DROP TABLE Personel

    RENAME ..TO.. : Objelerin ismini deitirmek iin kullanlr. Otomatik olarak commit olur. Tabloyuancak yetkisi olan kullanc silebilir.

    Yazlm;

    RENAME eski_isim TO yeni_isim

    rnek: Personel tablosunun adn pers olarak deitirelim;

    RENAME personel TO pers

  • 8/2/2019 SQL Programlama

    25/34

    TRUNCATE TABLE : Tablodaki tm kaytlar siler. Delete komutu gibi olmasna karn o komuttan okdaha hzl silme ilemi yapar. Rollback komutu ile silinen kaytlar geri getirilemez. Otomatik olarakcommit olur. Tabloyu ancak yetkisi olan kullanc silebilir.

    Yazlm;

    TRUNCATE TABLE tableDelete komutu ile Truncate arasndaki en nemli fark; Delete komutu kaytlar silmek iin kaytlardaboluk brakr. Truncate ise tamamen kaytlar temizler, yani baa sarar.rnek: Personel tablosundaki tm kaytlar silelim;

    TRUNCATE TABLE Personel

    COMMENT ON TABLE : Tablo veya kolonlarn ierii hakknda aklayc bilgi verilir. 2000 byte aklamaalan girilebilir.

    Yazlm;

    COMMENT ON TABLE table | COLUMN table.kolon

    IS aklama

    rnek : Personel tablosu aklamas Baak Sigortada alan kiiler olarak not delim;

    COMMENT ON TABLE personel

    IS Baak Sigortada alan kiilerrnek : Personel tablosundaki pers_id kolonun aklamas Personel numaras olarak not delim;

    COMMENT ON COLUMN personel.pers_id

    IS Personel numarasALL_COL_COMMENTS Yetkili olan kullancnn kolonlarnn aklayc notlar listelenir.

    USER_COL_COMMENTS Tm kullanclarn kolonlarnn aklayc notlar listelenir.

    ALL_TAB_COMMENTS Tm kullanclarn tablolarnn aklayc notlar listelenir.

    USER_TAB_COMMENTS Yetkili olan kullancnn tablolar iin aklayc notlar listelenir.

  • 8/2/2019 SQL Programlama

    26/34

    Otomatik Numara retimi(Sequence)

    Yapt i unique saylar retmektir. Belli oranlarda arttrmalar yaplmakta kullanlr. Her arldndayeni bir say retir. Extra bir hesaplama yaplmadan, seri olarak tanmland ekilde rakamlar retir.Saylar cacheden okuduu iin ok hzl sonu retir.

    Yazlm;

    CREATE SEQUENCE kolon

    [INCREMENT BY n]

    [START WITH n]

    [MAXVALUE n | NOMAXVALUE]

    [MINVALUE n | NOMINVALUE]

    [CYCLE | NOCYCLE]

    [CACHE n | NOCACHE]

    INCREMENT BY n Saynn art miktar belirtilir. Varsaylan deer 1dir. Birer birer say arttrlr.

    START WITH n Numarann retilecei balang numarasdr. Varsaylan deer 1dir.

    MAXVALUE nNumarann alabilecei maksimum rakam yazlr. NOMAXVALUE ile biti numarasverilmez. Max = 1027

    MINVALUE n Numarann alabilecei minimum rakam yazlr. NOMINVALUE ile balang numarasverilmez. Min = 1

    CYCLE | NOCYCLE Maxvalue deeri kadar ilem yapldktan sonra ilemi tekrardanbalatr.Varsaylan deer NOCYCLEdr.

    CACHE Cache says kadar sayy hafzaya gnderir. Varsaylan deer NOCACHE=20dir.

    rnek: Personel departmannn pers_id kolonunu 10dan 50ye kadar 2er 2er arttralm;

    CREATE SEQUENCE pers_id

    INCREMENT BY 2

    START WITH 10

    MAXVALUE 50

  • 8/2/2019 SQL Programlama

    27/34

    NOCYCLE

    NOCACHE

    rnek: Personel departmannn pers_id kolonunu birer birer arttralm;

    CREATE SEQUENCE pers_id

    INCREMENT BY 1

    START WITH 1

    NOMAXVALUE

    NOCYCLE

    NOCACHE

    USER_SEQUENCES : Sequencesin en son durumu gsterir.

    Yazlm;

    SELECT sequence_name, min_value, max_value, increment by, last_number

    FROM user_ sequences

    Sequence_name lemlerin tanmland isimdir.

    Min_valueSaynn ald min deerdir.

    Max_value Saynn ald max deerdir.

    Increment_by Saynn ald art miktarnn gsterir.

    Cycle_flaglemin tekrar yaplmas isteniyorsa Y, istenmiyorsa N deerini alr.

    Cache_size Hazfazadaki cache saysdr.

    Last_number Numarann alaca deerdir

    NEXTVAL : En son ald saynn bir sonra alaca deeri gsterir.

  • 8/2/2019 SQL Programlama

    28/34

    rnek: Personel tablosuna pers_id kolonuna otomatik deerler tayarak kayt edelim;

    INSERT INTO personel

    VALUES (pers_id.NEXTVAL,Kazm,Sarkaya)

    CURRVAL : O anki saysal deeri gsterir. Eer hi nextval fonksiyonu kullanlmamsa deeri bodeer gelir.

    rnek: pers_id kolonunun o anki alaca deeri seelim;

    SELECT pers_id.CURRVAL

    FROM DUAL

    ALTER_SEQUENCE : Deiiklik bir yerden balanacaksa nce drop edilir, sequence ilemini deitirir.

    Yazlm;

    ALTER SEQUENCE kolon

    [INCREMENT BY n]

    [MAXVALUE n | NOMAXVALUE]

    [MINVALUE n | NOMINVALUE]

    [CYCLE | NOCYCLE]

    [CACHE n | NOCACHE]

    DROP_SEQUENCE : Kolon iin yaratlan ilemleri siler.

    Yazlm;

    DROP SEQUENCE kolon

    ViewBir tablo zerinde sorgulama yaplmas iin kullanlan nesnedir. Fiziksel olarak herhangi bir yerdesaklanmaz. Avantajlar;

  • 8/2/2019 SQL Programlama

    29/34

    Database eriimini kstlar. Bylece sadece sorgulanan verileri gzkr. Sorgulamalar kolaylatrabilir. Datay bamsz olarak gsterebiliriz.

    Yazlm;

    CREATE [OR REPLACE] [FORCE | NOFORCE]VIEW view_adi [alias]AS subquery[WITH CHECK OPTION [CONSTRAINT constraint]][WITH READ ONLY]FORCE Hata durumu oluursa gzard ettirilir. NOFORCE ise gzard edilmez.

    View_adi Yaratlan view sorgu addr..Alias Yaratlan ilemin addr.WITH CHECK OPTION [CONSTRAINT View objesine hatal ileme yaplmasn engeller.rnek: Departman numaras 41 olan peroneller iin perview isminde bir view olturalm;

    CREATE VIEW persviewAS SELECT *FROM personelWHERE dept_id=41WITH CHECK OPTION CONSTRAINT empview_ck;Departman idsi 16 olan personellerin departman numarasn 38 yapalm;UPDATE persviewSET dept_id=38WHERE id=16;Bu durumda bu deiiklik tabiki yaplamaz.

    WITH READ ONLYView objesinin sadece okuma amal olduu belirtilir. Farkl bir ilem yapldndabunu engeller. Aslnda kaytlar zerinde deiiklik yaplmasn engeller.rnek: Departman numaras 45 olan peroneller iin perview isminde bir view olturalm;

    CREATE VIEW persview

    AS SELECT *FROM personelWHERE dept_id=41WITH READ ONLY;Departman idsi 10 olan personellerin silinmesini salayalm;DELETE FROM persviewWHERE id=10;Bu durumda ilemi keser ve uyar verir.USER_VIEWS : Data dictionary tablosunda view tanmlar bulunur. View ad, text uzunluu ve textIsaklar.

    VEW_NAME Kullancya ait view adlarnn tutar.TEXT_LENGTH Sql ifadenin uzunluudur.TEXT Sql ifadedir.DROP VEW :Yaratlan view objesini siler.

    Yazlm;DROP VIEW view_ad

  • 8/2/2019 SQL Programlama

    30/34

    INDEX YARATMA

    Indexler, bir tablonun istenilen kolonlarna daha hzl eriim olana salamak iin kullanlr. Tablodakikaytlar zerinde giri/k ilemleri yaplrken dataya daha hzl ulalmas salanr. Primary keytanmlanan kolonlar iin otomatik olarak index yaratlr. Index en fazla 16 kolondan oluur. Bir kolontipi long veya long raw olamaz.

    Yazlm;

    CREATE INDEX index_adi

    ON tablo_ad(kolonlar)

    rnek: Personelin adna ve soyadna gre index oluturalm;

    CREATE INDEX personel_inx

    ON personel(ad,soyad);

    Bylece ad kolonu ncelikli olmak kaydyla birlikte soyadna gre sralama yapar, yani index oluturur.nce ada gre sralar, eer ayn isimden birden fazla kayt oluursa bu sefer soyad kolonundakideerlere gre sralama oluturur.

    Index yaratabilmek iin;

    Index yaratlacak tablonun var olmas gereklidir, Index yaratma hakkna sahip olmaldr, Limitsiz tablespace hakkna sahip olmaldr.

    Index yaratlma ihtiyac aadaki koullar olutuunda belirir;

    Where ifadesi ile sk sk kullanlan kolonlar kullanlyorsa, Join ile birletirme ilemi yapldnda, Kolon deerleri geni aralkta ise, Byk rakaml kolonlarn iinde null deerler bulunuyorsa.

    Index yaratlmama ihtiyac aadaki koullar olutuunda belirir;

    Tablo kk ise,

  • 8/2/2019 SQL Programlama

    31/34

    Tablodaki baz kolonlara sk sk ihtiya duyulmadnda, Tabloda sk sk deiiklikler yaplyorsa.

    USER_INDEXES ndex isimlerini ve unique olup olmad bilgilerini saklar.

    rnek: Personel tablosuna ait index dosyalarn listeleyelim;SELECT ic.index_name,ic.column_name,ic.colum_position,ix.uniquenessFROM user_indexes ix, user_ind_columns icWHERE ic.index_name=ix.index_name

    AND table_name=Personel;DROP INDEX Yaratlan indexleri veri tabanndan yok etmek iin kullanlr.

    DATABASE GVENL

    Database gvenlii iin kullanclar tanmlanr. Her kullancnn bir ifresi bulunur. Kullanclara belirliyetkiler verilir.Sistem ve data gvenlii olmak zere iki ksmda incelenir. Sistem gvenlii iinde kullancya yaratma,deitirme, silme vb. yetkiler tanmlanr. Data gvenlii iin ise datalar baka bir ortamayedekleme(backup) yaplarak salanr.Database level aamalar ile gvenlik snrlanr. Eer yksel level yetkisi varsa yeni kullanc(veyatablolar) yaratabilir veya silinebilir. Tablolarn yedekleri alnabilir.CREATE USERDatabase zerinde ilemler yaplabilmesi iin kulanc yaratlr.

    Yazlm;CREATE USER user_ad

    IDENTIFIED BY tifreDROP USERDatabaseden kullancy siler.

    Yazlm;

    DROP USER user_adGRANT (Yetki) Kullancya yetki verilmesi iin kullanlr.

    Yazlm;

    GRANT yetkiler_roller

    TO kullanc [PUBLIC]

    [WITH GRANT OPTION]

  • 8/2/2019 SQL Programlama

    32/34

    [PUBLIC]WITH GRANT OPTION Sistem haklarn veya rollerini dier kullanclara vermeyi salar. Bir rol buekilde belirlersek kullanc rolleri deitirebilir veya silebilir.PUBLIC Sistem haklarn veya rollerini tm kullanclara vermeyi salar.rnek: Personel tablosunun pers_id,ad kolonlarna webserver kullancs iin dzeltme yetkisi verelim;

    GRANT select(pers_id,ad)

    ON Personel

    TO webserverrnek: Personel tablosuna webserver kullancs iin seme yetkisi verelim;

    GRANT select

    ON Personel

    TO webserver

    rnek: Kazm kullancs, webserver kullancsnn personel tablosu iin kayt etme ve sorgulamayetkilerini verelim;

    GRANT select,insert

    ON personel

    TO webserver

    WITH GRANT OPTION

    rnek: Kazm kullancsnn personel tablosunu tm kullanclara sorugulama yapabilmesini salayalm;

    GRANT select

    ON kazim.personel

    TO PUBLIC

    Grant yetkisi ile kullanclara aadaki tablodaki yetkiler verilebilir

    Objeler Table View Sequences Procedure

    ALTER ? ?

  • 8/2/2019 SQL Programlama

    33/34

    DELETE ? ?

    EXECUTE ?

    INDEX ?

    INSERT ? ?

    REFERENCES ?

    SELECT ? ? ?

    UPDATE ? ?

    CREATE ROLE Kullancya yetki olarak verilen rollerdir.

    Yazlm;

    CREATE ROLE rol;

    rnek:

    CREATE ROLE Manager;

    GRANT create table, create view TO Manager;

    GRANT Manager TO webserver;

    Manager isminde rol tanmland. Tablo ve view yaratma yetkisi verildi. Bu yetkiler Webserver isminde

    kullancya aktarld.Kullancnn ifresini deitirmek iin;

    ALTER USER user_ad IDENTIFIED BY ifre

    REVOKE Verilen rolleri geri alr.

  • 8/2/2019 SQL Programlama

    34/34

    Yazlm;

    REVOKE rol

    ON tablo

    FROM kullanc

    rnek: webserver kullancsnn ifre tablosuna kayt etme,dzeltme ve sorgulama yetkilerini kaldralm,

    REVOKE select,insert,update

    ON tifre

    FROM webserver

    CREATE SYNONYM Bir objenin aynsnn kopyasnn alarak kendi usernda yaratr.

    Yazlm;

    CREATE [PUBLIC ] SYNONYM obje_ad

    FOR kullanc.obje

    PUBLIC Tm kullanclarn yetkilerini alr.

    rnek: Webservern personel tablosunun aynsn kendi alanmzda yaratalm

    CREATE SYNONYM personel

    FOR webserver.personelDROP SYNONYM Bir objenin aynsnn kopyasnn alarak yaratlan objeyi siler.

    Yazlm;

    DROP [PUBLIC ] SYNONYM obje_ad