Terjemahan ke Bahasa Indonesia (id)
PostgreSQL - Tipe Data
Hai sana, para ahli basis data masa depan! ? Selamat datang ke perjalanan menarik kita ke dunia tipe data PostgreSQL. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk mengorbit Anda melalui topik yang menarik ini. Jangan khawatir jika Anda baru dalam pemrograman - kita akan mulai dari dasar dan tingkatkan keahlian kita. Jadi, ambil wicara virtual Anda (papan ketik), dan mari kita masuk ke dalam!
Tipe Numeric
Ahh, angka - blok bangunan komputasi! PostgreSQL menawarkan berbagai jenis tipe numeric untuk memenuhi kebutuhan yang berbeda. Mari kita jelajahi mereka dengan beberapa contoh menarik.
Tipe Integer
PostgreSQL menyediakan empat jenis integer:
Tipe | Ukuran Penyimpanan | Rentang |
---|---|---|
smallint | 2 byte | -32768 hingga +32767 |
integer | 4 byte | -2147483648 hingga +2147483647 |
bigint | 8 byte | -9223372036854775808 hingga +9223372036854775807 |
serial | 4 byte | 1 hingga 2147483647 |
Mari kita buat tabel untuk menyimpan informasi tentang buku kesukaan kita:
CREATE TABLE favorite_books (
id serial PRIMARY KEY,
title VARCHAR(100),
publication_year smallint,
pages integer,
isbn bigint
);
Dalam contoh ini:
-
id
menggunakanserial
, yang secara otomatis meningkat untuk setiap entri baru. -
publication_year
menggunakansmallint
karena buku tidak begitu tua (maaf, gulungan kuno!). -
pages
menggunakaninteger
untuk panjang buku. -
isbn
menggunakanbigint
untuk nomor ISBN yang panjang.
Tipe Floating-Point
Untuk saat Anda memerlukan presisi desimal:
Tipe | Deskripsi |
---|---|
real | 6 digit presisi desimal |
double precision | 15 digit presisi desimal |
Mari kita tambahkan beberapa detail lagi ke tabel buku kita:
ALTER TABLE favorite_books
ADD COLUMN rating real,
ADD COLUMN price double precision;
Sekarang kita dapat menyimpan penilaian buku (misalnya, 4.5 bintang) dan harga yang presisi.
Nomor dengan Presisi Arbitrer
Untuk saat Anda memerlukan presisi ekstrim:
CREATE TABLE scientific_constants (
name VARCHAR(50),
value numeric(1000, 900)
);
INSERT INTO scientific_constants (name, value)
VALUES ('Pi', 3.14159265358979323846264338327950288419716939937510);
numeric(1000, 900)
memungkinkan hingga 1000 digit total dengan 900 setelah titik desimal. sempurna untuk penggemar pi!
Tipe Monetary
Uang membuat dunia berputar, dan PostgreSQL memiliki tipe yang tepat untuk itu:
CREATE TABLE product_prices (
product_name VARCHAR(50),
price money
);
INSERT INTO product_prices (product_name, price)
VALUES ('Fancy Pen', '$9.99');
Tipe money
secara otomatis mengelola simbol mata uang dan pemisah koma.
Tipe Karakter
Teks ada di mana-mana di basis data. PostgreSQL menawarkan tiga tipe karakter utama:
Tipe | Deskripsi |
---|---|
character(n) | Panjang tetap, diisi spasi |
varchar(n) | Panjang variabel dengan batas |
text | Panjang variabel tanpa batas |
Mari kita gunakan ini di basis data buku kita:
ALTER TABLE favorite_books
ADD COLUMN author character(50),
ADD COLUMN description varchar(500),
ADD COLUMN full_text text;
-
author
tetap 50 karakter (harap ini cukup untuk "J.K. Rowling"!). -
description
dapat berubah tapi tidak akan melebihi 500 karakter. -
full_text
dapat menyimpan keseluruhan buku jika kita mau (tetapi jangan, ya?).
Tipe Data Binary
kadang-kadang, Anda perlu menyimpan data binary mentah. Masuk bytea
:
ALTER TABLE favorite_books
ADD COLUMN cover_image bytea;
-- Menyisipkan gambar (bertindak seperti ini adalah data binary yang sebenarnya)
UPDATE favorite_books
SET cover_image = '\x89504E470D0A1A0A'
WHERE id = 1;
Ini memungkinkan kita untuk menyimpan gambarnya langsung di basis data.
Tipe Data Date/Time
Waktu sangat penting, dan PostgreSQL menangani hal itu:
Tipe | Deskripsi |
---|---|
date | Tanggal (tanpa waktu hari) |
time | Waktu hari (tanpa tanggal) |
timestamp | Tanggal dan waktu |
interval | Interval waktu |
Mari kita pelacak saat kita membaca buku kesukaan kita:
ALTER TABLE favorite_books
ADD COLUMN purchase_date date,
ADD COLUMN reading_start_time time,
ADD COLUMN last_read timestamp,
ADD COLUMN reading_duration interval;
UPDATE favorite_books
SET purchase_date = '2023-04-01',
reading_start_time = '20:30:00',
last_read = '2023-04-15 22:15:30',
reading_duration = '2 hours 30 minutes'
WHERE id = 1;
Sekarang kita dapat menganalisis kebiasaan membaca kita! ?⏱️
Tipe Boolean
Benar atau salah, 1 atau 0, ya atau tidak - kadang-kadang kehidupan adalah biner:
ALTER TABLE favorite_books
ADD COLUMN is_favorite boolean;
UPDATE favorite_books
SET is_favorite = true
WHERE rating > 4.5;
Sederhana dan efektif!
Tipe Enumerated
Ketika Anda memiliki set opsi tetap, enum adalah teman Anda:
CREATE TYPE book_genre AS ENUM ('Fiction', 'Non-Fiction', 'Science', 'History');
ALTER TABLE favorite_books
ADD COLUMN genre book_genre;
UPDATE favorite_books
SET genre = 'Fiction'
WHERE id = 1;
Tidak lagi kesalahan penulisan dalam jenis genre!
Tipe Geometric
Untuk semua Anda yang penggemar bentuk:
CREATE TABLE geometric_objects (
id serial PRIMARY KEY,
name VARCHAR(50),
location point,
area box
);
INSERT INTO geometric_objects (name, location, area)
VALUES ('My House', '(10,20)', '((0,0),(100,100))');
Sempurna untuk pemetaan kampanye Dungeons & Dragons Anda!
TipeAlamat Jaringan
Dalam dunia terhubung kita, menyimpan informasi jaringan sangat penting:
CREATE TABLE network_devices (
id serial PRIMARY KEY,
name VARCHAR(50),
ip inet,
mac macaddr
);
INSERT INTO network_devices (name, ip, mac)
VALUES ('My Router', '192.168.1.1', '08:00:2b:01:02:03');
Sekarang Anda dapat mengelola semua perangkat di jaringan Anda!
Tipe Bit String
Kadang-kadang, Anda hanya perlu bekerja dengan bit mentah:
CREATE TABLE permissions (
user_id integer,
access_flags bit(8)
);
INSERT INTO permissions (user_id, access_flags)
VALUES (1, B'10110000');
Setiap bit dapat mewakili izin yang berbeda. Bagaimana itu untuk penyimpanan efisien?
Tipe Pencarian Teks
PostgreSQL memiliki dukungan built-in untuk pencarian teks:
ALTER TABLE favorite_books
ADD COLUMN search_vector tsvector;
UPDATE favorite_books
SET search_vector = to_tsvector('english', title || ' ' || description);
CREATE INDEX textsearch_idx ON favorite_books USING GIN (search_vector);
Sekarang Anda dapat melakukan pencarian cepat di koleksi buku Anda!
Tipe UUID
Identifikasi Unik Universal sangat cocok untuk sistem distribusi:
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE TABLE distributed_data (
id uuid DEFAULT uuid_generate_v4(),
data TEXT
);
INSERT INTO distributed_data (data) VALUES ('Some distributed data');
Tidak lagi khawatir tentang tabrakan ID di antara server yang berbeda!
Tipe XML
Untuk saat Anda perlu menyimpan data XML terstruktur:
CREATE TABLE xml_documents (
id serial PRIMARY KEY,
doc xml
);
INSERT INTO xml_documents (doc)
VALUES (
'<book>
<title>PostgreSQL for Beginners</title>
<author>Your Favorite Teacher</author>
</book>'
);
XML di basis data? Mengapa tidak!
Tipe JSON
Dalam era layanan web, JSON adalah raja:
ALTER TABLE favorite_books
ADD COLUMN metadata jsonb;
UPDATE favorite_books
SET metadata = '{"tags": ["educational", "fun"], "reviews": [{"user": "Alice", "rating": 5}, {"user": "Bob", "rating": 4}]}'
WHERE id = 1;
Tipe jsonb
memungkinkan penyimpanan dan penanyakan data JSON yang efisien.
Tipe Array
Kadang-kadang, Anda perlu menyimpan nilai ganda dalam satu kolom:
ALTER TABLE favorite_books
ADD COLUMN keywords text[];
UPDATE favorite_books
SET keywords = ARRAY['database', 'programming', 'awesome']
WHERE id = 1;
Array memungkinkan Anda menyimpan daftar nilai tanpa membuat tabel terpisah.
Tipe Komposite
Buat tipe khusus Anda sendiri dengan menggabungkan tipe yang ada:
CREATE TYPE address AS (
street VARCHAR(100),
city VARCHAR(50),
country VARCHAR(50)
);
ALTER TABLE favorite_books
ADD COLUMN publisher_address address;
UPDATE favorite_books
SET publisher_address = ROW('123 Book St', 'Libraryville', 'Bookland')
WHERE id = 1;
Tipe komposite membantu Anda mengatur data terkait secara logis.
Tipe Range
Ketika Anda perlu mewakili rentang nilai:
CREATE TABLE hotel_bookings (
id serial PRIMARY KEY,
room_number integer,
stay daterange
);
INSERT INTO hotel_bookings (room_number, stay)
VALUES (101, '[2023-07-01, 2023-07-07)');
Tipe daterange
membuatnya mudah untuk memeriksa pengebisan yang overlaping!
Tipe Identifier Object
Tipe ini digunakan secara internal oleh PostgreSQL:
CREATE TABLE table_info (
table_name VARCHAR(50),
oid oid
);
INSERT INTO table_info (table_name, oid)
SELECT 'favorite_books', 'favorite_books'::regclass::oid;
Meskipun Anda mungkin tidak sering menggunakannya, mereka sangat penting untuk operasi internal PostgreSQL.
Tipe Pseudo
Ini bukan tipe nyata, tetapi mereka digunakan dalam deklarasi fungsi:
CREATE FUNCTION multiply_any(anyelement, anyelement)
RETURNS anyelement AS $$
SELECT $1 * $2;
$$ LANGUAGE SQL;
SELECT multiply_any(5, 3); -- Mengembalikan 15
SELECT multiply_any(5.5, 2); -- Mengembalikan 11.0
Tipe pseudo seperti anyelement
memungkinkan definisi fungsi yang lebih fleksibel.
Dan itu adalah, murid-murid yang semangat! Kita telah menjelajahi luas wilayah tipe data PostgreSQL. Ingat, memilih tipe data yang tepat sangat penting untuk kinerja, efisiensi penyimpanan, dan integritas data. Itu seperti memilih alat yang tepat untuk pekerjaan - Anda tidak akan menggunakan palu untuk menggantung gambar, kan?
Sebagai Anda terus melanjutkan perjalanan PostgreSQL Anda, Anda akan menemukan banyak nuansa dan trik tentang tipe data ini. Tetap mencoba, tetap curiga, dan terutama, bersenang-senang dengan basis data Anda! Siapa tahu, Anda mungkin menjadi ahli basis data yang berikutnya di kota Anda. ?♂️?
Sekarang, maju dan buat basis data yang menakjubkan! Dan ingat, di dunia PostgreSQL, setiap tipe data memiliki tempatnya - seperti setiap buku memiliki tempatnya sendiri di rak pustaka. Selamat coding! ??
Credits: Image by storyset