PostgreSQL Veri Tipleri: Sayısal, Karakter, Bayt

⚡ Akıllı Özet

PostgreSQL Veri tipleri, her sütunun saklayabileceği değer türünü tanımlar ve karakter, sayısal, ikili, tarih ve saat, Boolean, geometrik, ağ, UUID, XML ve JSON kategorilerini kapsar. PostgreSQL Ayrıca, CREATE TYPE komutuyla kullanıcıların özel türler oluşturmasına da olanak tanır.

  • 🔤 Karakter Türleri: CHAR, VARCHAR ve TEXT, sabit uzunluklu, değişken uzunluklu ve sınırsız uzunluklu metin değerlerini saklar.
  • 🔢 Sayısal Türler: Tamsayılar ve kayan noktalı sayılar, smallint'ten bigint'e kadar uzanır ve ayrıca kesin sayısal ve ondalık değerleri de içerir.
  • 🕒 Tarih ve saat: Zaman damgası, tarih, saat ve aralık türleri, isteğe bağlı saat dilimleriyle birlikte mikrosaniye hassasiyetinde veri sunar.
  • Mantıksal ve Numaralandırma (Enum): Mantıksal (Boolean) değerler doğru, yanlış veya boş (null) değerlerini alırken, numaralandırılmış (numberated) tipler nadiren değişen sabit kümeleri modeller.
  • 🌐 Uzmanlaşmış Türler: Ağ, geometrik, UUID, XML, JSON ve JSONB, adresleri, şekilleri, tanımlayıcıları ve yapılandırılmış verileri işler.
  • ???? En iyi pratik: Metinler için TEXT, sayılar için NUMERIC türünü tercih edin ve özel türleri yalnızca gerektiğinde oluşturun.

PostgreSQL kullanıcılar için zengin bir yerel veri türleri kümesi sunar. Kullanıcılar CREATE TYPE komutunun yardımıyla yeni türler ekleyebilir. Ayrıca sorguları daha basit ve daha okunabilir hale getirir.

Veri Türleri PostgreSQL

PostgreSQL Aşağıdaki veri türlerini destekler:

  • Metin Türleri
  • Sayısal Türler
  • Tarihler ve Saatler
  • XML
  • JSON
  • Boole
  • Bit
  • Ikili veri
  • Diziler
  • Veri Türünüzü Oluşturun
  • geçici
  • UUID
  • Bir ağ adresini ve geometrik verileri depolamak için Özel Veri türleri.

Hadi çalışalım PostgreSQL ayrıntılı olarak veri türleri

Karakter Veri Türleri

PostgreSQL metin değerlerini depolamak için karakter veri türlerini destekler. PostgreSQL karakter veri türlerini aynı iç yapılardan oluşturur. PostgreSQL üç karakter veri türü sunar: CHAR(n), VARCHAR(n) ve TEXT.

İsim Açıklama
varchar(n) Değişken uzunluğu bir sınırla bildirmenizi sağlar
Karakter(n) Sabit uzunlukta, boş yastıklı
Metin Sınırsız uzunluğa sahip bir değişken bildirmek için bu veri türünü kullanabilirsiniz.

Sayısal Veri Türleri

PostgreSQL iki farklı sayı türünü destekler:

  • tamsayılar
  • Kayan nokta sayıları
İsim Mağaza boyutu Aralık
küçük tamsayı 2 bayt + 32768 to-32767
tamsayı 4 bayt + 2147483648 to-2147483647
bigint 8 bayt 9223372036854775808 kadar 9223372036854775807
ondalık değişken Ondalık veri türü olarak beyan ettiyseniz, virgülden önceki 131072 basamaktan virgülden sonraki 16383 basamağa kadar değişir
sayısal değişken Sayı olarak bildirirseniz virgülden önce 131072 haneye kadar, virgülden sonra 16383 haneye kadar sayı ekleyebilirsiniz.
gerçek 4 bayt 6 ondalık basamak hassasiyeti
çift 8 bayt 15 ondalık basamak hassasiyeti

İkili Veri Türleri

İkili dize, sekizli veya bayt dizisidir. İkili Postgres Veri Türleri iki şekilde ayrılır.

  • İkili dizeler sıfır değerindeki olasılıkların saklanmasına izin verir
  • Yazdırılamayan sekizli

