PostgreSQL menawarkan sekumpulan jenis data asli yang kaya untuk pengguna. Pengguna boleh menambah jenis baru dengan bantuan perintah CREATE TYPE. Ini juga menjadikan pertanyaan lebih mudah dan mudah dibaca.
Jenis Data dalam PostgreSQL
PostgreSQL menyokong jenis data berikut:
- Jenis Teks
- Jenis Numerik
- Tarikh dan Masa
- XML
- JSON
- Boolean
- Bit
- Data Perduaan
- Rangkaian
- Susunan
- Buat Jenis Data anda
- Boolean
- Sementara
- UUID
- Array
- JSON
- Jenis Data Khas untuk menyimpan alamat rangkaian dan data geometri.
Mari kita kaji jenis data PostgreSQL secara terperinci
- Jenis Data Watak
- Jenis Data Berangka
- Jenis Data Perduaan
- Jenis Alamat Rangkaian
- Jenis Carian Teks
- Jenis Data Tarikh / Masa
- Jenis Boolean
- Jenis Data Geometri
- Jenis yang Dikira
- Jenis Julat
- Jenis UUID
- Jenis XML
- Jenis JSON
- Jenis-Jenis Pseudo
Jenis Data Watak
PostgreSQL menyokong jenis data watak untuk menyimpan nilai teks. PostgreSQL membina jenis data watak dari struktur dalaman yang sama. PostgreSQL menawarkan tiga jenis data watak: CHAR (n), VARCHAR (n), dan TEXT.
Nama | Penerangan |
---|---|
varchar (n) | Membolehkan anda menyatakan panjang berubah dengan had |
Char (n) | Panjang tetap, empuk kosong |
Teks | Gunakan boleh menggunakan jenis data ini untuk menyatakan pemboleh ubah dengan panjang tidak terhad |
Jenis Data Berangka
PostgreSQL menyokong dua jenis nombor:
- Bilangan bulat
- Nombor terapung
Nama | Saiz kedai | Julat |
---|---|---|
smallint | 2 bait | -32768 hingga +32767 |
bilangan bulat | 4 bait | -2147483648 hingga +2147483647 |
bigint | 8 bait | -9223372036854775808 hingga 9223372036854775807 |
perpuluhan | pemboleh ubah | Sekiranya anda menyatakannya sebagai jenis data perpuluhan berkisar antara 131072 digit sebelum titik perpuluhan hingga 16383 digit setelah titik perpuluhan |
berangka | pemboleh ubah | Sekiranya anda menyatakannya sebagai nombor, anda boleh memasukkan nombor hingga 131072 digit sebelum titik perpuluhan hingga 16383 digit selepas titik perpuluhan |
nyata | 4 bait | Ketepatan 6 digit perpuluhan |
berganda | 8 bait | Ketepatan 15 digit perpuluhan |
Jenis Data Perduaan
Rentetan binari adalah urutan oktet atau bait. Jenis Data Postgres Binari terbahagi kepada dua cara.
- Rentetan binari membolehkan menyimpan kemungkinan nilai sifar
- Oktet yang tidak boleh dicetak
Rentetan watak tidak membenarkan oktet sifar dan juga tidak membenarkan nilai dan urutan oktet lain yang tidak sah mengikut peraturan pengekodan set watak pangkalan data.
Nama | Saiz simpanan | Penerangan |
---|---|---|
Bait | 1 hingga 4 bait ditambah dengan ukuran rentetan binari | Rentetan binari panjang berubah-ubah |
Jenis Alamat Rangkaian
Banyak aplikasi menyimpan maklumat rangkaian seperti alamat IP pengguna atau
penderia. PostgreSQL mempunyai tiga jenis asli yang membantu anda mengoptimumkan data rangkaian.
Nama | Saiz | Penerangan |
---|---|---|
cider | 7 atau 19 bye | Rangkaian IPV4 dan IPv6 |
Inet | 7 atau 19 bait | Host dan rangkaian IPV4 dan IPV5 |
macaddr | 6 bait | Alamat MAC |
Menggunakan Jenis Alamat Rangkaian mempunyai kelebihan berikut
- Penjimatan Ruang Storan
- Pemeriksaan ralat input
- Fungsi seperti mencari data dengan subnet
Jenis Carian Teks
PostgreSQL menyediakan dua jenis data yang dirancang untuk menyokong carian teks penuh. Pencarian teks penuh mencari melalui kumpulan dokumen berbahasa semula jadi untuk mencari dokumen yang paling sesuai dengan pertanyaan.
- Pencarian teks Tsvector jenis pemboleh ubah PostgreSQL mewakili dokumen dalam bentuk yang dioptimumkan untuk carian teks
- Pencarian teks jenis pertanyaan menyimpan kata kunci yang perlu dicari
Jenis Data Tarikh / Masa
Cap waktu PostgreSQL menawarkan ketepatan mikrodetik dan bukan ketepatan kedua. Selain itu, anda juga mempunyai pilihan untuk menyimpan dengan zon waktu atau tanpa. PostgreSQL akan menukar cap waktu dengan zon waktu menjadi UTC pada input dan menyimpannya.
Input tarikh dan masa diterima dalam pelbagai format, termasuk Postgres tradisional, ISO 8601. Sesuai dengan SQL dll.
PostgreSQL menyokong pesanan Hari / Bulan / Tahun. Format yang disokong adalah DMY, MDY, YMD
Jenis Data Temporal
Nama | Saiz | Julat | Resolusi |
---|---|---|---|
Cap waktu tanpa zon waktu | 8 bait | 4713 SM hingga 294276 Masihi | 1 mikrodetik / 14 digit |
Cap waktu dengan zon waktu | 8 bait | 4713 SM hingga 294276 Masihi | 1 mikrodetik / 14 digit |
Tarikh | 4 bait | 4713 SM hingga 294276 Masihi | Satu hari |
Masa tanpa zon waktu | 8 bait | 00:00:00 hingga 24:00:00 | 1 mikrodetik / 14 digit |
Masa dengan zon waktu | 12 bait | 00:00:00 + 1459 hingga 24: 00: 00-1459 | 1 mikrodetik / 14 digit |
Selang | 12 bait | -178000000 hingga 178000000 tahun | 1 mikrodetik / 14 digit |
Contoh:
Masukan | Penerangan |
---|---|
2025-09-07 | ISO 8601, 7 September dengan gaya tarikh apa pun (format yang disyorkan) |
7 September 2025 | 7 September dengan sebarang gaya tarikh |
9/7/2025 | 7 September dengan MDY, 9 Julai dengan DMY |
9/7/25 | 7 September 2025, bersama MDY |
2025-Sep-7 | 7 September dengan sebarang gaya tarikh |
Sep-7-2018 | 7 September dengan sebarang gaya tarikh |
7-Sep-25 | 7 September 2025, bersama YMD |
20250907 | ISO 8601,7 Sep 20225 dalam mod apa pun |
2025.250 | tahun dan hari dalam tahun ini, dalam kes ini, 7 Sep 2025 |
J25250 | Tarikh Julian |
Masa / Masa dengan Masukan Zon Waktu
Masukan | Penerangan |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 PG | Sama seperti 11:19 |
11:19 PTG | sama seperti 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, sama dengan 11:19 PM EST |
23:19 EST | zon waktu ditentukan sebagai EST, sama dengan 11:19 PM EST |
Jenis Boolean
Jenis data Boolean boleh bertahan
- Betul
- Salah
- batal
nilai.
Anda menggunakan kata kunci bool atau boolean untuk menyatakan lajur dengan jenis data Boolean.
Apabila anda memasukkan nilai ke dalam lajur boolean, Postgre menukar nilai seperti
- Ya
- y
- 1
- t
- benar
menjadi 1.
Manakala nilai suka
- Tidak
- N
- 0
- F
- Salah
ditukar menjadi 0
Semasa memilih data, nilainya kembali ditukar menjadi ya, benar, y, dll.
Jenis Data Geometri
Jenis data geometri mewakili objek spasial dua dimensi. Mereka membantu melakukan operasi seperti putaran, penskalaan, terjemahan, dll.
Nama | Saiz simpanan | Perwakilan | Penerangan |
---|---|---|---|
Titik | 16 bait | Arahkan pada kapal terbang | (x, y) |
Garisan | 32 bait | Garis tak terhingga | ((xl.yl). (x2.y2)) |
Lseg | 32 bait | Segmen garis terhingga | ((xl.yl). (x2.y2)) |
Kotak | 32 bait | Kotak Segi Empat | ((xl.yl). (x2.y2)) |
Jalan | 16n + 16n bait | Jalan Tutup dan Buka | ((xl.yl),…) |
Poligon | 40 + 16n bait | Poligon | [(xl.yl)….] |
Bulatan | 24 bait | Bulatan | <(xy) .r> (titik tengah dan jejari) |
Jenis yang Dikira
Jenis data PostgreSQL berangka berguna untuk mewakili maklumat yang jarang berubah seperti kod negara atau id cawangan. Jenis data yang dihitung ditunjukkan dalam jadual dengan kunci asing untuk memastikan integriti data.
Contoh:
Warna rambut agak statik dalam pangkalan data demografi
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Jenis Julat
Banyak aplikasi perniagaan memerlukan data dalam julat. Biasanya, dua lajur (contoh: tarikh mula, tarikh akhir) ditakrifkan untuk menangani julat. Ini tidak cekap dan sukar dijaga.
Postgre telah membina pelbagai jenis seperti berikut
- int4range - Paparan julat bilangan bulat
- int8range - Julat paparan bigint
- numrange - Menunjukkan julat angka
- tstrange - Membantu anda memaparkan cap waktu tanpa zon waktu
- pelik - Membolehkan anda memaparkan cap waktu dengan zon waktu
- julat tarikh - Julat tarikh
Jenis UUID
Universally Unique Identified (UUID) adalah kuantiti 128-bit yang dihasilkan oleh algoritma. Tidak mungkin pengecam yang sama dihasilkan oleh orang lain di dunia menggunakan algoritma yang sama. Itulah sebabnya untuk sistem yang diedarkan, pengecam ini adalah pilihan yang ideal kerana ia menawarkan keunikan dalam satu pangkalan data. UUID ditulis sebagai kumpulan digit heksadesimal huruf kecil, dengan pelbagai kumpulan dipisahkan dengan tanda hubung.
PostgreSQL mempunyai jenis data UUID asli yang menggunakan 16 bait penyimpanan… UUID adalah jenis Data yang ideal untuk kunci utama.
Contoh:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre juga menerima bentuk input UUID alternatif seperti semua huruf besar, tanpa tanda hubung, pendakap, dll.
Jenis XML
PostgreSQL membolehkan anda menyimpan data XML dalam jenis data, tetapi tidak lebih dari sekadar perluasan untuk jenis data teks. Tetapi kelebihannya ialah memeriksa bahawa input XML terbentuk dengan baik.
Contoh:
XMLPARSE (DOCUMENT '') Data Type …
Jenis JSON
Untuk menyimpan data JSON PostgreSQL menawarkan 2 jenis data
- JSON
- JSONB
json | Jsonb |
---|---|
Sambungan ringkas jenis data teks dengan pengesahan JSON | Perwakilan binari data JSON |
Sisipan cepat tetapi pengambilan data agak perlahan. | Masukkan perlahan tetapi pilih (pengambilan data cepat) |
Menyimpan data yang dimasukkan dengan tepat seperti ruang kosong. | Menyokong pengindeksan. Boleh mengoptimumkan ruang kosong untuk membuat pengambilan lebih cepat. |
Memproses semula pengambilan data | Tidak diperlukan pemprosesan semula pada pengambilan data |
Jenis data JSON yang paling banyak digunakan menggunakan kami jsonb kecuali ada keperluan khusus untuk menggunakan jenis 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}');
Jenis-Jenis Pseudo
PostgreSQL mempunyai banyak entri tujuan khas yang disebut jenis pseudo. Anda tidak boleh menggunakan jenis pseudo sebagai jenis lajur PostgreSQL. Ada digunakan untuk menyatakan atau mengemukakan argumen atau jenis pengembalian.
Setiap jenis pseudo yang tersedia sangat berguna dalam situasi di mana dokumen tingkah laku fungsi tidak sesuai dengan hanya mengambil atau mengembalikan nilai jenis data SQL tertentu.
Nama | Penerangan |
---|---|
Sebarang | Fungsi menerima semua jenis data input. |
Susunan | Fungsi menerima sebarang jenis data array. |
Mana-mana unsur | Fungsi menerima sebarang jenis data. |
Sebarang enum | Fungsi tersebut menerima sebarang jenis data enum. |
Bukan Bersusun | Fungsi menerima sebarang jenis data bukan larik. |
Rentetan | Fungsi menerima atau mengembalikan rentetan C yang ditamatkan nol. |
Dalaman | Fungsi dalaman menerima atau mengembalikan jenis data dalaman pelayan. |
Pengendali_ bahasa | Ia dinyatakan untuk mengembalikan pengendali bahasa. |
Rekodkan | Cari fungsi yang mengembalikan jenis baris yang tidak ditentukan. |
Pencetus | Fungsi pemicu digunakan untuk mengembalikan pemicu. |
Adalah penting bahawa pengguna yang menggunakan fungsi ini perlu memastikan bahawa fungsi tersebut akan berkelakuan selamat ketika jenis pseudo digunakan sebagai jenis argumen.
Amalan terbaik menggunakan jenis Data
- Gunakan jenis data "teks" melainkan anda mahu menghadkan input
- Jangan sekali-kali menggunakan "char."
- Integer menggunakan "int." Gunakan bigint hanya apabila anda mempunyai bilangan yang sangat besar
- Gunakan "angka" hampir selalu
- Gunakan float di PostgreSQL jika anda mempunyai sumber data IEEE 754
Ringkasan
- PostgreSQL menawarkan pelbagai jenis data asli untuk pengguna
- PostgreSQL menyokong jenis data watak untuk menyimpan nilai teks
- PostgreSQL menyokong dua jenis nombor yang berbeza: 1. Bilangan bulat, 2. Nombor terapung
- Rentetan binari adalah urutan bait atau oktet
- PostgreSQL mempunyai jenis alamat Rangkaian untuk membantu anda mengoptimumkan penyimpanan data rangkaian
- Pencarian teks Struktur data PostgreSQL direka untuk menyokong carian teks penuh
- Tarikh / Masa Jenis data PSQL membenarkan maklumat tarikh dan waktu dalam pelbagai format
- Jenis medan Boolean Postgres dapat menahan tiga nilai 1. Betul 2. Salah 3. Null
- Jenis data Geometrik PostgreSQL mewakili objek spasial dua dimensi
- Jenis data yang dihitung dalam PostgreSQL berguna untuk mewakili maklumat yang jarang berubah seperti kod negara atau id cawangan
- Universally Unique Ident Ident (UUID) adalah kuantiti 128-bit yang dihasilkan oleh algoritma
- PostgreSQL mempunyai banyak entri tujuan khas yang disebut jenis pseudo
- Amalan terbaik untuk menggunakan jenis data "teks" melainkan anda mahu menghadkan input