PostgreSQL Veri Tipleri

Paylaş

PostgreSQL içerisinde SQL standartları yanında yer alan UUID, Array, hstore, JSON ve User-defined data types olarak adlandırılan özel veri tipleri ile ilgili bilgiler yer alıyor.

Boolean

Verilerin doğru-yanlış, evet-hayır gibi ikili gösteriminde kullanılır.

CREATE TABLE stok_durumu (
urun_id INT PRIMARY KEY,
mevcut BOOLEAN NOT NULL
);

Veriler temel olarak TRUE, FALSE olarak gösnterilmesinin yanında PostgreSQL aşağıdaki gibi çeşitli tanımlara imkan vermektedir.

TrueFalse
truefalse
‘t’‘f ‘
‘true’‘false’
‘y’‘n’
‘yes’‘no’
‘1’‘0’

PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO stok_durumu (urun_id , mevcut) 
VALUES 
  (100, TRUE), 
  (200, FALSE), 
  (300, 't'), 
  (400, '1'), 
  (500, 'y'), 
  (600, 'yes'), 
  (700, 'no'), 
  (800, '0');

PostgreSQL veri sorgulama örnek kullanımı aşağıdaki gibidir.

SELECT *
FROM stok_durumu
WHERE mevcut = 'yes';

CHAR, VARCHAR ve TEXT

PostgreSQL metinsel, string verileri saklamak için kullanılır.

CREATE TABLE karakter_deneme (
  id serial PRIMARY KEY, 
  x CHAR (1), 
  y VARCHAR (10), 
  z TEXT
);

PostgreSQL aşağıdaki gibi çeşitli tanımlara imkan vermektedir.

Veri türüAçıklama
CHARACTER VARYING(n)VARCHAR(n)uzunluk sınırı olan değişken uzunluklu
CHARACTER(n)CHAR(n)sabit uzunlukta, boş dolgulu
TEXT, VARCHARdeğişken sınırsız uzunlukta

Aşağıdaki örnekte x ve y sütunu boyutu aştığı için PostgreSQL hata verecektir.

INSERT INTO karakter_deneme (x, y, z) 
VALUES 
  (
    'Evet', 'Bu varchar için bir testtir', 
    'PostgreSQL metin sütunu için çok uzun metin'
  );

Aşağıdaki örnekte belirlenen veri giriş uzunluğuna göre düzenlenerek hata giderilmiştir.

INSERT INTO karakter_deneme (x, y, z) 
VALUES 
  (
    'E', 'Bu varchar', 
    'PostgreSQL metin sütunu için çok uzun metin'
  ) RETURNING *;

NOT: Veri tipi üzerinde işlemler yapmak için PostgreSQL String Fonksiyonları yazıma bakmalısın.

NUMERIC

PostgreSQL parasal, miktarsal gibi uzun rakamsal verileri saklamak için kullanılır.

Veri tipinin genel kullanımı aşağıdaki gibidir.

sütun_adi NUMERIC(hassasiyet, ölçek)
CREATE TABLE urunler (
    id SERIAL PRIMARY KEY,
    adi VARCHAR(100) NOT NULL,
    fiyat NUMERIC(5,2)
);

NOT: NUMERIC, DECIMAL ve DEC anahtar kelimeleri birbirleri yerine kullanılabilir.

Veri tipinin kullanıldığı tabloya veri ekleme örneği aşağıdak yer almaktadır.

INSERT INTO urunler (adi, fiyat)
VALUES ('Telefon',500.215), 
       ('Tablet',500.214);

Belirlenen veri tipi uzunluğu aşıldığında PostgreSQL hata verecektir.

INSERT INTO urunler (adi, fiyat)
VALUES('Telefon',123456.21);

NOT: Veri tipi sayısal veri olmadığını ifade eden NaN anahtar kelimesini kullanımını destekler.

DOUBLE PRECISION

PostgreSQL rakamsal-sayısal verileri kesin olmayan, değişken hassasiyetli olarak saklamak için kullanılır.

CREATE TABLE derece (
    id SERIAL PRIMARY KEY,
    konum TEXT NOT NULL,
    derece DOUBLE PRECISION
);

PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO
  derece (konum, derece)
VALUES
  ('Oda 1', 23.5),
  ('Oda 2', 21.8),
  ('Oda 3', 24.3)
RETURNING *;

Veri tipi bazı çeşitli hesaplamarda beklenmedik sonuçlar verebilir.