Karakter dizileri sıfır sekizliye izin vermez ve ayrıca veritabanının karakter kümesi kodlama kurallarına göre geçersiz olan diğer sekizli değerlere ve dizilere de izin vermez.

İsim Depolama boyutu Açıklama
Bayt 1 ila 4 bayt artı ikili dizenin boyutu Değişken uzunluklu ikili dize

Ağ Adresi Türü

Birçok uygulama, kullanıcıların veya sensörlerin IP adresleri gibi ağ bilgilerini saklar. PostgreSQL ağ verilerini optimize etmenize yardımcı olan üç yerel türe sahiptir.

İsim Beden Açıklama
elma şarabı 7 veya 19 bayt IPv4 ve IPv6 ağlar
inet 7 veya 19 bayt IPv4 ve IPv6 sunucuları ve ağları
macadr 6 bayt MAC adresleri

Ağ Adres Türlerini kullanmanın aşağıdaki avantajları vardır

  1. Depolama Alanından Tasarruf
  2. Giriş hatası kontrolü
  3. Alt ağa göre veri arama gibi işlevler

Metin Arama Türü

PostgreSQL tam metin aramasını desteklemek üzere tasarlanmış iki veri türü sağlar. Tam metin araması, bir sorguyla en iyi eşleşenleri aramak için doğal dil belgelerinin bir koleksiyonunda arama yapmaktır.

  • Tsvektör metin araması PostgreSQL değişken türleri, metin araması için optimize edilmiş bir formdaki belgeyi temsil eder
  • Sorgu türü metin araması, aranması gereken anahtar kelimeleri saklar

Tarih/Saat Veri Türleri

PostgreSQL zaman damgası, ikinci hassasiyet yerine mikrosaniye hassasiyeti sunar. Üstelik saat dilimli veya saat dilimsiz saklama seçeneğiniz de var. PostgreSQL girişte zaman dilimini içeren zaman damgasını UTC'ye dönüştürecek ve saklayacaktır.

Tarih ve saat girişi, geleneksel Postgres, ISO 8601 dahil olmak üzere çeşitli formatlarda kabul edilir. SQL uyumlu vb.

PostgreSQL Gün / Ay / Yıl sıralamasını destekler. Desteklenen formatlar DMY, MDY, YMD'dir

Geçici Veri Türleri

İsim Beden Aralık çözüm
Saat dilimi olmayan zaman damgası 8 bayt MÖ 4713 - MS 294276 1 mikrosaniye/14 hane
Saat dilimini içeren zaman damgası 8 bayt MÖ 4713 - MS 294276 1 mikrosaniye/14 hane
tarih 4 bayt MÖ 4713 - MS 294276 Bir gün
Saat dilimi olmayan zaman 8 bayt 00:00:00 to 24:00:00 1 mikrosaniye/14 hane
Saat dilimiyle saat 12 bayt 00:00:00 + 1459'dan 24:00:00-1459'a 1 mikrosaniye/14 hane
Aralık 12 bayt -178000000 ila 178000000 yıl 1 mikrosaniye/14 hane

Örnekler

Giriş Açıklama
2025-09-07 ISO 8601, 7 Eylül herhangi bir tarih stiliyle (önerilen format)
Eylül 7, 2025 Herhangi bir tarih stiliyle 7 Eylül
9/7/2025 7 Eylül MDY ile, 9 Temmuz DMY ile
9/7/25 7 Eylül 2025, MDY ile
2025-Sep-7 Herhangi bir tarih stiliyle 7 Eylül
Eylül-7-2018 Herhangi bir tarih stiliyle 7 Eylül
7-Sep-25 7 Eylül 2025, YMD ile
20250907 ISO 8601, 7 Eylül 2025, herhangi bir modda
2025.250 yıl ve yılın günü, bu durumda 7 Eylül 2025
J25250 Julian tarihe

Zaman Dilimi Girişi ile Zaman/Zaman

Giriş Açıklama
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM 11:19 ile aynı
11: 19 PM 23:19 ile aynı
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, 11:19 EST ile aynı
23: 19 EST EST olarak belirtilen saat dilimi, 11:19 EST ile aynı

Boole Türü

Boolean veri türü şunları tutabilir:

  • Gerçek
  • Yanlış
  • boş

değerleri.

