www.fatihkabakci.com

Personal Website and Computer Science TUR EN

SQL SERVER VERI TIPLERI

Last update: 12/2/2012 12:31:00 PM

Yazan:Fatih KABAKCI

Sql Server,verileri çeşitli türleri ile saklamak için,veritabanı programcılarına ve kullanıcılarına çeşitli veri tipleri sunmaktadır.Bu veriler metinsel,tarihsel,sayısal ve parasal tipte olacağı gibi,görüntü,XML tabanlı ve kullanıcı tarafından oluşturulmuş(UDDT) tipte de olabilmektedir.Bu yazıda yukarıda sayılan Sql Server tarafından tanımlanmış veri tipleri anlatılacaktır.

Metinsel(String) Veri Tipleri

Sql Server hem ASCII karakter seti,hem de Unicode uluslararası karakter setini kullanır.

ASCII için char ve varchar veri tipleri kullanılır.Bu verilerin sakladığı her karakter 1 byte büyüklüğündedir ve toplamda 8000 byte,yani 8000 karakter saklamaktadır.
  • char,sabit uzunluklu veri kümesi saklayan veri tipidir.Bu veri tipini kullanan bir sütunda,girilecek her veri aynı uzunlukta olmalıdır.Telefon numaraları,buna bir örnek olarak verilebilir.
  • varchar,değişken uzunluklı veri kümesi saklayan veri tipidir.Bu veri tipini kullanan bir sütünda,çeşitli uzunluklara sahip veriler bulunabilir.Örnek olarak isim ve soyisimler,mail adresleri verilebilir.

Unicode için nchar ve nvarhcar veri tipleri kullanılır.Bu verilerin sakladığı her karakter 2 byte büyüklüğündedir ve toplamda 8000 byte,yani 4000 karakter saklamaktadır.

nvarchar ve nchar veri tiplerinin görevleri,char ve varchar ile aynıdır.Tek farkı kullanılan karakter formatıdır.Unicode'nin avantajı,uluslararası karakter setini kullanmasından dolayı,dünyada tanımlı olan her alfabeyi içermesidir.Bu verilerin bozulmadan taşınabilirliğini sağlar.Dezavantajı ise,max 8000 byte ile 4000 karakter saklayabilmesidir.Yani ASCII'ye göre yarım miktarda veri kapasitesine sahiptir.

Genelde tavsiye edilen,şayet kullanılacak veritabanı global olarak bir çok ülke vatandaşları,ülkeler için kullanılacaksa nvarchar ve nchar,sadece yerel olarak kullanılacaksa char,varchar kullanılmasıdır.Ayrıca ASCII karakter seti ile daha fazla karakter saklama ihtiyacına bağlı olarak Sql Server collation ayarları yaparak,hem ASCII karakter setini kullanıp,hem de taşınabilirlik problemlerinin önüne geçilebilir.Ancak burada dikkat edilmesi gereken,kullanılacak veritabanını kimlerin kullanacağıdır.

Çeşitli tanımlama örnekleri

ad char(MAX)-> max 8000 byte,max 8000 sabit uzunluklu karakter saklayabilecek veriler için.
ad char(20) -> max 20 byte,max 20 sabit uzunluklu karakter saklayabilecek veriler için.

ad varchar(MAX)-> max 8000 byte,max 8000 sabit uzunluklu karakter saklayabilecek veriler için.
ad varchar(20) -> max 20 byte,max 20 sabit uzunluklu karakter saklayabilecek veriler için.

ad nchar(MAX)-> max 8000 byte,max 4000 sabit uzunluklu karakter saklayabilecek veriler için.
ad nchar(20) -> max 20 byte,max 10 sabit uzunluklu karakter saklayabilecek veriler için.

nvarchar(MAX)-> max 8000 byte,max 4000 değişken uzunluklu karakter saklayabilecek veriler için.
nvarchar(20) -> max 20 byte,max 10 değişken uzunluklu karakter saklayabilecek veriler için.

Tarihsel(Date) Veri Tipleri

