Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tablo (TABLE)

Her tablo dosya sisteminde sıkıştırılmış bir dosya olarak saklanır (data/<db_adı>/<tablo_adı>.parquet).

Oluşturma (CREATE TABLE)

Söz dizimi:

CREATE TABLE <tablo_adı> (<sütun1> <tip> [NOT NULL], <sütun2> <tip>, ...)

Temel örnek:

CREATE TABLE urunler (id INT, urun_adi VARCHAR, fiyat FLOAT)

NOT NULL kısıtı ile:

CREATE TABLE siparisler (
    id INT NOT NULL,
    musteri_id INT NOT NULL,
    siparis_tarihi DATE,
    toplam_tutar DECIMAL,
    durum VARCHAR
)

Tüm veri tiplerini gösteren örnek:

CREATE TABLE tip_ornekleri (
    tam_sayi INT,
    buyuk_sayi BIGINT,
    kucuk_sayi SMALLINT,
    minik_sayi TINYINT,
    ondalikli FLOAT,
    ondalikli32 FLOAT32,
    metin VARCHAR,
    mantiksal BOOL,
    tarih DATE,
    zaman_damgasi TIMESTAMP,
    zaman_utc TIMESTAMPTZ,
    sabit_ondalik DECIMAL,
    ikili_veri BLOB,
    benzersiz_id UUID
)

Not: Tip adları büyük/küçük harf duyarsızdır. INT, int, Int — hepsi geçerlidir.

Desteklenen veri tipleri hakkında detaylı bilgi için bkz: Sütun Tipleri

Listeleme (SHOW TABLES)

SHOW TABLES

Aktif veritabanındaki tüm tabloları listeler.

Tablo Şemasını Görüntüleme (DESCRIBE TABLE)

DESCRIBE TABLE urunler
-- veya kısaca:
DESCRIBE urunler

Örnek çıktı:

Column        | Type     | Nullable
--------------+----------+---------
id            | Int32    | NO
urun_adi      | Utf8     | YES
fiyat         | Float64  | YES
aktif         | Boolean  | YES

CLI kısayolu: \d urunler komutu ile aynı sonuç alınabilir.

Silme (DROP TABLE)

DROP TABLE urunler
  • data/<db_adı>/urunler.parquet dosyası silinir
  • İlişkili yardımcı dosyalar (flush, WAL, Bloom filter) da temizlenir
  • Bu işlem geri alınamaz

Koruma Kuralları

KuralÖrnekSonuç
Sistem tabloları silinemezDROP TABLE mnz_usersHata
mnz_ ön ekli tablolar korunurDROP TABLE mnz_rolesHata

Güncelleme (ALTER TABLE)

MenzeletDB aşağıdaki ALTER TABLE işlemlerini destekler:

Sütun Ekleme (ADD COLUMN)

Mevcut bir tabloya yeni bir nullable sütun ekler. Mevcut satırlarda yeni sütun NULL değerini alır.

ALTER TABLE urunler ADD COLUMN stok INT
ALTER TABLE urunler ADD COLUMN aciklama VARCHAR
ALTER TABLE urunler ADD COLUMN olusturma_tarihi TIMESTAMP

NOT NULL + DEFAULT ile Sütun Ekleme (ADD COLUMN NOT NULL DEFAULT)

Mevcut bir tabloya NOT NULL kısıtlı ve varsayılan değerli bir sütun ekler. Mevcut tüm satırlara belirtilen varsayılan değer yazılır.

ALTER TABLE urunler ADD COLUMN durum VARCHAR NOT NULL DEFAULT 'aktif'
ALTER TABLE urunler ADD COLUMN sira INT NOT NULL DEFAULT 0

Not: DEFAULT değeri metin için tek tırnak içinde, sayısal değerler için doğrudan yazılır.

Sütun Silme (DROP COLUMN)

Mevcut bir tablodan sütun siler. Mevcut veri yeniden yazılır.

ALTER TABLE urunler DROP COLUMN eski_sutun

Dikkat: Sistem tablolarının sütunları silinemez.

Sütunu NOT NULL Yapma (SET NOT NULL)

Mevcut bir sütunu NOT NULL kısıtlı olarak işaretler. Mevcut veride NULL değer varsa işlem reddedilir.

ALTER TABLE urunler ALTER COLUMN urun_adi SET NOT NULL

Önemli: Önce tablodaki NULL değerleri temizleyin veya güncelleyin, ardından SET NOT NULL uygulayabilirsiniz.

Tablo Yeniden Adlandırma (RENAME TO)

Mevcut bir tabloyu yeni bir isimle yeniden adlandırır. İlişkili tüm dosyalar da yeniden adlandırılır.

ALTER TABLE urunler RENAME TO malzemeler

Not: İlişkili indeksler yeniden oluşturulmalıdır. Sistem tabloları (mnz_ ön ekli) yeniden adlandırılamaz.

Desteklenmeyen ALTER TABLE İşlemleri

Aşağıdaki işlemler henüz desteklenmez:

-- Bu komutlar çalışmaz:
ALTER TABLE urunler ALTER COLUMN fiyat TYPE BIGINT     -- Tip değişikliği
ALTER TABLE urunler ADD CONSTRAINT pk PRIMARY KEY (id)  -- Kısıt ekleme
ALTER TABLE urunler RENAME COLUMN eski TO yeni          -- Sütun yeniden adlandırma

Dosya Sistemi Eşlemesi

SQL KomutuDosya Sistemi İşlemi
CREATE TABLE t (...)data/<db>/t.parquet oluştur
DROP TABLE tdata/<db>/t.parquet ve ilişkili dosyaları sil
SHOW TABLESAktif veritabanındaki tabloları listele

Tablo Dosya Yapısı

Bir tablonun disk üzerindeki görünümü:

data/musteri_db/
  ├── siparisler.parquet            ← Ana veri dosyası
  ├── siparisler.wal                ← Çökme kurtarma günlüğü
  ├── siparisler.bloom              ← Tekrar kontrol filtresi
  ├── siparisler-flush-0001.parquet ← 1. flush dosyası
  ├── siparisler-flush-0002.parquet ← 2. flush dosyası
  └── urunler.parquet               ← Başka bir tablo

Compaction

Flush dosyalarını ana veri dosyasıyla birleştirmek için:

COMPACT siparisler

Bu işlem:

  1. Tüm flush dosyalarını (siparisler-flush-*.parquet) okur
  2. Base Parquet ile birleştirir
  3. Tek bir yeni base Parquet dosyası yazar
  4. Eski flush dosyalarını siler