Örneklerle SQL Server Veri Türleri

⚡ Akıllı Özet

SQL Server veri tipleri, bir sütun veya değişkenin saklayabileceği değer türünü tanımlar; örneğin tamsayı, ondalık sayı, karakter, tarih veya ikili sayı. Doğru türü seçmek, geçerli verileri sağlar ve belleği verimli kullanır.

  • 🔢 Tam Sayısal Değer: bigint, int, smallint, tinyint, bit, decimal, numeric, money ve smallmoney, kesin tam sayı ve sabit noktalı sayıları saklar.
  • ➡️ Yaklaşık Sayısal Değer: Float ve real, bilimsel hesaplamalarda kullanılan yaklaşık ondalıklı değerleri saklar.
  • 📅 Tarih ve saat: `datetime`, `smalldatetime`, `date`, `time`, `datetimeoffset` ve `datetime2` zamansal değerleri saklar.
  • 🔤 Karakter ve Unicode: `char`, `varchar` ve `text` metin tutar; `nchar`, `nvarchar` ve `ntext` Unicode metin tutar.
  • 🖼️ İkili ve Diğer: `binary`, `varbinary` ve `image` bayt verilerini depolar; `cursor`, `xml` ve `uniqueidentifier` özel ihtiyaçları karşılar.
  • ???? Seçme Wisely: Her sütunu en uygun küçük türe eşleştirmek, depolama verimliliğini ve veri bütünlüğünü artırır.

Örneklerle SQL Server Veri Türleri

Veri Türü Nedir?

Bir veri türü MS SQL Server Herhangi bir sütun veya değişkenin saklayabileceği veri türü olarak tanımlanır. Bir nesnenin tuttuğu veri türüdür; örneğin tamsayı, karakter veya metin dizesi. Herhangi bir nesne oluşturulurken tablo or değişkenİsmi belirtmenin yanı sıra, depolayacağı veri türünü de belirliyorsunuz.

MS SQL veri türü nasıl kullanılır?

Bir sütunun veya değişkenin hangi tür verileri depolayabileceğini önceden tanımlamanız gerekir. Veri türünü belirlemek, kullanıcının beklenmedik veya geçersiz veriler girmesini de engeller.

Bir değişkene veya sütuna uygun bir veri türü atayarak, o sütunun verileri için yalnızca gerekli miktarda sistem belleği ayırarak belleği verimli bir şekilde kullanabilirsiniz.

MS SQL, çok çeşitli temel veri türleri sunmaktadır. SQL Kullanıcı ihtiyaçlarına uygun olarak, tarih, ikili sayı sistemi, resimler ve daha fazlasını içerebilir.

Neden DataTypes'ı kullanmalısınız?

Bir web sitesi uygulaması için basit bir kayıt sayfasını örnek olarak ele alalım. Üç giriş alanı şunlardır: Ad, Soyad ve İletişim numarası.

Burada gerçek senaryolarda şunu belirtmek gerekir:

  • "Ad/Soyad" her zaman alfabetik sırayla yazılacaktır.
  • "İletişim" her zaman sayısal olacaktır.

Aşağıdaki örnek, bir kayıt formunda bu alanları göstermektedir.

Kayıt formu örneği: Ad ve Soyad karakter, İletişim bilgisi ise tam sayı olarak tanımlanmıştır.

Yukarıdaki resme bakıldığında, "Ad/Soyad"ı bir karakter, "İletişim"i ise bir tamsayı olarak tanımlamak mantıklı görünüyor.

Herhangi bir uygulamada, tüm alanların sayısal, alfabetik, tarihsel ve daha birçok türde veri içerdiği açıktır.

Ayrıca, farklı veri türlerinin farklı bellek gereksinimlerine sahip olduğunu da unutmayın. Bu nedenle, belleği verimli kullanmak için sütunu veya değişkeni tutacağı veri türüyle tanımlamak daha mantıklıdır.

MS SQL Server'da bulunan veri türü

İşte MS SQL Server veri türleri listesi. MS SQL Server aşağıdaki veri türü kategorilerini destekler:

  • Tam sayısal
  • Yaklaşık sayısal
  • Tarih ve saat
  • Karakter dizeleri
  • Unicode karakter dizileri
  • İkili dizeler
  • Diğer veri türleri

