Python’da Veri Tabanı İşlemleri #2

Bu yazıda bir önceki yazımızda oluşturmuş olduğumuz MusteriTablosu isimli tablo üzerinde Python ile örnek uygulamalar yapacağız. Burada kullanacağım veri tabanı ile ilgili daha fazla bilgi için buraya tıklayarak bir önceki yazıya gidebilirsiniz.

Uygulama 1: Müşteri tablosunda taksit sayısı 6’dan küçük olanları listeleyelim.

INPUT: 

musteriler = sqlite3.connect("musteriler.sqlite")
imlec = musteriler.cursor()
secilenler = imlec.execute("Select * From MusteriTablosu WHERE MusteriTaksitsayisi < 6")
print(secilenler.fetchall())

OUTPUT:

[(127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440)]

Burada veri tabanına olan erişimimizi kapatmıyorum. Çünkü yazı boyunca aynı bağlantı kodunu tekrar tekrar yazmayalım.

Uygulama 2: Müşteri tablosunda geliri 3000 TL’den fazla ve yaşı 30’dan küçük olan müşterileri listeleyelim.

INPUT:

secilenler1 = imlec.execute("Select * From MusteriTablosu WHERE MusteriGeliri > 3000 AND MusteriYas < 30")
secilenler1.fetchall()

OUTPUT:

[(127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440),
 (518023, 'Gizem', 'Duyar', 23, 'K', 3500, 2750, 12, 229.17)]

Uygulama 3: Müşteri tablosunda cinsiyeti kadın olanları listeleyelim.

INPUT:

secilenler2 = imlec.execute("Select * From MusteriTablosu WHERE MusteriCinsiyet  = 'K'")
secilenler2.fetchall()

OUTPUT:

[(127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440),
 (518023, 'Gizem', 'Duyar', 23, 'K', 3500, 2750, 12, 229.17),
 (812503, 'Aslı', 'Çevik', 26, 'K', 3000, 1650, 6, 550),
 (356721, 'Betül', 'Çevreci', 26, 'K', 2800, 1400, 6, 233.34)]

Uygulama 4: Müşteri tablosunda aylık ödemesi 600 TL’den düşük olan müşterilerin borcunu, gelirini, adını ve soyadını listeleyelim.

INPUT:

secilenler3 = imlec.execute("Select MusteriAd, MusteriSoyad, MusteriGeliri, MusteriToplamBorc From MusteriTablosu WHERE MusteriAylikOdeme  < 600")
secilenler3.fetchall()

OUTPUT:

[('Ece', 'Gündüz', 3655, 1760),
 ('Gizem', 'Duyar', 3500, 2750),
 ('Aslı', 'Çevik', 3000, 1650),
 ('Betül', 'Çevreci', 2800, 1400)]

Uygulama 5: Insert komutunu kullanarak aşağıda verilen verileri veri tabanına ekleyelim.

(625173, “Salih”, “Güven”, 30, “E”, 2200.00, 1250.00, 6, 208.34)

(153294, “Melike”, “Özdemir”, 26, “K”, 4350.00, 4250.00, 12, 283.34)

(309852, “Berk”, “İnan”, 56, “E”, 3800.00, 2760.00, 12, 230.00)

Bu verileri liste olarak yazıp, bir önceki yazıda oluşturduğumuz fonksiyon içerisine yazalım.

INPUT:

yeniVeriler = [[625173, "Salih", "Güven", 30, "E", 2200.00, 1250.00, 6, 208.34], [153294, "Melike", "Özdemir", 26, "K", 4350.00, 4250.00, 12, 283.34], [309852, "Berk", "İnan", 56, "E", 3800.00, 2760.00, 12, 230.00]]
VeriGirisi(yeniVeriler)
musteriler.commit()
secilenler4 = imlec.execute("Select * From MusteriTablosu ")
secilenler4.fetchall()

OUTPUT:

[(136752, 'Ahmet', 'Yenidoğan', 36, 'E', 4500, 3800, 6, 633.34),
 (127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440),
 (201638, 'Ali', 'Çelik', 46, 'E', 6500, 8900, 12, 741.67),
 (518023, 'Gizem', 'Duyar', 23, 'K', 3500, 2750, 12, 229.17),
 (812503, 'Aslı', 'Çevik', 26, 'K', 3000, 1650, 6, 550),
 (437612, 'Mehmet', 'Bekçi', 35, 'E', 6500, 4800, 6, 800),
 (356721, 'Betül', 'Çevreci', 26, 'K', 2800, 1400, 6, 233.34),
 (971025, 'Cenk', 'Kahraman', 33, 'E', 4250, 9800, 12, 816.67),
 (625173, 'Salih', 'Güven', 30, 'E', 2200, 1250, 6, 208.34),
 (153294, 'Melike', 'Özdemir', 26, 'K', 4350, 4250, 12, 283.34),
 (309852, 'Berk', 'İnan', 56, 'E', 3800, 2760, 12, 230)]

Uygulama 6: Update komutunu kullanarak Melike Özdemir kişisinin borcunu 12800.00 TL ve taksit sayısını 8 olarak güncelleyelim. Buna bağlı olan sütunları da güncelleyelim.

INPUT:

imlec.execute("UPDATE MusteriTablosu SET MusteriToplamBorc = 12800.00, MusteriTaksitSayisi = 8, MusteriAylikOdeme = 1600.00 WHERE MusteriAd = 'Melike' AND MusteriSoyad = 'Özdemir'")
musteriler.commit()
Secilenler5 = imlec.execute("Select * From MusteriTablosu WHERE MusterID  = 153294")
Secilenler5.fetchall()

OUTPUT:

[(153294, 'Melike', 'Özdemir', 26, 'K', 4350, 12800, 8, 1600)]

Uygulama 7: MusteriID’si 625173 olan Salih Güven kişisini tablodan silelim.

INPUT:

imlec.execute("DELETE FROM MusteriTablosu WHERE MusterID = 625173")
musteriler.commit()
Secilenler6 = imlec.execute("Select * From MusteriTablosu")
Secilenler6.fetchall()

OUTPUT:

[(136752, 'Ahmet', 'Yenidoğan', 36, 'E', 4500, 3800, 6, 633.34),
 (127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440),
 (201638, 'Ali', 'Çelik', 46, 'E', 6500, 8900, 12, 741.67),
 (518023, 'Gizem', 'Duyar', 23, 'K', 3500, 2750, 12, 229.17),
 (812503, 'Aslı', 'Çevik', 26, 'K', 3000, 1650, 6, 550),
 (437612, 'Mehmet', 'Bekçi', 35, 'E', 6500, 4800, 6, 800),
 (356721, 'Betül', 'Çevreci', 26, 'K', 2800, 1400, 6, 233.34),
 (971025, 'Cenk', 'Kahraman', 33, 'E', 4250, 9800, 12, 816.67),
 (153294, 'Melike', 'Özdemir', 26, 'K', 4350, 12800, 8, 1600),
 (309852, 'Berk', 'İnan', 56, 'E', 3800, 2760, 12, 230)]

Uygulama 8: Müşteri tablosunda isminde A harfi olan kişileri listeleyelim.

INPUT:

Secilenler7 = imlec.execute("Select * From MusteriTablosu WHERE MusteriAd Like '%A%'")
Secilenler7.fetchall()

OUTPUT:

[(136752, 'Ahmet', 'Yenidoğan', 36, 'E', 4500, 3800, 6, 633.34),
 (201638, 'Ali', 'Çelik', 46, 'E', 6500, 8900, 12, 741.67),
 (812503, 'Aslı', 'Çevik', 26, 'K', 3000, 1650, 6, 550)]

Uygulama 9: Müşteri tablosunda soyadı Ç harfi ile başlayan kişileri listeleyelim.

INPUT:

Secilenler8 = imlec.execute("Select * From MusteriTablosu WHERE MusteriSoyad Like 'Ç%'")
Secilenler8.fetchall()

OUTPUT:

[(201638, 'Ali', 'Çelik', 46, 'E', 6500, 8900, 12, 741.67),
 (812503, 'Aslı', 'Çevik', 26, 'K', 3000, 1650, 6, 550),
 (356721, 'Betül', 'Çevreci', 26, 'K', 2800, 1400, 6, 233.34)]

Uygulama 10: Müşteri tablosunda ismi E harfi ile biten kişileri listeleyelim.

INPUT:

e("Select * From MusteriTablosu WHERE MusteriAd Like '%E'")
Secilenler9.fetchall()

OUTPUT:

[(127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440),
 (153294, 'Melike', 'Özdemir', 26, 'K', 4350, 12800, 8, 1600)]

Uygulama 11: Müşteri tablosunda geliri 3000 TL ya da 4500 TL olan kişilerin ad, soyad, maaş ve yaşını listeleyelim.

INPUT:

Secilenler10 = imlec.execute("Select MusteriAd, MusteriSoyad, MusteriGeliri, MusteriYas From MusteriTablosu WHERE MusteriGeliri IN(3000,4500)")
Secilenler10.fetchall()

OUTPUT:

[('Ahmet', 'Yenidoğan', 4500, 36), ('Aslı', 'Çevik', 3000, 26)]

Uygulama 12: Müşteri Tablosunda adında A harfi olmayan ve geliri 3500 TL, 4000 TL ya da 4800 TL olan kişilerin ad ve soyadlarını listeleyen sorguyu yazalım.

INPUT:

Secilenler11 = imlec.execute("Select MusteriAd, MusteriSoyad From MusteriTablosu WHERE MusteriAd NOT LIKE '%A%' AND MusteriGeliri IN(3500,4000,4800)")
Secilenler11.fetchall()

OUTPUT:

[('Gizem', 'Duyar')]

Uygulama 13: Müşteriler veri tabanına CihazTablosu isminde bir tablo oluşturalım. Bu tablonun içerisinde CihazID, CihazModel, CihazYıl ve CihazAd sütunlarını ekleyelim.

INPUT:

imlec.execute('''CREATE TABLE IF NOT EXISTS CihazTablosu(
                 CihazID INT NOT NULL, 
                 CihazModel Varchar(5), 
                 CihazYıl SMALLINT,
                 CihazAd Varchar(30))''')

Uygulama 14: Yeni oluşturduğumuz CihazTablosu isimli tabloya aşağıdaki verileri ekleyelim.

(“TBT16”, 2016, “Tablet”), (“BGR20”, 2020, “Bilgisayar”), (“TLN18”, 2018, “Telefon”), (“BZD19”, 2019, “Buzdolabı”), (“CMR21”, 2021, “Çamaşır Makinesi”), (“TVN21”, 2021, “Televizyon”)

INPUT:

cihazlar = [[1635,"TBT16", 2016, "Tablet"], [1654,"BGR20", 2020, "Bilgisayar"], [5643,"TLN18", 2018, "Telefon"], [4567,"BZD19", 2019, "Buzdolabı"], [1564,"CMR21", 2021, "Çamaşır Makinesi"], [4569,"TVN21", 2021, "Televizyon"]]
for cihaz in cihazlar:
 imlec.execute("INSERT INTO CihazTablosu VALUES (?,?,?,?)", cihaz)
musteriler.commit()
secilenler12 = imlec.execute("SELECT * FROM CihazTablosu")
secilenler12.fetchall()

OUTPUT:

[(1635, 'TBT16', 2016, 'Tablet'),
 (1654, 'BGR20', 2020, 'Bilgisayar'),
 (5643, 'TLN18', 2018, 'Telefon'),
 (4567, 'BZD19', 2019, 'Buzdolabı'),
 (4569, 'TVN21', 2021, 'Televizyon'),
 (1564, 'CMR21', 2021, 'Çamaşır Makinesi')]

Uygulama 15: Müşteri tablosuna SahipOlunanCihaz isimli ve veri türü INT olan bir sütun ekleyelim.

INPUT:

imlec.execute("ALTER TABLE MusteriTablosu ADD COLUMN SahipOlunanCihaz INT")
musteriler.commit()

Uygulama 16: Müşteri tablosuna yeni eklenen sütuna (1,3,5,6,2,4,3,5,1,6) değerlerini ekleyelim.

INPUT:

CihazNumaralari = [1,3,5,6,2,4,3,5,1,6]
MusteriNumaralari = [136752, 127650, 201638, 518023, 812503, 437612, 356721, 971025, 153294, 309852]
a = 0
for musteri in MusteriNumaralari:
 imlec.execute("UPDATE MusteriTablosu SET SahipOlunanCihaz = {} WHERE MusterID = {}" .format(CihazNumaralari[a], musteri))
 a += 1
musteriler.commit()
secilenler13 = imlec.execute("SELECT * FROM MusteriTablosu")
secilenler13.fetchall()

OUTPUT:

[(136752, 'Ahmet', 'Yenidoğan', 36, 'E', 4500, 3800, 6, 633.34, 1),
 (127650, 'Ece', 'Gündüz', 28, 'K', 3655, 1760, 4, 440, 3),
 (201638, 'Ali', 'Çelik', 46, 'E', 6500, 8900, 12, 741.67, 5),
 (518023, 'Gizem', 'Duyar', 23, 'K', 3500, 2750, 12, 229.17, 6),
 (812503, 'Aslı', 'Çevik', 26, 'K', 3000, 1650, 6, 550, 2),
 (437612, 'Mehmet', 'Bekçi', 35, 'E', 6500, 4800, 6, 800, 4),
 (356721, 'Betül', 'Çevreci', 26, 'K', 2800, 1400, 6, 233.34, 3),
 (971025, 'Cenk', 'Kahraman', 33, 'E', 4250, 9800, 12, 816.67, 5),
 (153294, 'Melike', 'Özdemir', 26, 'K', 4350, 12800, 8, 1600, 1),
 (309852, 'Berk', 'İnan', 56, 'E', 3800, 2760, 12, 230, 6)]

