SQL Constraint (Kısıtlamalar)

SQL Constraint (Kısıtlama) Oluşturma

Constraints (Kısıtlamalar), CREATE TABLE deyimi ile tablo oluşturulduğunda veya ALTER TABLE deyimi ile tablo oluşturulduktan sonra belirtilebilir.

SÖZDİZİMİ

CREATE TABLE table_name (
 column1 datatype constraint,
 column2 datatype constraint,
 column3 datatype constraint,
 ....
);

SQL Constraint Nedir?

SQL Constraint (kısıtlamalar), bir tablodaki veriler için kurallar belirtmek için kullandığımız yapıdır. Bir tabloya girebilecek veri türünü sınırlamak için Constraint (kısıtlamalar) kullanılır. Bu, tablodaki verilerin doğruluğunu ve güvenilirliğini sağlar. Kısıtlama ile veri eylemi arasında herhangi bir ihlal varsa, eylem iptal edilir.

Constraint (Kısıtlama) sütun düzeyinde veya tablo düzeyinde olabilir. Sütun düzeyindeki kısıtlamalar bir sütuna, tablo düzeyindeki kısıtlamalar ise tüm tabloya uygulanır.

Aşağıdaki kısıtlamalar SQL’de yaygın olarak kullanılır:

  •  NOT NULL – Bir sütunun NULL değerine sahip olmamasını sağlar.
  •  UNIQUE – Bir sütundaki tüm değerlerin farklı olmasını sağlar.
  •  PRIMARY KEY – NOT NULL ve UNIQUE kombinasyonu. Bir tablodaki her satırı benzersiz bir
  • şekilde tanımlar.
  •  FOREIGN KEY – Tablolar arasındaki bağlantıları yok edecek eylemleri önler.
  •  CHECK – Bir sütundaki değerlerin belirli bir koşulu karşılamasını sağlar.
  •  DEFAULT – Değer belirtilmemişse bir sütun için varsayılan bir değer ayarlar.
  •  CREATE-INDEX – Veri tabanından çok hızlı bir şekilde veri oluşturmak ve almak için kullanılır.

SQL NOT NULL Nedir?

Varsayılan olarak, bir sütun NULL değerleri tutabilir.

NOT NULL kısıtlaması, bir sütunun NULL değerlerini kabul etmemesini sağlar.

Bu, bir alanı her zaman bir değer içermeye zorlar; NOT NULL ifadesi alana bir değer eklemeden yeni bir kayıt ekleyemeyeceğiniz veya bir kaydı güncelleyemeyeceğiniz anlamına gelir.

SQL NOT NULL Kullanımı (CREATE TABLE)

Aşağıdaki SQL ifade, “Persons” tablosu oluşturulduğunda “ID”, “LastName” ve “FirstName” sütunlarının NULL değerleri kabul ETMEYECEĞİNİ sağlar:

CREATE TABLE Persons (
 ID int NOT NULL,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255) NOT NULL,
 Age int
);

SQL NOT NULL Kullanımı (ALTER TABLE)

“Persons” tablosu zaten oluşturulduğunda “Age” sütununda NOT NULL kısıtlaması oluşturmak için aşağıdaki SQL komutunu kullanın:

ALTER TABLE Persons
ALTER COLUMN Age int NOT NULL;

SQL UNIQUE Nedir?

UNIQUE kısıtlaması, bir sütundaki tüm değerlerin farklı olmasını sağlar.

Hem UNIQUE hem de PRIMARY KEY kısıtlamaları, bir sütun veya sütun kümesi için benzersizlik garantisi sağlar.

Zaten bir PRIMARY KEY kısıtlaması otomatik olarak UNIQUE bir kısıtlamaya sahiptir.

Burada önemli nokta, tablo başına birçok BENZERSİZ kısıtlamanız olabilir, ancak tablo başına yalnızca bir PRIMARY KEY kısıtlamanız olabilir.

SQL UNIQUE Kullanımı (CREATE TABLE)

Aşağıdaki SQL, “Persons” tablosu oluşturulduğunda “ID” sütununda UNIQUE bir kısıtlama oluşturur:

CREATE TABLE Persons (
 ID int NOT NULL UNIQUE,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Age int
);

