Neler yeni
Türkiye'nin En Güncel Forum Sitesi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

Delphi de SQL Kullanımı

ByOnur58

Kayıtlı Üye
MFC Üyesi
  • Üyelik Tarihi
    7 Ocak 2015
  • Mesajlar
    2,114
  • MFC Puanı
    10
  • MFC Seviyesi

Database İlişkisi


 
ID AD MAAS } Kolon adı (field)
1 Cyber 10000 }
2 Warrior 75000 } Kayıt (rows)


… …………….. ……….. }
Kolon Kolon Kolon
Table : Database’de saklanan kolonların birleşiminden oluşan kümedir. Table’ın data tipi yoktur.
Row : Tek kayıt demektir.
Column : Table’daki kolon adına ait kayıtlardır. Örneğin, ’AD’ kolonu demek ’AD’ kolonuna girilen verilerin tümüdür.
Field : Kolon başlıkları ile kayıt başlığı olanlardır.
Primary Key : Unique + not null (Tek olmalı ve boş geçilemez.)
Foreign Key : Primary key gibidir. Fakat null değerler alabilir.

 
Table’lar ilişkisel veri tabanı(compact) olmalıdır. Tablolar arasında bir ilişki kurulmalıdır.  
Oracle database’i ile kullanıcı arasında SQL_NET ilişki kurar. Protokoller belirlenir, bir isim altında konfigurasyonlar birleştirilir. Böylece database ismi tanımlanmasıyla ona ait tüm konfigurasyonlar oluşturulur.

RDBMS : Oracle’ın server tarafındaki protokoludür. Hızlı erişim sağlar. Güvenlik son derece güçlüdür. Client / server desteklidir.
TCP/IP : Oracle’ın server tarafındaki protokoludür.IP numaraları sayesinde client / server mimarisi iletişimi kurulur. RDBMS gibi ortak özellikler taşır.

Referantional : Tablolar arasındaki referansların belirtilmesidir. Bazen bir kolonun değerlerinin başka bir tablodaki kolonlardan veri laması gerekmektedir. bu durumda referans verilir. 
Bir projeye başlarken şu aşamalar yapılır;

i.  
ii. İyi bir analiz
iii.  
iv. Analizin tablolara göre dizaynı ve aralarındaki ilişkiler

v.  
vi. Akış şeması ve döküman hazırlanması

vii.  
viii. Test edilmesi
ix.  
x. Üretime geçilmesi
 
Database’e üzerinde giriş,değişiklik,silme vb. İşlemlersql ile olur. Tablolar fiziksel olarak gözükmezler. Database içinde saklıdırlar. Operatörler kullanılabilir.


Data Dictionary: Database’deki kullanıcılar, yaratılan tablolar vb. Nesneler hakkında detaylı bilgiler bulunan tablodur. Belli başlı fonksiyonlarla ulaşılabilir.
SQL : Tablolar arasında iletişim kurar, sorgulama yapar.

SQL *Plus : Ek olarak bloklar oluşturulabiliyor. Mantıksal döngüler ve komutlar oluşturulabiliyor. IF, FOR vb.

PL / SQL : Server’a bağlanıp insert, update, delete vb. Database üzerinde direkt işlemler yapılabilir. Database’e en hızlı ulaşım ve sorgulama biçimidir.


 Yazılan komutlar bufferda işlem yapar. O yüzden her yeni komut yazıldığında önceki komutu siler.

 Yazılım kontrolu(syntax) her satırın sonunda kontrol edilir.


 Çeşitli formatlarla çıktı alınabilir.

 Direkt komut sonunda sonuç alınır.,

 Select ile data okunur.

 İnsert, update,delete (DML) ile var olan bir tablo üzerinde değişiklikler yapılabilir.
 Create,alter,drop,rename, truncate(DDL) ile yapısal değişiklikler yapılabilir.

 Commit,rollback,savepoint (tranaction) ile yapılan işleri onaylar veya geri alır, iptal edilebilir.

 Grant,revoke (DCL) ile objelerin kullanılmasına hak vermek veya geri almak içindir. Güvenlik kurulur.

 Exit (^D) ile SQL’den çıkış sağlanır. Böylece yapılan işlemler iptal olur.  