Bir sonraki yazımızda Python’dan bahsetmeye devam edeceğiz.

PYTN5JL10AJU0X299N
Java’da Döngüler

Bu yazıda sizlere JAVA’da yinelenen işlemlerin gerçekleştirildiği döngülerin neler olduğundan ve nasıl kullanıldığından bahsedeceğim. Genel olarak yazı içerisinde For ve while döngülerini inceleyeceğiz.

JAVA’da kod yazarken kodlarımızın içerisinde yinelenen işlemler olabilir. Örneğin 1’den 10’a kadar olan sayıları ekrana yazdırmak istediğimizi düşünelim. Bu durumda döngü kullanmadan 10 kez system.out.println() fonksiyonunu kullanmamız gerekir. Örnek olarak:

INPUT:

public class Main {
    public static void main(String[] args) {
        System.out.println(1);
        System.out.println(2);
        System.out.println(3);
        System.out.println(4);
        System.out.println(5);
        System.out.println(6);
        System.out.println(7);
        System.out.println(8);
        System.out.println(9);
        System.out.println(10);
    }
}

OUTPUT:

1
2
3
4
5
6
7
8
9
10

Ancak bu işlemi manuel olarak gerçekleştirmek bizim için ideal değildir çünkü kodlarımızı yazarken aynı işlemleri içeren kod satırlarını elle tekrar tekrar yazmamız gerekir. Bu hem zamandan kaybetmemize hem de yazdığımız kodun daha karışık ve uzun hale gelmesine yol açacaktır. Dolayısıyla, hem kodlarımızı daha az çaba harcayarak yazmalıyız hem de daha az kod satırı ile daha çok işlem gerçekleştirebiliyor olmalıyız. Bu sebeple yinelenen işlemlerde döngüleri kullanırız. Döngülerin amacı, aynı veya benzer kodu birkaç kez tekrarlamaktır. Bu tekrarlama belirli bir sayı kadar ya da bir koşul sağlanana kadar sürebilir. JAVA’da iki çeşit döngü mevcuttur. Bunlar for döngüsü ve while döngüsüdür.

İlk olarak while döngüsünden bahsedelim.

WHILE Döngüsü

While döngüsü, döngüde yazdığımız şart doğru olduğu sürece kod bloğu içerisindeki işlemleri gerçekleştirmeye devam eden döngü tipidir. While döngüsü aşağıdaki gibi yazılır:

public class Main {
    public static void main(String[] args) {
        while (kosul) {
            //Yazılan koşulun değeri true ise çalıştıralacak kod bloğu
        }

    }
}

While döngüsünün kullanımına ilişkin örnekler aşağıdaki gibidir:

INPUT:

public class Main {
    public static void main(String[] args) {
        int i = 0;
        while (i < 5) {
            System.out.println("i değeri : " + i);
            i += 1;
         }

    }
}

OUTPUT:

i değeri : 0
i değeri : 1
i değeri : 2
i değeri : 3
i değeri : 4
INPUT:

public class Main {
    public static void main(String[] args) {
        boolean deger = true;
        int sonuc = 0;
        while (deger == true) {
            sonuc += 3;
            if(sonuc > 40) {
                System.out.println("Limit Değere Aşıldı! Son Değer : " + sonuc);
                deger = false;
            }
            }
         }

    }

OUTPUT: 

Limit Değere Aşıldı! Son Değer : 42

While döngüsünde, koşul doğru ise kod bloğu çalışır.  Eğer döngüde yazılan şartın doğru ya da yanlış olduğuna bakılmaksızın kod bloğunun en az bir kez çalıştırılmasını istersek dowhile döngüsünü kullanmamız gerekir. Dowhile döngüsünün kullanımı ve mantığı while döngüsüne benzerdir. Ancak farkı, şartın durumuna bakmaksızın kod bloğunu bir kez çalıştırır. Dowhile döngüsü aşağıdaki gibi yazılır:

public class Main {
    public static void main(String[] args) {
        do {
            //çalıştırılmak istenen kod bloğu
        }
        while (kosul);

         }

    }

Dowhile döngünün kullanımına ilişkin örnek aşağıdaki gibidir:

INPUT:

public class Main {
    public static void main(String[] args) {
        int toplam = 0;
        do{
            System.out.println("Toplam : " + toplam);
            toplam += 10;
        }while(toplam < 100);
        }
}

OUTPUT:

Toplam : 0
Toplam : 10
Toplam : 20
Toplam : 30
Toplam : 40
Toplam : 50
Toplam : 60
Toplam : 70
Toplam : 80
Toplam : 90
INPUT:

import java.util.Scanner;

public class Main
{
	public static void main(String[] args) {
     int sayi1, sayi2, i, enBuyuk, enKucuk;
     
     Scanner input = new Scanner(System.in);
     
     System.out.println("Lutfen ilk sayiyi giriniz : ");
     sayi1 = input.nextInt();
     
     System.out.println("Lutfen ikinci sayiyi giriniz : ");
     sayi2 = input.nextInt();     
     
     int k = 2;
     i = 2;
     enBuyuk = 1;
     while(sayi1 >= i){
         
         if((sayi1 % i == 0) && (sayi2 % i == 0)){
                 enBuyuk = i;
         }
         
         i++;
     }
     
     enKucuk = (sayi1 * sayi2) / enBuyuk;
     
     System.out.println("En buyuk ortak bolen : " + enBuyuk);
     System.out.println("En kucuk ortak bolen : " + enKucuk);
	}
}

OUTPUT:

Lutfen ilk sayiyi giriniz : 
60
Lutfen ikinci sayiyi giriniz : 
70
En buyuk ortak bolen : 10
En kucuk ortak bolen : 420
For Döngüsü

For döngüsü, yazılan kod bloğunun istenilen sayı kadar yinelenmesini istediğimiz durumlarda kullanılan döngü tipidir. For döngüsü aşağıdaki gibi yazılabilir:

public class Main {
    public static void main(String[] args) {
        for (baslangıcDegeri; dongununDevamınıSaglayanSart; ArtısAzalısDegeri) {
            //çalıştırılmak istenen kod bloğu
        }

        }
}

For döngüsü yazılırken, döngü içerisindeki ilk alana bir değişken tanımlanır ve başlangıç noktası verilir. Ardından hangi koşul sağlanana kadar döngünün devam etmesi gerektiği yazılır. Son olarak, döngü her sonlandığında, başlangıç noktasından nasıl ilerleme ya da gerileme yapılacağı belirtilir. Bu değerlere göre for döngüsü çalışır ve istenilen işlemleri gerçekleştirir. For döngüsünün kullanımına ait aşağıdaki örnekleri inceleyebiliriz:

INPUT:

public class Main
{
    public static void main(String[] args) {

        boolean sorgu = true;

        for(int i = 2; i <= 100; i++){

            for(int k = 2; k < i; k++){

                if(i %k == 0){
                    sorgu = false;
                }
            }
            if(sorgu == true){
                System.out.print(" " + i);
            }
            sorgu = true;
        }
    }
}

OUTPUT:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
INPUT:

import java.util.Scanner;

class HelloWorld {
    public static void main(String[] args) {
        int deger, us, sonuc;

        Scanner input = new Scanner(System.in);

        System.out.print("Lutfen bir deger giriniz : ");
        deger = input.nextInt();

        System.out.print("Lutfen bir us degeri giriniz : ");
        us = input.nextInt();

        sonuc = 1;

        for(int i = 0; i < us; i++){

            sonuc *= deger;

        }

        System.out.println("Sonuc : " + sonuc);

    }
}

OUTPUT:

Lutfen bir deger giriniz : 6
Lutfen bir us degeri giriniz : 2
Sonuc : 36

For döngüsü, bir başlangıç noktasından belirtilen koşul altında bir bitiş noktası boyunca belirli bir kod bloğunu tekrar tekrar çalıştırmanın dışında diziler üzerinde de kullanılabilir. Dizi üzerinde yazdığımız for döngüsü, dizinin her bir elemanını dolaşır ve istediğimiz işlemleri dizi elemanları üzerinde gerçekleştirir. Bu tip bir for döngüsünün kullanımı aşağıdaki gibidir:

class HelloWorld {
    public static void main(String[] args) {
        for (VeriTipi degiskenIsmı : diziIsmı) {
            //Çalıştırılması istenen kod bloğu
        }

    }
}

Yukarı yazdığımız for döngüsü tipine ait örnekler aşağıdaki gibidir:

INPUT:

class HelloWorld {
    public static void main(String[] args) {
      String[] dizi = {"Ahmet", "Mehmet", "Ali","Ayşe","Cansu","Gizem"};
      for(String eleman:dizi){
          if (eleman == "Ayşe"){
              System.out.println("Dizide " + eleman + " elemanına erişildi!");
              break;
          }
      }
    }
}

OUTPUT:

Dizide Ayşe elemanına erişildi!

Bu yazımızda son olarak while ve for döngüsünde kullanabileceğimiz break ve continue komutlarını kullanışlarından bahsedeceğiz. Break komutunun switchcase yapısında ne amaçla ve nasıl kullanıldığı görmüştük. Döngülerde de break komutunun kullanılma mantığı aynıdır.

Döngü içerisinde belli bir koşul sağlanmışsa ya da belli bir değere geldiğimizde döngünün sonlanmasını isteyebiliriz. Bu durumda döngü içerisinde break komutunu kullanabiliriz. Break komutu çalıştığı anda, döngünün devam etmesi gerekse bile döngüden çıkış yapılacaktır.

Örneğin, içerisinde 4 adet isim olan {“Ahmet”, “Mehmet”, “Ayşe”, “Fatma”} kümesini düşünelim. Bu küme üzerinde bir döngü yazalım. Öyle ki döngü, dizi içerisinde Ayşe ismine uğradığında döngüden çıkış yapsın. Bu döngüyü aşağıdaki gibi yazabiliriz:

INPUT:

public class Main {
    public static void main(String[] args) {
        String[] isimler = {"Ahmet", "Mehmet", "Ayşe", "Fatma"};
        for (String i : isimler) {
            if (i == "Ayşe"){
                System.out.println("Şu anki değer Ayşe olduğundan döngüden çıkıldı.");
                break;
            }else{
                System.out.println(i);
            }
        }
    }
}

OUTPUT:

Ahmet
Mehmet
Şu anki değer Ayşe olduğundan döngüden çıkıldı.

Yukarıda da görüldüğü gibi döngünün uğraması gereken Fatma ismi varken Ayşe’ye denk geldiğinde döngüden çıkıldı ve Fatma ismine hiç uğramadı.

Bu gibi durumlarda döngüden çıkılması istenirse break komutu kullanılabilir.

Continue komutu ise döngünün içerisinde herhangi değere ya da koşula denk gelindiğinde döngünün o basamağını atlamak için kullanılır. Döngü continue çalıştırdığı anda o an ki döngü basamağını atlar ve işlemleri gerçekleştirmeden sonraki döngü adıma geçiş yapar. Sonraki döngü adımında eğer continue’u içeren bloğa girmezse döngü bloğundaki işlemleri gerçekleştirir.

Örneğin, basit olarak 1’den 10’a kadar ekrana yazı yazdırmayı düşünelim. Ekrana bu sayıları yazdırırken 5 sayısının ekrana yazılmadan atlanmasını ve diğer sayıların ekrana yazılmasının devam etmesini isteyelim. Continue komutunu kullanarak bu isteği aşağıdaki gibi gerçekleştirebiliriz:

INPUT:

public class Main {
    public static void main(String[] args) {
    for(int i = 0; i <= 10; i++){
        if (i == 5){
            continue;
        }
        System.out.println(i);
    }
    }
}

OUTPUT:

0
1
2
3
4
6
7
8
9
10

Yazımızı for ve while döngüleri için birkaç örnek daha yaparak sonlandıralım.

INPUT:

import java.util.Scanner;

class HelloWorld {
    public static void main(String[] args) {
        int deger,toplam, basamak, deger1;

        Scanner input = new Scanner(System.in);
        System.out.print("Sayi Giriniz : ");
        deger = input.nextInt();

        deger1 = deger;
        toplam = 0;

        while (deger1 != 0) {
            basamak = deger1 % 10;
            toplam += basamak;
            deger1 /= 10;
        }

        System.out.println("Basamaklar toplami : " + toplam);
    }
}

OUTPUT:

Sayi Giriniz : 16
Basamaklar toplami : 7
INPUT:

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int ilkSayi = 0, ikinciSayi = 1, toplam,deger;
        System.out.print("N Sayısını Girin:");
        deger = input.nextInt();
        System.out.print(ilkSayi+" "+ikinciSayi);

        for(int i = 2 ; i < deger + 1; ++i){
            toplam = ilkSayi + ikinciSayi;
            System.out.print(" "+toplam);
            ilkSayi = ikinciSayi;
            ikinciSayi = toplam;

        }
        System.out.println();
    }

}

OUTPUT:

N Sayısını Girin:8
0 1 1 2 3 5 8 13 21
INPUT:

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {


        Scanner input = new Scanner(System.in);

        System.out.print("Lutfen kac sayi girilecek? : ");
        int n = input.nextInt();

        System.out.print("Lutfen deger giriniz : ");
        int ilkDeger = input.nextInt();

        int enKucuk = ilkDeger;
        int enBuyuk = ilkDeger;
        for(int i = 0; i < n-1; i++){

            System.out.print("Lutfen deger giriniz : ");
            int deger = input.nextInt();

            if(deger > enBuyuk){
                enBuyuk = deger;
            }
            if(deger < enKucuk){
                enKucuk = deger;
            }
        }
        System.out.println("En buyuk deger : " + enBuyuk);
        System.out.println("En kucuk deger : " + enKucuk);
    }
}