Aşağıdaki şema, MS SQL Server veri türlerini bu kategorilere ayırmaktadır.

Diyagram grubuping MS SQL Server veri türlerini yedi kategoriye ayırır.

SQL'de Tam Sayısal Veri Türleri

SQL Server'da kesin sayısal veri türünün dokuz alt veri türü vardır. Her biri tanımlanmış bir aralıkta tam sayıları veya sabit noktalı sayıları saklar.

Veri tipi Açıklama Alt limit Üst sınır Bellek
bigint Verilen aralıktaki tam sayıları saklar −2^63 (−9,223,372,036,854,775,808) 2^63−1 (9,223,372,036,854,775,807) 8 bayt
int Verilen aralıktaki tam sayıları saklar −2^31 (−2,147,483,648) 2^31−1 (2,147,483,647) 4 bayt
küçük tamsayı Verilen aralıktaki tam sayıları saklar −2^15 (−32,768) 2^15−1 (32,767) 2 bayt
Tinyint Verilen aralıktaki tam sayıları saklar 0 255 1 bayt
bit 0, 1 veya NULL değer alabilir. 0 1 1 bayt / 8 bit sütun
ondalık Ölçek ve sabit hassas sayılar için kullanılır −10^38+1 10^38−1 5 ila 17 bayt
sayısal Ölçek ve sabit hassas sayılar için kullanılır −10^38+1 10^38−1 5 ila 17 bayt
para Parasal veriler için kullanılır. -922,337,203,685,477.5808 + 922,337,203,685,477.5807 8 bayt
küçük para Parasal veriler için kullanılır. -214,478.3648 + 214,478.3647 4 bayt

SQL Server'da kesin sayısal veri tipleri ve örnekleri:

Sorgu:

DECLARE @Datatype_Int INT = 2
PRINT @Datatype_Int

Çıktı:

2

Sözdizimi:

Decimal (P,S)

Burada P hassasiyeti, S ise ölçeği temsil etmektedir.

Sorgu:

DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31
PRINT @Datatype_Decimal

Çıktı:

2.31

SQL'deki Yaklaşık Sayısal Veri Türleri

SQL'deki yaklaşık sayısal değerler kategorisi, kayan noktalı ve gerçek değerleri içerir. Bu veri türleri çoğunlukla bilimsel hesaplamalarda kullanılır.

Veri tipi Açıklama Alt limit Üst sınır Bellek Hassas
yüzer(n) Kayan hassas sayı için kullanılır −1.79E+308 1.79 308 + n'nin değerine bağlıdır 15 haneli
gerçek Kayan hassas sayı için kullanılır −3.40E+38 3.40 38 + 4 bayt 7 haneli

Kayan noktalı sayı türü aşağıdaki sözdizimini kullanır:

Syntax:  FLOAT [(n)]

Burada n, ondalık sayının mantisinin bilimsel gösterimde saklanması için kullanılan bit sayısıdır. Varsayılan olarak, n değeri 53'tür.

Float gibi bir veri türü tanımlarken, n 1 ile 53 arasında bir değer olmalıdır. SQL Server, n'yi iki olası değerden biri olarak ele alır: eğer 1<=n<=24 ise, n 24 olarak kabul edilir; eğer 25<=n<=53 ise, n 53 olarak kabul edilir.

Örnek Sorgu:

DECLARE @Datatype_Float FLOAT(24) = 22.1234
PRINT @Datatype_Float

Çıktı:

22.1234

SQL'de Tarih ve Saat Veri Türleri

Bu kategori, tarih ve saat türündeki verileri saklar.

