SQL’deki DEFAULT kısıtlaması, tablonun sütununa otomatik bir varsayılan değer eklemek için kullanılır. Varsayılan değer kısıtlaması kullanılmazsa, sütunun değeri NULL olur.
Bu konuyu SQL sunucusundaki varsayılan kısıtlamayla, nasıl kullanılacağı ve varsayılanın ne zaman kullanılacağı ile ilgili örnek ve açıklama ile cevaplayacağız.
Örneğin, SQL veritabanındaki bir tablonun sütunu NULL değerini kabul edebilirse ve tablodaki kaydı doldururken bu sütuna bir değer atamazsak, buna NULL değeri atanır. Aşağıdaki tabloya bakın. Bu sütunu “Evli” veya “Bekar” medeni durumuyla doldurmazsak, KISI tablosunun Sütun Durumu durumu NULL değerine sahip olacaktır.
ID | isim | evlilikDurum |
---|---|---|
1 | Hayri | NULL |
2 | Ahmet | Evli |
3 | Hüseyin | Evli |
4 | Necati | NULL |
Yukarıdaki tabloyu oluşturmak ve kayıt eklemek için oluşturulması gereken SQL kodu şu şekilde oluşacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE KISI ( ID int NOT NULL, isim varchar(255) NOT NULL, evlilikDurum varchar(255) NULL ) INSERT INTO KISI(ID,isim) VALUES(1,'Hayri') INSERT INTO KISI(ID,isim,evlilikDurum) VALUES(2,'Ahmet','Evli') INSERT INTO KISI(ID,isim,evlilikDurum) VALUES(3,'Hüseyin','Evli') INSERT INTO KISI(ID,isim) VALUES(4,'Necati') |
Yukarıdaki gibi oluşturulmuş bir tabloda EVLİ olan kişiler girilirken değer ataması yapılmış olmasına rağmen BEKAR olan kişisel için değer ataması yapılmadığı için bekar olan kişilerin evlilikDurum kısmında NULL değeri görünmektedir.
SQL Default Değer Atama
Şimdi, tablonun evlilikDurum sütununa varsayılan kısıtlama uygularsak ve bu sütuna bir değer sağlamazsak, varsayılan değer otomatik olarak eklenir. Örneğin, aşağıdaki sorguda KISI tablosunu oluştururken “BELİRTMİYOR” değerine sahip varsayılan kısıtlama uyguladık.
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE TABLE KISI ( ID int NOT NULL, isim varchar(255) NOT NULL, evlilikDurum varchar(255) DEFAULT 'BELİRTMİYOR' ) INSERT INTO KISI(ID,isim) VALUES(1,'Hayri') INSERT INTO KISI(ID,isim,evlilikDurum) VALUES(2,'Ahmet','Evli') INSERT INTO KISI(ID,isim,evlilikDurum) VALUES(3,'Hüseyin','Evli') INSERT INTO KISI(ID,isim) VALUES(4,'Necati') |
Bu nedenle, bu sütuna kayıt eklenirken ‘EVLİ’ veya ‘BEKAR’ değeri sağlamazsak, varsayılan değer DEFAULT ’BELİRTMİYOR’ değeri NULL yerine otomatik olarak ayarlanır.
ID | isim | evlilikDurum |
---|---|---|
1 | Hayri | BELİRTMİYOR |
2 | Ahmet | Evli |
3 | Hüseyin | Evli |
4 | Necati | BELİRTMİYOR |
SQL’de Varsayılan kısıtlama ne zaman kullanılır:
- Bir tablonun sütununa okunabilir ve anlamlı veriler mi istiyorsunuz?
- Kullanıcı günlük analizi için satır eklerken günlüğe okunabilir veriler
- Aynı tarih sütununda otomatik tarih ve saat vb. ayarlamak istiyorsanız, tarih DFAULT GETDATE() tarih gibi
SQL’de DEFAULT kısıtlaması Sonradan Nasıl Eklenir?
Kısıtlama olmadan tablo oluşturulduktan sonra ALTER komutu ile sonradaki istenilen alana kısıtlama yapabiliriz. Aşağıda oluşturulan tabloya sonraki ALTER komutu ile DEFAULT kısıtlaması yapılmıştır.
1 2 3 4 5 6 7 |
CREATE TABLE KISI ( ID int NOT NULL, isim varchar(255) NOT NULL, evlilikDurum varchar(255) ) |
DEFAULT Kısıtlmaması ekleme
1 2 3 4 5 6 |
--kisi_evlilikdurum_default isimli yeni bir kısıt ekledik ALTER TABLE KISI ADD CONSTRAINT kisi_evlilikdurum_default DEFAULT 'BELİRTMİYOR' FOR evlilikDurum |
SQL’de DEFAULT kısıtlama nasıl kaldırılır?
Bir tablodaki bir sütuna uygulanmış olan varsayılan bir kısıtlamayı bırakmak için. İlk önce tabloyu, ardından sütunu değiştirmeniz ve DROP’u uygulamalıyız.
Yukarıdaki tabloda, Medeni Durumu sütununda varsayılan kısıtlamayı bırakmak istiyorsak, aşağıdaki sorgular (SQL Server ve Oracle) işinizi görecektir.
1 2 3 4 |
--eklediğimiz kısıt ismi ile kaldırmak için ALTER TABLE KISI DROP CONSTRAINT kisi_evlilikdurum_default; |
Kaynak:
https://www.interviewsansar.com/2017/02/08/default-constraint-in-sql-example/
Yorum Yap