PostgreSQL menawarkan kumpulan tipe data asli yang kaya untuk pengguna. Pengguna dapat menambahkan tipe baru dengan bantuan perintah CREATE TYPE. Itu juga membuat kueri lebih sederhana dan lebih mudah dibaca.
Jenis Data di PostgreSQL
PostgreSQL mendukung tipe data berikut:
- Jenis Teks
- Jenis Numerik
- Tanggal dan Waktu
- XML
- JSON
- Boolean
- Bits
- Data Biner
- Jaringan
- Array
- Buat Tipe Data Anda
- Boolean
- Sementara
- UUID
- Himpunan
- JSON
- Tipe Data Khusus untuk menyimpan alamat jaringan dan data geometris.
Mari pelajari tipe data PostgreSQL secara detail
- Jenis Data Karakter
- Jenis Data Numerik
- Tipe Data Biner
- Jenis Alamat Jaringan
- Jenis Pencarian Teks
- Jenis Data Tanggal / Waktu
- Jenis Boolean
- Jenis Data Geometris
- Jenis Enumerated
- Jenis Rentang
- Jenis UUID
- Jenis XML
- Jenis JSON
- Tipe Pseudo
Jenis Data Karakter
PostgreSQL mendukung tipe data karakter untuk menyimpan nilai teks. PostgreSQL membangun tipe data karakter dari struktur internal yang sama. PostgreSQL menawarkan tiga tipe data karakter: CHAR (n), VARCHAR (n), dan TEXT.
Nama | Deskripsi |
---|---|
varchar (n) | Memungkinkan Anda mendeklarasikan panjang variabel dengan batas |
Char (n) | Panjang tetap, empuk kosong |
Teks | Gunakan dapat menggunakan tipe data ini untuk mendeklarasikan variabel dengan panjang tidak terbatas |
Jenis Data Numerik
PostgreSQL mendukung dua jenis angka yang berbeda:
- Bilangan bulat
- Angka floating-point
Nama | Ukuran toko | Jarak |
---|---|---|
smallint | 2 byte | -32768 hingga +32767 |
bilangan bulat | 4 byte | -2147483648 hingga +2147483647 |
bigint | 8 byte | -9223372036854775808 hingga 9223372036854775807 |
desimal | variabel | Jika Anda menyatakannya sebagai tipe data desimal berkisar dari 131072 digit sebelum koma desimal hingga 16383 digit setelah koma desimal |
numerik | variabel | Jika Anda mendeklarasikannya sebagai angka, Anda dapat memasukkan angka hingga 131072 digit sebelum koma desimal hingga 16383 digit setelah koma desimal |
nyata | 4 byte | 6 digit desimal presisi |
dua kali lipat | 8 byte | Presisi 15 digit desimal |
Tipe Data Biner
String biner adalah urutan oktet atau byte. Tipe Data Biner Postgres dibagi dalam dua cara.
- String biner memungkinkan menyimpan peluang bernilai nol
- Oktet tidak dapat dicetak
String karakter tidak mengizinkan nol oktet dan juga melarang nilai oktet lain dan urutan yang tidak valid sesuai aturan penyandian kumpulan karakter database.
Nama | Ukuran penyimpanan | Deskripsi |
---|---|---|
Byte | 1 hingga 4 byte plus ukuran string biner | String biner dengan panjang variabel |
Jenis Alamat Jaringan
Banyak aplikasi menyimpan informasi jaringan seperti alamat IP pengguna atau
sensor. PostgreSQL memiliki tiga tipe asli yang membantu Anda mengoptimalkan data jaringan.
Nama | Ukuran | Deskripsi |
---|---|---|
Cuka Apel | 7 atau 19 bye | Jaringan IPV4 dan IPv6 |
Inet | 7 atau 19 byte | Host dan jaringan IPV4 dan IPV5 |
macaddr | 6 byte | Alamat MAC |
Menggunakan Jenis Alamat Jaringan memiliki keuntungan sebagai berikut
- Penghematan Ruang Penyimpanan
- Pemeriksaan kesalahan input
- Berfungsi seperti mencari data dengan subnet
Jenis Pencarian Teks
PostgreSQL menyediakan dua tipe data yang dirancang untuk mendukung pencarian teks lengkap. Pencarian teks lengkap sedang mencari melalui kumpulan dokumen bahasa alami untuk mencari yang paling cocok dengan kueri.
- Pencarian teks Tsvector Jenis variabel PostgreSQL mewakili dokumen dalam bentuk yang dioptimalkan untuk pencarian teks
- Pencarian teks tipe query menyimpan kata kunci yang perlu dicari
Jenis Data Tanggal / Waktu
Stempel waktu PostgreSQL menawarkan presisi mikrodetik, bukan presisi kedua. Selain itu, Anda juga memiliki opsi untuk menyimpan dengan zona waktu atau tanpa. PostgreSQL akan mengonversi stempel waktu dengan zona waktu ke UTC saat dimasukkan dan menyimpannya.
Masukan tanggal dan waktu diterima dalam berbagai format, termasuk Postgres tradisional, ISO 8601. Kompatibel dengan SQL, dll.
PostgreSQL mendukung pemesanan Hari / Bulan / Tahun. Format yang didukung adalah DMY, MDY, YMD
Jenis Data Temporal
Nama | Ukuran | Jarak | Resolusi |
---|---|---|---|
Stempel waktu tanpa zona waktu | 8 byte | 4713 SM sampai 294276 M. | 1 mikrodetik / 14 digit |
Stempel waktu dengan zona waktu | 8 byte | 4713 SM sampai 294276 M. | 1 mikrodetik / 14 digit |
tanggal | 4 byte | 4713 SM sampai 294276 M. | Suatu hari |
Waktu tanpa zona waktu | 8 byte | 00:00:00 hingga 24:00:00 | 1 mikrodetik / 14 digit |
Waktu dengan zona waktu | 12 byte | 00:00:00 + 1459 hingga 24: 00: 00-1459 | 1 mikrodetik / 14 digit |
Selang | 12 byte | -178000000 hingga 178000000 tahun | 1 mikrodetik / 14 digit |
Contoh:
Memasukkan | Deskripsi |
---|---|
2025-09-07 | ISO 8601, 7 September dengan gaya tanggal apa pun (format yang disarankan) |
7 September 2025 | 7 September dengan gaya tanggal apa pun |
7/9/2025 | 7 September dengan MDY, 9 Juli dengan DMY |
9/7/25 | 7 September 2025, dengan MDY |
2025-Sep-7 | 7 September dengan gaya tanggal apa pun |
Sep-7-2018 | 7 September dengan gaya tanggal apa pun |
7-Sep-25 | 7 September 2025, dengan YMD |
20250907 | ISO 8601,7 Sep 20225 dalam mode apa pun |
2025.250 | tahun dan hari dalam setahun, dalam hal ini, 7 Sep 2025 |
J25250 | Tanggal Julian |
Waktu / Waktu dengan Input Zona Waktu
Memasukkan | Deskripsi |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Sama seperti 11:19 |
11:19 | sama seperti 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, sama seperti 23:19 EST |
23:19 EST | zona waktu yang ditentukan sebagai EST, sama seperti 11:19 EST |
Jenis Boolean
Tipe data Boolean dapat menampung
- Benar
- Salah
- batal
nilai-nilai.
Anda menggunakan kata kunci bool atau boolean untuk mendeklarasikan kolom dengan tipe data Boolean.
Saat Anda memasukkan nilai ke dalam kolom boolean, Postgre mengonversi nilai seperti
- Iya
- y
- 1
- t
- benar
menjadi 1.
Sedangkan nilai-nilai suka
- Tidak
- N
- 0
- F
- Salah
diubah menjadi 0
Saat memilih data, nilainya kembali diubah menjadi ya, benar, y, dll.
Jenis Data Geometris
Tipe data geometris mewakili objek spasial dua dimensi. Mereka membantu melakukan operasi seperti rotasi, penskalaan, terjemahan, dll.
Nama | Ukuran Penyimpanan | Perwakilan | Deskripsi |
---|---|---|---|
Titik | 16 byte | Arahkan ke pesawat | (x, y) |
Garis | 32 byte | Garis tak terbatas | ((xl.yl). (x2.y2)) |
Lseg | 32 byte | Segmen garis hingga | ((xl.yl). (x2.y2)) |
Kotak | 32 byte | Kotak Persegi Panjang | ((xl.yl). (x2.y2)) |
Jalan | 16n + 16n byte | Tutup dan Buka Path | ((xl.yl),…) |
Poligon | 40 + 16n byte | Poligon | [(xl.yl)….] |
Lingkaran | 24 byte | Lingkaran | <(xy) .r> (titik pusat dan radius) |
Jenis Enumerated
Tipe data Enumerated PostgreSQL berguna untuk merepresentasikan informasi yang jarang berubah seperti kode negara atau id cabang. Tipe data Enumerated direpresentasikan dalam tabel dengan kunci asing untuk memastikan integritas data.
Contoh:
Warna rambut cukup statis dalam database demografis
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Jenis Rentang
Banyak aplikasi bisnis membutuhkan data dalam rentang. Biasanya, dua kolom (contoh: tanggal mulai, tanggal akhir) ditentukan untuk menangani rentang. Ini tidak efisien dan sulit dipertahankan.
Postgre telah membangun tipe rentang sebagai berikut
- int4range - Menampilkan kisaran integer
- int8range - Menampilkan berbagai bigint
- numrange - Menampilkan kisaran numerik
- tstrange - Membantu Anda menampilkan cap waktu tanpa zona waktu
- aneh - Memungkinkan Anda untuk menampilkan cap waktu dengan zona waktu
- rentang tanggal - Rentang tanggal
Jenis UUID
Identifikasi Unik Universal (UUID) adalah kuantitas 128-bit yang dihasilkan oleh algoritme. Sangat tidak mungkin bahwa pengenal yang sama akan dibuat oleh orang lain di dunia dengan menggunakan algoritme yang sama. Itulah mengapa untuk sistem terdistribusi, pengenal ini adalah pilihan ideal karena menawarkan keunikan dalam satu database. UUID ditulis sebagai grup digit heksadesimal huruf kecil, dengan berbagai grup yang dipisahkan oleh tanda hubung.
PostgreSQL memiliki tipe data UUID asli yang mengkonsumsi 16 byte penyimpanan… UUID adalah tipe Data yang ideal untuk kunci utama.
Contoh:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre juga menerima bentuk-bentuk alternatif dari input UUID seperti huruf kapital semua, tanpa tanda hubung, tanda kurung, dll.
Jenis XML
PostgreSQL memungkinkan Anda menyimpan data XML dalam tipe data, tetapi itu tidak lebih dari ekstensi untuk tipe data teks. Tetapi keuntungannya adalah ia memeriksa bahwa input XML terbentuk dengan baik.
Contoh:
XMLPARSE (DOCUMENT '') Data Type …
Jenis JSON
Untuk menyimpan data JSON PostgreSQL menawarkan 2 tipe data
- JSON
- JSONB
json | Jsonb |
---|---|
Ekstensi sederhana dari tipe data teks dengan validasi JSON | Representasi biner dari data JSON |
Penyisipan cepat tetapi pengambilan data relatif lambat. | Sisipkan lambat tetapi pilih (pengambilan data cepat) |
Menyimpan data yang dimasukkan persis seperti itu termasuk spasi. | Mendukung pengindeksan. Dapat mengoptimalkan ruang kosong untuk membuat pengambilan lebih cepat. |
Pemrosesan ulang pada pengambilan data | Tidak diperlukan pemrosesan ulang pada pengambilan data |
Tipe data JSON yang paling banyak digunakan menggunakan jsonb kecuali ada kebutuhan khusus untuk menggunakan tipe data JSON.
Contoh:
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}');
Tipe Pseudo
PostgreSQL memiliki banyak entri tujuan khusus yang disebut tipe semu. Anda tidak dapat menggunakan tipe semu sebagai tipe kolom PostgreSQL. Ada yang digunakan untuk mendeklarasikan argumen atau fungsi atau tipe kembalian.
Setiap pseudo-type yang tersedia berguna dalam situasi di mana dokumen perilaku fungsi tidak sesuai dengan hanya mengambil atau mengembalikan nilai dari tipe data SQL tertentu.
Nama | Deskripsi |
---|---|
Apa saja | Fungsi menerima semua tipe data masukan. |
Sebuah array | Fungsi ini menerima tipe data larik apa pun. |
Elemen apa saja | Fungsi ini menerima tipe data apa pun. |
Enum apa saja | Fungsi ini menerima tipe data enum apa pun. |
Nonarray | Fungsi ini menerima tipe data non-larik apa pun. |
Cstring | Fungsi menerima atau mengembalikan string C yang diakhiri dengan null. |
Intern | Fungsi internal menerima atau mengembalikan tipe data server-internal. |
Penangan_bahasa | Ini dideklarasikan untuk mengembalikan penangan bahasa. |
Merekam | Temukan fungsi yang mengembalikan jenis baris yang tidak ditentukan. |
Pelatuk | Fungsi pemicu digunakan untuk mengembalikan pemicu. |
Penting bahwa pengguna yang menggunakan fungsi ini perlu memastikan bahwa fungsi tersebut akan berperilaku dengan aman saat pseudo-type digunakan sebagai tipe argumen.
Praktik terbaik menggunakan tipe Data
- Gunakan tipe data "teks" kecuali Anda ingin membatasi masukan
- Jangan pernah menggunakan "char."
- Bilangan bulat menggunakan "int." Gunakan bigint hanya jika Anda memiliki jumlah yang sangat besar
- Gunakan "numerik" hampir selalu
- Gunakan float di PostgreSQL jika Anda memiliki sumber data IEEE 754
Ringkasan
- PostgreSQL menawarkan kumpulan tipe data asli yang kaya untuk pengguna
- PostgreSQL mendukung tipe data karakter untuk menyimpan nilai teks
- PostgreSQL mendukung dua jenis angka yang berbeda: 1. Integer, 2. Angka floating-point
- String biner adalah urutan byte atau oktet
- PostgreSQL memiliki jenis alamat Jaringan untuk membantu Anda mengoptimalkan penyimpanan data jaringan
- Pencarian teks Struktur data PostgreSQL dirancang untuk mendukung pencarian teks lengkap
- Tipe data Tanggal / Waktu PSQL memungkinkan informasi tanggal dan waktu dalam berbagai format
- Jenis bidang Boolean Postgres dapat menampung tiga nilai 1. Benar 2. Salah 3. Null
- Tipe data Geometric PostgreSQL mewakili objek spasial dua dimensi
- Tipe Data Enumerated di PostgreSQL berguna untuk mewakili informasi yang jarang berubah seperti kode negara atau id cabang
- Identifikasi Unik Universal (UUID) adalah kuantitas 128-bit yang dihasilkan oleh algoritme
- PostgreSQL memiliki banyak entri tujuan khusus yang disebut tipe semu
- Praktik terbaiknya adalah menggunakan tipe data "teks" kecuali Anda ingin membatasi input