Veri tipi Açıklama Depolama boyutu doğruluk Alt Aralık Daha yüksek kademe
DateTime 1 Ocak 1753 ile 31 Aralık 9999 arasındaki tarih ve saati belirtmek için kullanılır. 3.33 milisaniyelik bir doğruluğa sahiptir. 8 bayt 000, 003, 007'lik artışlara yuvarlanır 1753-01-01 9999-12-31
küçük tarihsaat 1 Ocak 1900 ile 6 Haziran 2079 tarihleri ​​arasında tarih ve saat belirtmek için kullanılır. 1 dakikalık doğruluk payına sahiptir. 4 bayt, sabit 1 dakika 1900-01-01 2079-06-06
tarih Yalnızca 1 Ocak 0001 ile 31 Aralık 9999 arasındaki tarihleri ​​saklamak için kullanılır. 3 bayt, sabit 1 gün 0001-01-01 9999-12-31
zaman Yalnızca zaman değerlerini 100 nanosaniyelik bir doğrulukla saklamak için kullanılır. 5 bayt 100 nanosaniye 00:00:00.0000000 23:59:59.9999999
tarihsaat uzaklığı Datetime'a benzer ancak saat dilimi farkı vardır. 10 bayt 100 nanosaniye 0001-01-01 9999-12-31
tarih saat2 1 Ocak 0001 ile 31 Aralık 9999 arasındaki tarih ve saati belirtmek için kullanılır 6 bayt 100 nanosaniye 0001-01-01 9999-12-31

Örnek Sorgu:

DECLARE @Datatype_Date DATE = '2030-01-01'
PRINT @Datatype_Date

Çıktı:

'2030-01-01'

SQL'de Karakter Dizileri Veri Türleri

Bu kategori karakter türleriyle ilgilidir. Sabit ve değişken uzunlukta karakter verileri tanımlamanıza olanak tanır. Dört çeşit veri türü vardır. Aşağıda karakter dizisi veri türleri ve örnekleri verilmiştir.

Veri tipi Açıklama Alt limit Üst sınır Bellek
tank Sabit genişliğe sahip bir karakter dizisidir. Maksimum 8,000 karakter saklar. 0 karakter 8000 karakter n bayt
Varchar Bu, değişken genişliğe sahip bir karakter dizisidir. 0 karakter 8000 karakter n bayt + 2 bayt
varchar (maks.) Bu değişken genişliğe sahip bir karakter dizisidir. Maksimum 1,073,741,824 karakter saklar. 0 karakter 2^31 karakter n bayt + 2 bayt
metin Bu, değişken genişliğe sahip bir karakter dizisidir. Maksimum 2 GB metin verisi depolayabilir. 0 karakter 2,147,483,647 karakter n bayt + 4 bayt

Örnek Sorgu:

DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'
PRINT @Datatype_Char

Çıktı:

Bu Karakter Veri Türüdür

Unicode Karakter Dizileri SQL'deki Veri Türleri

Bu kategori, UTF-16 karakter kodlamasını kullanan tüm Unicode karakterlerini saklar.

Veri tipi Açıklama Alt limit Üst sınır Bellek
nchar Bu, sabit genişlikte bir Unicode dizesidir. 0 karakter 4000 karakter 2 kere n bayt
Nvarchar Bu, değişken genişlikte bir Unicode dizesidir. 0 karakter 4000 karakter 2 çarpı n bayt + 2 bayt
metin Bu, değişken genişlikte bir Unicode dizesidir. 0 karakter 1,073,741,823 karakter Dize uzunluğunun 2 katı

Örnek Sorgu:

DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'
PRINT @Datatype_nChar

Çıktı:

Bu nCharacter Veri Türüdür

SQL'de İkili Dize Veri Türleri

Bu kategori, sabit ve değişken uzunlukta ikili dizeler içerir.

Veri tipi Açıklama Alt limit Üst sınır Bellek
ikili Bu, sabit genişlikli bir ikili dizedir. Maksimum 8,000 bayt depolayabilir. 0 bayt 8000 bayt n bayt
değişken ikili Bu, değişken genişlikte bir ikili dizedir. Maksimum 8,000 bayt depolayabilir. 0 bayt 8000 bayt Girilen verilerin gerçek uzunluğu + 2 bayt
görüntü Bu, değişken genişlikte bir ikili dizedir. Maksimum 2 GB veri depolayabilir. 0 bayt 2,147,483,647 bayt -

Örnek Sorgu:

DECLARE @Datatype_Binary BINARY(2) = 12;
PRINT @Datatype_Binary

Çıktı:

0x000C

SQL'deki Diğer Veri Türleri

Aşağıda açıklamaları bulunan diğer SQL Server veri türleri şunlardır:

