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 urunlerkomutu ile aynı sonuç alınabilir.
Silme (DROP TABLE)
DROP TABLE urunler
data/<db_adı>/urunler.parquetdosyası silinir- İlişkili yardımcı dosyalar (flush, WAL, Bloom filter) da temizlenir
- Bu işlem geri alınamaz
Koruma Kuralları
| Kural | Örnek | Sonuç |
|---|---|---|
| Sistem tabloları silinemez | DROP TABLE mnz_users | Hata |
mnz_ ön ekli tablolar korunur | DROP TABLE mnz_roles | Hata |
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 Komutu | Dosya Sistemi İşlemi |
|---|---|
CREATE TABLE t (...) | data/<db>/t.parquet oluştur |
DROP TABLE t | data/<db>/t.parquet ve ilişkili dosyaları sil |
SHOW TABLES | Aktif 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:
- Tüm flush dosyalarını (
siparisler-flush-*.parquet) okur - Base Parquet ile birleştirir
- Tek bir yeni base Parquet dosyası yazar
- Eski flush dosyalarını siler