OUTPUT:

Lutfen kac sayi girilecek? : 5
Lutfen deger giriniz : 15
Lutfen deger giriniz : 45
Lutfen deger giriniz : 321
Lutfen deger giriniz : 54
Lutfen deger giriniz : 34
En buyuk deger : 321
En kucuk deger : 15
INPUT:

import java.util.Scanner;

class Patika_Java_101 {
    public static void main(String[] args) {
        int nBitis;
        double toplam;

        Scanner input = new Scanner(System.in);

        System.out.print("Lutfen n sayisinin bitis degerini yaziniz : ");
        nBitis = input.nextInt();

        toplam = 0;

        for(double i = 1; i <= nBitis; i++){
            toplam += (1/i);
        }

        System.out.println("Harmonik Toplam : " + toplam);

    }
}

OUTPUT:

Lutfen n sayisinin bitis degerini yaziniz : 6
Harmonik Toplam : 2.4499999999999997

JAVA’da dizilerden bahsettiğimiz bir sonraki yazımıza buradan ulaşabilirsiniz.

JAVA9US7B9AB2H5L3R
Java’da If-Else Blokları
If – Else Blokları

Bu yazıda sizlere JAVA’da koşul bloklarını kullanabilmemizi sağlayan ifelse ve switchcase bloklarından bahsedeceğim. ifelse blokları diğer programlama dillerinde olduğu gibi JAVA’da da sık sık kullanılan ve önemli bir yere sahip ifadelerdir. ifelse blokları sayesinde yazdığımız kodlar içerisine koşullara bağlı farklı çıktı veren ya da farklı işlemler gerçekleştiren kod blokları ekleyebiliriz.

ifelse blokları, programcı tarafından mantıksal bir boolean koşulunun doğru ya da yanlış olmasına göre belirtilen eylemleri gerçekleştirmeye yarayan özelliktir. ifelse bloklarının JAVA’daki kullanımları aşağıdaki gibidir:

if (kosul1) {

  //kosul1 koşulunun true olması durumunda çalıştırılacak kod bloku

}else if (kosul2) {

  //kosul1 koşulunun false ve kosul2 kosulunun true olması durumunda çalıştırılacak kodu bloku

}else{

  //kosul1 koşulunun false ve kosul2 kosulunun false olması durumunda çalıştırılacak kodu bloku

}

Eğer ki yazdığımız kodun tek bir koşul altında farklı bir aksiyon göstermesini istiyorsak sadece if bloğunu da kullanabiliriz. Örneğin, verdiğimiz bir sayı karşılığında programın o sayının çift olduğu durumlarda dışarıya “Bu bir çift sayıdır.” yazmasını isteyelim. Diğer durumlarda programın herhangi bir aksiyon göstermemesini isteyelim. Bu durumda aşağıdaki gibi bir kod bloğu isteğimizi gerçekleştirebilir.

INPUT:

public class Main {
    public static void main(String[] args) {
        int A = 4;

        if (A % 2 == 0){
            System.out.println("Girdiğiniz sayı çift sayıdır");
        }

        }
}

OUTPUT:

Girdiğiniz sayı çift sayıdır.

Aynı zamanda aynı if bloğu içerisinde birden fazla koşula bağlı kodlar da yazabiliriz. Bunun için else if bloğunu devreye sokabiliriz. Yukarıdaki örneği çift sayıların dışında tek sayılar girildiğinde de “Bu bir tek sayıdır.” cümlesini ekrana gösterecek şekilde güncelleyelim. Böylece bu örnek için 3 koşul yazmamız gerekecektir. Bunlardan ilki verilen sayının çift olduğu durumdur, ikincisi, sayının tek olduğu durumdur ve sonuncusu ise verilen sayının bu iki koşulu da sağlamayan bir sayı olması durumudur. Örneğin verdiğimiz sayı bir ondalıklı sayı olabilir. Bu durumda bu sayı için 3. koşul devreye girer. Örneği aşağıdaki kod bloğu ile inceleyelim.

INPUT: 

public class Main {
    public static void main(String[] args) {
        double A = -5.2;

        if (A % 2 == 0){
            System.out.println("Girdiğiniz sayı çift sayıdır.");
        } else if (A % 2 == 1 || A % 2 == -1) {
            System.out.println("Girdiğiniz sayı tek sayıdır.");
        }else{
            System.out.println("Girdiğiniz sayı tam sayı değildir!");
        }

    }
}

OUTPUT:

Girdiğiniz sayı tam sayı değildir!

else ifadesi, yazdığımız if ve else if bloklarının hepsinin False olduğu durumda devreye girer ve hiçbir koşulun sağlanmadığı durumlarda alması istenilen aksiyonları gerçekleştirir.

ifelse bloklarında eğer ki ilk if koşulu sağlanırsa, koşul sağlandığında gerçekleştirilecek işlemler gerçekleştirilir ve ifelse bloğundan çıkılır.  if koşulu sağlanmazsa, if bloğundan sonra varsa else if bloğu true ise çalıştırılır ancak false ise ve başka else if bloğu varsa o çalıştırılır. Hiçbir else if bloğu true olmazsa ve else bloğu varsa else bloğu çalıştırılarak program sonlandırılır. Yani ifelse blokları yukarıdan aşağı olacak şekilde ifelse if – else yolu izlenerek çalıştırılır.

if bloğunu çalıştırırken dikkat etmemiz gereken noktalardan biri de if’in yazılış şeklidir. Eğer ki “İf” ya da “İF” şeklinde yazacak olursak if bloğu çalışmaz ve çıktı olarak bize hata döndürür. Kod bloğunda “if” şeklinde yazılmalıdır.

INPUT:

public class Main {
    public static void main(String[] args) {
        int A = 3;
        int B = 5;
        int C = 7;

        if (A > B && A > C && B > C){
            System.out.println("En büyük değer : " + A + " Ortanca değer : " + B + " En küçük değer : " + C);
        } else if (A > B && A > C && C > B) {
            System.out.println("En büyük değer : " + A + " Ortanca değer : " + C + " En küçük değer : " + B);
        } else if (B > A && B > C && C > A) {
            System.out.println("En büyük değer : " + B + " Ortanca değer : " + C + " En küçük değer : " + A);
        } else if (B > A && B > C && A > C) {
            System.out.println("En büyük değer : " + B + " Ortanca değer : " + A + " En küçük değer : " + C);
        } else if (C > B && C > A && A > B) {
            System.out.println("En büyük değer : " + C + " Ortanca değer : " + A + " En küçük değer : " + B);
        }else{
            System.out.println("En büyük değer : " + C + " Ortanca değer : " + B + " En küçük değer : " + A);
        }

    }
}

OUTPUT:

En büyük değer : 7 Ortanca değer : 5 En küçük değer : 3

ifelse bloklarının dışında koşul blokları oluşturmak için switchcase bloklarını da kullanabiliriz.

Switch-Case Blokları

Eğer birden fazla koşul içeren kod blokları yazmak istersek ifelse blokları dışında switchcase kod bloklarını da kullanabiliriz. Bu kod bloklarının çalışma mantığı ifelse’e benzer olup sonucu true olan koşulun bloğu çalıştırıldıktan sonra blok sonlandırılır. Switchcase kullanımı aşağıdaki gibidir:

INPUT:

switch(expression) {

case x:

  //Koşul sağlandığında çalıştırılacak kod bloğu

case y:

  //Koşul sağlandığında çalıştırılacak kod bloğu

}

Switchcase kullanımı daha kolay anlayabilmek için aşağıdaki örneği inceleyebiliriz.

INPUT:

public class Main {
    public static void main(String[] args) {
        int gun = 4;
        switch(gun) {

            case 1:

                System.out.println("Pazartesi");
                break;

            case 2:

                System.out.println("Salı");
                break;

            case 3:

                System.out.println("Çarşamba");
                break;

            case 4:

                System.out.println("Perşembe");
                break;

            case 5:

                System.out.println("Cuma");
                break;

            case 6:

                System.out.println("Cumartesi");
                break;

            case 7:

                System.out.println("Pazar");
                break;
        }

    }
}

OUTPUT:

Perşembe

Birden çok koşulun dahil olduğu switchcase bloklarında bir koşul sağlandıktan ve sağlanan koşulun kod bloğu çalıştırıldıktan sonra, kod bloğundan çıkılmasını istersek break komutunu kullanabiliriz. Bu ifade ile birlikte blok içerisinde daha fazla kod çalıştırılmasının önüne geçebiliriz. Break komutunun kullanımına dair yukarıdaki örneği inceleyebiliriz.

Break komutunu bize kod bloğunun çalıştırılma süresinden kazanç sağlayabilir. Bunun sebebi sadece sonucu true olan koşulun kodunun çalıştırılmasından ve diğer blokların atlanmasından dolayıdır.

Break komutunun dışında switchcase bloklarında hiçbir koşulun sağlanmadığı durumlar için default anahtar kelimesini kullanabiliriz. Bu anahtar kelime, hiçbir koşul sağlanmadığında varsayılan olarak çalıştırılması istenen kod satırlarını içerebilir. default komutu switchcase bloklarının en sonunda kullanılırsa break komutu ile beraber çalıştırılmasına gerek yoktur. default komutunun kullanımına dair örneği aşağıda inceleyebilirsiniz.

INPUT:

public class Main {
    public static void main(String[] args) {
        String sehir = "Sivas";
        switch(sehir) {

            case "İstanbul":

                System.out.println("Marmara Bölgesi");
                break;

            case "İzmir":

                System.out.println("Ege Bölgesi");
                break;

            case "Antalya":

                System.out.println("Akdeniz Bölgesi");
                break;

            case "Samsun":

                System.out.println("Karadeniz Bölgesi");
                break;

            default:

                System.out.println("Girmiş olduğunuz şehir başka bir bölgeye aittir.");
                break;
        }

    }
}

OUTPUT:

Girmiş olduğunuz şehir başka bir bölgeye aittir.

ifelse ve switchcase dışında kısa koşul ifadeleri ile de koşul blokları oluşturmamız mümkündür. Önceki yazılarımızda da bahsettiğimiz bu yöntemin kullanılışı aşağıdaki gibidir:

degisken = (kosul) ? dogruİfade :  Yanlısİfade;

Yukarıda da görüldüğü gibi bu ifade üç işlenenden oluştuğundan üçlü operatör olarak da isimlendirilebilir.

INPUT:

public class Main {
    public static void main(String[] args) {
     //degisken = (kosul) ? dogruİfade :  Yanlısİfade;

        String kelime1 = "Edirne";
        String kelime2 = "Ankara";

        String degisken = (kelime1.length() == kelime2.length()) ? ("İki kelimenin uzunluğu aynıdır.") : ("İki kelimenin uzunluğu aynı değildir.");
        System.out.println(degisken);

    }
}

OUTPUT:

İki kelimenin uzunluğu aynıdır.

Bu yazımızda sizlere JAVA’da kullanabileceğimiz koşul bloklarından bahsettim. Bir sonraki yazımızda JAVA’dan bahsetmeye devam edeceğiz.

JAVAVBZ0921LHO19WO
Java’da Operatörler

Bu yazıda sizlere JAVA’da kullanılan operatörlerden bahsedeceğim. Genel olarak yazı içerisinde mantıksal, aritmetiksel, koşul, atama ve karşılaştırma operatörlerine ve örneklerine değineceğim.

Operatörler

Operatörler, JAVA’da pek çok işlem esnasında kullanabileceğimiz ifadelerdir. Operatörler sayesinde matematiksel işlemler, değişkenlerin sahip olduğu değerleri karşılaştırma işlemi veya mantıksal işlemleri gerçekleştirebiliriz.

JAVA’da operatörleri aşağıdaki gibi ifade edebiliriz:

  • Mantıksal Operatörler
  • Aritmetik Operatörler
  • Karşılaştırma Operatörleri
  • Atama Operatörleri

Yukarıda yer alan operatör grupları içerisindeki operatörleri tablolar halinde ifade edeceğiz. Ardından operatörlerin kullanımlarına ilişkin örnekleri inceleyeceğiz.

Karşılaştırma Operatörleri

Karşılaştırma Operatörleri iki değeri karşılaştırmak için kullanılır. Aşağıdaki tabloda karşılaştırma operatörlerini görebilirsiniz.

OperatörAçıklama
==Eşittir
!=Eşit değil
Büyüktür
Küçüktür
>=Büyük ya da eşit
<=Küçük ya da eşit

Yukarıdaki tabloda yer alan karşılaştırma operatörlerini kullandığımızda çıktı olarak True ya da False ifadelerini görürüz. Bu yaptığımız karşılaştırmanın doğru olduğunu ya da yanlış olduğunu ifade eder. Örnek vermek gerekirse girdi olarak 6 > 7 ifadesini verirsek çıktı olarak False değerini alırız. Bu 6’nın 7’den büyük olmadığını ifade eder.

Tabloda yer alan operatörlerin kullanımlarına ilişkin örnekler aşağıdaki gibidir:

INPUT:

public class Main {
    public static void main(String[] args) {
        int sayi1 = 5;
        int sayi2 = 1;

        System.out.println(sayi1==sayi2);
        System.out.println(sayi1!=sayi2);
        System.out.println(sayi1>sayi2);
        System.out.println(sayi1<sayi2);
        System.out.println(sayi1>=sayi2);
        System.out.println(sayi1<=sayi2);
    }
}

OUTPUT:

false
true
true
false
true
false

Atama Operatörleri

JAVA’da bir değişkene değer atamak için atama operatörlerini kullanılır. Sol tarafta yazılan değişkene sağ tarafta yazılan değer atanır. Başlıca atama operatörleri tablodaki gibidir:

OperatörÖrnekAçıklama
=x = 10x’e 10’u atar.
+=x += 10x’e 10 ekler.
-=x -= 10x’ten 10 çıkarır.
*=x *= 10x’i 10 ile çarpar.
/=x /= 10x’i 10’a böler.
%=x %= 10x’in 10 ile bölümünden kalanı x’e atar.
INPUT:

public class Main {
    public static void main(String[] args) {
        int sayi1 = 10;

        System.out.println(sayi1 += 10);
        System.out.println(sayi1 -= 10);
        System.out.println(sayi1 *= 10);
        System.out.println(sayi1 /= 10);
        System.out.println(sayi1 %= 10);

    }
}

OUTPUT:

20
0
100
1
0

Aritmetiksel Operatörler

Aritmetiksel operatörler, çoğunlukla matematiksel işlemleri gerçekleştirmek için kullanılan operatörlerdir. Bunun dışında string ifadelerin toplanması gibi işlemlerde de aritmetiksel operatör kullanılabilir. Aritmetiksel operatörleri aşağıdaki tabloda görebiliriz.

OperatörİsimKullanımı
+Toplamaa + b
Çıkartmaa – b
*Çarpmaa * b
/Bölmea / b
%Mod Almaa % b
INPUT:

public class Main {
    public static void main(String[] args) {
        int sayi1 = 4;
        int sayi2 = 2;

        System.out.println(sayi1 + sayi2);
        System.out.println(sayi1 - sayi2);
        System.out.println(sayi1 * sayi2);
        System.out.println(sayi1 / sayi2);
        System.out.println(sayi1 % sayi2);
        }
}

OUTPUT:

6
2
8
2
0

Mantıksal Operatörler

Mantıksal operatörler sayesinde birden fazla koşulun dahil olduğu kod blogları yazabiliriz. Bu operatörler kullanıldığında sonuç olarak True ya da False değerleri döner. Döngülerde ya da ifelse bloklarında mantıksal operatörler sıklıkla kullanılır. Aşağıdaki tablo ile mantıksal operatörleri inceleyebiliriz.

OperatörİsmiAnlamıKullanımı
&&Ve operatörüİki ifade doğruysa True döndürür.A > 5 && A < 10
||Veya operatörüİki ifadeden biri doğruysa True döndürür.A > 5 || A < 10
!Değil operatörüMantıksal durumu tersine çevirir. True ise False döndürür.not(A > 5 && A < 10)
INPUT:

public class Main {
    public static void main(String[] args) {
        int A = 4;
        int B = 2;

        System.out.println(A > 5 && B < 10);
        System.out.println(A > 5 || B < 10);
        System.out.println((!(A > 5 && B < 10)));

        }
}

OUTPUT:

false
true
true

Burada bahsettiklerimizin dışında ifelse bloklarını içermeden nasıl koşul ifadesi içeren kodlar yazabileceğimizden bahsedelim.

JAVA’da yazdığımız kodların belli koşullara göre farklı sonuçlar vermesini ya da farklı işlemler gerçekleştirmesini isteyebiliriz. Bu gibi durumlar ifelse bloklarının dışında koşul operatörlerini kullanabiliriz.

Koşul içeren bir ifadeyi aşağıdaki gibi yazabiliriz:

degisken = (kosul) ? (kosul sonunda True yapılması istenen) : (kosul sonunda False yapılması istenen)

Koşul ifadeleri sayesinde kodumuzu belli şartlara ya da verilere göre çalışabilir hale getirebiliriz. İstenen ya da istenmeyen şartlar altında kodlarımız kullanıcıya nasıl tepki vermesi gerektiğini belirleyebiliriz. Bunların dışında koşul ifadeleri ile birlikte daha büyük ve kompleks kod blokları oluşturabiliriz.

INPUT:

public class Main {
    public static void main(String[] args) {
        int A = 4;
        int B = 2;
        String sonuc = (A > 5 && B < 10) ? ("Bu kosul doğrudur"):("Bu kosul yanlıştır.");
        System.out.println(sonuc);


        }
}

OUTPUT:

Bu kosul yanlıştır.

Bir sonraki yazılarımızda Java’da gerçekleştirilen işlemlerden bahsetmeye devam edeceğiz.

JAVA3N3AQ4SI94U18Z
Java’da Veri Tipleri Ve String Fonksiyonları

Bu yazıda sizlere JAVA’da değişkenleri tanımlarken kullanabileceğimiz veri tiplerinden bahsedeceğim. Genel olarak yazı içerisinde ilkel ve ilkel olmayan veri tiplerinin neler olduğundan bahsedeceğim ve ardından birkaç örnek ile nasıl kullanılabileceklerini göstereceğim.

JAVA’da veri tipleri ikiye ayrılır. Bunlardan ilki JAVA’da varsayılan olarak gelen veri tipleridir. Bu veri tiplerine ilkel veri tipleri denir.

JAVA’da kullanılabilen diğer veri tipleri ise kullanıcı tarafından tanımlanabilen ilkel olmayan veri tipleridir.

Değişkenleri tanımlarken değişkenin veri tipini mutlaka belirtmemiz gerekir. Ayrıca bir değişken hangi veri tipinde tanımlanmışsa o veri tipinde değer ataması gerçekleştirilmelidir. Aksi takdirde programımız çalıştığında hata alacaktır.

İlk olarak JAVA’da varsayılan olarak gelen ilkel veri tiplerinden bahsedelim.

İlkel Veri Tipleri

JAVA’da ilkel olan 8 tane veri tipi vardır. Bunlar byte, short, int, long, float, double, boolean ve char’dır.

Byte: -128’den 127’e kadar olan tamsayıları saklar. Bellek’te 1 bayt boyutunda yer kaplar. byte anahtar kelimesi ile kullanılır.

byte sayi = 2;

Short: -32,768’den 32,767 kadar olan tam sayıları saklar. Bellek’te 2 bayt boyutunda yer kaplar. short anahtar kelimesi ile kullanılır.

short sayi = 30000;

integer: -2,147,483,648’den 2,147,483,647 kadar olan tam sayıları saklar. Bellek’te 4 bayt boyutunda yer kaplar. int anahtar kelimesi ile kullanılır.

int sayi = 50;

long: -9,223,372,036,854,775,808’den 9,223,372,036,854,775,807 kadar olan tam sayıları saklar. Bellek’te 8 bayt boyutunda yer kaplar. Long veri tipindeki bir değişkene değer atanırken değerin sonuna ‘L’ eklenmelidir. long anahtar kelimesi ile kullanılır.

Long sayi = 50L;

float: Ondalık sayıları saklamak için kullanılır. 1.4×10^-45 ile 3.4×10^38 aralığında bir değer tanımlanabilir. Float veri tipindeki bir değişkene değer atanırken değerin sonuna ‘f’ eklenmelidir. Bellek’te 4 bayt boyutunda yer kaplar. float anahtar kelimesi ile kullanılır.

float sayi = 36.70f;

Double: Ondalık sayıları saklamak için kullanılır. 4.9×10^-324 ile 1.8×10^308 aralığında bir değer tanımlanabilir. Bellek’te 8 bayt boyutunda yer kaplar. Double veri tipindeki bir değişkene değer atanırken değerin sonuna ‘d’ eklenmelidir. double anahtar kelimesi ile kullanılır.

double sayi = 36.7054354d;

Boolean: Mantıksal bir veri tipi olan boolean, True ve False olmak üzere iki değere sahiptir. Mantıksal olarak doğru olan duruma True, yanlış olan duruma ise False değeri karşılık gelir. boolean anahtar kelimesi ile kullanılır. Bellek’te 1 bit boyutunda yer kaplar.

boolean statu = true;

Char: Verilen herhangi bir karakterin kendisini ya da ASCII tablosunda karşılık gelen değerini saklamak için kullanılan veri tipidir. Bellek’te 2 bayt boyutunda yer kaplar. char anahtar kelimesi ile kullanılır.

char karakter = ‘C’;

char karakter = 65;

Buraya kadar ki bölümde ilkel veri tiplerinden ve örneklerinden bahsettik. Şimdi ise ilkel olmayan veri tiplerinden bahsedelim.

Java’da tanımladığımız değişkenlerin veri tiplerini öğrenmek için .getClass() metodunu ya da instanceOf ifadesini kullanabiliriz. Böylelikle tanımladığımız değişkenlerin sınıflarını görebiliriz. Örnek kullanım aşağıdaki gibidir:

INPUT:

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.getClass());
    }
}

OUTPUT:

class java.lang.String
INPUT:

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize instanceof String);
    }
}

OUTPUT:

true
İlkel Olmayan Veri Tipleri

Daha öncede bahsettiğim gibi ilkel olmayan veri tipleri JAVA’da tanımlı olmayan programcı tarafından tanımlanan veri tipleridir.  Bu veri tiplerinin örnekleri aşağıdaki şekildeki gibidir:

İlkel Olmayan Veri Tipleri

Biz bu yazımızda sadece String veri tipinden bahsedeceğiz. Diğer başlıklara sonraki yazılarımızda değineceğiz.

String: String, çift tırnak içerisine yazılabilen bir ya da daha fazla harf, sayı veya özel karakterlerden oluşan bir dizidir. Tırnaklar arasına yazılan her karakter dizenin bir parçasıdır.

String dize = “Merhaba”;

JAVA’da String, dizeler üzerinde belirli işlemleri gerçekleştirebilen metodları içeren bir nesnedir. Bu sebeple string ifadeler üzerinde bazı fonksiyonları kullanarak işlemler gerçekleştirebiliriz.

String Fonksiyonları

length() Fonksiyonu : String ifadeler içerisindeki karakter sayısını bulmak için kullanılan fonksiyondur.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.length());
    }
}

toUpperCase() Fonksiyonu: String ifadeler içerisindeki tüm karakterleri büyük olarak yazmak için kullanılır.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.toUpperCase());
    }
}

toLowerCase() Fonksiyonu: String ifadeler içerisindeki tüm karakterleri küçük olarak yazmak için kullanılır.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.toLowerCase());
    }
}

indexOf Fonksiyonu: IndexOf fonksiyonu belirtilen ifadenin string içerisinde geçtiği ilk konumu bulmak için kullanılır. Çıktı olarak metnin string içerisinde başladığı index numarasını döndürür. Index numarasını sayarken boşluklarda dahil edilir.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.indexOf("a"));
    }
}

contains() Fonksiyonu: İçerisine yazdığımız karakterin ya da karakter grubunun string içerisinde var olup olmadığını sorgular. Çıktı olarak True ya da False döndürür.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.contains("a"));
    }
}

endsWith() Fonksiyonu: String ifadenin belirtilen karakter ya da karakter grupları ile bitip bitmediğini sorgular. Çıktı olarak True ya da False döndürür.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.endsWith("a"));
    }
}

equals() Fonskiyonu : İki string ifadeyi karşılaştırmak için kullanılır. Eğer string ifadeler eşitse True değilse False döndürür.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       String dize1 = "Dünya";
       System.out.println(dize.equals(dize1));
    }
}

isEmpty() Fonksiyonu: Bir string ifadenin içerisinin boş olup olmadığını sorgulamak için kullanılır. Çıktı olarak True ya da False döndürür.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.isEmpty());
    }
}

replace() Fonksiyonu: Cümle içerisindeki bir karakteri ya da kelimeyi istenilen karakter veya kelime ile değiştirmek için kullanılan fonksiyondur.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.replace("e","a"));
    }
}

startsWith() Fonksiyonu: String ifadenin belirtilen karakter ya da karakter grupları ile başlayıp başlamadığını sorgular. Çıktı olarak True ya da False döndürür.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       System.out.println(dize.startsWith("a"));
    }
}

trim() Fonksiyonu: String ifade içerisindeki sağdan ve soldan boşlukları silmek için kullanılır.

public class Main
{
    public static void main(String[] args) {
       String dize = " Merhaba ";
       System.out.println(dize.trim());
    }
}

concat() Fonksiyonu: İki string ifadeyi birleştirmek için kullanılan fonksiyondur.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       String dize1 = " Dünya";
       System.out.println(dize.concat(dize1));
    }
}

İki veya daha fazla string ifadeyi birleştirmek için concat() fonksiyonunun dışında “+” operatörü de kullanılabilir.

public class Main
{
    public static void main(String[] args) {
       String dize = "Merhaba";
       String dize1 = "Dünya";
       System.out.println(dize + " " + dize1);
    }
}

İlkel veri tipleri ile ilkel olmayan veri tiplerinden bahsettiğimize göre şimdi bu iki grubun arasındaki farklara göz atalım.

İlkel Veri Tipleri İle İlkel Olmayan Veri Tipleri Arasındaki Farklar

İlkel veri tipleri ile ilkel olmayan veri tipleri arasındaki temel farklara aşağıdaki tablodan göz atabiliriz.

İlkel Veri Tipleriİlkel Olmayan Veri Tipleri
Java’da tanımlıdır.Kullanıcı tarafından tanımlanır.
Boş değer alamaz.Boş değer alabilir.
Boyutu veri türüne bağlıdır.Tümü aynı boyuta sahiptir.
Küçük harf ile başlar.Büyük harfle başlar.

Bu yazımızda JAVA’daki ilkel ve ilkel olmayan veri türlerinden bahsedip örnek kullanımlarını gördük. Aynı zamanda ilkel ve ilkel olmayan veri türleri arasındaki farkları da incelemiş olduk. Bir sonraki yazımızda JAVA’dan bahsetmeye devam edeceğiz.

