PostgreSQL Veri Türleri: Bayt, Sayısal, Karakter, İkili

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
  • Boole
  • geçici
  • UUID
  • Dizi
  • JSON
  • 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 Tanım
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 Tanım
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 Boyutlar Tanım
Elmadan yapılan bir içki 7 veya 19 bayt IPV4 ve IPv6 ağlar
inet 7 veya 19 bayt IPV4 ve IPV5 ana bilgisayarı 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 Boyutlar 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ş Tanım
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 20225 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ş Tanım
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 Tanım
Nokta 16 bayt Bir düzlem üzerinde nokta (X, y)
çizgi 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),…)
Çokgen 40 + 16n bayt Çokgen [(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 Olarak Benzersiz Tanımlamalar (UUID), bir algoritma tarafından oluşturulan 128 bitlik bir miktardır. Aynı tanımlayıcının dünyadaki başka bir kişi tarafından aynı algoritma kullanılarak üretilmesi pek olası değildir. Bu nedenle, dağıtılmış sistemler için bu tanımlayıcılar, tek bir veritabanında benzersizlik sunduğundan ideal bir seçimdir. Bir UUID, çeşitli grupların tirelerle ayrıldığı bir grup küçük harf onaltılık rakamdan oluşan bir grup olarak yazılır.

PostgreSQL 16 bayt depolama alanı tüketen yerel 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"], "onboareded": 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 Tanım
herhangi İş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

ÖZET

  • PostgreSQL kullanıcılara zengin bir yerel veri türleri kümesi sunar
  • PostgreSQL metin değerlerini saklamak için karakter veri türlerini destekler
  • PostgreSQL iki farklı sayı türünü destekler: 1. Tamsayılar, 2. Kayan noktalı sayılar
  • İkili dize bir bayt veya sekizli dizisidir
  • PostgreSQL ağ verilerinin depolanmasını optimize etmenize yardımcı olacak Ağ adresi türüne sahiptir
  • Metin arama PostgreSQL veri yapıları tam metin aramasını destekleyecek şekilde tasarlanmıştır
  • Tarih/Saat PSQL veri türleri, çeşitli formatlarda tarih ve saat bilgilerine izin verir
  • Boolean Postgres alan türleri üç değer tutabilir: 1. Doğru 2. Yanlış 3. Boş
  • Geometrik PostgreSQL veri türleri iki boyutlu uzamsal nesneleri temsil eder
  • Numaralandırılmış Veri türleri PostgreSQL ülke kodu veya şube kimliği gibi nadiren değişen bilgileri temsil etmek için kullanışlıdır
  • Evrensel Benzersiz Tanımlamalar (UUID), bir algoritma tarafından oluşturulan 128 bitlik bir miktardır.
  • PostgreSQL sözde türler olarak adlandırılan birçok özel amaçlı girişe sahiptir
  • Girişi sınırlamak istemediğiniz sürece "metin" veri türünü kullanmak en iyi uygulamadır