0Pricing
SQL Academy · Ders

UNIQUE Kısıtlamaları ve Bileşik Anahtarlar

Tek veya birden çok sütunda benzersizliği zorunlu kılın, benzersiz indekslerde NULL değerlerini anlayın ve doğal anahtarlar için bileşik benzersizlik kullanın.

UNIQUE Kısıtlamaları ve Bileşik Anahtarlar, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

UNIQUE: Yinelenen Değerlere İzin Verilmez

UNIQUE kısıtı, kısıtlanan sütunlarda iki satırın aynı değeri paylaşmasını engeller:

CREATE TABLE users (
  id BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE,
  username VARCHAR(50) UNIQUE
);

UNIQUE Dizin Oluşturur

UNIQUE kısıtı, benzersiz bir B-ağacı diziniyle uygulanır; bu nedenle söz konusu sütuna göre yapılan aramalar hızlıdır.

-- This shows the implicit index:
SELECT indexname FROM pg_indexes WHERE tablename = 'users';

Bileşik UNIQUE

Sütunların bir bileşimi genelinde benzersizlik:

CREATE TABLE memberships (
  user_id BIGINT NOT NULL,
  group_id BIGINT NOT NULL,
  role TEXT NOT NULL,
  UNIQUE (user_id, group_id)        -- a user can be in a group at most once
);

UNIQUE ile PRIMARY KEY Karşılaştırması

Bir PRIMARY KEY, esasen UNIQUE + NOT NULL + belirlenmiş kimliktir. Bir tabloda ONE PRIMARY KEY bulunabilir, ancak birçok UNIQUE kısıtı olabilir.

UNIQUE İçinde NULL

Standart SQL, NULL'ı diğer tüm değerlerden (diğer NULL'lar da dahil) farklı kabul eder. UNIQUE sütununda birden çok NULL satırı bulunabilir:

CREATE TABLE invites (email VARCHAR(255) UNIQUE);
INSERT INTO invites VALUES (NULL), (NULL);   -- both succeed

-- PostgreSQL 15+ offers UNIQUE NULLS NOT DISTINCT to treat NULL as equal:
CREATE TABLE invites2 (email VARCHAR(255) UNIQUE NULLS NOT DISTINCT);

Bileşik PRIMARY KEY

Doğal bir bileşik anahtar uygunsa onu PRIMARY KEY olarak kullanın:

CREATE TABLE order_items (
  order_id   BIGINT NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
  product_id BIGINT NOT NULL REFERENCES products(id),
  quantity   INT NOT NULL CHECK (quantity > 0),
  PRIMARY KEY (order_id, product_id)
);

Yedek Anahtar + UNIQUE Doğal Anahtar

Yaygın bir kalıp: birincil anahtar olarak sentetik kimlik, UNIQUE aracılığıyla gerçek dünyadaki benzersizlik:

CREATE TABLE products (
  id BIGSERIAL PRIMARY KEY,
  sku VARCHAR(50) NOT NULL UNIQUE,
  name TEXT NOT NULL
);

Kısmi UNIQUE Dizinleri

Yalnızca bazı satırlar arasında benzersizlik:

-- One active email per user (deleted users can re-register):
CREATE UNIQUE INDEX users_active_email_idx
  ON users (email)
  WHERE deleted_at IS NULL;

İfade Tabanlı UNIQUE Dizinleri

Hesaplanmış bir ifade üzerinde benzersizlik; büyük/küçük harfe duyarsız e-postalar için kullanışlıdır:

CREATE UNIQUE INDEX users_email_ci_idx ON users (LOWER(email));

UNIQUE İhlali Hataları

Yinelenen bir INSERT şu sonucu döndürür:

ERROR:  duplicate key value violates unique constraint "users_email_key"
DETAIL:  Key (email)=(alice@example.com) already exists.

UPSERT, UNIQUE Üzerine Kurulur

ON CONFLICT, hedef olarak bir UNIQUE veya PRIMARY KEY gerektirir; PostgreSQL yinelenen sayılan şeyi bu şekilde bilir.

Özet

UNIQUE, NOT NULL'dan sonra en önemli ikinci kısıtınızdır.

  • Tekli veya bileşik
  • "Yalnızca etkin satırlar arasında" için kısmi UNIQUE
  • Büyük/küçük harfe duyarsız anahtarlar için ifade tabanlı UNIQUE
  • NULL'ın farklı kabul edilmesi kuralına dikkat edin

Hızlı Kontrol

Standart SQL'de UNIQUE sütunu birden çok NULL değeri içerebilir mi?

Sıkça Sorulan Sorular

“UNIQUE Kısıtlamaları ve Bileşik Anahtarlar” dersi ücretsiz mi?

Evet — “UNIQUE Kısıtlamaları ve Bileşik Anahtarlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“UNIQUE Kısıtlamaları ve Bileşik Anahtarlar” dersinde ne öğreneceğim?

Tek veya birden çok sütunda benzersizliği zorunlu kılın, benzersiz indekslerde NULL değerlerini anlayın ve doğal anahtarlar için bileşik benzersizlik kullanın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“UNIQUE Kısıtlamaları ve Bileşik Anahtarlar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. NOT NULL ve CHECK Kısıtlamaları
  2. UNIQUE Kısıtlamaları ve Bileşik Anahtarlar
  3. FOREIGN KEY ve Başvuru Eylemleri
  4. DEFAULT Değerleri ve GENERATED Sütunlar
← SQL Academy Sayfasına Dön