JAVAG33L1R9L08D32S
Java ile Temel Programlama #2

Bu yazımızda sizlere JAVA’da temel ifadelerden bahsetmeye devam edeceğim. Genel olarak yazı içerisinde yorum satırları, kaçış ifadeleri, değişkenler ve veri tiplerinden bahsedeceğim.

Java’da yazdığımız her ifadenin derleyici tarafından kod olarak algılanması istemeyiz. Bunun nedeni yazdığımız kodun ya da yaptığımız işlemlerin, kodu okuyanlar tarafından daha iyi bir şekilde anlaşılması için yorumlar eklemek isteyebiliriz. Bu gibi durumlar için JAVA bizlere yorum satılarını kullanma imkanı sunar. Bir ya da daha fazla satırı yorum satırı olarak işaretlediğimizde derleyici tarafından o satırların kod olarak değerlendirilmemesini sağlarız.

Yorum satırları kod yazarken herhangi bir anda kullanılabilir. Bu kullanma sıklığı kodu yazan kişiye bağlıdır. Herhangi bir hazır fonksiyonun detaylarını incelediğinizde ya da orta-büyük projelere göz attığınızda yorum satılarının sıklıkla kullanıldığını görebilirsiniz.

JAVA’da Yorum Satırları

Programlama dillerine göre yorum satılarının kullanım şekillleri değişebilir. JAVA’da yorum satırının 3 farklı kullanım şekli vardır. Bunlardan ilki tek satırlık yorum satırı oluşturmak için kullanılan // işaretidir. Bu işareti kullandığımız satır farklı bir renkte yorum satırı olarak gözükür. Buraya Türkçe karakter içeren ifadelerde yazılabilir. Tek satırlık yorum satırı örneği aşağıdaki gibidir:

public class HelloWorld{

     public static void main(String []args){
      //Bu bir yorum satiridir.
     }
}

Eğer ki birden fazla satırı kullanarak kodumuzu açıklamak istersek /* … */ ifadelerini kullanabilir. /* ile başlayan ve */ ile biten satırlar arasına istediğimiz şekilde açıklamalar yazabilir. Bu yazılan açıklamalarda derleyici tarafından kod statüsüne alınmaz. Yukarıdaki tek satırlık yorum satırında olduğu gibi bu alanlara da Türkçe karakterli ifadeler yazılabilir. /* … */ ifadesinin kullanım örneği aşağıdaki gibidir:

public class HelloWorld{

     public static void main(String []args){
      /*
      Bu bir yorum satırıdır.
      
      Bu da bir yorum satırıdır.
      
      Bu da yorum satırıdır.
      
      */
      
     }
}

Son olarak /** … */ ifadesinden bahsedelim. Bu ifade genel olarak kod içi dökümantasyon amacıyla kullanılır. Uygulamalar yazıldıktan sonra raporlamaları yapılır. Kod geliştirmesi yapılırken kullanılan bu ifadeler arasına yazılan açıklamalar, özel etiketler içerebilirler. Kullanılan özel etiketleri tanıyan uygun bir araç vasıtasıyla bu açıklamalar dökümantasyonlara dönüştürülebilir. Bu dökümantasyonlar raporlar arasına eklenerek yazılım geliştiren ekibin rapor yükünü hafifletir.

/** … */ ifadesi içerisinde kullanılabilecek bazı özel etiketler aşağıdaki tabloda verilmiştir.

EtiketAçıklamaKullanış Şekli
@authorSınıfı oluşturan kişiyi ifade eder.@author yazar adı
{@code}Yazılan kodun derleyici tarafından kod olarak değerlendirilmeden kullanım örneğini vermek için kullanılır.{@code …}
@exceptionDökümantasyona, yazılan kodun istisnai durumlarını yazmak ve açıklamak için kullanılır.@exception istisnai durum
@paramKullanılan parametreleri ve bu parametlerin açıklamaları için kullanılır.@param parametre ismi – açıklaması
@returnKullanılan metodlardan döndürülen ifadelerin açıklaması için kullanılır.@return açıklama
@seeHerhangi başka bir ifadeyi referans göstermek için kullanılır. Örneğin başka bir metot.@see referans
@sinceDökümantasyonda, oluşturulan ifadeler için tarih bilgisi eklenilmesinde kullanılır.@since tarih
@versionOluşturulan dökümantasyonlara versiyon bilgisi eklemek için kullanılır.@version versiyon numarası
/**
* @author  Erhan Eskin
* @version 1.0
* @since   01-01-2022
*/

public class OrtalamaHesaplama{
    /** 
    *Bu sinif icerisinde tanimlayacagimiz uc degisken ile
    *degiskenlere atadigimiz degerleri toplayip
    * toplam degisken sayisina bolecegiz
    * bu islemi simdilik statik olarak gerceklestirecegiz
    * @param sayi1 bizim ilk degiskenimiz olacak
    * @param sayi2 bizim ikinci degiskenimiz
    * @param sayi3 bizim ucuncu degiskenimiz
    * @param toplam bizim dorduncu degiskenimiz
    * @param ortalama bizim besinci degiskenimiz
    * bu islemlerin ardindan sonuc olarak
    * @return ortalama ifadesini ekranda gorecegiz
    * 
    */ 
    
    public int ortalamaHesaplama (int sayi1, int sayi2, int sayi3) {
            int toplam,ortalama;
            toplam = sayi1 + sayi2 + sayi3;
            ortalama = toplam / 3;
            return ortalama;
   }


    public static void main(String[] args) {
        int hesap1;
        OrtalamaHesaplama nesne = new OrtalamaHesaplama();
        hesap1 = nesne.ortalamaHesaplama(20,30,40);
        System.out.println("ortalama :" + hesap1);
    }
}

Kodlama yaparken kullanabileceğimiz yorum satırlarımızdan bahsettiğimize göre şimdi kaçış operatörlerinden bahsedelim.

JAVA’da Kaçış Operatörleri

JAVA’da kullanılabilen kaçış operatörlerinden bazılarını aşağıdaki tablodan inceleyebilirsiniz.

Kaçış OperatörüAçıklaması
\tBir tab boşluğu ekler.
\nBir satır aşağı atlar.
\rSatır başı ekler.
\fSayfa sonunu belirtir.
\’Tek tırnak ekler.
\’’Çift tırnak ekler
\\Ters eğik çizgi ekler.

JAVA’da kaçış operatörlerini kullanarak yazdığımız kodların okunabilirliğini artırabiliriz. Kaçış operatörlerinin kullanımlarına ait örnek aşağıdaki gibidir:

INPUT:

public class Main
{
    public static void main(String[] args) {
        System.out.println("Bu bir\ndeneme boşluğudur");
    }
}

OUTPUT:

Bu bir
deneme boşluğudur
INPUT:

public class Main
{
    public static void main(String[] args) {
        System.out.println("Bu bir\tdeneme boşluğudur");
    }
}

OUTPUT:

Bu bir	deneme boşluğudur

Bu yazımızın son bölümünde değişkenler ve veri tiplerinden bahsederek yazımızı sonlandıralım.

JAVA’da Değişkenler Ve Veri Tipleri

Değişken (variable), girdiğimiz ya da atadığımız bazı değerlerin geçiçi olarak hafızada saklanması için oluşturulan alanlara denir. Bir değişkene herhangi bir değer atamak için “ = ” ifadesi kullanılır. Örnek olarak:

int deger = 4

Değişkenler sayesinde kullanacağımız ifadeleri hafıza saklar ve gerektiği durumlarda kullanırız. Bir değişken tanımlanırken belirtilen veri tipindeki değerleri saklayabilir. Örneğin int olarak tanımladığımız bir değişkene string(dize) bir değer ataması gerçekleştirirsek program bize çıktı olarak hata verir. Böyle durumlarda yazdığımız programımız basit bir sebepten dolayı kesintiye uğramış olur.

Eğer tanımlamış ve değer atamış olduğumuz bir değişkene tekrar değer ataması yapılırsa son atanan değer o değişkenin değeri olur.

JAVA’da değişkenlerin tanımlabileceği farklı veri tipleri vardır. Bu veri tipleri JAVA’da varsayılan olarak gelen ilkel veri tipleri olabilirken kullanıcının kendi tanımlayabileceği veri tipleri de olabilir. İlkel veri tiplerinin her zaman bir değeri vardır. İlkel olmayan veri tipleri boş olarak tanımlanabilir.

Bunların dışında ilkel veri tiplerinin boyutları veri tipine göre değişikleri gösterirken ilkel olmayan veri tiplerinin boyutları aynıdır.

JAVA’da değişken aşağıdaki gibi tanımlanabilir:

veri tipi değişken adı = deger

Aşağıdaki tabloda JAVA’da var olan 8 ilkel veri tipini inceleyebilirsiniz.

Veri TipiBoyutAçıklama
byte1 bayt-128’den 127 kadar olan tam sayıları saklar.
short2 bayt-32,768’den 32,767 kadar olan tam sayıları saklar.
int4 bayt-2,147,483,648’den 2,147,483,647 kadar olan tam sayıları saklar.
long8 bayt-9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 aralığında olan tam sayıları saklar.
float4 baytOndalık sayıları saklamak için kullanılır. 1.4×10^-45 ile 3.4×10^38 aralığında bir değer tanımlanabilir.
double8 baytOndalık sayıları saklamak için kullanılır. 4.9×10^-324 ile 1.8×10^308 aralığında bir değer tanımlanabilir.
boolean1 bitTrue ya da False adında mantıksal bir değer saklamak için kullanılır.
char2 baytHerhangi bir karakterin ASCII tablosundaki değerini saklar.

Yukarıdaki tabloyu incelediğimizde JAVA’da var olan ilkel veri tiplerini özetle incelemiş olduk. Bir sonraki yazımızda JAVA’da var olan bu ilkel veri tiplerinde örneklerden ve ilkel olmayan veri tiplerinden bahsedeceğiz. Bir sonraki yazıya buradan erişebilirsiniz.

JAVAECWJQP43S6OG9J
Java ile Temel Programlama #1

Bu yazımızda sizlere pek çok alanda kullanılan ve popüler bir programlama dili olan Java’dan bahsedeceğim. Genel olarak yazı içerisinde Java’nın ne olduğundan, nerelerde kullanılabildiğinden, yazım ve isimlendirme kurallarından bahsedeceğim. Son olarak da Java ile ilk kodumuzu yazarak yazımızı sonlandıracağım. O halde Java’nın ne olduğundan ve nerelerde kullanabileceğinden bahsetmeye başlayalım.

Java Nedir ve Nerelerde Kullanılabilir?

James Gosling

Java 1995 yılından çıkış yapan ve Sun Microsystems mühendislerinden James Gosling tarafından geliştirilen açık kaynak kodlu, nesne yönelimli ve yüksek seviyeli bir programlama dilidir. Java’yı Windows, MAC OS ve UNIX gibi işletim sistemlerinde kullanmak mümkündür. Syntax, üzerinde çalıştığımız programlama dilinin kendine has program yapısını ve bu yapının kurulmasında kullanılan kuralları ifade eder. Java’nın söz dizimi yapısı C/C++’a benzerdir. Bunun sebebi Gosling’in, programcılar için Java’nın kolay öğrenilebilen bir dil olmasını sağlamak istemesiydi.

Gosling, Java projesini ilk olarak 1991 yılında İnteraktif televizyonlar için geliştirmeye başlamıştı. Java’ya ilk olarak OAK ismini vermişti. Bu isim Gosling’in ofisinin yanında bulunun bir meşe ağacından gelmekteydi. Daha sonralarında ise projenin ismi Green olsa da son olarak Java ismini aldı.

Java’nın şu anda kullanılan en güncel sürümü 22 Mart 2022 tarihinde yayınlanan Java SE 18’dir.

Java kodlarını kullanarak program yazabilmek için IDE’lere ihtiyaç duyarız. Bir IDE (Integrated Development Environment, Tümleşik Geliştirme Ortamı), yazılım geliştirme için bilgisayar programcılarına kapsamlı olanaklar sağlayan bir yazılım uygulamasıdır. Java için Eclipse ve IntelliJ IDEA gibi ücretsiz IDE’ler kullanabiliriz. Bu IDE’leri indirmek ve bilgisayarınıza kurmak için resmi sayfalarını ziyaret edebilirsiniz.

Java Kullanım Alanları

Java programlama dilini kullanarak mobil, web ve masaüstü uygulamalar geliştirmek mümkündür. Günümüzde telefon, tablet ve bilgisayarlardan oynayabildiğimiz oyunlarda Java ile yazılabilir. Örnek olarak, popüler oyunlardan biri olan Minecraft, Java ile yazılmıştır. Bunlar dışında bilimsel uygulamaların yazımında, büyük veri teknolojilerinde, gömülü sistemlerde ya da finans uygulamalarında Java kullanmak mümkündür. Tabii ki bu alanlar için farklı programlama dilleri de mevcut fakat Java da bu alanlarda kullanılabilen programlama dillerinden biridir.

Java’da Yazım ve İsimlendirme Kuralları

Yazım Kuralları

