Pendahuluan
PostgreSQL adalah sistem manajemen basis data relasional sumber terbuka yang dikenal karena ketahanan dan ekstensibilitasnya. Ini juga berarti PostgreSQL menawarkan berbagai tipe data untuk pengguna.
Dalam tutorial ini, kita akan membahas berbagai tipe data bawaan yang tersedia di PostgreSQL.
Tipe Data PostgreSQL
Saat membuat tabel di PostgreSQL, Anda dapat menentukan tipe data untuk setiap kolom. PostgreSQL mendukung berbagai tipe data bawaan:
Karakter
PostgreSQL menggunakan tipe data karakter untuk menyimpan nilai teks. Ada tiga tipe data karakter di PostgreSQL:
Nama | Deskripsi |
karakter(n), karakter(n) | String dengan panjang tetap, dengan n adalah jumlah karakter. Ruang kosong diisi di sebelah kanan sama dengan n . |
karakter bervariasi(n), varchar(n) | String dengan panjang variabel dengan batas karakter, di mana n adalah jumlah karakter. |
teks | Panjang variabel, string tak terbatas. |
Jenis numerik
Jenis data numerik termasuk:
- Bilangan bulat dua, empat, dan delapan byte
- Angka floating point empat dan delapan byte
- Desimal yang dapat dipilih:
Nama | Ukuran Penyimpanan | Deskripsi | Rentang |
kecil | 2 byte | Bilangan bulat kecil. | -32768 hingga +32767 |
bilangan bulat | 4 byte | Integer rentang menengah. | -2147483648 hingga +2147483647 |
besar | 8 byte | Bilangan bulat besar. | -9223372036854775808 hingga 9223372036854775807 |
desimal | variabel | Desimal presisi yang ditentukan pengguna. | Hingga 131072 digit sebelum koma. Hingga 16383 digit setelah titik desimal |
numerik | variabel | Desimal presisi yang ditentukan pengguna. | hingga 131072 digit sebelum koma. Hingga 16383 digit setelah titik desimal |
nyata | 4 byte | Variabel presisi desimal. | presisi 6 digit desimal |
presisi ganda | 8 byte | Variabel presisi desimal. | Presisi 15 digit desimal |
serial kecil | 2 byte | Integer peningkatan otomatis kecil. | 1 hingga 32767 |
serial | 4 byte | Integer peningkatan otomatis sedang. | 1 hingga 2147483647 |
serial besar | 8 byte | Integer peningkatan otomatis besar. | 1 hingga 9223372036854775807 |
Uang
Jenis data moneter menyimpan sejumlah uang dengan presisi pecahan tetap. Jenis ini menyimpan hingga 8 byte data dengan rentang -92233720368547758.08 hingga +92233720368547758.07 dan menggunakan numerik , bilangan bulat , dan besar tipe data sebagai nilai.
Tanggal/Waktu
PostgreSQL Mendukung semua tipe data tanggal dan waktu SQL standar , dengan resolusi 1 mikrodetik atau 14 digit. Tanggal adalah satu-satunya pengecualian, dengan resolusi satu hari, dihitung menurut kalender Gregorian:
Nama | Ukuran Penyimpanan | Deskripsi | Rentang |
stempel waktu | 8 byte | Tanggal dan waktu, tanpa zona waktu. | 4713 SM sampai 294276 M |
stempel waktu | 8 byte | Tanggal dan waktu, dengan zona waktu. | 4713 SM sampai 294276 M |
tanggal | 4 byte | Tanggal. | 4713 SM sampai 294276 M |
waktu tanpa zona waktu | 8 byte | Waktu dalam sehari, tanpa zona waktu. | 00:00:00 hingga 24:00:00 |
waktu dengan zona waktu | 12 byte | Waktu, dengan zona waktu. | 00:000:00 + 1459 hingga 24:00:00-1459 |
interval | 12 byte | Interval waktu. | -178000000 hingga 178000000 tahun |
Biner
PostgreSQL dapat menyimpan string biner dengan panjang variabel sebagai tipe data byte , mengambil 1 atau 4 byte ditambah ukuran string biner yang sebenarnya.
Boolean
Sebuah Tipe data Boolean dideklarasikan menggunakan bool
atau boolean
kata kunci. Itu dapat mempertahankan benar (1) , salah (0) , atau tidak diketahui (null) nilai.
Dihitung
Jenis data yang dihitung terdiri dari kumpulan nilai yang statis dan teratur, seperti angka dari 1 hingga 10 atau bulan dalam setahun. Tidak seperti tipe data lainnya, Anda dapat membuat tipe enumerated menggunakan create type
perintah:
CREATE TYPE year AS ENUM ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
Bit String
Jenis string bit menyimpan string 1 dan 0, digunakan untuk menyimpan atau memvisualisasikan bit mask:
Nama | Deskripsi |
bit(n) | Menyimpan string bit dengan panjang tetap n karakter. |
bervariasi(n) | Menyimpan sedikit string dengan panjang yang bervariasi, hingga n karakter. |
UUID
Sebuah UUID (Pengidentifikasi Unik Universal) adalah kumpulan 32 digit yang dibuat oleh suatu algoritme. Ini terdiri dari beberapa kelompok empat, delapan, dan dua belas digit, dipisahkan oleh tanda hubung:
Alamat Jaringan
PostgreSQL menggunakan tipe data alamat jaringan untuk menyimpan alamat IPv4, IPv6, dan MAC:
Nama | Ukuran Penyimpanan | Deskripsi |
asam | 7 atau 19 byte | Menyimpan jaringan IPv4 dan IPv6. |
bersih | 7 atau 19 byte | Menyimpan host dan jaringan IPv4 dan IPv6. |
macaddr | 6 byte | Menyimpan alamat MAC. |
Menggunakan tipe data alamat jaringan memiliki beberapa keunggulan dibandingkan menggunakan teks biasa. Ini termasuk menghemat ruang penyimpanan, fungsi dan perintah khusus, dan pemeriksaan kesalahan yang lebih mudah.
Penelusuran Teks
Jenis data penelusuran teks memungkinkan Anda mencari kecocokan terbaik dalam kumpulan dokumen bahasa alami:
Nama | Deskripsi |
tsvektor | Mewakili dokumen yang dioptimalkan untuk pencarian teks, dengan daftar kata berbeda yang dinormalisasi untuk menggabungkan varian berbeda dari kata yang sama (leksem). |
tsquery | Menyimpan kata kunci yang perlu dicari dan menggabungkannya menggunakan operator Boolean (AND, OR, dan NOT). |
Geometris
Jenis data geometris mewakili objek spasial yang dirender dalam dua dimensi, seperti titik, garis, dan poligon:
Nama | Ukuran Penyimpanan | Representasi | Deskripsi Numerik |
poin | 16 byte | Menunjuk pesawat. | (x,y) |
baris | 32 byte | Garis tak terbatas. | ((x1,y1),(x2,y2)) |
lseg | 32 byte | Segmen garis hingga. | ((x1,y1),(x2,y2)) |
kotak | 32 byte | Kotak persegi panjang. | ((x1,y1),(x2,y2)) |
jalur | 16+16n byte | Jalur terbuka atau tertutup. | ((x1,y1),...(xn,yn)) |
poligon | 40+16n byte | Poligon. | ((x1,y1),...(xn,yn)) |
lingkaran | 24 byte | Lingkaran. | ((x,y),r) (titik pusat dan jari-jari) |
XML
PostgreSQL memungkinkan Anda menyimpan data XML sebagai tipe data XML menggunakan XMLPARSE
fungsi:
XMLPARSE (DOCUMENT [document name] WELLFORMED)
atau:
XMLPARSE (CONTENT [XML content] WELLFORMED)
Dimana:
[document name]
:Dokumen XML dengan root tunggal.[XML content]
:Nilai XML yang validWELLFORMED
:Opsi ini menjamin bahwa [nama dokumen] atau [konten XML] menyelesaikan ke dokumen XML yang dibentuk dengan baik. Gunakan hanya jika Anda tidak ingin database memeriksa apakah input sudah terbentuk dengan baik.
JSON
PostgreSQL menawarkan dua tipe data JSON :
- json: Perpanjangan tipe data teks dengan validasi JSON. Tipe data ini menyimpan data persis seperti apa adanya (termasuk spasi). Anda dapat dengan cepat memasukkannya ke dalam database, tetapi relatif lambat untuk diambil karena pemrosesan ulang.
- jsonb: Mewakili data JSON dalam format biner. Lebih lambat untuk dimasukkan ke dalam database, tetapi dukungan pengindeksan dan kurangnya pemrosesan ulang membuat pengambilan lebih cepat secara signifikan.
Array
Jenis data larik memungkinkan Anda mendefinisikan kolom tabel sebagai array multidimensi yang dapat menggunakan tipe data dasar, enumerasi, atau komposit apa pun. Anda dapat mendeklarasikan, memodifikasi, dan mencari array seperti yang Anda lakukan pada kolom lain dalam database.
Komposit
Jenis data komposit memungkinkan Anda untuk menggunakan baris atau catatan tabel sebagai elemen data. Mirip dengan tipe data array, Anda juga dapat mendeklarasikan, mencari, dan mengubah nilai gabungan.
Rentang
Jenis data rentang gunakan rentang tipe data lain yang tersembunyi atau berkelanjutan. Tipe data rentang bawaan meliputi:
Nama | Deskripsi |
int4range | Rentang bilangan bulat ukuran sedang. |
int8range | Rentang bilangan bulat besar. |
angkaangka | Rentang desimal presisi yang ditentukan pengguna. |
aneh | Rentang waktu dan tanggal tanpa zona waktu. |
tstzrange | Rentang waktu dan tanggal dengan zona waktu. |
rentang tanggal | Rentang tanggal. |
Anda juga dapat membuat jenis rentang khusus dengan menggunakan jenis data lain sebagai basis.
Pengidentifikasi Objek
PostgreSQL menggunakan pengidentifikasi objek sebagai sistem kunci utama saat melakukan operasi input dan output khusus:
Nama | Referensi | Deskripsi |
oid | apa saja | Pengidentifikasi objek numerik. |
regproc | pg_proc | Nama fungsi. |
prosedur ulang | pg_proc | Fungsi dengan tipe argumen. |
regoper | pg_operator | Nama operator. |
regoperator | pg_operator | Operator dengan tipe argumen. |
kelas reguler | kelas_pg | Nama relasi. |
ketik reg | pg_type | Nama tipe data. |
regconfig | pg_ts_config | Konfigurasi pencarian teks. |
regdictionary | pg_ts_dict | Kamus pencarian teks. |
Jenis Semu
Tipe pseudo adalah kumpulan entri khusus untuk mendeklarasikan argumen fungsi atau tipe hasil:
Nama | Deskripsi |
apa saja | Fungsi menerima tipe data input apa pun. |
elemen apa saja | Fungsi menerima tipe data apa pun. |
anyarray | Fungsi menerima tipe data larik apa pun. |
anynonarray | Fungsi menerima semua tipe data non-array. |
anyenum | Fungsi menerima semua tipe data yang disebutkan. |
apa saja | Fungsi menerima semua jenis data rentang. |
cstring | Fungsi menerima atau mengembalikan string C yang diakhiri null. |
internal | Fungsi menerima atau mengembalikan tipe data internal server. |
penangan_bahasa | Fungsi mengembalikan pengendali bahasa. |
fdw_handler | Penangan pembungkus data asing mengembalikan fdw_handler. |
rekor | Menemukan fungsi yang mengembalikan jenis baris yang tidak ditentukan. |
pemicu | Fungsi pemicu mengembalikan pemicu. |
tidak berlaku | Fungsi tidak mengembalikan nilai. |