Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: SQL (Structured Query Language)  (Okunma sayısı 4629 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
SQL (Structured Query Language)
« : 11 Ekim 2005 07:55:59 »
SQL (Structured Query Language) kendisi bir programlama dili olmamasına rağmen bir çok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. (sub language) SQL ile yalnızca veri tabanı üzerinde işlem yapabiliriz. SQL cümleceikleri kullanarak veri tabanına kayıt ekleyebilir, olan kayıtları değiştirebilir silebilir ve bu kayıtlardan listeler oluşturabiliriz. SQL cümlecikleri genellikle aynı olmakla birlikte farklı veri tabanı ortamlarında değişebilmektedir. Ayrıca veri tabanlarının kendilerine özgü sql komutlarıda vardır. Biz burada her ortamda geçerli olan temel sql komutları işleyeceğiz.Şimdi örnekler kullanacağımız bir database tanımlayalım. Aşağıdaki Örnekler Microsoft SQL Server 6.5 'da denenmiştir.

Tablo adı : personel
Kolon : sicil_no:text (8)
Kolon : ad:text (8)
Kolon : soyad:text (8)
Kolon : dogum_tarihi:date
Kolon : dogum_yeri:text (8)
Kolon : cinsiyeti:text(1)
Kolon : medeni_hali:binary
Kolon : meslek_id:smallint
Kolon : egitim_durumu:binary
Kolon : adres:text (50)

Tablo adı : ucretler
Kolon : per_sicil_no:text (8)
Kolon : baslama_tarihi:date
Kolon : aylık_ucret:numeric
Kolon : aile_yardimi:numeric
Kolon : egitim_yardimi:numeric
Kolon : kesinti:numeric:

Tablo adı : meslekler
Kolon : meslek_id:smallint
Kolon : aciklama:text (23)
Kolon : taban_ücret:numeric



From



İlk önce bu komut ile başlayalım. Bu komut bütün SQL cümleciklerinde bulunması gerekli bir komuttur.Bu komut ile hangi tablolar üzerinde çalışa
From daki örnekleri SELECT komutundan sonra açıklayacağım.

Örnek 1 :

Kod:  (Unknown Language)
  1. SELECT * FROM personel;

Örnek 2 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel,ucretler;


Select

Örnek 3 :

Kod:  (Unknown Language)
  1. SELECT * FROM meslekler ;
Bütün meslek bilgilerini almak istersek yukarıdaki gibi bir query yazmalıyız.

Örnek 4 :
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel ;
Bu query ise bize firmamızda çalışan bütün personeli listeler.



DISTINCT


Bir SQL ifadesinde tablodaki tekrarli satirlarin listeleme sirasinda birkez yazilmasi icin SELECT komutu icinde DISTINCT komutu kullanilmasi gerekir. Örnek:

Kod:  (Unknown Language)
  1. SELECT DISTINCT ad FROM personel;

Örnegin ayni isimde bir cok personel  olabilir DISTINCT komutu kullanilmasi durumunda bu ekrana bir kez yazilacaktir.
 

Order By
Bu komut ile belirtilen kolona göre artan veya azalan bir sıralama ile sorgulama yapabiliriz.
ASC : kullanarak küçükten büyüğe doğru artan sıralama yapabiliriz.
DESC : kullanarak büyükten küçüğe doğru azalan sıralama yapabiliriz.
Ancak ASC kullanmak zorunlu değildir. Çünki default sıralama tipi ASC'dir. Aynı anda birkaç kolon üzerindende sıralama yapabiliriz.

Örnek 1 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel ORDER BY ad ASC;
Bu query ile personel tablosundaki bütün kayıtları ad'a göre küçükten büyüğe dogru sıralarız.

Örnek 2 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel ORDER BY soyad DESC;
Bu query da yukarıdakinin tersine kayıtları büyükten küçüğe dogru sıralar.

Örnek 3 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel ORDER BY ad,soyad;
Bu query kayıları ad göre artan bir sıralama yapar. Ancak aynı ad ile yaratılmış birden fazla kayıt varsa ise bunlarıda soyad sırasına göre artan bir şekilde sıralar. Eğer her iki kolnda aynı ise o zaman okuduğu sırada sıralar.

Örnek 4 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel ORDER BY dogum_tarihi DESC,ad,soyad ;
Bu query'de ise pernel kayıtları büyükten küçüğe doğru sıralanıyor. Yani en genç eleman'dan başlanarak en yaşlı elemana doğru bir liste yapılıyor. Doğum tarihleri aynı olanlarda ise ad ve soyad'a göre bir sıralama yapılmaktadır.
 

COUNT
Genelde istatistik amaçlar için kullanılır. Mesela hangi tarihte kaç işçinin işe alındığını bulmak için

Kod:  (Unknown Language)
  1. SELECT GIRIS_TARIHI,COUNT(*) FROM ISCI GROUP BY GIRIS_TARIHI
yazmanız yeterli olacaktır. Bu ifade size gün bazında kaç işçinin işe alındığını gösterecektir. Eğer belli bir tarihten önce ya da sonrasını isterseniz veya sadece sayının 10’dan büyük olduğu günleri görmek isterseniz o zaman ifadeyi şu şekilde yazmak gerekir

Kod:  (Unknown Language)
  1. SELECT GIRIS_TARIHI,COUNT(*) FROM ISCI WHERE GIRIS_TARIHI>’01.01.1999’
  2. GROUP BY GIRIS_TARIHI HAVING COUNT(*)>10

HAVING, grup fonksiyonlarının kriterleri için kullanılır. SUM, COUNT vb. gibi.

 

Where


Yukarıda yaptığımız sorgulamaların hepsinde hiç bir koşul belirtmedik.Yani bütün kayıtları tablolardan çektik. Ancak gerçek hayat'ta bu kayıtların sadece bir kısmına ihtiyaç duyarız.Bize gerekli olan dataları diğerlerinden ayıran bazı özellikleri vardır. İşte bu özellikleri bu komut yardımı ile kullanarak gerekli datalara ulaşabiliriz.

Örnek 5 :
Adı ahmet olan personeli listelemek istersek ne yapacağız.Aşagıdaki gibi bir sorgulama yapacağız.
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE ad='ahmet';

Örnek 6 :
Yaşı 40'dan büyük personeli listeleme istersek;
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE dogum_tarihi < '01.01.1959'
sorgulamasını kullanmalıyız.Elemanın 40 yaşında büyük olması için 1959 yılından önce doğmuş olması gerekmektedir. O halde dogum_tarihi 1959 yılından küçük olmalıdır.

Örnek 7 :
Adana'da doğmuş personeli listelemek istersek
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE dogum_yeri = 'Adana'
Örnek 8 :
300 milyondan fazla maaş alan kişileri işe maaşa göre sıralamak istersek;
Kod:  (Unknown Language)
  1. SELECT * FROM ucretler WHERE aylik_ucret >= 300000000 ORDER BY aylik_ucret;


Operatörler
Her programlama dilinde olduğu gibi SQL'de de operatörler bulunur. Üç çeşit operatör mevcuttur. Karşılaştırma oparatörleri , mantıksal operatörler ve kümeleme operatörleri.Bu karşılaştırma operatörleri aşağıdaki gibidir ;
operatör anlamı
a>X           ... X... a'dan küçük
a<X           ... X... a'dan büyük
a=X         &am p;am p;nb sp;... X... a'ya eşit
a=>X        ... X... a'dan küçük eşit
a<=X        ... X... a'dan büyük eşit
a<>X        ... X... a'ya eşit değil


Mantıksal operatörler ise AND,OR,NOT olarak verilebilir. Bu operatörler burada anlatmayacağız. Bunlar standart bütün dillerde aynı olan operatörlerdir.Kümeleme operatörleri ise datalar üzerinde gruplama yapmamızı sağlayan operatörlerdir.Bu operatörler Between , In , Like operatörleridir. Bu operatörlerin hepsini where ile birlikte kullanmalıyız.
 

Between

Aralıklı sorgulama yapmak istersek kullanabilecegimiz bir operatördür.

Örnek 1 :
Kod:  (Unknown Language)
  1. SELECT * FROM ucretler WHERE aylik_ucret BETWEEN 200000000 AND 300000000
Bu cümlecik ile 200 ile 300 milyon arasında maaş alanlar listelenecektir.

Örnek 2 :
Kod:  (Unknown Language)
  1. SELECT * FROM fat_bsl WHERE ft_tar BETWEEN '01.01.1998' and '04.06.1999'
Bu sorgulamada ise fatura tarihi 01.01.1998 ve 04.06.1999 tarihleri arasındaki faturalar listelenmiştir.Verilen tarih formatının sistemde kullanılan tarih formatı ile aynı olmasına dikkat edilmelidir. Yoksa sizin verdiğiniz tarih doğru olsa bile format farklı ise sorgulamanız geriye data döndürmez. (Yukarıdaki sorgulamada başıma geldide (:) )
 

In

 Bu komut ile belli bir kolonun kümesini vererek işlemimizi daha kolay bir şekilde yapabiliriz.

Örnek 3 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE meslek_id IN (1,2,3)
Buradaki örnek 'te 1,2 veya 3 meslek grubundan herhangi birine dahil olan personel listelenemektedir.Bu örnek aşagıdaki şekildeki gibide yapabiliriz;

Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE meslek_id=1 OR meslek_id=2 OR meslek_id=3


Like  

Bu ise içinde belli bir karakter dizisi bulunan datalara ulaşmak istersek kullanabileceğimiz bir operatördür.

Örnek 4 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE adres LIKE '%İstanbul%'

Bu sorgulama ile adres alanında İstanbul geçen kayıtları listelemiş oluruz.

Örnek 5 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE adres LIKE '%İstanbul'
Bu sorgulama ile adres alanının sonunda İstanbul geçen kayıtları listelemiş oluruz.

Örnek 6 :
Kod:  (Unknown Language)
  1. SELECT * FROM personel WHERE adres LIKE 'İstanbul%'
Bu sorgulama ile adres alanının başında İstanbul geçen kayıtları listelemiş oluruz
 

SQL'de Yeni Bir Kayıt Eklemek  
Tabloya yeni bir satır eklemek istersek INSERT INTO sözcüğünü kullanırız. Genel kullanım şekli aşağıdaki biçimdedir ;
Kod:  (Unknown Language)
  1. INSERT INTO tablo adı VALUES (deger1,deger2,deger3,...)
Eğer sadece belirli sahalara değer girmek istersek INSERT INTO'yu aşağıdaki şekildeki gibide kullanabiliriz.
INSERT INTO tablo adı(kolon1,kolon3,kolon9,kolon7) VALUES (deger1,deger3,deger9,deger7)

Örnek :
Yeni bir personel eklemek istersek ;
Kod:  (Unknown Language)
  1. INSERT INTO personel VALUES ('asdf2345','Ahmet','Yıldırım','01.01.1960','Ankara','E',1,7 ,1,'ebuziya cad. Bakırköy')

Örnek :
Yeni bir meslek eklemek istersek ;
Kod:  (Unknown Language)
  1. INSERT INTO meslekler VALUES (23,'Belçi',200.000.000)
Bir tablodan bazı kayıtları başka bir tabloyada aktarabiliriz. Bunun için aşağıdaki gibi bir ifade yazmalıyız;
Kod:  (Unknown Language)
  1. INSERT INTO tablo1 SELECT kolon1,kolon2,..  FROM tablo2

Örnek :
Kod:  (Unknown Language)
  1. INSERT INTO NEW_CUSTOMER SELECT NAME,CITY  FROM CUSTOMER

 

SQL'de Tablolar Üzerinde İşlem Yapma

Genellikle veri tabanı kayıları oluştururken bütün bilgileri bir tabloda değilde birkaç tablo üzerinde tutarız.Bu dataların hem daha
düzenli durmasını hemde gereksiz veri tekrarlarını engellemiş olur.Şimdi farklı tablolara bölünmüş datalar üzerinde işlem yapmamız gerekirse ne yapmamız gerekir.Aslında fazla bir şey yapmamız gerekmez.Tek yapacağımız hangi tabloları kullanacaksak bunları from cümleceğinde belirtmemizdir.Tabloları belirtirken aralarıda , koymayı unutmazsak o zaman sorun yok.

Örnek 1 :
Hangi personelin ne kadar maaş aldığını listelemek istersek;
Kod:  (Unknown Language)
  1. SELECT ad,soyad,aylik_ucret FROM personel,ucretler WHERE sicil_no=per_sicil_no

Örnek 2 :
İstanbul'da yaşayan Adana doğumlu personelin maaşlarını listelemek istersek;
Kod:  (Unknown Language)
  1. SELECT ad,soyad,aylik_ucret FROM personel,ucretler
  2. WHERE sicil_no=per_sicil_no AND adres LIKE '%İstanbul%' AND  dogum_yeri = 'Adana'
Örnek 3 :
300 milyondan fazla maaş alan ve 2 nolu meslek grubuna ait personeli listelemek istersek;
Kod:  (Unknown Language)
  1. SELECT ad,soyad,aylik_ucret FROM personel,ucretler
  2. WHERE sicil_no=per_sicil_no AND aylik_ucret>300000000 AND meslek_id=2

Örnek 4 :
Muhasebe meslek grubuna ait personel listesi;
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,meslekler
  2. WHERE meslek_id=meslek_id AND meslek_aciklama='Muhasebe'

Şimdi buradaki sorgulamımızda bir karışıklık söz konusu olacak.İki tane aynı isimde meslek_id oldu.Bunu şu şekilde engelleyebiliriz.
Tablolarda aynı isimde iki kolon varsa bu kolanları kullanırken başlarıda tablo ismini getiririz araya bir nokta koyarak kolon adını yazarız.
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,meslekler WHERE personel.meslek_id=meslekler.meslek_id
  2. AND meslek_aciklama='Muhasebe'

Örnek 5 :
Şirketimizde 30 yıldır çalışan ve 200 milyon altında maaş alan personeli ödüllendirecegiz.
Bunun için nasıl bir sorgulama yapmalıyız.


Kod:  (Unknown Language)
  1. SELECT ad,soyad
  2. FROM personel,ucretler
  3. WHERE sicil_no=per_sicil_no AND baslama_tarihi < '01.01.1969'
  4. AND aylik_ucret < 200000000

Örnek 6 :
22 yaşından büyük bilgi işlemde çalışan bayan personeli listelemek istersek
(NOT : cinsiyet= 0 : bayan 1 : erkek
medeni_hal= 0 : bekar 1 : evli )
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,meslekler WHERE personel.meslek_id=meslekler.meslek_id
  2. AND meslek_aciklama='Bilgi İşlem' AND cinsiyet=0 AND dogum_tarihi < '01.01.1977'
Örnek 7 :
40 yaşından küçük ,bilgi işlem veya muhasebe bölümünde çalışan,erkek,200 milyondan
fazla maaş alan ,Ankara doğumlu ,Sarıyer'de oturan,10 yıldan fazla şirkette çalışan , bekar
,10 milyondan fazla kesinti yapılan personeli listelemek istersek;
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,meslekler,ucretler
  2.  
  3. WHERE dogum_tarihi > '01.01.1959'
  4. AND personel.meslek_id=meslekler.meslek_id
  5. AND (meslek_aciklama='Bilgi İşlem' OR meslek_aciklama='Muhasebe')
  6. AND cinsiyet=1
  7. AND sicil_no=per_sicil_no AND aylik_ucret > 200000000
  8. AND dogum_yeri='Ankara'
  9. AND adres LIKE '%Sarıyer%'
  10. AND baslama_tarihi > '01.01.1989'
  11. AND medeni_hal=0
  12. AND kesinti>10000000

Örnek 8 :
Muhasebe ve Pazarlama bölümü dışında çalışan perseneli listelemek istersek;
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,meslekler
  2. WHERE personel.meslek_id=meslekler.meslek_id
  3. AND meslek_aciklama<>'Pazarlama' AND meslek_aciklama<>'Muhasebe'

Örnek 9 :40 yaşları arasında İzmir ve Bursa doğumlu adayları listelemek istersek;
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel
  2. WHERE dogum_tarihi BETWEEN '01.01.1959' AND '01.01.1969'
  3. AND (dogum_yeri='İzmir' OR dogum_yeri='Bursa')

Örnek 10 :
Adı E ile başlayan, 3,5 ve 7 nolu meslek grubuna ait ,bayan,bekar,30 yaşından küçük ,
100 milyondan fazla maaş alan personel listesi ;
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,ucretler
  2. WHERE ad LIKE 'E%'
  3. AND meslek_id IN (3,5,7)
  4. AND cinsiyet=0
  5. AND medeni_hal=0
  6. AND dogum_tarihi > '01.01.1969'
  7. AND sicil_no=per_sicil_no
  8. AND aylik_ücret > 100000000


Örnek 11 :
Evli ve aile yardımı almayan persenol listesi;
Kod:  (Unknown Language)
  1. SELECT ad,soyad FROM personel,ucretler WHERE medeni_hal=1 AND aile_yardim=0
  2.  
SQL Tablo'dan Kayıt Silmek

Tablodan bir satır silmek istersek DELETE sözcüğünü kullanırız. Genel kullanım şekli aşağıdaki biçimdedir ;
Kod:  (Unknown Language)
  1. DELETE FROM tablo adı
Eğer yukarıdaki gibi bir sorgulama yazıp çalıştırırsak tablodaki bütün kayıtları sileriz. Bunun için DELETE cümleciğini kullanırken dikkat edilmelidir.

Örnek :
Sicil nosu 12345678 olan kayıt silinmek istenirse;
Kod:  (Unknown Language)
  1. DELETE FROM personel WHERE sicil_no='12345678'

Örnek :
Doğum tarihi 1940'dan önce doğmuş personel kayıtları silinmek istenirse ;
Kod:  (Unknown Language)
  1. DELETE FROM personel WHERE dogum_tarihi<'0


SQL'de Kayıt Değiştirmek

Tablodan bir kayıtı değiştirmek istersek UPDATE sözcüğünü kullanırız. Genel kullanım şekli aşağıdaki biçimdedir
Kod:  (Unknown Language)
  1. UPDATE tablo adı SET kolon1=deger1,kolon2=deger2,... WHERE kosul;
Örnek :
Sicil nosu 12345678 olan kayıtın adresi değiştirlmek istenirse ;
Kod:  (Unknown Language)
  1. UPDATE personel SET adres='Bronz Sok. Teşvikiye' WHERE sicil_no='12345678'

Örnek :
Bütün personele uygulanan kesinti ücreti 10.000.000 sabit olarak belirlenirse ;
Kod:  (Unknown Language)
  1. UPDATE ucretler SET kesinti=10000000

Örnek :
Bütün personelin maaşına %20 zam yapılırsa ;
Kod:  (Unknown Language)
  1. UPDATE ucretler SET aylik_ucret=aylık_ucret*1.20


SQL Gruplama Fonksiyonları

(SUM,AVG,MIN,MAX,COUNT(*),COUNT(DISTINCT))
 

MAX


Verilen kolondaki en büyük değeri geri döndürür. Genel yazım biçimi aşağıdaki gibidir;
Kod:  (Unknown Language)
  1. Select MAX(kolon_adı) FROM tablo;

Örnek :
En fazla aylık ücret alan personel ne kadar maaş alıyor?
Kod:  (Unknown Language)
  1. Select MAX(aylik_ucret) From ucretler;

Örnek :
En fazla aile yardımı alan personelin maaşını ve sicil no'sunu öğrenmek istersek ;
Kod:  (Unknown Language)
  1. Select per_sicil_no,MAX(aylik_ucret) From ucretler ;


Örnek :
En yüksek taban ücret olan meslek listelenmek istenirse ;
Kod:  (Unknown Language)
  1. Select MAX(taban_ücret) From meslekler;

 

MIN
Verilen kolondaki en küçük değeri geri döndürür. Genel yazım biçimi aşağıdaki gibidir;
Kod:  (Unknown Language)
  1. Select MIN(kolon_adı) FROM tablo;

Örnek :
En düşük aylık ücret alan personel ne kadar maaş alıyor ?
Kod:  (Unknown Language)
  1. Select MIN(aylik_ucret) From ucretler;


Örnek :
En az aile yardımı alan personelin maaşını ve sicil no'sunu öğrenmek istersek ;
Kod:  (Unknown Language)
  1. Select per_sicil_no,MIN(aylik_ucret) From ucretler ;


SUM

Verilen kolondaki Bütün değerleri toplayarak geri döndürür. Genel yazım biçimi aşağıdaki gibidir;
Select SUM(kolon_adı) FROM tablo;

Örnek :
Personele ödenen toplam ücret nedir ?
Kod:  (Unknown Language)
  1. Select SUM(aylik_ucret) From ucretler;

Örnek :
Toplam ödenen aile yardımı bulunmak istenirse
Kod:  (Unknown Language)
  1. Select SUM(aile_yardimi) From ucretler ;

Örnek 4:
Maaşından kesinti yapılan personele ödenen toplam ücret bulunmak istenirse ;
Kod:  (Unknown Language)
  1. Select SUM(aylik_ücret) From ucretler Where kesinti>0;


AVG  

Verilen kolondaki değerlerin aritmetiksel ortalamsını geri döndürür. Genel yazım biçimi aşağıdaki gibidir;
Kod:  (Unknown Language)
  1. Select AVG(kolon_adı) FROM tablo;

Örnek :
Aylık ödenen ücret ortalamasını bulmak istersek ;
Kod:  (Unknown Language)
  1. Select AVG(aylik_ucret) From ucretler;


Örnek 2:
Ortalama taban ücret listelenmek istenirse ;
Kod:  (Unknown Language)
  1. Select AVG(taban_ücret) From meslekler;

Örnek 3:
30.01.1990 yılından sonra işe başlıyanların ortalama ücreti hesaplanmak istenirse ;
Kod:  (Unknown Language)
  1. Select AVG(aylik_ücret) From ucretler Where baslama_tarihi>'30.01.1990';
  2.  
COUNT(*)
Verilen tablodaki record sayısını geri döndürür. Genel yazım biçimi aşağıdaki gibidir ;
Kod:  (Unknown Language)
  1. Select COUNT(*) FROM tablo;

Örnek :
Kaç tane personel çalıştığını listelenmek istersek;
Kod:  (Unknown Language)
  1. Select COUNT(*) From personel;

Kod:  (Unknown Language)
  1. COUNT(DISTINCT ..)

Verilen kolondaki unique record sayısını geri döndürür. Genel yazım biçimi aşağıdaki gibidir ;
Kod:  (Unknown Language)
  1. Select COUNT(DISTINCT kolon_adı) FROM tablo;

Örnek :
İsmi farklı kaç tane personel çalıştığını listelenmek istenirse;
Kod:  (Unknown Language)
  1. Select COUNT(DISTINCT ad) From personel;

Create, Alter, Drop

CREATE DEYİMİ

CREATE deyimi tablo ve view gibi bir veritabanı nesnesi yaratmayı sağlar.



Tablo Yaratmak:


Veritabanı üzerinde bir tablo yaratmak için CREATE deyimi kullanılır.



Yapısı:

Kod:  (Unknown Language)
  1. CREATE <tablo adı>


Örnek:

 
Kod:  (Unknown Language)
  1. CREATE TABLE Musteri
  2. (
  3.    mus_id      char(4) NOT NULL
  4.    mus_ad       varchar(40)     NULL,
  5.    ili         varchar(20)     NULL,
  6.    ulke        char(2) NULL,
  7.    adres       varchar(30)     NULL
  8. )
NOT: Char, varchar, integer, numeric gibi sözcükler tablo alanlarındaki temsil edilecek verinin türünü belirtir. SQL'de SMALLINT, VARCHAR, DECIMAL(x,y), FLOAT(x;y), DATE,  TIME, TIMESTAMP,  gibi alan veri türleri vardır.



Örnek:



Kod:  (Unknown Language)
  1. CREATE TABLE personel
  2. (
  3. Sskno Integer,
  4. Adi Varchar(20) not null,
  5. Soyadi Varchar(20) not null,
  6. Departman integer
  7. )
yukarıdaki örnekte varchar tipteki aalan tanımlarını
 VARCHAR(15) NOT NULL COLLATE PXW_TUR
şeklinde tanımmlayın bu türkçe karakter sorrunun ortadan kaldırır


ALTER DEYİMİ
Daha önce yaratılmış nesnenin değiştirilmesini sağlar. Örneği bir tablonun tasarımını değiştirmek gibi.

Örnek:

Kod:  (Unknown Language)
  1. ALTER TABLE Musteri ADD tel  VARCHAR(15) NOT NULL COLLATE PXW_TUR


Yukarıdaki deyimde musteri tablosunun alanlarına tel adlı bir alan daha eklenmiştir.


 DROP DEYİMİ

Bir nesnesin silinmesini sağlar.

Örnek:

Kod:  (Unknown Language)
  1. DROP TABLE MUSTERI


TABLO ADINI DEĞİŞTİRME

SQL 'de ALTER TABLE komutu icerisinde RENAME TABLE sözcügünü kullanarak bu islemi gerceklestirebiliriz. Örnegin islem tablosunun adini process olarak degistirelim:

Kod:  (Unknown Language)
  1. ALTER TABLE islem  RENAME TABLE process;

 

TABLO SİLME İŞLEMİ

Bu amacla DROP TABLE komutu kullanilmalidir. Yanliz bir tablo silindiginde bu tabloya ait kopya(es) tablolar, indeksler de silinir. Örnegin hesap tablosunu silelim:

Kod:  (Unknown Language)
  1. DROP TABLE hesap;


TABLOYA KOLON EKLEME
SQL 'de ALTER TABLE komutu icerisinde ADD sözcügünü kullanarak bu islemi gerceklestirebiliriz. Örnegin hesap tablosuna hesap acilis tarihi adli bir sutun ekleyelim:

Kod:  (Unknown Language)
  1. ALTER TABLE hesap ADD hesap_acilis_tar DATE;

KOLON ADINI DEĞİŞTİRME

SQL'de ALTER TABLE komutu icersinde RENAME sözcügünü kullanarak bu islemi gerceklestirebiliriz. Örnegin müsteri tablosundaki adres kolonunun adini müsteri adresi olarak degistirelim:

Kod:  (Unknown Language)
  1. ALTER TABLE musteri RENAME adres mus_adres;


TABLODAN KOLON SİLME

SQL 'de ALTER TABLE komutu icerisinde DROP sözcügünü kullanarak bu islemi gerceklestirebiliriz. Örnegin biraz önce hesap tablosuna ekledigimiz hesap acilis tarihi adli bir sutunu silelim

Kod:  (Unknown Language)
  1. ALTER TABLE hesap DROP hesap_acilis_tar;


Ayni anda birden fazla kolonu silebiliriz. Örnegin hesap tablosundan hesap acilis tarihi ve hesap numarasi kolonlarini silelim:
Kod:  (Unknown Language)
  1. ALTER TABLE hesap DROP hesap_acilis_tar, hesap_no;
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı Mikdad

  • Delphi 4 Level 1
  • *
  • İleti: 150
  • Rep: +2/-2
  • Cinsiyet: Bay
    • http://www.mikdad.net
Ynt: SQL (Structured Query Language)
« Yanıtla #1 : 09 Kasım 2005 09:59:24 »
Vay be sql neymiş be hocam
kafam karıştı ama önemli değil
öğrenecez çaresi yok
Hiç KiMSe VaZGeÇiLMeZ DeĞiLDiR
WwW.Minikhost.Net    Host Dünyasında Yeni Bir Soluk
WwW.Mikdad.Net        İslami İçerikli Portalınız
WwW.Pckahvesi.com   Netteki Yeni Adresiniz

Çevrimdışı yesil_hilal

  • Delphi 1 Level 1
  • *
  • İleti: 2
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: SQL (Structured Query Language)
« Yanıtla #2 : 27 Aralık 2005 05:32:06 »
mükemmel anlatmışsınız. emeğineize sağlık.  delphidede acaba bu şekilde anlatmanız mümkün mü? ben delphiye yeni başladım. acaba acemiler için bir başlık açılabilir mi. örnek programlara anlatılsa bence çok güzel olur. basit programları inceleyerek başlamak çok daha öğretici diye düşünüyorum. şimdiden ço9k saolun
ben beni kaybettim yaşarken seni bin yıldan eskisin bir yıldan yeni

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: SQL (Structured Query Language)
« Yanıtla #3 : 27 Aralık 2005 10:03:40 »
evet mümkün. yakında böyle bir çalışma yappmayı düşünüyoryum. ama bu konu daha çok farklı kaynaklardan aıp derlediğim birr konu.
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı yesil_hilal

  • Delphi 1 Level 1
  • *
  • İleti: 2
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: SQL (Structured Query Language)
« Yanıtla #4 : 27 Aralık 2005 10:33:45 »
çok mutlu olurum gerçekten
ben beni kaybettim yaşarken seni bin yıldan eskisin bir yıldan yeni

Çevrimdışı ASE

  • Delphi 1 Level 1
  • *
  • İleti: 1
  • Rep: +0/-0
SQL (Structured Query Language)
« Yanıtla #5 : 01 Ocak 2006 15:51:32 »
arkadaşlar merhaba bu kod ado da sorunsuz çalışıyo

Kod:  (Unknown Language)
  1. SELECT * FROM YESILKART
  2. ORDER BY YAKINLIGI ="KENDİSİ"


ama benim veritabanım firebird orda ise çalışmıyor

hata ise


Alıntı
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, char 19.
=.


veritabanı firebird d7
« Son Düzenleme: 16 Ocak 2008 13:34:18 by kocaturk »