Java’da var olan yazım kuralları aşağıdaki gibidir:

  • Değişken isimleri rakamlar ile başlayamaz.
  • Türkçe karakter metin ifadeleri dışında kullanılamaz.
  • Var olan fonksiyon veya özel isimler değişken ismi olarak tanımlanamaz.
  • Değişken isimleri birden fazla kelimeden oluşuyorsa arada boşluk kullanılamaz. Bu durumda araya ‘_’ eklenebilir ya da kelimeler birleştirilebilir.
  • Java küçük-büyük harfe duyarlı bir dildir. Örneğin ‘degisken’ isimli değişken ile ‘Degisken’ isimli bir değişken aynı değildir.
  • Bir değişken tanımlanırken önce değişkenin veri tipi ardından değişken ismi yazılmadır.
  • Komutların sonuna ‘ ; ’ ifadesi eklenir.
  • Değişken isimleri rakam ile başlamadığı taktirde kelime içerisinde rakam kullanılabilir.
  • Sınıf ismi yazılırken uyulması gereken kurallar, değişken tanımlanırken kullanılması gereken kurallar ile aynıdır.

İsimlendirme Kuralları

Java’da değişkenler, metotlar, sınıflar ve sabit değerler için isimlendirme kuralları vardır. Bu kurallara uyulmadığında program hata vermez ancak bu kurallar sayesinde okunabilirlik artar. Bu isimlendirme kurallarında kullanılan isimlendirme türlerini inceleyelim.

Upper Camel Case: Birden çok kelimenin bir araya gelerek oluşturduğu birleşik kelimedeki her bir kelimenin ilk harfinin büyük olması kuralıdır. Örneğin;

BirlesikKelime

Lower Camel Case: Birden çok kelimenin bir araya gelerek oluşturduğu birleşik kelimedeki ilk kelime hariç diğer kelimelerinin ilk harflerinin büyük olması kuralıdır. Örneğin;

birlesikKelime

Snake Case: Birden çok kelimenin bir araya gelerek oluşturduğu birleşik kelimelerin her birinin ‘_’ ile birbirine bağlanması kuralıdır. Kendi içerisinde Lower Snake Case ve Upper Snake Case olarak ikiye ayrılır.

Lower Snake Case Örneği; birlesik_kelime

Upper Snake Case Örneği; Birlesik_Kelime

Screaming Snake Case: Birden çok kelimenin bir araya gelerek oluşturduğu birleşik kelimelerin her birinin ‘_’ ile birbirine bağlandığı ve her bir kelimenin her harfinin büyük yazıldığı kuralıdır. Örneğin;

BIRLESIK_KELIME

Aşağıdaki tabloyu inceleyerek değişkenler, metotlar, sınıflar ve sabit değerler için isimlendirme kurallarını görebilirsiniz.

TürKuralÖrnek
SınıfUpper Camel Casepublic class ClassName{}
DeğişkenLower Camel CasevariableName
MetotLower Camel Casepublic int numberOfClasses{}
Sabit DeğerScreaming Snake Casefloat VALUE_OF _PI

Java’da isimlendirme kurallarının da neler olduğunu öğrendiğimize göre artık ilk çalışan programımızı yazabiliriz. İlk çalışan programımız, programlama dili öğrenirken adeta klasikleşen ekrana ‘Merhaba Dünya’ yazdırmak olsun.

Java’da Ekrana Veri Gösterme

Java’da ekrana çıktı bastırmak için ‘system.out.println()’ komutu kullanılabilir. Bu komutun içerisine yazacağımız herhangi bir değeri program çalıştırıldığında çıktı ekranında görürüz.

Burada bir diğer önemli nokta ise bu komutlarımızı Java’da nereye yazmamız gerektiğidir. Programı çalıştırdığımız anda bu komutlar okunmalı ve bize çıktı olarak istediğimiz değerler yansımalıdır. Bunun için aşağıdaki görsele göz atalım.

public class ClassName {
    public static void main(String[] args) {
        System.out.println("Merhaba Dünya");
   }
}

Kod bloğunda da görüldüğü gibi kodlar Java’da sınıf içerisine yazılır. Main metodu ise program çalıştığı anda çalıştırılan bir metottur. Main metodunun içerisine gövde (body) adı verilir. Kodumuzu bu main metodunun gövdesinin içerisine yazarak program çalıştırıldığı anda system.out.println() komutunu çalıştır demiş olduk. Buraya yazdığımız kod derleyici tarafından yorumlandıktan sonra bize çıktı olarak gösterilir.

System.out.println() komutu ile ekrana pek çok veriyi çıktı olarak gösterebilir, değişken sonuçlarını yansıtabilir veya matematiksel sonuçları yazdırabiliriz.

public class ClassName {
    public static void main(String[] args) {
      int deger = 8;  
      System.out.println("Sayinin degeri : " + deger);
   }
}
public class ClassName {
    public static void main(String[] args) {
      int sayi1 = 8;
      double sayi2 = 1.2;  
      System.out.println("Toplam Deger : " + (sayi1 + sayi2));
   }
}

Bu yazımızda sizlere Java’da temel bilgilerden bahsettim. Bir sonraki yazımızda Java’da yorum satırlarından, kaçış karakterlerinden, değişken ve veri tiplerinden bahsedeceğiz. Bir sonraki yazıya buradan erişebilirsiniz.

JAVASWO142JCV14919

Python ile Veritabanı İşlemleri #1

Bu bölümde sizlere Python’da veritabanı işlemlerinin nasıl gerçekleştiğinden bahsedeceğim. Bu yazı kapsamında SQLITE ile veritabanı işlemleri gerçekleştirilecektir. SQLITE kullanmamızın sebebi, herhangi bir sunucuya ek bağlantı yapmadan SQL sorgularını hızlı ve taşınabilir dosya sistemlerinde kullanabilmektir. SQLITE veritabanı oldukça güçlü bir veritabanıdır. Burada kullanacağımız SQL sorgularını web sitemizde yer alan “SQL İle Veritabanı İşlemleri” yazılarında detaylı bir şekilde inceleyebilirsiniz. İlk olarak SQLITE bağlantısının nasıl yapılacağından bahsedelim.

Python’da SQLITE Bağlantısı Kurma

Python ile veritabanı işlemlerini gerçekleştirebilmek için SQLITE veritabanı ile ilk olarak bağlantı kurmamız gerekir. Bunun için SQLITE modülünü aşağıdaki gibi Python’a çağırmalıyız.

İmport sqlite3

Artık SQLITE veritabanına Python ile erişim sağlayabiliriz. Eğer kullandığımız SQLITE modülünün versiyonunu öğrenmek istersek aşağıdaki kodu kullanabiliriz.

INPUT: 

sqlite3.version


OUTPUT:

2.6.0

Veritabanı Oluşturma

Şimdi ise veritabanımızı oluşturalım. Bunun için aşağıdaki kod kullanılabilir.

musteriler = sqlite3.connect(“musteriler.sqlite”)

sqlite3.connect() fonksiyonu hem var olan bir veritabanına bağlanmak hem de yeni bir veritabanı oluşturmak için kullanılır. Ben burada Jupyter tabanlı Google Colab’ta kodları yazdığım için eğer var olan bir veritabanına bağlanmak isteseydim Google Drive’a veritabanı dosyasını yüklemem gerekirdi. Google Colab’ta kullandığınız Google hesabınız ile Google Drive’deki hesabınızın aynı olmasına ve bağlantı kurmuş olduğunuza dikkat ediniz.

Eğer var olan bir veritabanına bağlanmak isteseydim, veritabanının bulunduğu yolu sqlite3.connect() içerisine yazmam gerekirdi. Ben burada musteriler adlı yeni bir veritabanı oluşturdum. Eğer ki veritabanınızı istediğiniz yere kurmak istiyorsanız, kurmak istediğiniz yerin dosya yoluna veritabanı adınızı ekleyip sqlite.connect() içerisine yazabilirsiniz. Örnek olarak:

sqlite3.connect(“D:/ … /yeni klasör/veritabanım.db”)

Bu işlemin ardından veritabanımız oluşturuldu. Veritabanı üzerinde işlem yapabilmek için imleç tanımlamamız gerekir. Bu imleci tanımlamak için cursor() özelliği kullanılabilir. Veritabanımız üzerinde işlem yapabilmek için imleç oluşturalım.

imlec = musteriler.cursor()

Veritabanına Tablo Ekleme

Yukarıdaki işlemlerin ardından artık veritabanımızda sorgular ile işlemler gerçekleştirebiliriz. Veritabanımızda bir MusteriTablosu isimli bir tablo oluşturalım. Yazdığımız sorgu komutlarının veritabanında çalışması için execute() özelliğini kullanmalıyız.

INPUT: 

imlec.execute('''CREATE TABLE IF NOT EXISTS MusteriTablosu(
                          MusterID INT NOT NULL,
                          MusteriAd  varchar(20),
                          MusteriSoyad varchar(30),
                          MusteriYas TINYINT,
                          MusteriCinsiyet  char(1),
                          MusteriGeliri  Decimal(7,2),
                          MusteriToplamBorc  Decimal(7,2),
                          MusteriTaksitSayisi  TINYINT,
                          MusteriAylikOdeme Decimal(4,2))''')

Yukarıdaki kodda müşterilerimizin bazı bilgilerini tutan bir tablo oluşturduk. Bu tabloyu oluştururken IF NOT EXISTS dememizin sebebi, eğer böyle bir tablo yok ise oluştur demektir. Veritabanında işlemler gerçekleştirirken farkına varmadan yapılabilecek hataların önüne geçmek için kullanılabilir. MusterID sütununun birincil anahtar olduğunu ve boş olamayacağını belirttikten sonra diğer sütunlarımızı ve veri türlerini yazıp kod bloğunu çalıştırdık. Böylece veritabanımızda 9 sütunlu MüsteriTablosu isimli bir tablo oluşturulmuş oldu. Eğer SQLITE daha fazla incelemek isterseniz buraya tıklayarak resmi sayfaya gidebilirsiniz.

Şimdi ise oluşturduğumuz bu tabloya veri girişini sağlayalım. Birden fazla veriyi tek tek girmek yerine bir for döngüsü oluşturalım. Liste içerisine yazdığımız veriler döngü ile veritabanına aktaralım. Bunun için aşağıdaki kod bloğu kullanılabilir.

INPUT:

def  VeriGirisi(veri):
        for veriler in veri:
               imlec.execute(“INSERT INTO MusteriTablosu Values(?,?,?,?,?,?,?,?,?)”,veriler)
               musteriler.commit()
verilerim = [[136752, “Ahmet”, “Yenidoğan”,36,”E”, 4500.00, 3800.00, 6, 633.34], 
             [127650, “Ece”, “Gündüz”, 28,”K”, 3655.00, 1760.00, 4, 440.00], 
             [201638, “Ali”, “Çelik”, 46,”E”, 6500.00, 8900.00, 12, 741.67], 
             [518023, “Gizem”, “Duyar”, 23, “K”, 3500.00, 2750.00, 12, 229.17], 
             [812503, “Aslı”, “Çevik”, 26, “K”, 3000.00, 1650.00, 6, 550.00], 
             [437612, “Mehmet”, “Bekçi”, 35, “E”, 6500.00, 4800.00, 12, 400.00], 
             [356721, “Betül”, “Çevreci”, 26, “K”, 2800.00, 1400.00, 6, 233.34], 
             [971025, “Cenk”, “Kahraman”, 33, “E”, 4250.00, 9800.00, 12, 816.67]]

Yukarıda görüldüğü gibi 8 adet verimiz var. Bu verileri döngü ile veritabanına aktarma işlemini bir fonksiyon olarak tanımladık. Bu fonksiyonu çağırmak ve içerisine verilerin listesini yerleştirmemiz gerekiyor.

VeriGirisi(verilerim)

Yukarıda fonksiyonu tanımlarken imlec.commit() diye bir kod yazdık. Bu kod her veriyi disk üzerine yazmayı sağlar. Girilen veriler sadece bellekte olur ve disk üzerine yazılmaz. Bizde bağlantıyı koparmadan commit() fonksiyonu ile verilerimizi diske yazıyoruz. Eğer veritabanı üzerinde yapacağımız işlemler sonlandıysa veritabanımızı mutlaka kapatmalıyız. Bunun için close() fonksiyonu kullanılabilir.

musteriler.close()

Böylece veritabanımızı kapatmış olduk. Eğer veritabanı üzerinde yeniden işlem yapmak istersek tekrar bağlantı kurmamız gerekir. Veritabanımızın veri girişi yapıldıktan sonraki halini görmek için listeleyelim. Bunun için aşağıdaki kodlar kullanılabilir.

INPUT:

musteriler = sqlite3.connect("musteriler.sqlite")
imlec = musteriler.cursor()
imlec.execute("Select * From MusteriTablosu") 
liste = imlec.fetchall()
print("Müsteriler Listesi")
print("----------------------------------------------------------")
for müsteri in liste:
      print("Müsteri ID : {}\nMüşteri Adı : {}\nMüsteri Soyadı : {}\nMüşteri Yaş : {}\nMüşteri Cinsiyet : {}\nMüşteri Gelir : {}\nMüşterinin Borc : {}\nMüşteri taksit sayısı :{}\nMüşteri Aylık Ödeme : {}".format(müsteri[0], müsteri[1], müsteri[2], müsteri[3], müsteri[4], müsteri[5], müsteri[6], müsteri[7], müsteri[8]))
      print("-----------------------------------------------------")
musteriler.commit()
musteriler.close()










-

OUTPUT:

Müsteriler Listesi
-------------------------------------------
Müsteri ID : 136752
Müşteri Adı : Ahmet
Müsteri Soyadı : Yenidoğan
Müşteri Yaş : 36
Müşteri Cinsiyet : E
Müşteri Gelir : 4500
Müşterinin Borc : 3800
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 633.34
-------------------------------------------
Müsteri ID : 12765
Müşteri Adı : Ece
Müsteri Soyadı : Gündüz
Müşteri Yaş : 28
Müşteri Cinsiyet : K
Müşteri Gelir : 3655
Müşterinin Borc : 1760
Müşteri taksit sayısı :4
Müşteri Aylık Ödeme : 440
                         ...