NOT: Tnsnames.ora  Database hakkında bilgiler bu dosyada saklıdır.

Listener.ora  Server tarafında bulunan config dosyasıdır.

 
NOT: Komut yazılımdaki köşeli parantezler o alanın zorunlu olmadığını belirtir. {} işaretleri o alan için birden fazla değer alacağını gösterir. Büyük harf yazılanlar oldugu gibi yazılır. Küçük harf yazanlar açıklamadır.
 
SELECT komutu
 
Select komutu ile database’den istenilen kriterlere göre veri getirlir.
 
Yazılımı:
SELECT [DISTINCT] {*,column [alias] ,….}
FROM Tablo
[WHERE koşullar]

[ORDER BY {column,expr} [ASC|DEXC] ] ;


SELECT :Seçilen kolonları alır.

DISTINCT :Belirtilen kolondaki aynı değerlere sahip verilerden sadece birini alır. Örneğin personel kodu xxx olanın personel adı gibi.

alias :Kolon adlarının daha açık olması için tanımlanır.

FROM table :Belirtilen tabloyu açar.

WHERE :Belirli kriterler koşullar oluşturulur. Tablolar arasında birleştirmeler yapılabilir.

ORDER BY :Seçilen kolona göre sıralı kayıt getirir.

ASC :Artan sırada listelenir. Varsayılan budur.

DESC : Artan sırada listelenir. Varsayılan budur.


* : Tüm kolonlar seçilmiş anlamındadır.

 
Listelemede rakamlar sağa yanaşık, karakterler sola dayalı gözükür. Kolon adları büyük harf görüntülenir.Aritmatik işlemler kullanılabilir (+,-,/,*). Örneğin;

Select maas+maas*0.10 From Personel_Table;
Bazen bir matematiksel işlemler daha uzun veya daha karmaşık olabilir. Fonksiyon tanımlayarak kolona sorgulatıp bir sonuç üretebiliriz. Matematiksel işlemlerde öncelik sırası;
i.  
ii. Parantezler (,)
iii.  
iv. *,/,+,-
v.  
vi. soldan sağa doğru öncelik sırası,

şeklindedir.