CREATE TABLE t(c double precision);
INSERT INTO t(c) VALUES(0.1), (0.1), (0.1) RETURNING *;
SELECT SUM(c) FROM t;

NOT: Veri tipi üç adet 0.1 değerinin toplamı sonucu 0.30000000000000004 değerini verecektir.

REAL

PostgreSQL rakamsal-sayısal verileri daha az hassasiyetli olarak saklamak için kullanılır.

CREATE TABLE urunler (
    urun_id SERIAL PRIMARY KEY,
    fiyat REAL
);

Veri tipi hassas değerler içermeyen verilerin kullanımında daha az bellek ve saklama alanı ile çalışmayı sağlar.

Integer

PostgreSQL rakamsal-sayısal verileri saklamak için kullanılır.

Veri TipiKapladığı alanMinMax
 SMALLINT2 byte-32,768+32,767
 INTEGER4 byte-2,147,483,648+2,147,483,647
 BIGINT8 byte-9,223,372,036,854,775,808+9,223,372,036,854,775,807

Kullanım alanı ve kapladığı alana göre SMALLINT, INTEGER veya BIGINT veri tipi tercih edilebilir.

CREATE TABLE kitaplar (
    kitap_id SERIAL PRIMARY KEY,
    baslik VARCHAR (255) NOT NULL,
    sayfa SMALLINT NOT NULL CHECK (sayfa > 0)
);
CREATE TABLE sehirler (
    sehir_id serial PRIMARY KEY,
    sehir_adi VARCHAR (255) NOT NULL,
    nufus INT NOT NULL CHECK (nufus >= 0)
);

NOT: INTEGER yerine INT anahtar kelimesi kullanılabilir.

DATE

PostgreSQL tarihsel verileri saklamak için kullanılır.

CREATE TABLE dokumanlar (
  dokuman_id SERIAL PRIMARY KEY, 
  baslik VARCHAR (255) NOT NULL, 
  yayin_tarihi DATE NOT NULL DEFAULT CURRENT_DATE
);

PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO dokumanlar (baslik) 
VALUES ('Doküman başlığı')
RETURNING *;

NOT: Veri tipi üzerinde işlemler yapmak için PostgreSQL Tarih Saat İşlemleri ve Fonksiyonları yazıma bakmalısın.

Timestamp

PostgreSQL tarih saat verilerini saklamak timestamp ve timestampz kullanılır.

timestamp verileri zaman dilimine göre saklamazken, timestapmz zaman dilimine göre saklar.

CREATE TABLE timestamp_demo (
    ts TIMESTAMP, 
    tstz TIMESTAMPTZ
);

PostgreSQL zaman dilimi değiştirilir.

SET timezone = 'America/Los_Angeles';

Kullanılan zaman dilimine kontrol etmek ve görüntülemek için SHOW anahtar kelimesi kullanılır.

SHOW TIMEZONE;

Tabloya veri eklenir.

INSERT INTO timestamp_demo (ts, tstz) VALUES('2022-06-22 19:10:25-07','2022-06-22 19:10:25-07');

Zaman dilimine göre farklılığa bakmak için farklı zaman dilimi seçilerek tekrar kontrol edildiğinde zaman dilimine göre belirlenen tarih-saat verisi değişecektir.

Interval

PostgreSQL tarih saat aralığı verisini saklamak için Interval anahtar kelimesi ve veri tipi kullanılır.

Genel kullanımı aşağıdaki gibidir.

@ interval [ fields ] [ (p) ]
interval '2 months ago';
interval '3 hours 20 minutes';

Aşağıda şimdik tarih ve saatden Interval anahtar kelimesi kullanılar çıkarılmıştır.

SELECT
	now(),
	now() - INTERVAL '1 year 3 hours 20 minutes' 
             AS "3 hours 20 minutes ago of last year";

Veri tipi olarak kullanımı aşağıdaki gibidir.

CREATE TABLE etkinlik (
    id SERIAL PRIMARY KEY,
    etkinlik_adi VARCHAR(255) NOT NULL,
    sure INTERVAL NOT NULL
);

PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO etkinlik (etkinlik_adi, sure) 
VALUES
    ('Etkinlik 1', '2 hour 30 minutes'),
    ('Etkinlik 2', '1 days 5 hours')
RETURNING *;

TIME

PostgreSQL saat verisini saklamak kullanılır.

Genel kullanımı aşağıdaki gibidir.