SQL UNIQUE Kullanımı (ALTER TABLE)

Tablo zaten oluşturulduğunda “ID” sütununda UNIQUE bir kısıtlama oluşturmak için aşağıdaki SQL komutunu kullanın:

ALTER TABLE Persons
ADD UNIQUE (ID);

UNIQUE kısıtlamasını adlandırmak ve birden çok sütunda UNIQUE kısıtlaması tanımlamak için aşağıdaki SQL sözdizimini kullanın:

ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

SQL UNIQUE Kullanımı (DROP TABLE)

UNIQUE kısıtlamasını kaldırmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
DROP CONSTRAINT UC_Person;

SQL PRIMARY KEY Nedir?

PRIMARY KEY kısıtlaması, bir tablodaki her kaydı benzersiz şekilde tanımlar.

Primary Keys (Birincil anahtarlar) UNIQUE değerler içermelidir ve NULL değerler içeremez.

Bir tabloda yalnızca BİR Primary Key (birincil anahtar) olabilir.

SQL PRIMARY KEY Kullanımı (CREATE TABLE)

Aşağıdaki SQL komutu, “Persons” tablosu oluşturulduğunda “ID” sütununda bir PRIMARY KEY oluşturur:

CREATE TABLE Persons (
 ID int NOT NULL PRIMARY KEY,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Age int
);

SQL PRIMARY KEY Kullanımı (ALTER TABLE)

Tablo zaten oluşturulduğunda “ID” sütununda bir PRIMARY KEY kısıtlaması oluşturmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
ADD PRIMARY KEY (ID);

Bir PRIMARY KEY kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda PRIMARY KEY kısıtlaması tanımlamak için aşağıdaki SQL sözdizimini kullanın:

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

NOT: Birincil anahtar eklemek için ALTER TABLE kullanırsanız, birincil anahtar sütun(lar)ının NUL değerler içermeyecek şekilde bildirilmiş olması gerekir.

SQL PRIMARY KEY Kullanımı (DROP TABLE)

Bir PRIMARY KEY kısıtlamasını bırakmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

SQL FOREIGN KEY Nedir?

FOREIGN KEY kısıtlaması, tablolar arasındaki bağlantıları yok edecek eylemleri önlemek için kullanılır.

FOREIGN ANAHTAR, bir tablodaki, başka bir tablodaki BİRİNCİL ANAHTAR’a başvuran bir alandır.

SQL FOREIGN KEY Kullanımı (CREATE TABLE)

Aşağıdaki SQL, “Orders” tablosu oluşturulduğunda “PersonID” sütununda bir FOREIGN KEY oluşturur:

CREATE TABLE Orders (
 OrderID int NOT NULL PRIMARY KEY,
 OrderNumber int NOT NULL,
 PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

FOREIGN KEY kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda bir FOREIGN KEY kısıtlaması tanımlamak için aşağıdaki SQL sözdizimini kullanın:

CREATE TABLE Orders (
 OrderID int NOT NULL,
 OrderNumber int NOT NULL,
 PersonID int,
 PRIMARY KEY (OrderID),
 CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
 REFERENCES Persons(PersonID)
);

SQL FOREIGN KEY Kullanımı (ALTER TABLE)

“Orders” tablosu zaten oluşturulduğunda “PersonID” sütununda bir FOREIGN KEY kısıtlaması oluşturmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

FOREIGN KEY kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda FOREIGN KEY kısıtlaması tanımlamak için aşağıdaki SQL sözdizimini kullanın:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

SQL FOREIGN KEY Kullanımı (DROP TABLE)

FOREIGN KEY kısıtlamasını bırakmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

SQL CHECK Nedir?

CHECK kısıtlaması, bir sütuna yerleştirilebilecek değer aralığını sınırlamak için kullanılır.

Bir sütunda bir CHECK kısıtlaması tanımlarsanız, bu sütun için yalnızca belirli değerlere izin verilir.

Bir tabloda bir CHECK kısıtlaması tanımlarsanız, satırdaki diğer sütunlardaki değerlere dayalı olarak belirli sütunlardaki değerleri sınırlayabilir.

SQL CHECK Kullanımı (CREATE TABLE)

Aşağıdaki SQL, “Persons” tablosu oluşturulduğunda “Age” sütununda bir CHECK kısıtlaması oluşturur. CHECK kısıtlaması, bir kişinin yaşının 18 veya daha büyük olmasını sağlar:

CREATE TABLE Persons (
 ID int NOT NULL,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Age int CHECK (Age>=18)
);

Bir CHECK kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda bir CHECK kısıtlaması tanımlamak için aşağıdaki SQL sözdizimini kullanın:

CREATE TABLE Persons (
 ID int NOT NULL,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Age int,
 City varchar(255),
 CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);

SQL CHECK Kullanımı (ALTER TABLE)

Tablo zaten oluşturulduğunda “Age” sütununda bir CHECK kısıtlaması oluşturmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
ADD CHECK (Age>=18);

Bir CHECK kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda bir CHECK kısıtlaması tanımlamak için aşağıdaki SQL sözdizimini kullanın:

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

SQL CHECK Kullanımı (DROP TABLE)

Bir CHECK kısıtlamasını bırakmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

SQL DEFAULT Nedir?

DEFAULT kısıtlaması, bir sütun için varsayılan bir değer ayarlamak için kullanılır.

Başka bir değer belirtilmemişse, varsayılan değer tüm yeni kayıtlara eklenecektir.

SQL DEFAULT Kullanımı (CREATE TABLE)

Aşağıdaki SQL, “Persons” tablosu oluşturulduğunda “City” sütunu için bir VARSAYILAN değeri ayarlar:

CREATE TABLE Persons (
 ID int NOT NULL,
 LastName varchar(255) NOT NULL,
 FirstName varchar(255),
 Age int,
 City varchar(255) DEFAULT 'Sandnes'
);

DEFAULT kısıtlaması, GETDATE() gibi işlevleri kullanarak sistem değerlerini eklemek için de kullanılabilir:

CREATE TABLE Orders (
 ID int NOT NULL,
 OrderNumber int NOT NULL,
 OrderDate date DEFAULT GETDATE()
);

SQL DEFAULT Kullanımı (ALTER TABLE)

Tablo zaten oluşturulduğunda “Cİty” sütununda bir DEFAULT kısıtlaması oluşturmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
ADD CONSTRAINT df_City
DEFAULT 'Sandnes' FOR City;

SQL DEFAULT Kullanımı (DROP TABLE)

DEFAULT kısıtlamasını bırakmak için aşağıdaki SQL’i kullanın:

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;

SQL CREATE INDEX Nedir?

CREATE INDEX deyimi, tablolarda dizinler oluşturmak için kullanılır.

İndeksler, veri tabanından diğerlerine göre daha hızlı veri almak için kullanılır. Kullanıcılar indeksleri göremezler, sadece aramaları/sorguları hızlandırmak için kullanılırlar.

Not: Bir tablonun dizinlerle güncellenmesi, bir tablonun dizinler olmadan güncellenmesinden daha uzun sürer (çünkü dizinlerin de güncellenmesi gerekir). Bu nedenle, yalnızca sık sık aranacak sütunlarda dizinler oluşturun.

CREATE INDEX Sözdizimi

Bir tablo üzerinde bir dizin oluşturur. Yinelenen değerlere izin verilir:

CREATE INDEX index_name
ON table_name (column1, column2, ...);

CREATE UNIQUE INDEX Sözdizimi

Bir tabloda benzersiz bir dizin oluşturur. Yinelenen değerlere izin verilmez:

CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

CREATE INDEX Kullanımı

Aşağıdaki SQL ifadesi, “Kişiler” tablosundaki “Soyadı” sütununda “idx_lastname” adlı bir dizin oluşturur:

CREATE INDEX idx_lastname
ON Persons (LastName);

Bir sütun kombinasyonunda bir dizin oluşturmak istiyorsanız, sütun adlarını virgülle ayırarak parantez içinde listeleyebilirsiniz:

CREATE INDEX idx_pname
ON Persons (LastName, FirstName);

DROP INDEX Kullanımı

DROP INDEX deyimi, bir tablodaki bir dizini silmek için kullanılır.

DROP INDEX table_name.index_name;