PostgreSQL Tipe Data: Byte, Numerik, Karakter, Biner
PostgreSQL menawarkan sekumpulan tipe data asli yang lengkap bagi pengguna. Pengguna dapat menambahkan tipe baru dengan bantuan perintah CREATE TYPE. Perintah ini juga membuat kueri menjadi lebih sederhana dan lebih mudah dibaca.
Tipe Data di PostgreSQL
PostgreSQL mendukung tipe data berikut:
- Jenis Teks
- Tipe Numerik
- Tanggal dan Waktu
- XML
- JSON
- Boolean
- bit
- Data Biner
- jaringan
- Array
- Buat Tipe Data Anda
- Boolean
- Sementara
- UUID
- susunan
- JSON
- Tipe Data Khusus untuk menyimpan alamat jaringan dan data geometris.
Mari belajar PostgreSQL tipe data secara detail
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 | Description |
---|---|
varchar(n) | Memungkinkan Anda mendeklarasikan panjang variabel dengan batas |
karakter(n) | Panjang tetap, empuk kosong |
Teks | Penggunaan dapat menggunakan tipe data ini untuk mendeklarasikan variabel dengan panjang tidak terbatas |
Tipe Data Numerik
PostgreSQL mendukung dua jenis angka yang berbeda:
- Bilangan bulat
- Angka titik mengambang
Nama | Ukuran toko | Jarak |
---|---|---|
kecil | 2 byte | -32768 hingga + 32767 |
bilangan bulat | 4 byte | -2147483648 hingga + 2147483647 |
besar | 8 byte | -9223372036854775808 ke 9223372036854775807 |
desimal | variabel | Jika Anda mendeklarasikannya 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 hingga 16383 digit setelah koma desimal |
nyata | 4 byte | Presisi 6 digit desimal |
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 penyimpanan peluang nilai nol
- Oktet yang tidak dapat dicetak
String karakter tidak mengizinkan nol oktet dan juga melarang nilai dan urutan oktet lainnya yang tidak valid sesuai aturan pengkodean kumpulan karakter database.
Nama | Ukuran penyimpanan | Description |
---|---|---|
Byte | 1 hingga 4 byte ditambah 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 | Description |
---|---|---|
sider | 7 atau 19 byte | IPV4 dan IPv6 jaringan |
Inet | 7 atau 19 byte | Host dan jaringan IPV4 dan IPV5 |
macaddr | 6 byte | alamat MAC |
Menggunakan Jenis Alamat Jaringan memiliki keuntungan sebagai berikut:
- Menghemat Ruang Penyimpanan
- Pemeriksaan kesalahan masukan
- Fungsi seperti pencarian data berdasarkan subnet
Jenis Pencarian Teks
PostgreSQL menyediakan dua tipe data yang dirancang untuk mendukung pencarian teks lengkap. Pencarian teks lengkap adalah pencarian melalui kumpulan dokumen bahasa alami untuk mencari dokumen yang paling sesuai dengan kueri.
- Pencarian teks vektor PostgreSQL tipe variabel mewakili dokumen dalam bentuk yang dioptimalkan untuk pencarian teks
- Pencarian teks jenis kueri menyimpan kata kunci yang perlu dicari
Tipe Data Tanggal/Waktu
PostgreSQL stempel waktu menawarkan presisi mikrodetik, bukan presisi kedua. Selain itu, Anda juga memiliki pilihan untuk menyimpan dengan atau tanpa zona waktu. PostgreSQL akan mengonversi stempel waktu dengan zona waktu ke UTC pada input dan menyimpannya.
Input 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
Tipe Data Sementara
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 to 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 | Description |
---|---|
2025-09-07 | ISO 8601, 7 September dengan gaya tanggal apa pun (format yang disarankan) |
September 7, 2025 | 7 September dengan gaya kencan apa pun |
9/7/2025 | 7 September dengan MDY, 9 Juli dengan DMY |
9/7/25 | 7 September 2025, dengan MDY |
2025-Sep-7 | 7 September dengan gaya kencan apa pun |
7-Sep-2018 | 7 September dengan gaya kencan apa pun |
7-Sep-25 | 7 September 2025 bersama 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 | Description |
---|---|
11:19:38.507 11:19:38 11:19 111938 |
ISO 8601 |
11: 19 AM | Sama seperti 11:19 |
11: 19 PM | sama seperti 23:19 |
23: 19-3 23: 19-03: 00 231900-03 |
ISO 8601, sama seperti 11:19 EST |
23: 19 EST | zona waktu ditentukan sebagai EST, sama seperti 11:19 EST |
Tipe Boolean
Tipe data Boolean dapat menampung
- Benar
- Salah
- nol
nilai-nilai.
Anda menggunakan bool or boolean kata kunci untuk mendeklarasikan kolom dengan tipe data Boolean.
Saat Anda memasukkan nilai ke dalam kolom boolean, Postgre mengonversi nilai seperti
- Yes
- y
- 1
- t
- benar
memasuki tahun 1.
Sementara nilai-nilai seperti
- Tidak
- N
- 0
- F
- Salah
diubah menjadi 0
Saat memilih data, nilainya diubah kembali menjadi ya, benar, y, dll.
Tipe Data Geometris
Tipe data geometris merepresentasikan objek spasial dua dimensi. Tipe data ini membantu melakukan operasi seperti rotasi, penskalaan, translasi, dan lain-lain.
Nama | Ukuran Penyimpanan | Perwakilan | Description |
---|---|---|---|
Titik | 16 byte | Tunjuk ke pesawat | (x,y) |
baris | 32 byte | Garis tak terbatas | ((xl.yl ).(x2.y2)) |
Lseg | 32 byte | Segmen garis hingga | ((xl.yl ).(x2.y2)) |
Box | 32 byte | Rectangular Box | ((xl.yl ).(x2.y2)) |
xtra | 16n + 16n byte | Tutup dan Buka Jalur | ((xl.yl),…) |
Poligon | 40 + 16n byte | Poligon | [(xl.yl)….] |
Lingkaran | 24 byte | Lingkaran | <(xy).r> (titik pusat dan jari-jari) |
Jenis yang Dihitung
disebutkan PostgreSQL tipe data berguna untuk mewakili informasi yang jarang berubah seperti kode negara atau id cabang. Tipe data Enumerasi direpresentasikan dalam tabel dengan kunci asing untuk memastikan integritas data.
Example
Warna rambut cukup statis dalam database demografi
CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')
Jenis Rentang
Banyak aplikasi bisnis memerlukan data dalam rentang tertentu. Biasanya, dua kolom (contoh: tanggal mulai, tanggal akhir) ditentukan untuk menangani rentang. Hal ini tidak efisien dan sulit dipertahankan.
Postgre telah membangun tipe rentang sebagai berikut
- int4range — Menampilkan rentang bilangan bulat
- int8range — Menampilkan rentang bigint
- numrange — Menampilkan rentang numerik
- tstrange — Membantu Anda menampilkan stempel waktu tanpa zona waktu
- aneh — Memungkinkan Anda menampilkan stempel waktu dengan zona waktu
- rentang tanggal — Rentang tanggal
tipe UUID
Identifikasi Unik Universal (UUID) adalah kuantitas 128-bit yang dihasilkan oleh suatu algoritma. Sangat kecil kemungkinannya bahwa pengenal yang sama akan dihasilkan oleh orang lain di dunia dengan menggunakan algoritma yang sama. Itu sebabnya untuk sistem terdistribusi, pengidentifikasi ini adalah pilihan ideal karena menawarkan keunikan dalam satu database. UUID ditulis sebagai sekelompok angka heksadesimal huruf kecil, dengan berbagai kelompok dipisahkan oleh tanda hubung.
PostgreSQL memiliki tipe data UUID asli yang menggunakan penyimpanan 16 byte. UUID adalah tipe Data ideal untuk kunci primer.
Example
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre juga menerima bentuk input UUID alternatif seperti huruf kapital semua, tanpa tanda hubung, kurung kurawal, dll.
Tipe XML
PostgreSQL memungkinkan Anda menyimpan data XML dalam tipe data, tetapi itu tidak lebih dari perpanjangan tipe data teks. Namun keuntungannya adalah ia memeriksa apakah input XML sudah terbentuk dengan baik.
Example
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
Jenis JSON
Untuk menyimpan data JSON PostgreSQL menawarkan 2 tipe data
- JSON
- JSONB
json | Jsonb |
---|---|
Perpanjangan sederhana dari tipe data teks dengan validasi JSON | Representasi biner dari data JSON |
Penyisipan cepat tetapi pengambilan data relatif lambat. | Penyisipan lambat tetapi pilih (pengambilan data cepat) |
Menyimpan data yang dimasukkan persis seperti aslinya termasuk spasi. | Mendukung pengindeksan. Dapat mengoptimalkan spasi untuk mempercepat pengambilan. |
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.
Example
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 PostgreSQL jenis kolom. Ada yang digunakan untuk mendeklarasikan atau argumen fungsi atau tipe kembalian.
Masing-masing tipe semu yang tersedia berguna dalam situasi di mana dokumen perilaku suatu fungsi tidak sesuai dengan sekadar mengambil atau mengembalikan nilai tertentu. Tipe data SQL.
Nama | Description |
---|---|
Apa saja | Fungsi menerima semua tipe data masukan. |
Sebuah array | Fungsi ini menerima tipe data array apa pun. |
Elemen apa pun | Fungsi ini menerima tipe data apa pun. |
Enum apa pun | Fungsi ini menerima tipe data enum apa pun. |
Non-array | Fungsi ini menerima tipe data non-array apa pun. |
string | Fungsi menerima atau mengembalikan string C yang diakhiri dengan null. |
Intern | Fungsi internal menerima atau mengembalikan tipe data internal server. |
Pengendali_Bahasa | Dinyatakan untuk mengembalikan penangan bahasa. |
Rekam | Temukan fungsi yang mengembalikan tipe baris yang tidak ditentukan. |
Pelatuk | Fungsi pemicu digunakan untuk mengembalikan pemicu. |
Penting bagi pengguna yang menggunakan fungsi ini untuk memastikan bahwa fungsi tersebut akan berperilaku aman ketika tipe semu digunakan sebagai tipe argumen.
Praktik terbaik menggunakan tipe Data
- Gunakan tipe data “teks” kecuali Anda ingin membatasi input
- Jangan pernah menggunakan “arang.”
- Bilangan bulat menggunakan “int.” Gunakan bigint hanya jika Anda memiliki angka yang sangat besar
- Gunakan “numerik” hampir selalu
- Gunakan mengapung di PostgreSQL jika Anda memiliki sumber data IEEE 754
Kesimpulan
- PostgreSQL menawarkan serangkaian tipe data asli yang kaya untuk pengguna
- PostgreSQL mendukung tipe data karakter untuk menyimpan nilai teks
- PostgreSQL mendukung dua jenis angka yang berbeda: 1. Bilangan bulat, 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 PostgreSQL struktur data dirancang untuk mendukung pencarian teks lengkap
- Tipe data Tanggal/Waktu PSQL memungkinkan informasi tanggal dan waktu dalam berbagai format
- Tipe bidang Boolean Postgres dapat menampung tiga nilai 1. Benar 2. Salah 3. Null
- Geometris PostgreSQL tipe data mewakili objek spasial dua dimensi
- Tipe Data yang disebutkan 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 suatu algoritma
- PostgreSQL memiliki banyak entri tujuan khusus yang disebut tipe semu
- Praktik terbaiknya adalah menggunakan tipe data “teks” kecuali Anda ingin membatasi input