Column Alias : Kolon başına açıklayıcı isim verilebilir. Tırnak işaretleri (") ile açıklayıcı kelime belirtilir. Tek kelime için " işareti kullanılmasada olur. Örneğin;

Select ad AS "Adı" From Personel_Table;


Concatenation Operator: Birden fazla stringi veya kolonu yan yana birleştirip listelemek için kullanılır. İfadeler string olmalıdır. Zaten karakter ve tarih formatındaki değerler tırnak( ’ ) işaretleri içerisinde belirtilir. Örneğin;

Select ad||’ ’ ||soyad AS "Adı Soyadı" From Personel_Table;

Null : Değeri hiç girilmeyen kolonlar NULL değerini alırlar. NULL sıfır veya boşluk karakteri değildir. Yokluk demektir. Bir rakam ile NULL değer üzerinde matematiksel işlemler yapılamaz.

NVL Fonksiyonu: Null değeri yerine yeni değer atar. Alan tipi ne turde ise alacağı değer o türde olmalıdır. 
Yazılımı:
NVL (null_değeri_alan,yeni_değer) 
Örneğin;

NVL(Maas,0);  Maas kolonundaki null değerlerin yerine sıfır atar.

veya NVL(Ad,’ ’);  Ad kolonundaki null değerlerin yerine bos karakter atar.

 
En önemli kullanım amacı hesplamalara işlemin yarıda kesilmesini engellemek içindir. Örneğin maasa zam miktarı eklensin. Ama bazı personele zam yapılmadığı varsayılırsa bu kişiler icin zam kolon değeri null’dur. Buna göre;

SELECT maas+NVL(zam,0) From Personel_Table;


Tab : Tüm tabloların adlarının saklandığı alandır. Örneğin tüm tabloların listesini vermek için aşağıdaki iki yazılımı da kullanabiliriz.;

Yazılımı;
SELECT * From Tab;
SELECT table_name From user_tables;


Desc : Tablonun kolonlarının adlarını, kolonların tipini ve null değer alıp alamayacağı durumlarını gosterir.
 
Yazılımı:
DESC tablo_adı;

 
Kolon tiplerinden bazıları; 
NUMBER(rakam,ondalık)  Sayısal ifadelerdir. Rakam alanı sayının max alabileceği tamsayı kısmını verir. Ondalık alan ise max. decimal değerini verir.
VARCHAR2(sayı)  Karakter ifadelerdir. Sayı ile belirtilen alan, max. karakter sayısıdır. 
DATE  Tarih ve saat ifadeleridir. Ülke kodu desteğiyle çeşitli formatlarda database’de tutulurlar. 
CHAR(sayı)  Karakter ifadesidir. VARCHAR2’den tek farkı database’de saklanma şeklidir. Max 255 karakter alabilir. Sayı ile belirtilen alan, max. karakter sayısıdır.


ORDER BY : Seçilen kolona göre sıralama yapar. DESC artan sırada, ASC azalan sırada listeler. Null değerler sıralamaya alınmazlar. Örneğin azalan sırada ada gore liste alınsın;

SELECT ad,soyad FROM Personel_Table ORDER BY ad DESC;
 
Eğer kolonlar birden fazla ise kolon numarası ile de tanım belirtilebilir;

SELECT ad,soyad FROM Personel_Table ORDER BY 1 DESC;
 
Eğer birden fazla kolona göre sıralama yapılmak istenirse, önce yazılan kolon baz alınarak diğer kolona göre sıralı listeler.

SELECT ad,soyad FROM Personel_Table ORDER BY 1,2 DESC;


WHERE : Sorgulamaları sınırlandırmak amacıyla koşullar konulur. Örneğin departmanı 38 kodlu personel listesi;

SELECT ad ||’ ’ ||soyad FROM Personel_Table WHERE Dept_Id=38;
 
<,>, >=, <= gibi karşılaştırma karakterleri kullanılabilir. Bunlar dışında bazı SQL operatörleri ile daha rahat koşullar konulabilmektedir.

BETWEEN Min AND Max: Belirtilen Min. ve Max. değerler arasında değer alabilir. Yani belirtilen iki değer arasında değerler alır. Örneğin yaşı 18 ile 30 arasındaki personeller;

SELECT ad ||’ ’ ||soyad FROM Personel_Table
WHERE yas BETWEEN 18 AND 30;


IN (liste) : Liste olarak tanımlanan değerleri alır. Yani bir şekilde OR ifadesine denktir. Örneğin yaşı 18, 25 ile 30 olan personeller;
SELECT ad ||’ ’ ||soyad FROM Personel_Table
WHERE yas=18 OR yas=25 OR yas=30;
Veya
SELECT ad ||’ ’ ||soyad FROM Personel_Table
WHERE yas IN(18,25,30);


LIKE : Benzerlik vermek için kullanılır. ’%’ karakteri tum 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. 
’%t’  t harfiyle başlayanlar.

’%t%’  t harfi geçen tüm kayıtlar.

’B_K%’  B baş harfi ile başlayan ve 3. Harfi K olan tüm kayıtlar.

 
karakterleri arasında değer girilirse kolon içinde Örneğin soyadı ’M’ ile başlayan personeller;

SELECT ad ||’ ’ ||soyad FROM Personel_Table
WHERE soyad LIKE ’ M% ’ ;


IS NULL : Kayıdın null olup olmadığını kontrol eder. Örneğin maaşı null olan kayıtları listelesin;

SELECT ad ||’ ’ ||soyad FROM Personel_Table
WHERE maas IS NULL ;


NOT : Belirtilen koşulun tam ters koşulunu verir. Örneğin maaşı null olmayan kayıtları listelesin;

SELECT ad ||’ ’ ||soyad FROM Personel_Table
WHERE maas IS NOT NULL ;
 
Üst Alt