sutun_adi TIME(hassasiyet);
CREATE TABLE vardiya (
    id serial PRIMARY KEY,
    vardiya_adi VARCHAR NOT NULL,
    baslangic TIME NOT NULL,
    bitis TIME NOT NULL
);

PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO vardiya(vardiya_adi, baslangic, bitis)
VALUES('Sabah', '08:00:00', '12:00:00'),
      ('Öğle', '13:00:00', '17:00:00'),
      ('Gece', '18:00:00', '22:00:00');

NOT: Saat bilgisine zaman dilimini eklemek için WITH TIME ZONE anahtar kelimesini eklemek yeterli olacaktır.

UUID

PostgreSQL RFC 4122 ile standart olarak belirlenenUniversal Unique Identifier veya  UUID verisini saklamak kullanılır.

CREATE TABLE kisi (
    kisi_id uuid DEFAULT gen_random_uuid(),
    kisi_adi VARCHAR NOT NULL,
    kisi_soyadi VARCHAR NOT NULL,
    eposta VARCHAR NOT NULL,
    telefon VARCHAR,
    PRIMARY KEY (kisi_id)
);

PostgreSQL içerisinde yer alan gen_random_uuid fonksiyonu UUID üretmek için kullanılır.

SELECT gen_random_uuid();

Array

PostgreSQL veritabanı yönetim sisteminde dizi verilerini saklamak için kullanılır.

Veri tipinin genel kullanımı aşağıdaki gibidir.

sutun_adi veri_tipi []
CREATE TABLE kisi (
  id SERIAL PRIMARY KEY, 
  adi VARCHAR (100), 
  telefon TEXT []
);

Çok boyutlu dizi tanımı aşağıdaki gibidir.

sutun_adi veri_tipi [][]

Diziye veri ekelemek için ARRAY veya süslü parentez kullanılabilir.

INSERT INTO kisi (adi, telefon)
VALUES('Yusuf Sezer', ARRAY [ '(508)-589-5846','(558)-589-5555' ]);
INSERT INTO kisi (adi, telefon)
VALUES('Yusuf Sezer', '{ "(508)-589-5846","(558)-589-5555" }');

Dizi verilerine ulaşmak için PostgreSQL veri sorgulama kullanılır.

SELECT adi, telefon FROM kisi;

Dizideki belirli elemana ulaşmak için dizi sıra numarası kullanılır.

SELECT adi, telefon[1] FROM kisi;

NOT: Sıra numarası bir (1) ile başlar.

Veri sorgulama sırasında sıra numarası ile birlikte koşul kullanılabilir.

SELECT adi FROM kisi WHERE telefon[1] = '(508)-589-5846';

Dizi sıra numarası olmadan içerisinde bulunan elemanı sorgulamak için ANY anahtar kelimesi kullanılır.

SELECT adi, telefon FROM kisi WHERE '(508)-589-5846' = ANY(telefon);

Sorgu sonucunda içerisinde aranan değer olan tüm satırlar listenecektir.

Dizideki her bir veriyi ayrı satırda göstererek genişletmek için UNNEST anahtar kelimesi kullanılır.

SELECT adi, UNNEST(telefon) FROM kisi;

hstore

Anahtar-değer verilerini saklamak için kullanılır.

Veri tipinin kullanılabilmesi için hstore eklentsininin aşağıdaki komutlarla aktif edilmesi gerekir.

CREATE EXTENSION hstore;

Özellik eklendikten sonra sıradan veri tipi tanımı gibi kullanılır.

CREATE TABLE kitaplar (
	id serial primary key,
	baslik VARCHAR (255),
	ozellik hstore
);

Veri ekleme “anahtar”=>”değer” biçiminde sadece metinsel ifade içerecek şekilde yapılır.

INSERT INTO kitaplar (baslik, ozellik) 
VALUES 
  (
    'PostgreSQL', '"ciltsiz" => "243",
     "yayinci" => "yusufsezer.com",
     "dil"  => "Turkish",
     "ISBN-13"   => "978-1669385000",
     "ağırlık"    => "110 gram"'
  );

PostgreSQL veri sorgulama ile verilere ulaşılır.

SELECT ozellik FROM kitaplar;

Belirli değere ulaşmak için veri tipine ait operatör(->) kullanılır.

SELECT ozellik -> 'ISBN-13' AS ISBN FROM kitaplar;

Değerlere ulaşmak için kullanılan operatör(->) veri sorgulama işleminde de kullanılabilir.

