PostgreSQL, kullanıcılar için zengin bir yerel veri türleri kümesi sunar. Kullanıcılar CREATE TYPE komutu yardımıyla yeni tipler ekleyebilirler. Ayrıca sorguları daha basit ve daha okunaklı hale getirir.
PostgreSQL'de Veri Türleri
PostgreSQL aşağıdaki veri türlerini destekler:
- Metin Türleri
- Sayısal Türler
- Tarihler ve Saatler
- XML
- JSON
- Boole
- Bitler
- Ikili veri
- Ağ
- 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.
PostgreSQL veri türlerini ayrıntılı olarak inceleyelim
- Karakter Veri Türleri
- Sayısal Veri Türleri
- İkili Veri Türleri
- Ağ Adresi Türü
- Metin Arama Tipi
- Tarih / Saat Veri Türleri
- Boole Türü
- Geometrik Veri Türleri
- Numaralandırılmış Türler
- Aralık Türü
- UUID türü
- XML türü
- JSON Türü
- Sözde Türler
Karakter Veri Türleri
PostgreSQL, metin değerlerini depolamak için karakter veri türlerini destekler. PostgreSQL, aynı dahili yapılardan karakter veri türleri oluşturur. PostgreSQL üç karakter veri türü sunar: CHAR (n), VARCHAR (n) ve TEXT.
İsim Soyisim | Açıklama |
---|---|
varchar (n) | Değişken uzunlukta bir sınır tanımlamanıza izin verir |
Karakter (n) | Sabit uzunlukta, boş yastıklı |
Metin | Sınırsız uzunlukta bir değişken bildirmek için bu veri türünü kullanabilir |
Sayısal Veri Türleri
PostgreSQL iki farklı sayı türünü destekler:
- Tamsayılar
- Kayan nokta sayıları
İsim Soyisim | Mağaza boyutu | Aralık |
---|---|---|
Smallint | 2 bayt | -32768 ila +32767 |
tamsayı | 4 bayt | -2147483648 ile + 2147483647 arası |
Bigint | 8 bayt | -9223372036854775808 ile 9223372036854775807 |
ondalık | değişken | Ondalık veri türü olarak bildirdiyseniz, ondalık noktadan önceki 131072 basamaktan ondalık noktadan sonraki 16383 basamağa kadar değişir. |
sayısal | değişken | Sayı olarak bildirirseniz, ondalık noktadan önce 131072 haneye, ondalık noktadan 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 dizge, sekizli veya bayt dizisidir. İkili Postgres Veri Türleri iki şekilde ayrılır.
- İkili diziler, sıfır değerindeki oranların depolanmasına izin verir
- Yazdırılamayan sekizliler
Karakter dizileri sıfır sekizlilere izin vermez ve ayrıca veritabanının karakter kümesi kodlama kurallarına göre geçersiz olan diğer sekizli değerlerine ve dizilerine izin vermez.
İsim Soyisim | 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 IP adresi gibi ağ bilgilerini depolar veya
sensörler. PostgreSQL, ağ verilerini optimize etmenize yardımcı olan üç yerel türe sahiptir.
İsim Soyisim | Boyut | Açıklama |
---|---|---|
Elmadan yapılan bir içki | 7 veya 19 bay | IPV4 ve IPv6 ağları |
Inet | 7 veya 19 bayt | IPV4 ve IPV5 ana bilgisayarı ve ağları |
macaddr | 6 bayt | MAC adresleri |
Ağ Adresi Türlerini kullanmanın aşağıdaki avantajları vardır
- Depolama Alanı Tasarrufu
- Giriş hatası kontrolü
- Verileri alt ağa göre aramak gibi işlevler
Metin Arama Tipi
PostgreSQL, tam metin aramayı desteklemek için tasarlanmış iki veri türü sağlar. Tam metin araması, bir sorguyla en iyi eşleşenleri aramak için bir dizi doğal dilde belgede arama yapmaktır.
- Tsvector metin arama PostgreSQL değişken türleri, metin araması için optimize edilmiş bir formdaki bir belgeyi temsil eder
- Sorgu türü metin araması, aranması gereken anahtar kelimeleri depolar
Tarih / Saat Veri Türleri
PostgreSQL zaman damgası, ikinci hassasiyet yerine mikrosaniye hassasiyet sunar. Üstelik saat dilimi ile veya olmadan da kaydetme seçeneğine sahipsiniz. PostgreSQL, zaman dilimli zaman damgasını girişte UTC'ye dönüştürür ve saklar.
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
Zamansal Veri Türleri
İsim Soyisim | Boyut | Aralık | çözüm |
---|---|---|---|
Saat dilimi olmayan zaman damgası | 8 bayt | MÖ 4713 - MS 294276 | 1 mikrosaniye / 14 basamak |
Saat dilimi ile zaman damgası | 8 bayt | MÖ 4713 - MS 294276 | 1 mikrosaniye / 14 basamak |
tarih | 4 bayt | MÖ 4713 - MS 294276 | Bir gün |
Saat dilimi olmayan zaman | 8 bayt | 00:00:00 - 24:00:00 | 1 mikrosaniye / 14 basamak |
Saat dilimi ile zaman | 12 bayt | 00:00:00 + 1459 için 24:00: 00-1459 | 1 mikrosaniye / 14 basamak |
Aralık | 12 bayt | -178000000 ila 178000000 yıl | 1 mikrosaniye / 14 basamak |
Örnekler:
Giriş | Açıklama |
---|---|
2025-09-07 | Herhangi bir tarih stiliyle ISO 8601, 7 Eylül (önerilen biçim) |
7 Eylül 2025 | Herhangi bir tarih stilinde 7 Eylül |
07.09.2025 | MDY ile 7 Eylül, DMY ile 9 Temmuz |
9/7/25 | 7 Eylül 2025, MDY ile |
2025 Eylül 7 | Herhangi bir tarih stilinde 7 Eylül |
Eylül-7-2018 | Herhangi bir tarih stilinde 7 Eylül |
7-Eyl-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 / Saat
Giriş | Açıklama |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | 11:19 ile aynı |
23:19 | 23:19 ile aynı |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, 23:19 EST ile aynı |
23:19 EST | EST olarak belirtilen saat dilimi, 23:19 EST ile aynı |
Boole Türü
Bir Boole veri türü tutabilir
- Doğru
- Yanlış
- boş
değerler.
Boolean veri türüne sahip bir sütun bildirmek için bir bool veya boolean anahtar sözcüğü kullanırsınız.
Bir boole sütununa değerler eklediğinizde, Postgre değerleri şu şekilde dönüştürür:
- Evet
- y
- 1
- t
- doğru
1.
Değerler gibi iken
- 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. Değerlere dönüştürülür.
Geometrik Veri Türleri
Geometrik veri türleri, iki boyutlu uzamsal nesneleri temsil eder. Döndürme, ölçekleme, çevirme vb. Gibi işlemleri gerçekleştirmeye yardımcı olurlar.
İsim Soyisim | Depolama Boyutu | Temsil | Açıklama |
---|---|---|---|
Nokta | 16 bayt | Bir uçağa gelin | (x, y) |
Hat | 32 bayt | Sonsuz çizgi | ((xl.yl). (x2.y2)) |
Lseg | 32 bayt | Sonlu çizgi parçası | ((xl.yl). (x2.y2)) |
Kutu | 32 bayt | Dikdörtgen Kutu | ((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.
Misal:
Saç rengi, demografik bir veritabanında oldukça durağandır
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Aralık Türü
Birçok iş uygulaması, aralıklarda veri gerektirir. Aralıklarla ilgilenmek için genellikle iki sütun (örnek: başlangıç tarihi, bitiş tarihi) tanımlanır. Bu hem verimsizdir hem de sürdürülmesi zordur.
Postgre, aralık türlerini aşağıdaki gibi oluşturmuştur
- int4range - Tamsayı aralığını görüntüler
- int8range - Bigint aralığını görüntüler
- numrange - Sayısal aralığı gösterir
- tstrange - Saat dilimi olmadan zaman damgasını görüntülemenize yardımcı olur
- garip - Saat dilimiyle birlikte zaman damgası görüntülemenizi sağlar
- tarih aralığı - Tarih aralığı
UUID türü
Evrensel Olarak Benzersiz Tanımlar (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ı algoritmayı kullanarak üretilmesi pek olası değildir. Bu nedenle, dağıtılmış sistemler için bu tanımlayıcılar, tek bir veritabanı içinde benzersizlik sunduğu için ideal bir seçimdir. Bir UUID, kısa çizgilerle ayrılmış çeşitli gruplarla küçük harfli onaltılık rakamlardan oluşan bir grup olarak yazılır.
PostgreSQL, 16 bayt depolama tüketen yerel bir UUID veri türüne sahiptir… UUID, birincil anahtarlar için ideal bir Veri türüdür.
Misal:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre ayrıca tüm büyük harf, tire, kaşlı ayraç vb. Gibi alternatif UUID girdileri biçimlerini de kabul eder.
XML türü
PostgreSQL, XML verilerini bir veri türünde saklamanıza izin verir, ancak bir metin veri türünün uzantısından başka bir şey değildir. Ancak avantajı, giriş XML'sinin iyi biçimlendirilmiş olup olmadığını kontrol etmesidir.
Misal:
XMLPARSE (DOCUMENT '') Data Type …
JSON Türü
JSON verilerini depolamak için PostgreSQL 2 veri türü sunar
- JSON
- 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 erişimi nispeten yavaştır. | Ekleme yavaş ama seçin (veri alma hızlıdır) |
Girilen verileri tam olarak boşlukları içerdiği şekilde kaydeder. | İndekslemeyi destekler. Geri alma işlemini hızlandırmak için beyaz alanı optimize edebilir. |
Veri alımında yeniden işleme | Veri alımında yeniden işleme gerek yoktur |
JSON veri türünü kullanmak için özel bir ihtiyaç olmadıkça, en yaygın olarak kullanılan JSON veri türü bizi jsonb kullandı.
Misal:
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 Türler
PostgreSQL, sözde türler adı verilen birçok özel amaçlı girdiye sahiptir. Sözde türleri PostgreSQL sütun türleri olarak kullanamazsınız. İşlevin argümanını veya dönüş türünü bildirmek için kullanılır.
Kullanılabilir sözde türlerin her biri, bir işlevin davranış belgelerinin yalnızca belirli bir SQL veri türünün bir değerini almaya veya döndürmeye karşılık gelmediği durumlarda yararlıdır.
İsim Soyisim | Açıklama |
---|---|
Hiç | Fonksiyon tüm girdi veri tiplerini kabul eder. |
Bir dizi | İşlev, herhangi bir dizi veri türünü kabul eder. |
Herhangi bir öğe | İşlev herhangi bir veri türünü kabul eder. |
Herhangi bir sıralama | İşlev, herhangi bir enum veri türünü kabul eder. |
Düzensiz | İşlev, dizi olmayan herhangi bir veri türünü kabul eder. |
Cstring | İşlev, boş sonlandırılmış C dizesini kabul eder veya döndürür. |
İç | Dahili işlev, sunucu dahili veri türünü kabul eder veya döndürür. |
Language_handler | Dil işleyicisini döndürdüğü bildirildi. |
Kayıt | Belirtilmemiş bir satır türü döndüren bir işlev bulun. |
Tetikleyici | Tetiği geri döndürmek için bir tetik 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 "char" kullanmayın.
- Tamsayılar "int" kullanır. Bigint'i yalnızca gerçekten büyük sayılarınız olduğunda kullanın
- Neredeyse her zaman "sayısal" kullanın
- IEEE 754 veri kaynağınız varsa PostgreSQL'de float kullanın
Özet
- PostgreSQL, kullanıcılar için zengin bir yerel veri türleri kümesi sunar
- PostgreSQL, metin değerlerini depolamak için karakter veri türlerini destekler
- PostgreSQL iki farklı sayı türünü destekler: 1. Tamsayılar, 2. Kayan noktalı sayılar
- İkili dizge, bayt veya sekizli dizisidir
- PostgreSQL, ağ verilerinin depolanmasını optimize etmenize yardımcı olacak Ağ adres türüne sahiptir
- Metin arama PostgreSQL veri yapıları, tam metin aramayı desteklemek için tasarlanmıştır
- Tarih / Saat PSQL veri türleri, çeşitli biçimlerde 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
- PostgreSQL'deki Numaralandırılmış Veri türleri, ülke kodu veya şube kimliği gibi nadiren değişen bilgileri temsil etmek için kullanışlıdır.
- Evrensel Olarak Benzersiz Tanımlar (UUID), bir algoritma tarafından oluşturulan 128 bitlik bir miktardır
- PostgreSQL, sözde türler adı verilen birçok özel amaçlı girdiye sahiptir.
- Girişi sınırlamak istemediğiniz sürece "metin" veri türünü kullanmak en iyi uygulamadır