Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

SQL Server Veri Tipleri

Benzer bir sunumlar


... konulu sunumlar: "SQL Server Veri Tipleri"— Sunum transkripti:

1 SQL Server Veri Tipleri
Mehtap Kara

2 Veri Tipleri Veri tabanı oluştururken veri tanımlaması ve bu verilerin tiplerinin belirlenmesi performans ve kullanılan alan açısından çok önemlidir. Veri tiplerini belli kategorilerde açıklama yaparak inceleyeceğiz.

3 Kesin Sayısal Veri Tipleri(Exract numerics)
Yaklaşık Sayısal Veri Tipleri(Approximate numerics) Tarih ve Zaman Veri Tipleri(Date and Time) Karakter Veri Tipleri(Character Strings) Unicode Karakter Veri Tipleri(Unicode Character Strings) Binary Veri Tipleri(Binary Strings) Diğer Veri Tipleri(Other Data Types) Kullanıcının Oluşturduğu Veri Tipleri

4 Kesin Sayısal Veri Tipleri
bit : 1 bit 1 ve 0 değerlerini alır. True/False değerlerini bu veri tipinde saklayabiliriz tinyint : 1 byte 0-255 arası tam sayıları tutar. C#’ta byte tipine karşılık gelir. smallint : 2 byte  [ , )] C#’ta short tipine karşılık gelir. int : 4 byte yer kaplar. [ , ] C#’ta int tipine karşılık gelir. bigint : 8 byte yer kaplar. [ , ] C#’ta long tipine karşılık gelir.

5 smallmoney : money : decimal ve numeric :
4 byte yer kaplar.  [ ,3648, ,3647] Virgülden sonra 4 basamak alır. Parasal verileri smallmoney veri tipinde saklayabiliriz. C#’ta direkt karşılığı yoktur, decimal kullanılır. money : 8 byte yer kaplar. [ ,5808, ,5807] Parasal verileri money tipinde saklayabiliriz. decimal ve numeric : Kapladığı alan basamak sayısına göre değişir. Virgülden önce ve sonra toplam basamak sayısı; 1-9 arası 5 byte 10-19 arası 9 byte 20-28 arası 13 byte 29-38 arası 17 byte yer kaplar. C#’ta decimal tipine karşılık gelir.

6 Yaklaşık Sayısal Veri Tipleri
float : Kullanılmak istenilen boyuta göre ortalama değer alır. float(n) şeklinde kullanılır. Verdiğimiz boyuta göre kaydetmek istediğimiz sayı yuvarlanır. Uzunluk bilgisi 1 ile 24 arasında olup,7 anlamlı basamağa kadar çıkmaktadır. C#’ta double tipine karşılık gelir. real : float(24) ile aynı özelliktedir. 8 byte yer kaplar. [-3.40E+38,-1.18E-38],0,[1.18E-38,3.40E+38] C#’ta single tipine karşılık gelir.

7 Tarih ve Zaman Veri Tipleri
date : YYYY-MM-DD şeklinde tarihi tutar. 3 byte yer kaplar. ile arası tarih değerlerini saklar. datetime : YYYY-MM-DD hh:mm:ss[.mmm] şeklinde tarihi tutar. 8 byte yer kaplar. :00: ile :59: arası tarih değerlerini saklar. datetime2 : datetime veri tipine göre daha hassas şekilde YYYY-MM-DD hh:mm:ss[.nnnnnnn] tarih tutar. Saniye bölümünün ondalık kısmında 7 basamağa kadar değer tutulabilir. Bu değer sadece datetime2 olarak kullanıldığında varsayılan olarak 7 basamaktır. datetime2(n) şeklinde kullanarak basamak değerini belirleyebiliriz.

8 smalldatetime : time : YYYY-MM-DD hh:mm:ss şeklinde tarih tutar.
n değeri; 0-2 arasında ise 6 byte 3 veya 4 ise 7 byte 5-5 arasında ise 8 byte yer kaplar. smalldatetime : YYYY-MM-DD hh:mm:ss şeklinde tarih tutar. :00:00 ile :59:59 arası tarih değerlerini saklar. time : Sadece saati hh:mm:ss[.nnnnnnn] şeklinde tutar. 00:00: ile 23:59: arası değer alır. datetime2 de olduğu gibi time(n) şeklinde n değerini belirleyebiliyoruz. n değeri; 0-2 arasında ise 3 byte 3 veya 4 ise 4 byte 5-7 arasında ise 5 byte yer kaplar. Sadece time olarak kullanırsak varsayılan n değeri 7 dir.

