18 Aralık 2009 Cuma

NOT NULL CONSTRAINT / NULL VALUE

Merhaba,

Sıklıkla karıştırılan ve bol bol sorular gelen bir konuyu ele almak istiyorum. NULL değer karmaşası ve NOT NULL constraint'i.

Öncelikle aklımızda bulundurmamız gereken bilgi şudur; NULL bir değer değildir! NULL sıfır değer demekte değildir! NULL bir değere sadece değersizdir diyebiliriz.

NOT NULL Constraint ile ilgili olarak;

1) Bir NOT NULL constraint'i sadece sütun seviyesinde tanımlanabilir.
2) Tablo objesinin yaratılışı sırasında CREATE TABLE statement'ı ile birlikte yaratılabilir.
3) Tablo objesi yaratıldıktan sonra ALTER TABLE ... MODIFY ifadesi ile tablo'ya eklenebilir.
Önemli Not: ALTER TABLE ifadesini sadece bir constraint'i drop, enable ve disable etmek için kullanabilirsiniz. Constraint yapısını değiştirmek için kullanılamaz!
4) NOT NULL constraint'ini tanımlayacağımız sütundaki bütün verilerin null dışında bir değer olması gerekiyor ya da tablonun tamamen boş olması.
5) NOT NULL constraint'leri data dictionary'de CHECK constraint başlığı altında saklanırlar. Dictionary sorgulandığı zamansa CHECK constraint'i olduğunu gösteren "C" değeri görünür.

NOT NULL constraint'leri ile ilgili olarak aklıma ilk gelenler ve önemli olanları yukarıdaki gibi sıraladım. Unutmadan ufak bir dip not; ORDER BY ifadesinin DESC, yani büyükten küçüğe doğru sıralama ile kullandığımız zaman ilk karşımıza gelecek değer öbekleri NULL olanlardır. NULL değerler ORDER BY ifadesinde en büyük olarak geçerli sayılırlar. Bu duruma da dikkat etmekte fayda vardır.

İyi çalışmalar,

Ogan

3 yorum:

Ümit Karaoğul dedi ki...

Öncelikle değerli vaktinizi ayırıp bizlerle Oracle deneyimlerinizi paylaştığınız için teşekkür ederim.Haddim olmayarak yazınıza ufak bir not eklemek istedim.

Sıralamada(ORDER BY ifadesinde) NULL değerlerin yerini NULLS FIRST ve NULLS LAST ifadeleri ile belirleyebiliriz.

İş hatanızda başarılar.

Ogan Ozdogan dedi ki...

Not için teşekkürler.

OGAN dedi ki...

Gerçekten ilginç Türkiye de acaba kaçtane oGan vardır ve yazılımcıdır diyordum kendi kendime :)
Kendimi tek sanıyordum, birtane daha oGan hemde yazılımcı :)

Takip et: @oganozdogan