İçeriğe geç

SQL Server; Tablolarda Sutün Özellikleri

SQL Server'da Sütun özellikleri

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.

SQL New Table

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.

Data type property

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:

Allow Nulls sütunda bulunacak verilerin Null değer alıp almayacaklarını gösterir. (Bilindiği üzere null değer içinde veri bulunmayan alan ifade etmektedir ve boşluk ve sıfırdan tamamen farklıdır.) Eğer alanın Allow Nulls özelliği hayır seçilirse alan boş bırakılamaz ve mutlaka bir değer alması gerekmektedir. Bu özelliği aynı zamanda tablo tasarım görünüünde Allow Nulls alanının checkbox’ını kaldırırarakta yapabilirsiniz.

Data Type:

Data Type, adından da anlaşılacağı gibi alana girilebilecek veri tipini belirtir. Bu alanda seçilen tipe göre verinin ne kadar yer kaplayacağı gibi özelliklerde belirlenmektedir. veri tipleri hakkında daha geniş bilgi sahibi olmak için bu makale‘ye göz atabilirsiniz.

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.
Örnek: 
Elimizde Column1 Column2 ve Column3 olmak üzere ü adet sütun olsun bu sütunlardan Column3’ün değeri Column1 ve Column2’nin çarpımları olsun. Bu durumda Computed Column Specification alanında Column1*Column2 yazmamız yeterli olacaktır.
 Computed Column
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.

Computed Column Specification result

Condensed Data Type:

Bu özellik Data Type ve Length özelliklerine göre alan ve maksimum karakter sayıları hakkında bilgi gösterir.
Condensed Data Type

Description: 

Sütun hakkında açıklama yazmamızı sağlar.

Deterministic:

Deterministic, seçilen sütunun veri tipinin kesin olarak tespit edilip edilemediğini ifade eder., Özellikle hesaplanan değerlerde dönen verilerin farklı tiplerde dönebildiği durumlarda kullanılır.

DTS-published:

DTS (SQL 2005) olarak yayınlanan sütunları belirtir.

Full-text Specification:

Değiştirilebilir olması için veri tipi Full-Text oalrak seçilmiş ve bir indeks belirtilmiş olması gerekmektedir.
  •    (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.
Full-text index

Has Non-SQL Server Subscriber:

Oracle ya da DB2 gibi farklı veritabanı dillerinden aktarılan verileri belirtir. Eğer SQL Server dışından replike edilmiş bir veri alanı ise bu özellik “Yes” değerini alacaktır.

 

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.

RowGuid

 

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.

rowguid result

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.

 

 

“SQL Server; Tablolarda Sutün Özellikleri” hakkında 9 yorum

  1. Adaş müthiş açıklamışsın gerçekten. bir yerde takılmıştım. Sayende buldum. Teşekkürler

  2. 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ı ?

  3. @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.

  4. İ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?

  5. 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)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.