SELECT baslik, ozellik -> 'dil' AS dil FROM kitaplar where ozellik -> 'ISBN-13' = '978-1669385000';

Sütuna veri eklemek için veri güncelleme ile birlikte || operatörü kullanılır.

UPDATE kitaplar set ozellik = ozellik || '"kargo" => "evet"';

Mevcut anahtar-değer verisin güncellemek için || operatörü kullanılır.

UPDATE kitaplar set ozellik = ozellik || '"kargo" => "hayır"';

Sütundaki anahtar-değer verisini silmek için delete fonksiyonu kullanılır.

UPDATE kitaplar set ozellik = delete(ozellik, 'kargo');

Veri tipinde anahtar kontrolü yapmak için ? operatörü kullanılır.

SELECT baslik, ozellik -> 'yayinci' AS Yayıncı FROM kitaplar WHERE ozellik ? 'yayinci';

Veri tipindeki anahtar değer kontrolü yapmak için @> operatörü kullanılır.

SELECT baslik FROM kitaplar WHERE ozellik @> '"yayinci"=>"yusufsezer.com"';

Birden fazla anahtar kontrolü için ?& operatörü ile birlikte ARRAY anahtar kelimesi kullanılır.

SELECT baslik FROM kitaplar WHERE ozellik ?& ARRAY['yayinci', 'dil']

Veri tipine ait anahtarları almak için akeys veya skeys fonksiyonu kullanılır.

SELECT akeys(ozellik) FROM kitaplar;
SELECT skeys(ozellik) FROM kitaplar;

Veri tipine ait değerleri almak için avals veya svals fonksiyonu kullanılır.

SELECT avals(ozellik) FROM kitaplar;
SELECT svals(ozellik) FROM kitaplar;

Veri tipini JSON formatına çevirmek için hstore_to_json fonksiyonu kullanılır.

SELECT baslik, hstore_to_json(ozellik) FROM kitaplar;

Veri tipinine ait anahtar değer verilerini ayrı ayrı satırda listelemek için EACH fonksiyonu kullanılır.

SELECT baslik, EACH(ozellik) FROM kitaplar;
SELECT baslik, (EACH(ozellik)).* FROM kitaplar;

JSON

JSON formatında dizi [] ve nesne {} verilerini saklamak için kullanılır.

CREATE TABLE urunler (
    id SERIAL PRIMARY KEY,
    adi VARCHAR(255) NOT NULL,
    ozellik JSONB
);
INSERT INTO urunler(adi, ozellik)
VALUES('Gömlek','{"renk": "beyaz", "beden": ["S","M","L","XL"]}')
RETURNING *;

PostgreSQL veri sorgulama ile verilere ulaşılır.

SELECT id, adi, ozellik FROM urunler;

Belirli değere ulaşmak için -> operatörü kullanılır.

SELECT id, adi, ozellik -> 'renk' AS renk FROM urunler;

Değeri metinsel olarak almak için ->> operatörü kullanılır

SELECT id, adi, ozellik ->> 'renk' AS renk FROM urunler;

Verilere ulaşmak için kullanılan operatörler (->, ->>) veri sorgulama içinde kullanılır.

SELECT id, adi, ozellik ->> 'renk' AS renk FRMO urunler WHEERE ozellik ->> 'renk' IN('beyaz', 'siyah');

Veriler JSON formatında anahtar:değer olarak saklanabileceği gibi dizi olarakta saklanabilir.

CREATE TABLE kisiler (
   id SERIAL PRIMARY KEY,
   adi VARCHAR(255) NOT NULL,
   telefon JSONB
);

JSON formatında dizi saklamak için köşeli parentez [] kullanılır.

INSERT INTO kisiler (adi, telefon) 
VALUES
   ('Yusuf Sezer','["408-111-2222", "408-111-2223"]'),
   ('Sefa Sezer','["212-111-2222", "212-111-2223"]')
RETURNING *;

Dizideki sırası belirli elemana ulaşmak için ->> sıra kullanılır.

SELECT adi, telefon ->> 0 AS "ev telefonu" FROM kisiler;

NOT: JSON ile ilgili detaylı bilgi almak için JSON Nedir? yazıma bakmalısın.

XML

XML formatında verileri saklamak için kullanılır.

CREATE TABLE kisiler (
    id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    bilgi XML
);