Sql Server tarih ve zaman tipli verileri desteklemek adına tarih ve zamanı içine alan datetime ve sadece tarihi içine alan smalldatetime veri tiplerini sunmaktadır.
  • datetime,1 Ocak 1753 ve 31 Aralık 9999 arası tarihleri saklayabilen veri tipidir.
  • smalldatetime,1 Ocak 1900 ve 6 Haziran 2079 arası tarihleri saklayabilen veri tipidir.

Çeşitli tanımlama örnekleri

tarihvesaat datetime -> 1 Ocak 1753:##:##:##-31 Aralık 9999:##:##:## arası veriler için.
tarih smalldatetime -> 1 Ocak 1900-6 Haziran 2079 arası veriler için.
#:saat formatı

Parasal(Money) Veri Tipleri

Sql Server parasal türde veri saklamak için money ve smallmoney tiplerini sunmaktadır.Bu veriler,virgülden sonra 4 basamağa kadar duyarlı ondalık tipli verilerdir.
  • money, 99999999999999,9999,yaklaşık 99 Trilyon ile ,-99999999999999,9999 arası veriler için kullanılır.
  • smallmoney,214,748.3648,yaklaşık 214 bin ile ,-214,748.3648 arası veriler için kullanılır.

Çeşitli tanımlama örnekleri

para money -> yaklaşık 99 Trilyon büyüklüğüne sahip veriler için.
para smallmoney -> yaklaşık 214 Bin büyüklüğüne sahip veriler için.

Sayısal Veri Tipleri

Sql Server sayısal veri anlamında,tamsayılar,kayan noktalı sayılar,numerik sayılar ve binary sayılar için destek sağlamaktadır.
İkili(Binary) veri tipleri
1 ve 0'ları temsil eden,ikili tabandaki veri tipleridir.Sabit uzunluklu kullanılan binary ve değişken uzunluklu kullanılan varbinary sunulmaktadır.
  • binary,sabit uzunluklu ikili verileri,8000 byte'a kadar alabilen veri tipidir.
  • varbinary,değişken uzunluklu ikili verileri 8000 byte'a kadar alabilen veri tipidir.

Çeşitli tanımlama örnekleri

