Eğer Sütun özellikleri hakkında yeterli bilgiye sahip değilseniz tablo tasarımında oldukça güçlük çekmemiz kaçınılmazdır. Bu yüzden bu yazımda Veritabanının en temel parçası olan sütunların SSMS (SQL Server Management Studio) özelliklerine örneklerle değineceğim.
Öncelikle SSMS üzerinde yeni bir tablo oluşturmak için aşağıda göründüğü gibi Object Explorer penceresinde bulunan Database ağacını genişleterek Tables ağacını sağ tıklayarak New Table.. ı tıklıyoruz.
Karşımıza çıkan ekranda Cloumn Name ve Data Type alanlarını doldurmanız gerekmekte aşağıda göründüğü gibi pencerenin alt kısmında o veri tipinin özellikleri de yer almakta.
Not: Bazı özellikler yalnızca belirli veri türleri için görüntülenir.
Şimdi bu özelliklere ve ne işe yaradıklarına tek tek değinelim.
Name:
Name; basitçe sütunun ismidir. Alan adını değiştirmek için tablo tasarım gönümünü yada özellikler penceresini kullanabilmekteyiz.
Allow Nulls:
Data Type:
Default Value or Binding:
Default Value or Binding, ise özellikle null olmamasını istediğimiz alanlarda kaydı otomatik olarak varsayılan bir değer atamak için kullanılan özelliktir. Eğer INSERT deyimi içerisinde o alana ait bir kayıt girilmese bile burada belirlediğimiz değeri otomatik olarak o Cloumn içine kaydedecektir.
Length:
Length, Karakter ve numerik tipindeki verilerin maksimum alabileceği uzunluğu belirtir. Örneğin navchar(50) o alanın 50 karakterlik maksimum uzunluğa sahip olabileceğini belirtmektedir.
Collation:
Collation, SQL Server’ın destekleyeceği dilin ve dillere özel karakter yapılarının belirlenmesini sağlayan özelliktir. Yani Siz veri tabanınızda Türkçe karakter seti kullanacaksanız Collation özelliğini ona göre seçmek durumudasınız. Bu özellik SQL Server da sütun, veritabanı ve sunucu seviyelerinde ayarlanabilmektedir.
Computed Column Specification:
Computed Column Specification, hesaplama yapılması gereken sütunlerın otomatik olarak girilen formüllere göre hesaplayıp değerleri atmasını sağlamaktadır.
- (Formula): bu alan formülün girileceği alandır.
- Is Persisted: bu özellik veritabanından formülün mü yoksa hesaplanan değerin mi saklanması gerektiğini belirtir.
INSERT INTO demo (Column1,Column2) VALUES ( 5,50)
Bu örnek için column1 ve column2 ye değerleri aşağıdaki gibi atadığımızda karşımıza çıkan sonuç ise aşağıda göründüğü gibi olmaktadır.
Condensed Data Type:
Description:
Deterministic:
DTS-published:
Full-text Specification:
- (Is Full-text Indexed): Eğer Full-Text indeksiniz mevcutsa evet olarak gözükecektir.
- Full-text Type Column: Eğer Full-Text indeks varsa bu sütun gözükecektir. Eğer yoksa None değerini alacaktır.
- Language: İndeks Sütununun dilini belirtir özellikle sözcük ayraçları için önemlidir.
- Statistical Semantics: Full-text Index oluşturulurken Statistical Semantics özelliği açıldı ise evet açılmadıysa hayır olarak gösterilecektir.
Has Non-SQL Server Subscriber:
Identity Specification:
Alanın bir Identity olup olmadığını gösterir.
- (Is Identity): Alanın Identity alanı olup olmadığını belirtir. Identity alanlar sayılsa olup, tekil ve o tabloda sadece bir tane olabilen ve otomatik artan alanlardır.
- Identity Increment: artış miktarını belirler.
- Identity Seed: İlk Satıra verilecek olan otomatik değerdir. Varsayılan “1” olarak gelir.
Indexable:
İndex oluşturulup oluşturulmadığını geliştiricinin görmesini sağlar.
Is Sparse:
SQL Server 2008 ile birlikte gelen bu özellik, Null değeri alan alanlar için depolama alanı kullanılmasını engellemektedir.
Is Columnset:
Sparse Column içinde Null olmayan bir değer girildiğinde Bu değerin XML olarak saklanabilmesini sağlayan özelliktir.
- Her tabloda sadece bir adet Cloumnset alan olabilir.
- Kısıtlama yada varsayılan değer almazlar.
- Bu alan için XML data tipi kullanılmalıdır.
CREATE TABLE DEMO ( Column1 int primary key, Column2 int sparse, Column3 xml column_set for all_sparse_columns )
Merge-Published:
Sütunun Merge (birleştirme) edilerek replike edildiği durumlarda “Yes” değerini olan ve kullanıcı tarafından müdahale edilemeyen özelliktir.
Not for Replication:
Genellikler Identity alanlarında orijinal Identity verilerinin tutulması için kullanılan ve Replikasyonda kullanılmaması gereken sütunlarda kullanılır. Eğer Replikasyon kullanılması gerekiyor ve bir sütun Identity özelliğine sahip ise mutlaka bu özelliğin de “Yes” olması gerekmektedir.
Replicated:
Sadece SQL Server 2005’te mevcut olan özellik Replike edilmiş sütunları gösterir.
RowGuid:
Otomatik olarak unique identity değer oluşturmak için kullanılan özelliktir. Sütunun veri tipi uniqueidentifer olduğu durumlarda gözükür.
Örnek: Elimizdeki tabloda Column4’ü RowGuid özelliği aktif edilen bir Column olsun.
Aşağıdaki verilerle INSERT deyimini çalıştırdığımızda
INSERT INTO DEMO (Column2, Column3) VALUES (‘Cheese’, ‘Pizza’) INSERT INTO DEMO (Column2, Column3) VALUES (‘Ham’, ‘Pizza’)
Sonuç olarak ise aşağıda gördüğümüz gibi Column4 benzerbir bir ID olarak doldurulmakta.
Size:
Sütuna girilecek her kayıt için ne kadar yer ayrılması gerektiğini belirtir.
Örneğin aşağıda tarih zaman verileri için kullanılan alanların olması gerektiği boyutları listeleyen tabloya bakabilirsiniz.
Data Type | Storage Space |
---|---|
smalldatetime | 4 bytes |
datetime | 8 bytes |
datetime2 | 6 to 8 bytes |
datetimeoffset | 8 to 10 bytes |
date | 3 bytes |
time | 3 to 5 bytes |
Bu makalede SQL Server’da tablolalarla uğraşırken en çok karşılaşacağınız Sütun özelliklerine değinmiş olduk. İlerleyen günlerde yine fırsat buldukça bu tarz makalelere daha fazla zaman ayırmayı istiyorum.
Adaş müthiş açıklamışsın gerçekten. bir yerde takılmıştım. Sayende buldum. Teşekkürler
Rica ederim adaş işine yaramasına sevindim.
Gerçekten çok güzel bir açıklama olmuş her şey tek tek açıklanmış . Keşke daha önce rastlasa idim bu sayfaya … Hocam yayınlanmış bir kitabınız var mı ?
Merhaba İbrahim, teşekkür ederim beğenmene sevindim. Şu an için yok maalesef belki ileride. ;)
identity column hakında bilgi verebilir misiniz?
identity column hakkında bilgi verebilir misinz?
@Ramazan identity column’dan kastın identity özelliği olsa gerek. “Identity” anlam olarak tanım olarak kimlik anlamına gelir ki SQL için o verinin erişilebilirliğini ve tekilliğini sağlayabilmek adına benzersiz bir değer üretilmesini sağlayan özelliktir. Her tabloda en az bir tane identity özelliğine sahip column olması o veriyi diğer verilerden tamamen ayrılmasını ve daha sonra o veriye daha hızlı ve kolay erişebilmeni sağlamaktadır. Identity Column; Column özellikleri penceresinden “is identity” özelliğinin “Evet” olarak ayarlanması ile sağlanabilir burada dikkat edilecek bir diğer hususta “Seed” ve “Increment” özellikleridir. Eğer increment özelliği evet yapılırsa bu değer otomatik olarak arttırılacaktır. Seed değeri ise başlangıç değeri olarak belirlenecektir.
İyi günler, konu üzerinden epey bir vakit geçmiş ama belki hala oralardasınızdır diye bir sorayım dedim:
Computed Column Specification, alanından iki date tipinde Columnun çıkarılması işlemini gerçekleştiremedim. int veri tipinde sorun yok gayet stabil çalışıyor ama date olmuyor. Bu problem için bir çözüm yolunuz var mıdır?
geç cevap için kusura bakmayın. yoğunluktan eskisi kadar bakamıyorum siteme ama şu şekilde denyebilir minisiz?
(CASE
WHEN [Control_Stage2] IS NULL THEN NULL -- or -1 or what you like
ELSE datediff(day,[Control_OpenDate],getdate())
END)