NOT: XML hakkında detaylı bilgi almak için XML Nedir? yazıma bakmalısın.
PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO kisiler (bilgi)
VALUES (
    XMLPARSE(DOCUMENT '<?xml version="1.0" encoding="UTF-8"?>
    <kisi>
        <sira>1</sira>
        <adi>Yusuf</adi>
        <soyadi>Sezer</soyadi>
    </kisi>')
);

XML formatındaki verileri almak için xpath fonksiyonu kullanılır.

SELECT (xpath('/kisi/adi/text()', bilgi))[1]::text FROM kisiler;

XPATH ile ilgili detaylı bilgi almak için XPath Nedir? yazıma bakmalısın.

SELECT 
(xpath('/kisi/sira/text()', bilgi))[1]::text::integer as "Sıra",
(xpath('/kisi/adi/text()', bilgi))[1]::text as "Adı",
(xpath('/kisi/soyadi/text()', bilgi))[1]::text as "Soyadı" 
FROM kisiler;

Verileri almak için kullanılan xpath fonksiyonu veri sorgulama işleminde de kullanılabilir.

SELECT 
(xpath('/kisi/sira/text()', bilgi))[1]::text::integer as "Sıra",
(xpath('/kisi/adi/text()', bilgi))[1]::text as "Adı",
(xpath('/kisi/soyadi/text()', bilgi))[1]::text as "Soyadı" 
FROM kisiler
WHERE (xpath('/kisi/adi/text()', bilgi))[1]::text = 'Yusuf';

XML verileri üzerinde işlem yaparken SQL index kullanılarak performans artışı sağlanabilir.

CREATE INDEX kisi_adi ON kisiler USING BTREE (cast(xpath('/kisi/adi', bilgi) as text[])) ;

NOT: SQL index ile ilgili detaylı bilgi almak için SQL İndex Nedir? Oluşturma ve Kullanımı yazıma bakmalısın.

User-defined data types – Kullanıcı tanımlı veri tipleri

PostgreSQL SQL standartlarında yer alan veri tipleri, PostgreSQL veritabanı yönetim sistemine ait veri tipleri yanında kullanıcıların tanımlayabildiği veri tipleri oluşturmayı sağlar.

Kullanıcı tanımlı veri tipi tanımlamak için CREATE DOMAIN ve CREATE TYPE anahtar kelimeleri kullanılır.

CREATE TABLE kisiler (
    id SERIAL PRIMARY KEY,
    adi VARCHAR NOT NULL,
    soyadi VARCHAR NOT NULL,
    eposta VARCHAR NOT NULL,
    CHECK (
        adi !~ '\s'
        AND soyadi !~ '\s'
    )
);

Yukarıdaki örnekte adı ve soyadı sütunları benzer kısıt ve kontrole sahip olduğundan özel veri tipi tanımı yapılarak daha kısa, anlaşılır ve tekrar kullanılabilir veri tipi oluşturulabilir.

CREATE DOMAIN kisi_bilgi AS VARCHAR NOT NULL CHECK (value !~ '\s');

Tanımlanan veri tipi aşağıdaki gibi kullanılır.

CREATE TABLE kisiler (
    id SERIAL PRIMARY KEY,
    adi kisi_bilgi,
    soyadi kisi_bilgi,
    eposta VARCHAR NOT NULL
);

PostgreSQL kullanıcı tanımlı veri tipi özelliği sayesinde kod daha kısa, anlaşılır ve tekrar kullanılabilir hale gelmiştir.

Kullanıcı tanımlı veri tiplerini listelemek için aşağıdaki sorgu kullanılabilir.

SELECT typname 
FROM pg_catalog.pg_type 
  JOIN pg_catalog.pg_namespace 
  	ON pg_namespace.oid = pg_type.typnamespace 
WHERE 
	typtype = 'd' and nspname = 'public';

Veri tipini düzenlemek için ALTER DOMAIN, kaldırmak için REMOVE DOMAIN anahtar kelimeleri kullanılır.

Kullanıcı tanımlı veri tipi tanımında kullanılan CRATE TYPE anahtar kelimeleri PostgreSQL fonksiyon dönüş türü ve bileşik tür tanımında kullanılır.

CREATE TYPE film_ozeti AS (
    film_id INT,
    baslik VARCHAR,
    yayin_yili SMALLINT
); 

Tanımlanan veri tipi fonksiyon tanımında dönüş türü olarak kullanılır.

CREATE OR REPLACE FUNCTION get_film_ozeti (f_id INT)
	RETURNS film_ozeti AS 
$$
// fonksiyon iceriği
$$
LANGUAGE SQL;

Kullanıcı tanımlı veri tipi tanımı bileşik veri tipi tanımında da kullanılır.

CREATE TYPE address_turu AS(
   cadde text, 
   sehir text,
   bolge text, 
   posta_kodu integer,
   ulke text
);

Veri tipi sıradan PostgreSQL veri tipi olarak kullanılır.

CREATE TABLE kisiler(
    id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    adi VARCHAR(255) NOT NULL,
    adres address_turu
);

PostgreSQL veri ekleme sırasında örnek kullanımı aşağıdaki gibidir.

INSERT INTO kisiler (adi, adres) VALUES ('Yusuf Sezer',ROW('123 St', 'Kocaeli', 'TX', 77001, 'TUR'));
INSERT INTO kisiler (adi, adres) VALUES ('Yusuf Sezer', ('123 St', 'Kocaeli', 'TX', 77001, 'TUR'));
INSERT INTO kisiler (adi, adres.cadde, adres.sehir, adres.bolge, adres.posta_kodu ) VALUES ('Yusuf Sezer', '4000 N. 1st Street', 'San Jose', 'CA', 95134);

PostgreSQL veri sorgulama ile verilere ulaşılır.

SELECT * FROM kisiler;

Bileşik veri tipindeki belirli verilere (veritipi). ile erişim sağlanır.

SELECT adi, (adres).sehir FROM kisiler;

Bileşik veri tipindeki tüm değerlere yıldız (*) ile erişim sağlanır.

SELECT adi, (adres).* FROM kisiler;

Bileşik veri tiplerinde güncelleme aşağıdaki gibi yapılır.

UPDATE kisiler SET adres.ulke = 'TUR' where id = 2 RETURNING *;

Enum

PostgreSQL numaralandırılabilir veya sıralanabilir verileri saklamak için kullanılır.

Veri tipininin genel tanıtımı aşağıdaki gibidir.

CREATE TYPE enum_adi AS ENUM('değer1', 'değer2', 'değer3', ...);
CREATE TYPE oncelik AS ENUM('az','orta','yüksek');

Tanımlanan veri tipi sıradan veri tipi gibi kullanılır.

CREATE TABLE talepler(
    id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    baslik VARCHAR(255) NOT NULL,
    oncelik ONCELIK NOT NULL,
    tarik DATE NOT NULL
);

Veri tipinin kullanıldığı tabloya veri ekleme örneği aşağıdak yer almaktadır.

INSERT INTO talepler(baslik, oncelik, tarih)
VALUES
   ('Talep 7', 'yüksek', '2022-01-01'),
   ('Talep 1', 'orta', '2022-01-01'),
   ('Talep 2', 'az', '2022-01-01')
RETURNING *;

Veri tipi veri sorgulama ve sıralama sırasında örnek kullanımı aşağıdaki gibidir.

SELECT * FROM talepler ORDER BY oncelik;
SELECT * FROM talepler WHERE oncelik > 'az' ORDER BY oncelik;

Veri tipinin alabileceği değerleri listelemek için enum_range fonksiyonu kullanılır.

select enum_range(null::oncelik);

NOT: Veri tipi günler, aylar gibi değişmeyen sıralanabilir verilerde kullanımı performans açısından faydalı olacaktır.

BYTEA

PostgreSQL byte verilerini (genellikle dosyaları) byte dizisi biçiminde saklamak için kullanılır.

CREATE TABLE dosyalar(
    id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    dosya VARCHAR NOT NULL,
    veri BYTEA
);

Veri tipinin kullanıldığı tabloya veri ekleme örneği aşağıdak yer almaktadır.

INSERT INTO dosyalar(dosya, veri) VALUES ('veri.txt','\x012345');

NOT: Programlama diline göre veriler çeşitli işlemler yapılarak dönüştürülür.

NOT: Veri tipi en fazla 1GB boyutundaki verileri saklar.

PostgreSQL, SQL standardı tarafından sağlanan veri tiplerinin yanında çeşitli veri tiplerini destekler.

XML ve JSON gibi sıkça kullanılan formatlar için sağladığı veri tipinin yanında XML ve JSON ile işlem yapmak için çeşitli fonksiyonları sağlar.

Sağlamış olduğu kullanıcı tanımlı veri tipi tanımı sayesinde geliştirilen uygulamaya özel veri tipi tanımlamayı sağlar.

PostgreSQL Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.


Bunlarda ilgini çekebilir