sen kullan bool or boole Boolean veri türüne sahip bir sütun bildirmek için anahtar kelime.

Değerleri bir boolean sütununa eklediğinizde, Postgre aşağıdaki gibi değerleri dönüştürür:

  • Evet
  • y
  • 1
  • t
  • gerçek

1'e.

Gibi değerler iken

  • Yok hayır
  • N
  • 0
  • F
  • Yanlış

0'a dönüştürülür

Verileri seçerken değerler tekrar evet, doğru, y vb.'ye dönüştürülür.

Geometrik Veri Türleri

Geometrik veri türleri iki boyutlu uzamsal nesneleri temsil eder. Döndürme, ölçeklendirme, çeviri vb. işlemlerin gerçekleştirilmesine yardımcı olurlar.

İsim Depolama boyutu Temsil Açıklama
Nokta 16 bayt Bir düzlem üzerinde nokta (X, y)
Line 32 bayt Sonsuz çizgi ((xl.yl).(x2.y2))
Lseg 32 bayt Sonlu çizgi segmenti ((xl.yl).(x2.y2))
Box 32 bayt Dikdörtgen biçiminde Box ((xl.yl).(x2.y2))
Yol 16n + 16n bayt Yolu Kapat ve Aç ((xl.yl),…)
Polygon 40 + 16n bayt Polygon [(xl.yl),….]
Daire 24 bayt Daire <(xy).r> (merkez noktası ve yarıçap)

Numaralandırılmış Türler

numaralandırılmış PostgreSQL veri türü, ülke kodu veya şube kimliği gibi nadiren değişen bilgileri temsil etmek için kullanışlıdır. Numaralandırılmış veri türü, veri bütünlüğünü sağlamak için yabancı anahtarlarla bir tabloda temsil edilir.

Örnek E-posta

Saç rengi demografik veritabanında oldukça statiktir

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Numaralandırılmış Türler

Aralık Türü

Birçok iş uygulaması aralıklardaki verilere ihtiyaç duyar. Aralıklarla ilgilenmek için genellikle iki sütun (örnek: başlangıç ​​tarihi, bitiş tarihi) tanımlanır. Bu hem verimsiz hem de bakımı zordur.

Postgre aşağıdaki gibi aralık türleri oluşturmuştur

  • int4range — Tamsayı aralığını görüntüleme
  • int8range — Bigint'in görüntülenme aralığı
  • numrange — Sayısal aralığı gösterir
  • tstrange — Zaman dilimi olmadan zaman damgasını görüntülemenize yardımcı olur
  • garip — Zaman damgasını saat dilimiyle birlikte görüntülemenizi sağlar
  • tarih aralığı — Tarih aralığı

UUID türü

Evrensel Benzersiz Tanımlayıcı (UUID), bir algoritma tarafından oluşturulan 128 bitlik bir değerdir. Aynı algoritmayı kullanan başka bir kişi tarafından aynı tanımlayıcının oluşturulması çok düşük bir olasılıktır. Bu nedenle, dağıtılmış sistemler için bu tanımlayıcılar ideal bir seçimdir çünkü tek bir veritabanı içinde benzersizlik sunar. Bir UUID, çeşitli gruplar tirelerle ayrılmış küçük harfli onaltılık rakamlardan oluşan bir grup olarak yazılır.

PostgreSQL 16 bayt depolama alanı tüketen yerleşik bir UUID veri türüne sahiptir. UUID, birincil anahtarlar için ideal bir veri türüdür.

Örnek E-posta

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre ayrıca tamamı büyük harf, kısa çizgi, parantez vb. içermeyen UUID girişlerinin alternatif biçimlerini de kabul eder.

XML türü

PostgreSQL XML verilerini bir veri türünde depolamanıza olanak tanır, ancak bu, bir metin veri türünün uzantısından başka bir şey değildir. Ancak avantajı, giriş XML'inin iyi biçimlendirilmiş olup olmadığını kontrol etmesidir.

Örnek E-posta

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

JSON Türü

JSON verilerini depolamak için PostgreSQL 2 veri türü sunar

  1. JSON
  2. JSONB
