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
- 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.
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
- Depolama Alanından Tasarruf
- Giriş hatası kontrolü
- 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')
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
- 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 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