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!

PostgreSQL - Data Types

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 menggunakan serial, yang secara otomatis meningkat untuk setiap entri baru.
  • publication_year menggunakan smallint karena buku tidak begitu tua (maaf, gulungan kuno!).
  • pages menggunakan integer untuk panjang buku.
  • isbn menggunakan bigint 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