json Jsonb
JSON doğrulamalı bir metin veri türünün basit bir uzantısı JSON verilerinin ikili gösterimi
Ekleme hızlıdır ancak veri alımı nispeten yavaştır. Ekleme yavaş ama seç (veri alımı hızlıdır)
Girilen verileri tam olarak boşluk dahil olduğu şekilde kaydeder. İndekslemeyi destekler. Geri alımı daha hızlı hale getirmek için boşlukları optimize edebilir.
Veri alımında yeniden işleme Veri alımında yeniden işleme gerek yok

JSON veri türünü kullanmak için özel bir ihtiyaç olmadığı sürece, en yaygın olarak kullanılan JSON veri türü us jsonb'yi kullandı.

Örnek E-posta

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboarded": true}');

Sözde Tipler

PostgreSQL sözde türler olarak adlandırılan birçok özel amaçlı girdiye sahiptir. Sahte türleri şu şekilde kullanamazsınız: PostgreSQL sütun türleri. İşlevin argümanını veya dönüş türünü bildirmek veya bildirmek için kullanılır.

Mevcut sözde türlerin her biri, bir işlevin davranış belgelerinin yalnızca belirli bir değerin alınmasına veya döndürülmesine karşılık gelmediği durumlarda faydalıdır. SQL veri türü.

İsim Açıklama
Farketmez İşlev tüm giriş veri türlerini kabul eder.
Bir dizi İşlev herhangi bir dizi veri türünü kabul eder.
Herhangi bir öğe İşlev her türlü veri türünü kabul eder.
Herhangi bir numaralandırma İşlev herhangi bir enum veri türünü kabul eder.
Dizi olmayan İşlev, dizi olmayan tüm veri türlerini kabul eder.
Cstring İşlev, boş sonlandırılmış C dizesini kabul eder veya döndürür.
İç Dahili işlev, sunucunun dahili veri türünü kabul eder veya döndürür.
Dil_işleyicisi Dil işleyicisini döndüreceği bildirildi.
Rekor Belirtilmemiş bir satır türü döndüren bir işlev bulun.
Tetik Tetiği döndürmek için bir tetikleme işlevi kullanılır.

Bu işlevi kullanan kullanıcının, bağımsız değişken türü olarak sözde tür kullanıldığında işlevin güvenli bir şekilde davranacağından emin olması önemlidir.

Veri türlerini kullanan en iyi uygulamalar

  • Girişi sınırlamak istemediğiniz sürece "metin" veri türünü kullanın
  • Asla “karakter” kullanmayın.
  • Tamsayılar “int” kullanır. Bigint'i yalnızca gerçekten büyük sayılara sahip olduğunuzda kullanın
  • Neredeyse her zaman “sayısal” kullanın
  • İçeri girmeyi kullan PostgreSQL IEEE 754 veri kaynağınız varsa

SSS

Sayısal (ondalık) sayılar kesin değerleri saklar ve para işlemleri ile hassas hesaplamalar için idealdir. Kayan noktalı sayılar (gerçek ve çift duyarlıklı sayılar) daha hızlı performansla yaklaşık değerleri saklar ancak küçük yuvarlama hataları içerir, bu nedenle kesin finansal veriler için bunlardan kaçınılmalıdır.

Evet. PostgreSQL Bu özellik, herhangi bir sütunun integer[] veya text[] gibi temel bir türün dizisini saklamasına olanak tanır. Diziler, değer listeleri için kullanışlıdır ve sorgularda aranabilir, indekslenebilir ve iç içe geçmiş diziler halinde kullanılamaz.

Para birimi için sayısal türü kullanın çünkü bu tür, tam ondalık değerleri saklar. Yuvarlama hatalarına yol açan kayan noktalı türlerden kaçının. Ayrıca özel para birimi türü de mevcuttur ancak çoklu para birimi verileri için daha az esnektir.

Yapay zeka, örnek verilerinizi inceleyerek para birimleri için sayısal veya esnek alanlar için JSONB gibi uygun veri tiplerini önerebilir. Depolama, hassasiyet ve performans açısından ortaya çıkan avantaj ve dezavantajları açıklayarak güvenle karar vermenizi sağlar.

Evet. Yapay zeka veri türlerini eşleştirebilir. MySQL, Oracleveya SQL Server'ı onların PostgreSQL TINYINT veya NVARCHAR gibi eşdeğerler ve bayrak uyuşmazlıkları, helping Daha sorunsuz bir veritabanı geçişi planlıyorsunuz.

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