9 datetimeoffset : Kullanımı ve tarih aralığı datetime2 ile aynıdır.
Ülkelere göre değişen zaman farkını da tutmamıza olanak sağlar. YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+-}hh:mm] şeklinde tarih tutar. Saat farkı -14:00 ile +14:00 arasında değer alır. Yaptığımız uygulamada ülkelerin tarih ve saat bilgilerini tutuyorsak bu veri tipini kullanabiliriz. datetimeoffset(n) şeklinde kullanılır. n değeri; - 0 ile 2 arasında ise 8 byte - 3 veya 4 ise 9 byte - 5 ile 7 arasında ise 10 byte yer kaplar. Sadece datetimeoffset kullanıyorsak varsayılan değer 7 byte tır.

10 Unicode Desteği Olmayan Karakter Veri Tipleri
char : Bu veri tipi girilen her karaktere karşılık 1 byte lık yer kaplayan en fazla 8000 karakter kadar veri saklayabilen bir tiptir. Örnek: char(7) şeklinde bir tanımlamada ‘okul’ ve ‘kelebek’ sözcükleri aynı boyutta yer kaplar. varchar : Bu veri tipi girilen her karaktere karşılık char veri tipinde olduğu gibi 1 byte lık yer kaplar. En fazla 8000 karakter veri alabilir. Örnek: varchar(7) şeklinde tanımlamada; ‘okul’ karakter ‘kelebek’ 7 karakter yer tutar. varchar veri tipinin bellekte kapladığı alan; (kaydedilen karakter sayısı * 1) + 2 şeklindedir.

11 varchar(max) : En fazla 2GB boyutuna kadar karakter verisi alır. Max bölümüne sayısal değer yazarsak varchar veri tipinin max uzunluğu o sayı kadar olur. text : 8000 karakterden daha fazla değer depolayabilen veri, tipidir.

12 Unicode Desteği Olan Karakter Veri Tipleri
nchar : Bu veri tipi char veri tipine benzer. Ancak UNICODE karakter setini kullanır. Bu nedenle her karakter 1 byte yerine 2 byte yer tutar. En fazla 8000 karakter depolayabilir. Örnek: ‘okul’ nchar(7) olarak belirtilmişse 7*2=14 byte kaplar. nvarchar : Bu veri tipi de en fazla 8000 karakter depolayabilir. Bellekte kapladığı alan; (kaydedilen karakter sayısı*2byte)+2 olarak hesaplanır ntext : nvarchar(max) ile aynı özelliktedir. Max karakter veri depolayabilir. Microsoft bu veri tipini gelecek versiyonlarda kaldıracağı için kullanılması önerilmez. Bunun yerine nvarchar(max) kullanılabilir.

13 Binary Veri Tipleri binary : varbinary : image :
Dosyaları(binary data) saklamak için kullanılır. binary(n) şeklinde tanımlanır. [1,8000] arasında değer alır. n byte kadar yer kaplar. varbinary : Binary den farklı olarak boyutu kaydedilen dosyanın bıyutuna göre değişir. varbinary(n) şeklinde tanımlanır. [1,8000] arasında değer alır. varbinary(max) olarak kullanıldığında max 2GB büyüklüğünde dosya kaydedilebilir. n byte + 2 yer kaplar. image : Max 2GB büyüklüğünde dosya saklayabilir. Microsoft, Sql Server’ın gelecek versiyonlarında image veri tipini kaldırmayı düşündüğü için yerine varbinary(max) kullanılabilir.

14 Diğer Veri Tipleri 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. C#’taki karşılığı Guid dir. Guid, harf ve sayılardan oluşan eşsiz bir datadır. İki Guid’nin birbiri ile eşit olmayacağı garantidir. timestamp : Girilen kaydın(satırın) versiyon numarası gibidir. (0* ) Her satır insert ve update edildiğinde değişir. Tabloda sadece bir alan timestamp olabilir. Tarih ve saat tutmak için kullanılmaz. xml : 111 şeklinde xml dataları saklar. Tablo ve satırlarda sorgu yapmadan, query() metoduyla kaydettiğimiz xml içerisindeki datalara ulaşabiliriz. 2GB’a kadar veri saklar.

