Post

18.1- SQLITE Kullanımı

Temel sqlite hakkında bilgi verilmiştir.

18.1- SQLITE Kullanımı

JupySQL ve SQLite ile Veritabanı İşlemleri

Bu notebook, Google Colab ortamında JupySQL eklentisi ve SQLite kullanarak temel SQL işlemlerini göstermektedir.


1.1 JupySQL Kütüphanesinin Kurulumu

1
%pip install -q jupysql

Açıklama: SQL sorgularını Jupyter/Colab hücrelerinde doğrudan çalıştırmamızı sağlayan jupysql paketini sessiz modda (-q) kurar.


1.2 SQL Eklentisinin Aktifleştirilmesi

1
%load_ext sql

Açıklama: Jupyter’e SQL magic komutlarını tanıtan eklentiyi yükler. %sql ve %%sql magic komutlarını kullanabilmemizi sağlar.


1.3 Otomatik Commit Ayarı

1
%config SqlMagic.autocommit = True

Açıklama: Her SQL işleminden sonra otomatik olarak COMMIT yapılmasını sağlar. Veri değişikliklerinin kalıcı olmasını garantiler.


1.4 Veritabanı Bağlantısı

1
%sql sqlite:///ogrenci.db --alias ogrenci

Açıklama:

  • sqlite:///ogrenci.db: Yerel dosya sisteminde ogrenci.db adlı SQLite veritabanına bağlanır
  • --alias ogrenci: Bu bağlantıya “ogrenci” takma adı verilir, böylece birden fazla bağlantı yönetilebilir

NOT: Birden fazla bağlantı örneği:

1
2
3
4
%sql sqlite:///one.db --alias one
%sql sqlite:///two.db --alias two
%sql one  # one bağlantısına geç
%sql two  # two bağlantısına geç

2.1 Tablo Oluşturma (CREATE)

1
2
3
4
5
6
7
%%sql
CREATE TABLE ogrenciler(
    id INTEGER PRIMARY KEY,      -- Otomatik artan benzersiz kimlik
    isim TEXT NOT NULL,          -- Boş bırakılamayan metin alanı
    yas INTEGER,                 -- Tam sayı yaş bilgisi
    sehir TEXT                   -- Şehir bilgisi (opsiyonel)
)

Açıklama: Öğrenci bilgilerini saklayacak tabloyu oluşturur. PRIMARY KEY otomatik artan (AUTOINCREMENT) davranış gösterir.


2.2 Veri Sorgulama (READ)

1
%sql SELECT * FROM ogrenciler;

Açıklama: Tablodaki tüm kolonları (*) ve tüm satırları getirir. Boş tablo döner çünkü henüz veri eklenmemiştir.


2.3 Tekli Veri Ekleme (CREATE)

1
2
3
%%sql
INSERT INTO ogrenciler(isim, yas, sehir)
VALUES ('Ali', 10, 'Istanbul');

Açıklama: Tabloya tek bir kayıt ekler. id otomatik olarak 1 atanır.


2.4 Belirli Kolonları Seçme

1
%sql SELECT isim, yas FROM ogrenciler

Açıklama: Sadece isim ve yas kolonlarını getirir, veri miktarını azaltır.


2.5 Veri Silme (DELETE)

1
%sql DELETE FROM ogrenciler WHERE id == 1

Açıklama: id değeri 1 olan kaydı siler. == veya = kullanılabilir.


2.6 Çoklu Veri Ekleme

1
2
3
4
5
6
%%sql
INSERT INTO ogrenciler(isim, yas, sehir)
VALUES 
    ('Ali', 10, 'Istanbul'),
    ('Veli', 20, 'Izmir'),
    ('Ayse', 30, 'Istanbul');

Açıklama: Tek bir INSERT ifadesiyle birden fazla kayıt ekler (batch insert).


3.1 Tek Kolon Güncelleme

1
2
3
4
%%sql
UPDATE ogrenciler 
SET yas = 15 
WHERE id = 1

Açıklama: idsi 1 olan öğrencinin yaşını 15 olarak günceller.


3.2 Çoklu Kolon Güncelleme

1
%sql UPDATE ogrenciler SET isim='Ahmet', sehir='Izmir' WHERE id=1

Açıklama: Birden fazla kolonu aynı anda günceller (isim ve şehir).


3.3 Koşullu Çoklu Güncelleme (CASE)

1
2
3
4
5
6
7
%%sql
UPDATE ogrenciler
SET isim = CASE
    WHEN isim = 'Veli' THEN 'Ali'
    WHEN isim = 'Ayse' THEN 'Zehra'
    ELSE isim
END;

Açıklama:

  • CASE yapısı ile koşullu güncelleme yapar
  • Veli → Ali, Ayşe → Zehra olarak değişir
  • ELSE isim: Eşleşmeyen kayıtları olduğu gibi bırakır

4.1 Koşullu Filtreleme (WHERE)

1
%sql SELECT * FROM ogrenciler WHERE yas > 15