Veri Çekerken Kullanılabilecek Farklı Fonksiyonlar

Yukarıda yazdığım kod bloğuyla ilk önce veritabanına bağlandım. Ardından veritabanı üzerinde imleç oluşturdum. Bu adımdan sonra veritabanındaki tüm verileri çektim. fetchall() fonksiyonunu kullanarak tüm verileri çağırıp listeye aldım. Eğer burada fetchone() fonksiyonunu kullansaydım verileri tek tek çağırıp listelerdim. fetchone() fonksiyonu her çalıştığında bir sonraki satır listelenir. Bu iki fonksiyonun dışında fetchmany() fonksiyonu bulunur. Bu fonksiyon ile istediğimiz satırı listeyebiliriz.  Yukarıdaki kod bloğunu fetchone() ve fetchmany() ile tekrar çalıştırıp sonuçları görelim.

INPUT:

musteriler = sqlite3.connect("musteriler.sqlite")
imlec = musteriler.cursor()
imlec.execute("Select * From MusteriTablosu") 
liste = imlec.fetchone()
print("Müsteriler Listesi")
print("----------------------------------------------------------")
print("Müsteri ID : {}\nMüşteri Adı : {}\nMüsteri Soyadı : {}\nMüşteri Yaş : {}\nMüşteri Cinsiyet : {}\nMüşteri Gelir : {}\nMüşterinin Borc : {}\nMüşteri taksit sayısı :{}\nMüşteri Aylık Ödeme : {}".format(liste[0], liste[1], liste[2], liste[3], liste[4], liste[5], liste[6], liste[7], liste[8]))
print("----------------------------------------------------------")
musteriler.commit()
musteriler.close()


-
OUTPUT:


Müsteriler Listesi
----------------------------------------------------------
Müsteri ID : 136752
Müşteri Adı : Ahmet
Müsteri Soyadı : Yenidoğan
Müşteri Yaş : 36
Müşteri Cinsiyet : E
Müşteri Gelir : 4500
Müşterinin Borc : 3800
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 633.34
----------------------------------------------------------
INPUT:

musteriler = sqlite3.connect("musteriler.sqlite")
imlec = musteriler.cursor()
imlec.execute("Select * From MusteriTablosu") 
liste = imlec.fetchmany(2)
print("Müsteriler Listesi")
print("----------------------------------------------------------")
for müsteri in liste:
      print("Müsteri ID : {}\nMüşteri Adı : {}\nMüsteri Soyadı : {}\nMüşteri Yaş : {}\nMüşteri Cinsiyet : {}\nMüşteri Gelir : {}\nMüşterinin Borc : {}\nMüşteri taksit sayısı :{}\nMüşteri Aylık Ödeme : {}".format(müsteri[0], müsteri[1], müsteri[2], müsteri[3], müsteri[4], müsteri[5], müsteri[6], müsteri[7], müsteri[8]))
      print("-----------------------------------------------------")
musteriler.commit()
musteriler.close()











-

OUTPUT:


Müsteriler Listesi
-----------------------------------------------
Müsteri ID : 136752
Müşteri Adı : Ahmet
Müsteri Soyadı : Yenidoğan
Müşteri Yaş : 36
Müşteri Cinsiyet : E
Müşteri Gelir : 4500
Müşterinin Borc : 3800
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 633.34
-----------------------------------------------
Müsteri ID : 127650
Müşteri Adı : Ece
Müsteri Soyadı : Gündüz
Müşteri Yaş : 28
Müşteri Cinsiyet : K
Müşteri Gelir : 3655
Müşterinin Borc : 1760
Müşteri taksit sayısı :4
Müşteri Aylık Ödeme : 440
-----------------------------------------------

Bu veritabanı üzerinde daha fazla işlem gerçekleştireceğiz. Ancak bu yazımızın daha fazla uzamaması adına bu veritabanı üzerinde bir tane daha örnek yapıp yazımızı sonlandıralım.

Örnek

MusterID’si 437612 olan müşterinin taksit sayısını 12 aydan 6 aya düşürün ve buna bağlı olan sütunları güncelleyin.

Burada yapmamız gereken MusterID’si  437612 olan Mehmet Bekçi adlı müşterinin taksit sayısını 6 aya indirmektir. Buna bağlı olan aylık ödeme tutarını güncellememiz gerekir. Bunun için update komutunu kullanmamız gerekir.

INPUT:

musteriler = sqlite3.connect("musteriler.sqlite") 
imlec = musteriler.cursor()
imlec.execute("UPDATE MusteriTablosu SET MusteriTaksitSayisi = 6, MusteriAylikOdeme = 800.00  WHERE  MusterID = 437612")
GuncellenmisSatir = imlec.execute("Select * from MusteriTablosu where MusterID = 437612")
GuncellenmisSatir.fetchone()
musteriler.commit()
musteriler.close()



-

INPUT:

musteriler = sqlite3.connect("musteriler.sqlite")
imlec = musteriler.cursor()
imlec.execute("Select * From MusteriTablosu") 
liste = imlec.fetchall()
print("Müsteriler Listesi")
print("----------------------------------------------------------")
for müsteri in liste:
      print("Müsteri ID : {}\nMüşteri Adı : {}\nMüsteri Soyadı : {}\nMüşteri Yaş : {}\nMüşteri Cinsiyet : {}\nMüşteri Gelir : {}\nMüşterinin Borc : {}\nMüşteri taksit sayısı :{}\nMüşteri Aylık Ödeme : {}".format(müsteri[0], müsteri[1], müsteri[2], müsteri[3], müsteri[4], müsteri[5], müsteri[6], müsteri[7], müsteri[8]))
      print("-----------------------------------------------------")
musteriler.commit()
musteriler.close()
OUTPUT:

Müsteriler Listesi
-------------------------------------------
Müsteri ID : 136752
Müşteri Adı : Ahmet
Müsteri Soyadı : Yenidoğan
Müşteri Yaş : 36
Müşteri Cinsiyet : E
Müşteri Gelir : 4500
Müşterinin Borc : 3800
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 633.34
-------------------------------------------
Müsteri ID : 127650
Müşteri Adı : Ece
Müsteri Soyadı : Gündüz
Müşteri Yaş : 28
Müşteri Cinsiyet : K
Müşteri Gelir : 3655
Müşterinin Borc : 1760
Müşteri taksit sayısı :4
Müşteri Aylık Ödeme : 440
-------------------------------------------
Müsteri ID : 201638
Müşteri Adı : Ali
Müsteri Soyadı : Çelik
Müşteri Yaş : 46
Müşteri Cinsiyet : E
Müşteri Gelir : 6500
Müşterinin Borc : 8900
Müşteri taksit sayısı :12
Müşteri Aylık Ödeme : 741.67
-------------------------------------------
Müsteri ID : 518023
Müşteri Adı : Gizem
Müsteri Soyadı : Duyar
Müşteri Yaş : 23
Müşteri Cinsiyet : K
Müşteri Gelir : 3500
Müşterinin Borc : 2750
Müşteri taksit sayısı :12
Müşteri Aylık Ödeme : 229.17
-------------------------------------------
OUTPUT DEVAMI:

Müsteri ID : 812503
Müşteri Adı : Aslı
Müsteri Soyadı : Çevik
Müşteri Yaş : 26
Müşteri Cinsiyet : K
Müşteri Gelir : 3000
Müşterinin Borc : 1650
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 550
-------------------------------------------
Müsteri ID : 437612
Müşteri Adı : Mehmet
Müsteri Soyadı : Bekçi
Müşteri Yaş : 35
Müşteri Cinsiyet : E
Müşteri Gelir : 6500
Müşterinin Borc : 4800
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 800
-------------------------------------------
Müsteri ID : 356721
Müşteri Adı : Betül
Müsteri Soyadı : Çevreci
Müşteri Yaş : 26
Müşteri Cinsiyet : K
Müşteri Gelir : 2800
Müşterinin Borc : 1400
Müşteri taksit sayısı :6
Müşteri Aylık Ödeme : 233.34
-------------------------------------------
Müsteri ID : 971025
Müşteri Adı : Cenk
Müsteri Soyadı : Kahraman
Müşteri Yaş : 33
Müşteri Cinsiyet : E
Müşteri Gelir : 4250
Müşterinin Borc : 9800
Müşteri taksit sayısı :12
Müşteri Aylık Ödeme : 816.67
-------------------------------------------

-

Sonraki yazılarımızda Python ile veritabanı işlemlerine devam edeceğiz.

PYTNBLHO08H3A1G74C

SQL Hasta-Personel Veri Tabanı Uygulaması #2

Bu yazıda sizlere bir önceki yazıda oluşturduğumuz veri tabanı üzerinde çeşitli örnek uygulamalardan bahsedeceğim.

Örnek 1: Veri tabanında yer alan tablolar arasındaki ilişkileri kurunuz.

Örnek 2: Personel tablosunda mesleği danışman olan personellerin maaşlarını 3500 TL olarak güncelleyelim.

USE Hasta_Personel_Veri_Tabani
UPDATE PersonelTablosu SET Maas = Maas + 300 WHERE MESLEK = 5
SELECT * FROM PersonelTablosu

Örnek 3: Personel tablosunda maaşı 4000-9000 TL arasında olan ve cinsiyeti erkek olan personelleri listeleyelim.

USE Hasta_Personel_Veri_Tabani
SELECT * FROM PersonelTablosu WHERE Maas BETWEEN 4000 AND 9000 AND Cinsiyet = 'E'

Örnek 4: Hasta tablosunda isminde E harfi geçen ama H harfi geçmeyen ve ziyarete uygun olan hastalarını listeleyelim.

USE Hasta_Personel_Veri_Tabani
SELECT * FROM HastaTablosu WHERE Ad_Soyad LIKE '%E%' AND Ad_Soyad NOT LIKE '%H%' AND ZiyaretDurumu = 1

Örnek 5: Personel tablosundaki toplam maaşı ve ortalama yaşı listeleyelim.

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AVG(Yas) FROM PersonelTablosu

OUTPUT:
       36

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT SUM(Maas) FROM PersonelTablosu

OUTPUT:
       140800.00

Örnek 6: Hasta tablosunda  vefat eden hastaların ortalama yaşını listeleyelim.

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AVG(Yas) FROM HastaTablosu WHERE SaglıkDurumu = 4

OUTPUT:
        63

Örnek 7: Hasta tablosunda sağlık durumu kritik olan hastalarımızın sayısını listeleyelim.

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT COUNT(*) FROM HastaTablosu WHERE SaglıkDurumu = 3


OUTPUT:
        7

Örnek 8: Personel tablosundaki en yaşlı ve en genç personelleri listeleyelim.

USE Hasta_Personel_Veri_Tabani
SELECT * FROM PersonelTablosu WHERE Yas = (SELECT MIN(Yas) FROM PersonelTablosu )

USE Hasta_Personel_Veri_Tabani
SELECT * FROM PersonelTablosu WHERE Yas = (SELECT MAX(Yas) FROM PersonelTablosu )

Örnek 9: Alt sorguları kullanarak personel tablosunda mesleği göz doktoru olan personelleri listeleyiniz.

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,MeslekAdi FROM PersonelTablosu 
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
WHERE MeslekAdi = (SELECT MeslekAdi FROM MeslekTablosu WHERE ID = 13)



OUTPUT:
       Atahan Adanır Göz Doktoru

Örnek 10: Personel tablosunda meslek adları yazacak şekilde Güvenlik personellerinin isimlerini ve mesleklerini listeleyelim.

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,MeslekAdi FROM PersonelTablosu 
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
WHERE MeslekAdi = 'Güvenlik Görevlisi'

Örnek 11: Personel tablosundaki tüm sütunlar için birleştirmeleri gerçekleştirelim.

CREATE VIEW View_1
AS
SELECT AdSoyad,Maas,Yas,Cinsiyet,SehirAdi,OgrenimTuru,MeslekAdi,HastalikAdi,MedeniHal,CocukSayisi,Calisma_Durumu,KademeAdi From PersonelTablosu 
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID 
INNER JOIN SehirTablosu ON PersonelTablosu.Sehir = SehirTablosu.ID
INNER JOIN OgrenimTablosu ON PersonelTablosu.Ögrenim = OgrenimTablosu.ID 
INNER JOIN HastalikTablosu ON PersonelTablosu.HastalikTürü = HastalikTablosu.ID  
INNER JOIN MedeniDurumTablosu ON PersonelTablosu.MedeniDurum = MedeniDurumTablosu.ID
INNER JOIN CalismaTablosu ON PersonelTablosu.CalismaDurumu = CalismaTablosu.ID  
INNER JOIN PersonelKademeTablosu ON PersonelTablosu.Kademe = PersonelKademeTablosu.ID 
SELECT * FROM View_1

Örnek 12: Hasta tablosundaki ad, hastalık, medeni durum,İlgilenenPersonel, SaglıkDurumu, ZiyaretDurumu ve HastanınBulunduğuKonum için birleştirmeleri gerçekleştirelim.

CREATE VIEW View_2
AS
SELECT Ad_Soyad,HastalikAdi,MedeniHal,AdSoyad,Saglik_Durumu,Ziyaret_Durumu,Konum From HastaTablosu 
INNER JOIN HastalikTablosu ON HastaTablosu.Hastalik = HastalikTablosu.ID  
INNER JOIN MedeniDurumTablosu ON HastaTablosu.MedeniDurum = MedeniDurumTablosu.ID
INNER JOIN PersonelTablosu ON HastaTablosu.İlgilenenPersonel = PersonelTablosu.ID  
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID  
INNER JOIN ZiyaretTablosu ON HastaTablosu.ZiyaretDurumu = ZiyaretTablosu.ID  
INNER JOIN HastaKonumTablosu ON HastaTablosu.HastanınBulunduğuKonum = HastaKonumTablosu.ID  

