SQL Server Veri Tipleri

Slides:



Advertisements
Benzer bir sunumlar
SQL String Fonksiyonları
Advertisements

STRİNG FONKSİYONLARI.
VERİ TABANI VE YÖNETİM SİSTEMLERİ
Değişken , Veri Türleri ve Operatörler
Bölüm 2 C Dilinin Temelleri
String Diziler(Katarlar)
VERİ TİPLERİ VE DEĞİŞKENLER
SQL de Değişken Tanımlama
Dizi (array) değişkenleri
Tablo Oluşturma SQL Server veritabanlarını barındırır; ogrenci, personel gibi Her veritabanı da verilerini saklamak için tablo adı verilen nesneleri.
3 Sql Veri Tipleri ve Örnek Veritabanı Tasarımı
OOP4 LAB.
SQL SERVER 2008 VERİ TİPLERİ.
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
String Kütüphanesindeki Arama Fonksiyonları
İndeksler Sibel SOMYÜREK.
Veri Tabanı Yönetim Sistemleri
Fonksiyonlar Hafta 4.
Çerez(Cookie) Kullanımı Oturum Yönetimi
BÖLÜM 6 SQL SERVER KOMUTLARI.
CEIT 101 Teorik Emrah Soykan - Konu 2 -.
CEIT 101 Teorik Vasfi Tuğun - Konu 2 -.
VERİ TABANI VE YÖNETİM SİSTEMLERİ
Değişkenler veri tipleri operatörler
NESNE TABANLI PROGRAMLAMA -METOTLAR-
SQL de Değişken Tanımlama
DEĞİŞKENLER VE VERİ TİPLERİ
VERİTABANI ve YÖNETİMİ
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Veritabanı Kavramları
SQL Komutları (2) Uzm. Murat YAZICI.
Bölüm 3: Diziler BTEP 102 – Veri Yapıları ve Programlama
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
VERİ TİPLERİ VE DEĞİŞKENLER
VERİ TABANI YÖNETİM SİSTEMLERİ
Değişken Türleri.
DİZİLER Arrays.
Değerler ve Değişkenler
VİSUAL BASİCTE KULLANILAN VERİ TÜRLERİ.
Chapter 14: Files and Streams. 2Microsoft Visual C# 2012, Fifth Edition Dosyalar, Dosya Ve dizin Sınıfları Geçici Depolama – Genellikle bilgisayar belleği.
BTP206– Görsel Programlama II
Dijital Ölçüler.
İnsan Kaynakları Bilgi Sistemleri
T-SQL 3.K ONU Tablo Tipi Değişkenler. T ABLO TIPI DEĞIŞKENLER KULLANMAK T-SQL de dizi tanımlama nasıl yapılır? Bu sorunun cevabı olarak tablo tipi değişkenleri.
Adım Adım Algoritma.
C Programlamada, benzer tipte tanımlaman değişkenleri kontrol etmede bize en çok yardım eden dostlarımız dizilerdir. Örneğin: 100 Öğrencinin bilgilerini.
VERİ TİPLERİ BYTE:0-255 ARASI TAMSAYI (1 BYTE)
FAT VE NTFS DOSYA YAPISI
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Hesaplama Tabloları (MS For Mac Excel -3)
Konu : WİNDOWSTA VERİ DEPOLAMA YÖNTEMLERİ Hazırlayan : Güray Mantar
7. HAFTA.
C Programlama Dili Bilgisayar Mühendisliği.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
EDİRNE TEKNİK BİLİMLER MESLEK YÜKSEK OKULU VERİ TABANI VE YÖNETİMİ
VIEW lerle çalışmak 11.BÖLÜM.
Tablo Tipi Değişkenler
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
SQL Veri Tipleri.
Bölüm 2 C Dilinin Temelleri
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
Bilgisayar Bilimi Problem Çözme Süreci-2.
NİŞANTAŞI ÜNİVERSİTESİ
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-2
AC500 Eğitim Sunumları 3. Değişken Tanımlama.
SQL Server - Stored Procedures
Bölüm 2 C Dilinin Temelleri
İLERİ VERİ TABANI UYGULAMALARI
Sunum transkripti:

SQL Server Veri Tipleri Mehtap Kara

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.

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

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  [-32.768,+32.767)] C#’ta short tipine karşılık gelir. int : 4 byte yer kaplar. [-2.147.483.648,2.147.483.647] C#’ta int tipine karşılık gelir. bigint : 8 byte yer kaplar. [-9.223.372.036.854.775.808, +9.223.372.036.854.775.807] C#’ta long tipine karşılık gelir.

smallmoney : money : decimal ve numeric : 4 byte yer kaplar.  [-214.748,3648,+214.748,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. [-922.337.685.477,5808,+922.337.685.477,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.

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.

Tarih ve Zaman Veri Tipleri date : YYYY-MM-DD şeklinde tarihi tutar. 3 byte yer kaplar. 0001-01-01 ile 9999-12-31 arası tarih değerlerini saklar. datetime : YYYY-MM-DD hh:mm:ss[.mmm] şeklinde tarihi tutar. 8 byte yer kaplar. 1753-01-01 00:00:00.000 ile 9999-12-31 23:59:59.999 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.

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. 1900-01-01 00:00:00 ile 2079-06-06 23:59:59 arası tarih değerlerini saklar. time : Sadece saati hh:mm:ss[.nnnnnnn] şeklinde tutar. 00:00:00.0000000 ile 23:59:59.9999999 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.

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.

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’ 4 karakter ‘kelebek’ 7 karakter yer tutar. varchar veri tipinin bellekte kapladığı alan; (kaydedilen karakter sayısı * 1) + 2 şeklindedir.

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.

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 1.073.741.823 karakter veri depolayabilir. Microsoft bu veri tipini gelecek versiyonlarda kaldıracağı için kullanılması önerilmez. Bunun yerine nvarchar(max) kullanılabilir.

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.

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*00000000703) 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.

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.

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.

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.

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.

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; declare @degiskenAdi veriTürü SET @degiskenAdi = deger

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

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.

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.

Kaynaklar 1)https://help.sap.com/saphelp_hanaone/helpdata/en/20/d5c1ed7519101 4a80d897035629def/content.htm 2) http://www.sqlkodlari.com/03-db-data-tipleri.asp 3) http://www.ismailgursoy.com.tr/sql-veri-tipleri/ 4) http://fatihkabakci.com/Makaleler-SQL_SERVER_VERI_TIPLERI