bin binary -> 8000 byte,sabit uzunluklu ikili veriler için. 
bin varbinary -> 8000 byte,değişken uzunluklu ikili veriler için. 
SELECT CAST (123456 AS BINARY(4)) -> şeklindeki bir tip dönüşümü ile veriler kaydedilebilir.
Tamsayı(Integer) veri tipleri
Tamsayı formatındaki verileri desteklemek adına Sql Server büyüklüklerine göre 4 farklı tamsayı formatı sunmaktadır.
  • tinyint,1 byte büyüklüğüne sahip,0-255 arasındaki tam sayı veriler için kullanılır.
  • smallint,2 byte büyüklüğüne sahip,+- 32 bin arasındaki tam sayı veriler için kullanılır.
  • int,4 byte büyüklüğüne sahip,+- 2 milyar arasındaki tam sayı veriler için kullanılır.
  • bigint,8 byte büyüklüğüne sahip,+ 2u63 ile -2u63 arasındaki tam sayı veriler için kullanılır.
  • Çeşitli tanımlama örnekleri

    s tinyint -> 8 bitlik, 0-255 arasındaki mini tamsayılar.
    s smallint -> 16 bitlik, +32,768 ile -32,768 arasındaki küçük tamsayılar.
    s int -> 32 bitlik,  -2,147,483,648 ile 2,147,483,647 arasındaki tamsayılar.
    s bigint -> 64 bitlik, -9,223,372,036,854,775,808 ile +9,223,372,036,854,775,807 arasındaki büyük tamsayılar
    
    Kayan noktalı(Float) veri tipleri
    Sql server kayan nokta aritmetiği(floating point aritmetical) için float ve onun maksimum uzunluk değeri ile tanımlanan real veri tipleridir.
    • float,4 byte bilgi saklayan float,+-3.4E38 arasında veri saklar.Uzunluk bilgisi 1 ile 24 arasında olup,7 anlamlı basamağa kadar çıkmaktadır.
    • real,8 byte bilgi saklayan real,–3.40E + 38 ile -1.18E - 38,arasında olup 15 anlamlı basamağa kadar çıkmaktadır.Float(24)'e tekabül etmektedir.
    • Decimal(precision,scale),precision ile anlamlı basamak sayısı ve scale ile de virgülden sonraki kaç basamağın dikkate alınacağını belirten bir veri tipidir.Anlamlı basamak sayısı 1 ile 38 arasında tanımlanabilir.Scale faktörü ise
      0 <= s <= p
      
      ile ilişkiye sahiptir.Precision faktörü bilginin kapasitesi ile alakalı olduğundan aşağıdaki ilişki modeline sahiptir.
      Prec.   Size
      1  - 9	5
      10 - 19 9
      20 - 28 13
      29 - 38 17
      

    Çeşitli tanımlama örnekleri

    ad float -> 4 byte bilgi kapasitesi.
    ad float(20) -> 4 byte bilgi ile 7 anlamlı basamak sayısı.
    ad float(24) -> 8 byte bilgi ile 15 anlamlı basamak sayısı.
    
    ad real -> 8 byte bilgi kapasitesi.
    
    

    Diğer Veri Tipleri

    Sql Server özel amaçlı,herhangi bir kategoriye girmeyen,dil destekli veri tiplerinide sunmaktadır.Bunlar,bit,sql_variant,timestamp ve uniqueidentifier veri tipleridir.

    Herbirinin görevi aşağıda açıklanmaktadır.

    • bit,adı üzerinde 1 bitlik veri hücresidir.Bir takım verilerin işaret bilgisini,programcılıktaki bayrak kullanım yaklaşımlarında kullanılabilecek bir veri türüdür.
    • sql_variant,text,ntext,image,timestamp ve kendi türünden(sql_variant) veriler haricindeki farklı tüm tipleri saklayabilen değişken yapılı bir veri türüdür.
    • timestamp,bir tablo güncellendikçe değeri otomatik olarak 1 artan veri türüdür.Hex formatında yazılır,başlangıç değeri 0x00000000000007D1 gibi rasgele olarak verilir.
    • uniqueidentifier,benzersiz 16 byte hex değerindeki bir veri türüdür.Genellikle kayıt sayısının 4 milyarı geçeceği durumlarda veya çeşitli güvenlik sebeblerinden ötürü kullanılmaktadır.
    Eski moda BLOB veri tipleri
    Sql Server tarafından gelecek sürümlerde kaldırılacak olan binary,varbinary,text,ntext,image gibi veriler,sırasıyla,sabit uzunluklu string,değişken uzunluklu string ve resim depolamak için kullanılan tiplerdir.Ancak bir çok sınırlamalarının olması,ve kullanımı daha esnek hem cinslerinin bulunması yüzünden artık eski moda olarak anılmaya başlamıştır.Bu veriler kaydedilmiş yordamlarda,bir takım fonksiyonlarda kullanılamamaktadır.

    image veri türünün ise bir çok veritabanında performans kaybına neden olduğu göz önüne alındığında BLOB(Binar Large Object) verileri artık terkedilmeye başlamıştır.
    XML Veri Tipleri
    Sql Server XML'i doğrudan desteklemektedir.Genel itibariyle sık güncellenmeyen tablolarda xml veri türünü kullanmak tavsiye edilir.

    Çeşitli tanımlama örnekleri

    dosya xml -> XML türünde,alt veriler içerebilecek bir veri.
    

    Kullanıcı Tanımlı(User-Defined) Veri Tipleri

    Sql Server tüm yerleşik veri tiplerinin dışında,yine bu tipleri isim değiştirerek kullanıcılarına farklı şekillerde kullandırabilmektedir.Örneğin sıklıkla birincil anahtar değeri olarak kullanacağınız int veri tipi ile oluşturulmuş bir ID isimli tip,tablo tasarımlarınızı daha okunaklı kılarak,onları daha kolay yönetebilmenizi sağlayabilmektedir.

    Management studio ve T-Sql ifadesi ile 2 farklı şekilde kullanıcı tanımlı tipler(user-defined types) oluşturulabilmesi mümkündür.Bu yazıda kolaylık olsun diye management studio ile bir tip oluşturulacaktır.Bunun dışında, CREATE TYPE type_name FROM data_type T-SQL ifadesi ile de bir kullanıcı tanımlı tip oluşturulabilir.

    Aşağıda MS Studio arayüzünü kullanarak örnek bir kullanıcı tanımlı tip gösterilmektedir.

    /Database/Programmability/Types/User-defined Data Types sekmesini sağa tıklayarak,



    New User-Defined Data Type seçiniz.



    Karşınıza çıkan ekrandan tanımlayacağınız veri tipinin isim,büyüklük gibi bilgileri girdikten sonra OK'a tıklayınız.



    Örnek olarak bir tablo sütünü oluşturulurken,daha evvelden tanımladığınız bu veri tipini ismi ile kullanabileceksiniz.



    ,
    MemberCommentDate:
    guest
    Yazı boyutunu büyük yapsan iyi olur, gözlerim iyi olmasına rağmen zor okuyorum. Gözü bozuk olan hiç okuyamaz heralde.
    
    
    
    5/18/2020 4:34:00 AM
    Seymet
    Slm belki de çok basit ama hiçbir yerde bulamadım sorum :
    İd olarak. TR26002734534.  Formatında birbirini takip etmeyen ama hep aynı formatta hayvan kulak küpe numaralarını kullanmak istiyorum  
    ayrıca TR2600 kısmının otomatik olarak hazır gelmesini ve sekmesinde bu on Ekrem sonra başlamasını istiyorum. 
    Mümkün mü  SQL ye ve veya c# ta nasıl tanıkların
    İlgine teşekkür ederim sağolun
    11/1/2019 8:45:00 AM
    guest
    gerçekten bilgi verici olmuş notlarımı aldım ellerinize sağlık.
    
    yıldız nur
    
    
    3/26/2019 11:50:00 AM
    Fatih KABAKCI
    E-posta veri tipinin unicode - değişken uzunluklu nvarchar tipinde tanımlanması daha uygundur.
    
    Başarılar,
    Fatih
    
    
    online cialis coupons prescription savings card coupons for drugs
    viagra wiki open viagra online
    detrola detralex detrol la
    celebrex celebrex celebrex dosage
    nizoral emulsiovoide nizoral kokemuksia nizoral tabletti
    5/7/2016 1:24:00 AM
    guest
    İyi günler, oluşturacağım tabloda e-posta niteliğinin veri tipi ne olmalıdır?Sayı, simge, karakter bunların hepsini içeren veri tipi hangisidir?
    
    Seda
    
    
    cialis online coupon martialinfo.com cialis coupons and discounts
    5/6/2016 11:39:00 PM

    Name:


    Question/Comment
       Please verify the image




    The Topics in Computer Science

    Search this site for





     

    Software & Algorithms

    icon

    In mathematics and computer science, an algorithm is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

    Programming Languages

    icon

    A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine. Java,C, C++,C#

    Database

    icon

    A database is an organized collection of data. The data are typically organized to model aspects of reality in a way that supports processes requiring information.

    Hardware

    icon

    Computer hardware is the collection of physical elements that constitutes a computer system. Computer hardware refers to the physical parts or components of a computer such as the monitor, memory, cpu.

    Web Technologies

    icon

    Web development is a broad term for the work involved in developing a web site for the Internet or an intranet. Html,Css,JavaScript,ASP.Net,PHP are one of the most popular technologies. J2EE,Spring Boot, Servlet, JSP,JSF, ASP

    Mobile Technologies

    icon

    Mobile application development is the process by which application software is developed for low-power handheld devices, such as personal digital assistants, enterprise digital assistants or mobile phones. J2ME

    Network

    icon

    A computer network or data network is a telecommunications network that allows computers to exchange data. In computer networks, networked computing devices pass data to each other along data connections.

    Operating Systems

    icon

    An operating system is software that manages computer hardware and software resources and provides common services for computer programs. The OS is an essential component of the system software in a computer system. Linux,Windows

    Computer Science

    icon

    Computer science is the scientific and practical approach to computation and its applications.A computer scientist specializes in the theory of computation and the design of computational systems.