Örnek 13: Personel tablosundan eğitimi Lisans mezunu olan ve  hali hazırda çalışıyor olan personellerin adlarını, yaşlarını, cinsiyetlerini, maaşlarını ve mesleklerini listeleyelim.

USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,Yas,Cinsiyet,Maas,MeslekAdi FROM PersonelTablosu 
INNER JOIN MeslekTablosu ON PersonelTablosu.Meslek = MeslekTablosu.ID
WHERE Ögrenim = 5 AND CalismaDurumu = 1

Örnek 14: Hasta tablosunda yer alan hastalarımızı sağlık durumlarına göre gruplayalım. Sağlık durumlarını z’den a’ya doğru sıralayalım

USE Hasta_Personel_Veri_Tabani
SELECT Saglik_Durumu,COUNT(*) AS 'Sayısı' FROM HastaTablosu 
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
GROUP BY Saglik_Durumu ORDER BY Saglik_Durumu DESC

Örnek 15: Personel tablosundaki personelleri kademelerine göre gruplayıp, üst kademe olan personelleri listeleyelim.

USE Hasta_Personel_Veri_Tabani
SELECT KademeAdi,COUNT(*) AS 'Sayısı' FROM PersonelTablosu 
INNER JOIN PersonelKademeTablosu ON PersonelTablosu.Kademe = PersonelKademeTablosu.ID
GROUP BY KademeAdi HAVING KademeAdi= 'Üst'


Örnek 16: Personel tablosunda mesleği göz doktoru olan personellerin maaşına 500 TL zam yapalım.

USE Hasta_Personel_Veri_Tabani
UPDATE PersonelTablosu SET Maas = Maas + Maas*0.30 WHERE Meslek = 19 
SELECT * FROM PersonelTablosu Where Meslek = 19


Örnek 17: Başhekim’in maaşını maksimum maaş tutarının 1000 TL fazlasına göre güncelleyelim.

USE Hasta_Personel_Veri_Tabani
UPDATE PersonelTablosu SET Maas = (SELECT Max(Maas) FROM PersonelTablosu) + 1000 WHERE Meslek = 16
SELECT * FROM PersonelTablosu Where Meslek = 16



Örnek 18: Personel tablomuzdaki tüm isimleri tersten yazan sorguyu yazalım.

USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,REVERSE(AdSoyad) AS 'Tersten Yazımı' FROM PersonelTablosu




Örnek 19: Personel tablomuzdaki personellerimizin maaşlarının standart sapmalarını hesaplayalım.

INPUT:
DECLARE @sayi1 Decimal(15,2), @sayi2 Decimal(15,2), @standartSapma Decimal(15,2)
SET @sayi1 = (SELECT AVG(Maas) from PersonelTablosu)
SET @sayi2 = (SELECT SUM(POWER((Maas-@sayi1),2)) from PersonelTablosu)
SET @standartSapma = (SELECT  SQRT(@sayi2/20))
PRINT @standartSapma

OUTPUT:
       3863.48


Örnek 20: Hasta tablomuzdaki 45 yaşından küçük olan hasta kadınların sağlık durumlarını listeleyen sorguyu yazalım.

USE Hasta_Personel_Veri_Tabani
SELECT Ad_Soyad,Yas,Cinsiyet,Saglik_Durumu FROM HastaTablosu
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
WHERE Yas < 45 AND Cinsiyet = 'K' 



Örnek 21: Durumu kritik olan hastalarımızın adlarını, yaşlarını, hastalıklarını ve ziyaret durumlarını listeleyen sorgumuzu yazalım.

USE Hasta_Personel_Veri_Tabani
SELECT Ad_Soyad,Yas,Hastalik,Saglik_Durumu,Ziyaret_Durumu FROM HastaTablosu
INNER JOIN SaglikTablosu ON HastaTablosu.SaglıkDurumu = SaglikTablosu.ID
INNER JOIN ZiyaretTablosu ON HastaTablosu.ZiyaretDurumu = ZiyaretTablosu.ID
WHERE Saglik_Durumu = 'Kritik'



Örnek 22: Her bir personelimizin hastalığını ve yaşını listeleyelim.

USE Hasta_Personel_Veri_Tabani
SELECT AdSoyad,Yas,HastalikAdi FROM PersonelTablosu
INNER JOIN HastalikTablosu ON PersonelTablosu.HastalikTürü = HastalikTablosu.ID




Örnek 23: Her bir kademe için gereken minimum eğitim seviyesini listeyen sorguyu yazalım.

USE Hasta_Personel_Veri_Tabani
SELECT KademeAdi,OgrenimTuru AS 'Gereken Minimum Eğitim Seviyesi' FROM PersonelKademeTablosu
INNER JOIN OgrenimTablosu ON PersonelKademeTablosu.GerekenMinEgitim = OgrenimTablosu.ID





Örnek 24: Hastalarımızın ve personellerimizin ortalama yaşlarının farkını listeleyen sorguyu yazalım.

INPUT:
USE Hasta_Personel_Veri_Tabani
DECLARE @sayi1 DECIMAL(7,2), @sayi2 DECIMAL(7,2), @yasFarki DECIMAL(7,2)
SET @sayi1 = (SELECT AVG(Yas) FROM HastaTablosu)
SET @sayi2 = (SELECT AVG(Yas) FROM PersonelTablosu)
SET @yasFarki = @sayi1 - @sayi2 
PRINT @yasFarki


OUTPUT:
       15.00



Örnek 25: Cinsiyeti erkek olan hastaların sayısını listeleyen sorguyu yazalım.

INPUT:
USE Hasta_Personel_Veri_Tabani
SELECT COUNT(*) FROM HastaTablosu WHERE Cinsiyet = 'E'


OUTPUT:
        11



Bir önceki yazıya ulaşmak için buraya tıklayınız.

SQL19K777RYM81TP66
SQL Hasta-Personel Veri Tabanı Uygulaması #1

Bu bölümde örnek bir veri tabanı oluşturulmasından bahsedeceğim. Oluşturacağımız veri tabanı Hasta-Personel bilgilerini saklayan bir veri tabanı olacaktır. Veri tabanımızın yapısını aşağıdaki şema ile gösterebiliriz.

Veri Tabanı Diagramı

Bu tablolara eklenecek olan veriler aşağıdaki tablolarda listelenmiştir.

Veri Tabanındaki Tablolara Eklenecek Sütunlar
Ziyaret Durumu
Ziyarete Uygun
Kısıtlı Ziyaret
Ziyarete Kapalı
Sağlık Durumu
Normal
Rahatsız
Kritik
Vefat
Medeni Hal
Evli
Bekar
Dul
Boşanmış
Çalışma Durumu
Çalışıyor
Yıllık İzinde
Raporlu
İstifa Etti
Emekli Oldu
Hastanın Bulunduğu Yer
Hasta Odası
Ameliyathane
Morg
Yoğun Bakım
Öğrenim Türü
İlkokul Mezunu
Ortaokul Mezunu
Lise Mezunu
Önlisans Mezunu
Lisans Mezunu
Yüksek Lisans Mezunu
Doktora Mezunu
Hastalıklar Tablosu
Kalp-Damar Hastası
Böbrek Yetmezliği
Karaciğer Yetmezliği
Sinirsel Bozukluk
Alzheimer
Göz Bozukluğu
İşitme Sorunu
Şeker Hastalığı
Kolesterol Hastalığı
Kemik Erimesi
Solunum Yetmezliği
Bağırsak Kanseri
Yaralanma
Kırık-Çıkık
Hastalığı Yok
Prostat Kanseri
Şehir
İstanbul
Ankara
İzmir
Bursa
Kocaeli
Nevşehir
Antalya
Adana
Muğla
Diyarbakır
Mardin
Erzurum
Balıkesir
Trabzon
Niğde
Ordu
Osmaniye
Şanlıurfa
Sivas
Samsun
Meslekler
KBB Doktor
Hemşire
Hasta Bakıcı
Temizlik Personeli
Danışman
Güvenlik Görevlisi
Genel Cerrah
Anestezi Uzmanı
Morg Görevlisi
Adli Tıpçı
İç Hastalıkları Uzmanı
Beyin Cerrahı
Göz Doktoru
Üroloji Doktoru
Nefroloji Doktoru
BaşHekim
Ortopedi Doktoru
Kadın Hastalıkları Doktoru
Personel Kademesi
Alt Kademe
Orta Kademe
Üst Kademe

Böylece oluşturacağımız veri tabanı yapısını ve verileri görmüş olduk. Şimdi bu veri tabanını oluşturalım. Bunu sorgu komutları ile yapalım.

Veri Tabanı Ve Tabloların Kodlar İle Oluşturulması

CREATE DATABASE Hasta_Personel_Veri_Tabani

Sorguyu çalıştırdığımızda veri tabanımız oluşturulmuş olur. Veri tabanımızda oluşturmamız gereken tabloları isterseniz Object Explorer (Nesne gezgini) kısmından isterseniz sorgu komutları ile oluşturabilirsiniz. Sorgu komutları için aşağıdaki gibi komutlar kullanılabilir:

CREATE TABLE SehirTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  SehirAdı   varchar(30)
)
CREATE TABLE MeslekTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  MeslekAdi   varchar(30)
)
CREATE TABLE HastalıkTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  HastalikAdi   varchar(30)
)

Ziyaret durumu, sağlık durumu, medeni hal ve çalışma durumu gibi tabloların oluşturulma komutları yukarıdaki örnekler ile aynı olduğundan bunlar ve benzeri tabloların oluşturulma komutlarını buraya eklemiyorum. Bunlardan farklı olarak personel kademesi, çalışma durumu, hasta tablosu ve personel tablolarını oluşturalım.

CREATE TABLE CalismaTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  SaglikDurumu INT,
  CalismaDurumu INT,
)
CREATE TABLE PersonelKademeTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  GerekenMinEgitim INT,
  Kademe varchar(10),
)

CREATE TABLE PersonelTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  AdSoyad varchar(40),
  Yas TINYINT,
  Maas Decimal(10,2)
  Cinsiyet INT,
  Sehir INT,
  Ögrenim INT,
  Meslek INT,
  HastalikTürü INT,
  MedeniDurum INT,
  CocukSayisi TİNYİNT,
  CalismaDurumu INT
)
CREATE TABLE HastaTablosu(
  ID INT IDENTITY(1,1) PRIMARY KEY,
  Ad_Soyad varchar(40),
  Yas TINYINT,
  Cinsiyet varchar(1),
  Hastalik INT,
  MedeniDurum INT,
  İlgilenenPersonel INT,
  SaglıkDurumu INT,
  ZiyaretDurumu INT,
  HastanınBulunduğuKonum INT,
  BosSutun char(5)
)

Örnekler

Bu komutları yazarken dikkat ettiyseniz bazı yerleri eksik, yanlış ya da alakasız değerler yazdık. Bunun sebebi DDL komutlarını bu örnek veri tabanı üzerinde basit de olsa görebilmektir.

Örnek 1:  Hasta tablosundan BosSutun adlı sütunu kaldırınız.

ALTER TABLE HastaTablosu DROP COLUMN BosSutun

Bu sorgunun ardından hasta tablomuzda BosSutun adlı bir sütun olmayacaktır. Bunu Object Explorer (Nesne gezgini) sekmesinden tabloyu görüntüleyerek görebilirsiniz.

Örnek 2:  Personel tablosuna Kademe adlı bir sütun ekleyiniz.

ALTER TABLE PersonelTablosu ADD Kademe INT

Örnek 3:  Personel tablosundaki cinsiyet sütununun veri türünü değiştiriniz.

ALTER TABLE PersonelTablosu ALTER COLUMN Cinsiyet Varchar(1)

Bu komutların ardından veri tabanında yer alan tablolar artık istediğimiz şekilde olacaktır. Bu sebeple tablolarımıza Object Explorer (Nesne gezgini) sekmesini kullanarak veri girişlerini yapalım. Veri girişlerinin ardından hasta tablosunu ve personel tablosunu listeleyelim.

Hasta Tablosu
Personel Tablosu

Örnek 4:  Personel tablosuna (Onur Taylan, 46, 5000, E, 5, 5, 9, 15, 1, 3, 1, 3) ve (Mehmet Emin, 38, 3200, E, 4, 3, 5, 15, 1, 3, 1, 2) kişileri ekleyelim.

INSERT INTO PersonelTablosu VALUES (‘Onur Taylan’, 46, 5000, ‘E’, 5, 5, 9, 15, 1, 3, 1, 3)

INSERT INTO PersonelTablosu VALUES (‘Mehmet Emin’, 38, 3200, ‘E’, 4, 3, 5, 15, 1, 3, 1, 2)

Örnek 5: Personel tablosundan Mehmet Emin isimli kişiyi çıkaralım.

DELETE FROM PersonelTablosu WHERE AdSoyad =’Mehmet Emin’

Buraya kadar yaptıklarımızla veri tabanını oluşturduk. Yukarıdaki veri tabanı şemasına baktığımızda tablolar arasında ilişkiler olduğu görülüyor. Bir sonraki yazıda veri tabanımız üzerindeki tablolar arası ilişkileri oluşturacağız, DML komutlarını ve Aggregate fonksiyonlarını kullanacağız. Bir sonraki yazıya ulaşmak için buraya tıklayınız.

SQL121378HK02225Y7