15 sql-variant : hierarchyid :
Farklı veri tipindeki değişkenleri kaydedebileceğimiz bir alan saklar. Maksimum boyutu 8016 byte dır. varchar(max), nvarchar(max), varbinary(max), text, ntext, image, timestamp, sql-variant, hierarchyid, geography, geometry ve kullanıcı tarafından oluşturulan veri tipleri haricinde diğer bütün veri tiplerini saklayabilir. hierarchyid : Bu data tipi verinin hiyerarşik şekilde depolanmasını sağlar. Sql Server, hiyerarşik verileri binary olarak depolar ve yerleşik fonksiyonlar aracılığı ile ortaya çıkarır.

16 Kullanıcı Tanımlı Veri Tipleri
Sql Server da kullanılan bilinen veri tiplerinin dışında yine farklı bir adla bu veri tipleri kullanılabilmektedir. Management Studio ve T-Sql ifadesi ile iki farklı şekilde yapılmaktadır.

17

18

19

20 Veri Tiplerinin Karşılaştırılması
float ve decimal karşılaştırılması decimal veri tipleri tanımlandığı noktada belirtilen basamak değerine göre tam sonucu verir. decimal tipinde decimal(6,2) ile decimal(6,4) farklı olarak algılanmaktadır. float veri tipi ise böyle bir durum yoktur. decimal tipindeki bir değeri float tipine çevirdiğimizde veri kaybı yaşanabilmektedir.(ADO.Net) Bu veri kaybına tolerans gösterilemeyecek yerlerin başında para hesaplamaları gelmektedir. Bunun için decimal veri tipi kullanılmalıdır.

21 image varbinary(max) karşılaştırması
Media yı tutmanın 2 yolu vardır. Birincisi url adresini tutarak diğeri nesnenin kendisini tutarak yani resim yada video farketmez. Eğer url den tutarsak ve url miz kendi web sitemiz yani hostumuz olmazsa o zaman veriyi kontrol edemeyiz. Mesela youtube dan film fragmanı çekiyorsun. Youtube kapatıldığında bizde de sıkıntı olur. Eger kendi hostumuzda tutarsak ve video boyutu 200mb olursa url olarak tuttuğumuzda da videonun kendisini tuttuğumuzda da ramda yine aynı boyutta yer kaplayacak. Veri tabanında tutmamız varbinary (max) veri tabanında yedek alırken sıkıntı çıkarabilir çünkü biz yeni kayıt yaptıkça boyutu artacak. Ama onunda çözümü yedek alırken differantial şeklinde alırsak bunu çözüm olarak kullanabiliriz. Kısacesı url olarakta verinin kendisini de tutsak bizim hafızamızda aynı miktarda yer tutuyor. Ama url olarak tutarsak herhangi bir kategori değiştirdik yada dizin değitirdik. Veri tabanı yediğini alırken o dosyalarıda almamız gerek ki çoğu zaman karışabiliyor. Ayrıca image veri tipi ileriki versiyonlarda kalkacağı için varbinary tutmak daha mantıklıdır.

22 Değişken Tanımlama Veri tipleri açıklandıktan sonra değişken tanımlanması hakkında da bilgi vereceğiz. Sql de veri tanımlarken; veriTürü = deger

23 Veri Tiplerinin Önceliği
Veri tiplerinin önceliği ile kastedilen farklı veri tiplerine sahip ifadelerin birleştirilmesinin nasıl olacağı, hangi veri türüne çevrileceğidir. Düşük önceliğe sahip veri tipleri, yüksek önceliğe sahip olanlara dönüştürülür. Bu dönüşüm; char -> varchar -> nvarchar -> tinyint -> int -> decimal -> time -> date -> datetime2 ->xml

24 Verileri Dönüştürme Veri dönüştürme;
Verilerin ataması sırasında Verilerin karşılaştırılacağı, birleştirileceği zamanda olur. Yukarıdaki kodda string şekilde belirtilen ‘12’ değeri cast fonksiyonuyla int tipine dönüştürülmüştür. Bu sorgudan sonuç olarak 3 değeri döner.

25 Yukarıdaki sorguda convert fonksiyonu ile tip dönüştürme örneği verilmiştir. Bu sorguda ise veri tiplerinin önceliği söz konusudur. Char tipi otomatik olarak int tipine dönüştürülür. Bu sorgunun sonucunda 4 döner.

26 Kaynaklar 1) 4a80d def/content.htm 2) 3) 4)


"SQL Server Veri Tipleri" indir ppt

Benzer bir sunumlar


Google Reklamları