SQL’in Temelleri ve Veri Türleri

SQL’in Temelleri ve Veri Türleri

SQL (Structured Query Language), ilişkisel veritabanlarını yönetmek ve sorgulamak için kullanılan standart bir dildir. SQL, verileri eklemek, güncellemek, silmek ve sorgulamak için çeşitli komutlar sağlar. SQL’in temel yapısını ve en yaygın kullanılan veri türlerini MySQL ve PostgreSQL özelinde anlatacağım.


1. SQL’in Temel Yapısı

SQL, birkaç temel bileşenden oluşur:

  • DDL (Data Definition Language – Veri Tanımlama Dili): Veritabanı nesnelerini tanımlamak için kullanılır. Örnek: CREATE, ALTER, DROP.
  • DML (Data Manipulation Language – Veri İşleme Dili): Veriler üzerinde işlem yapmak için kullanılır. Örnek: INSERT, UPDATE, DELETE, SELECT.
  • DCL (Data Control Language – Veri Kontrol Dili): Kullanıcı izinleri ve güvenliği yönetmek için kullanılır. Örnek: GRANT, REVOKE.
  • TCL (Transaction Control Language – İşlem Kontrol Dili): Veritabanı işlemlerini yönetmek için kullanılır. Örnek: COMMIT, ROLLBACK, SAVEPOINT.

2. SQL Veri Türleri (MySQL ve PostgreSQL Karşılaştırması)

Veritabanında her sütun belirli bir veri türü ile tanımlanır. Doğru veri türünü seçmek, performans ve veri bütünlüğü açısından önemlidir. Aşağıda, MySQL ve PostgreSQL için yaygın kullanılan veri türleri karşılaştırmalı olarak verilmiştir.

2.1 Sayısal Veri Türleri

Veri Türü MySQL PostgreSQL Açıklama
TINYINT 0 ile 255 arasında küçük tam sayılar için kullanılır.
SMALLINT Küçük tam sayılar için kullanılır.
MEDIUMINT MySQL’de orta büyüklükte tam sayılar için kullanılır.
BIGINT Büyük tam sayılar için kullanılır.
DECIMAL(p,s) Hassas ondalıklı sayılar için (p = toplam basamak, s = ondalık basamak).
NUMERIC(p,s) DECIMAL ile aynı.
FLOAT Kayan noktalı sayılar (hassasiyet değişebilir).
REAL PostgreSQL’de FLOAT’a benzer, ancak daha az hassasiyet gerektirir.

Örnek:

CREATE TABLE Musteriler (
    ID SERIAL PRIMARY KEY,
    Bakiye DECIMAL(10,2) NOT NULL
);

2.2 Metin (String) Veri Türleri

Veri Türü MySQL PostgreSQL Açıklama
CHAR(n) Sabit uzunlukta metin.
VARCHAR(n) Değişken uzunlukta metin.
TEXT Çok uzun metinler için kullanılır.

Örnek:

CREATE TABLE Urunler (
    UrunAdi VARCHAR(50),
    Aciklama TEXT
);

2.3 Tarih ve Zaman Veri Türleri

Veri Türü MySQL PostgreSQL Açıklama
DATE Yıl, ay ve günü saklar.
TIME Saat, dakika ve saniye saklar.
DATETIME MySQL’de tarih ve saat saklamak için kullanılır.
TIMESTAMP Unix zaman damgası olarak saklanan tarih/saat formatı.

Örnek:

CREATE TABLE Siparisler (
    SiparisID SERIAL PRIMARY KEY,
    SiparisTarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2.4 Mantıksal (Boolean) Veri Türleri

Veri Türü MySQL PostgreSQL Açıklama
BOOLEAN ❌ (TINYINT(1) olarak kullanılır) TRUE veya FALSE değeri saklar.

Örnek:

CREATE TABLE Kullanicilar (
    ID SERIAL PRIMARY KEY,
    Ad VARCHAR(50),
    Aktif BOOLEAN DEFAULT TRUE
);

3. MySQL ve PostgreSQL Arasındaki Önemli Farklar

  • Otomatik Artan Kimlikler:
    • MySQL: AUTO_INCREMENT
    • PostgreSQL: SERIAL

    Örnek:

    CREATE TABLE Kullanici (
        ID SERIAL PRIMARY KEY,
        Ad VARCHAR(100)
    );
    
  • JSON Veri Desteği:
    • MySQL: JSON veri türü desteklenir.
    • PostgreSQL: JSON ve JSONB desteklenir (daha hızlıdır).
  • İndeksleme Farkları:
    • PostgreSQL, GIN ve GiST indeksleri ile daha güçlü tam metin arama sunar.
    • MySQL, FULLTEXT INDEX ile benzer bir tam metin arama özelliği sağlar.
  • Tetikleyiciler (Triggers):
    • PostgreSQL, tetikleyiciler ve saklı yordamlar konusunda daha gelişmiş yeteneklere sahiptir.
    • MySQL’de tetikleyiciler desteklenir, ancak PostgreSQL kadar esnek değildir.

MySQL ve PostgreSQL, ilişkisel veritabanı yönetim sistemlerinde en çok kullanılan iki platformdur. MySQL daha hızlı ve daha hafif yapısıyla web tabanlı projelerde yaygın olarak kullanılırken, PostgreSQL güçlü veri yapıları, JSONB desteği ve daha gelişmiş indeksleme mekanizmaları ile büyük ölçekli uygulamalar için daha uygun olabilir.

Yorum gönder

This site uses Akismet to reduce spam. Learn how your comment data is processed.