Upload
mustafa-demirhan
View
255
Download
0
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