Açıklama: Yaşı 15’ten büyük olan öğrencileri getirir.


4.2 Sıralama (ORDER BY)

1
%sql SELECT * FROM ogrenciler ORDER BY yas

Açıklama: Yaşa göre küçükten büyüğe (ASC - varsayılan) sıralar.

1
%sql SELECT * FROM ogrenciler ORDER BY isim DESC

Açıklama: İsme göre büyükten küçüğe (Z→A) sıralar. DESC = Descending (azalan).


5.1 Temel Agregat Fonksiyonları

FonksiyonAçıklamaÖrnek
COUNT(*)Toplam kayıt sayısı%sql SELECT COUNT(*) FROM ogrenciler
AVG(yas)Yaş ortalaması%sql SELECT AVG(yas) FROM ogrenciler
MIN(yas)En küçük yaş%sql SELECT MIN(yas) FROM ogrenciler
MAX(yas)En büyük yaş%sql SELECT MAX(yas) FROM ogrenciler

5.2 Gruplama (GROUP BY)

1
%sql SELECT COUNT(*), sehir FROM ogrenciler GROUP BY sehir

Açıklama: Her şehirdeki öğrenci sayısını gruplayarak gösterir.

1
%sql SELECT AVG(yas), sehir FROM ogrenciler GROUP BY sehir

Açıklama: Her şehrin yaş ortalamasını hesaplar.


6.1 Tablo Oluşturma

1
2
%%sql
CREATE TABLE bos_tablo(id INTEGER);

Açıklama: Test amaçlı boş tablo oluşturur.


6.2 Tablo Silme

1
%sql DROP TABLE bos_tablo;

Açıklama: bos_tablo tablosunu tamamen siler (veri + yapı).


6.3 Kolon Ekleme (ALTER TABLE)

1
%sql ALTER TABLE ogrenciler ADD COLUMN email TEXT;

Açıklama: Mevcut tabloya yeni email kolonu ekler. Mevcut kayıtlarda bu alan NULL olur.


6.4 Yeni Kolona Veri Ekleme

1
2
3
4
5
6
7
8
%%sql
UPDATE ogrenciler 
SET email = CASE
    WHEN id = 1 THEN 'xyz1@gmail.com'
    WHEN id = 2 THEN 'xyz2@gmail.com'
    WHEN id = 3 THEN 'xyz3@gmail.com'
    ELSE email
END

Açıklama: Her öğrenciye ID’sine göre email adresi atar.


7.1 Bağlantı ve Cursor Oluşturma

1
2
3
4
import sqlite3

conn = sqlite3.connect('ogrenci.db')  # Veritabanı bağlantısı
cur = conn.cursor()                    # SQL çalıştırmak için cursor

Açıklama:

  • connect(): Veritabanına bağlanır (yoksa oluşturur)
  • cursor(): SQL sorgularını çalıştırmak için imleç oluşturur

7.2 Tablo Listesini Görme

1
2
3
4
5
6
cur.execute('''
    SELECT name 
    FROM sqlite_master 
    WHERE type = 'table';
''')
cur.fetchall()

Açıklama: Veritabanındaki tüm tablo isimlerini getirir. sqlite_master SQLite’ın sistem tablosudur.


7.3 Veri Çekme Yöntemleri

YöntemAçıklama
fetchall()Tüm sonuçları liste olarak getirir
fetchone()Tek bir satır getirir (tuple veya None)
fetchmany(n)İlk n satırı getirir
1
2
3
4
5
6
7
sql = 'SELECT * FROM ogrenciler;'
cur.execute(sql)

cur.fetchall()    # Tüm kayıtlar
cur.fetchone()    # İlk kayıt (cursor ilerler)
cur.fetchone()    # İkinci kayıt
cur.fetchmany(1)  # Sonraki 1 kayıt

7.4 Çoklu Kayıt Ekleme (executemany)

1
2
3
4
5
6
7
8
9
lines = [
    ('Sezen', 24, 'Bursa'),
    ('Hakan', 45, 'Istanbul')
]

cur.executemany(
    'INSERT INTO ogrenciler(isim, yas, sehir) VALUES(?, ?, ?)', 
    lines
)

Açıklama:

  • ? placeholder’ları ile SQL injection’a karşı güvenli
  • Liste/tuple içindeki her eleman için aynı SQL’i çalıştırır
  • Toplu veri eklemede performanslıdır

7.5 Çoklu SQL Komutu (executescript)

1
2
3
4
5
6
7
8
9
cur.executescript("""
    UPDATE ogrenciler 
    SET email = CASE
        WHEN id = 5 THEN 'sezen@gmail.com'
        ELSE email
    END;
    
    INSERT INTO ogrenciler(isim) VALUES ('Hayri');
""")

Açıklama:

  • Noktalı virgülle ayrılmış birden fazla SQL komutunu tek seferde çalıştırır
  • Güncelleme ve ekleme işlemlerini birleştirir

This post is licensed under CC BY 4.0 by the author.