Veri tipi Açıklama
İmleç Çıktısı, sp_cursor_list ve sp_describe_cursor sütunlarından oluşur. İmleç değişkeninin adını döndürür.
Rowversion Bu, tablo satırlarına sürüm damgası ekler.
Hiyerarşik Bu veri türü, hiyerarşideki bir konumu temsil eder.
Benzersiz tanımlayıcı Genellikle karakter ifadesinden dönüştürülen bir GUID'yi saklar.
SQL_variant SQL Server tarafından desteklenen veri türlerinin değerlerini saklar.
XML XML verilerini bir sütunda saklar.
Uzamsal Geometri türü Düz bir koordinat sistemindeki verileri temsil eder.
Uzaysal Coğrafya türü Yuvarlak dünya koordinat sistemindeki verileri temsil eder.
tablo Daha sonraki işlemler için bir sonuç kümesini saklar.

İlginç gerçekler!

  • CHAR veri türü, sabit genişliği sayesinde uzunluk sınırlamasını ortadan kaldırdığı için veri alınırken VARCHAR veri türünden daha hızlıdır.ping.

SSS

VARCHAR, Unicode olmayan karakterleri her biri bir bayt kullanarak saklarken, NVARCHAR Unicode karakterleri her biri iki bayt kullanarak saklar. Bir sütunun birden fazla dil veya tek bir kod sayfasının dışındaki sembolleri içermesi gerektiğinde NVARCHAR'ı seçin; aksi takdirde VARCHAR daha az depolama alanı kullanır.

Para veya ölçümler gibi değerlerin kesin olması gereken durumlarda, sabit hassasiyeti sakladığı için ONDALIK (veya SAYISAL) türünü kullanın. Çok küçük yuvarlama farklılıklarının kabul edilebilir olduğu ve çok geniş bir aralığın kesinlikten daha önemli olduğu yaklaşık bilimsel değerler için KAYAN NOKTA (FLOAT) türünü kullanın.

Evet. SQL Server'da DECIMAL ve NUMERIC işlevsel olarak aynıdır. Her ikisi de hassasiyet ve ölçek kabul eder ve kesin sabit noktalı sayılar depolar, bu nedenle iki anahtar kelime birbirinin yerine kullanılabilir. Okunabilirlik açısından ekibinizin tercih ettiği ismi kullanabilirsiniz.

CHAR, daha kısa değerleri boşluklarla dolduran sabit uzunluklu bir tiptir, bu nedenle her değer belirtilen genişliği kullanır. VARCHAR ise değişken uzunlukludur ve yalnızca girilen karakterleri ve iki baytı saklar. Tek tip kodlar için CHAR, değişken uzunluktaki metinler için ise VARCHAR kullanın.

Evet. TABLOYU DEĞİŞTİR `table_name` komutu, `ALTER COLUMN column_name new_type` komutuyla bir sütunun veri türünü değiştirir. Değişiklik yalnızca mevcut değerler yeni türe sorunsuz bir şekilde dönüştürüldüğünde başarılı olur; aksi takdirde başarısız olur, bu nedenle dönüşümleri test edin ve verilerinizi yedekleyin.

Normal VARCHAR(n) 8,000 karaktere kadar veri depolayabilir. VARCHAR(max) ise yaklaşık 2 GB'a (2^31-1 bayt) kadar veri depolayabilir ve 8,000 karakteri aşan büyük metinler için tasarlanmıştır. VARCHAR(max)'ı yalnızca değerlerin gerçekten bu kadar büyük olabileceği durumlarda kullanın.

Evet. GitHub Yardımcı Pilotu Sütun veri türlerini önerebilir ve doğal dil istemlerinden DECLARE ve CREATE TABLE ifadeleri oluşturabilir. Önerilerini üretimde uygulamadan önce, hassasiyet, ölçek, uzunluk ve Unicode gereksinimlerini verilerinizle karşılaştırarak her zaman doğrulayın.

Yapay zeka ve makine öğrenimi araçları, örnek verileri inceleyerek uygun türleri, hassasiyeti ve uzunlukları önerir, depolama alanını israf eden aşırı büyük sütunları işaretler ve geçişler sırasında uyumsuzlukları tespit eder. Geliştirici nihai seçimleri onaylarken şema tasarımını hızlandırırlar.

Bu yazıyı şu şekilde özetleyin: