SQLite - Tipe Data
Halo, para ahli basis data masa depan! Hari ini, kita akan melihat dunia yang menarik dari tipe data SQLite. Jangan khawatir jika Anda baru belajar pemrograman – saya akan menjadi panduan teman baik Anda dalam perjalanan ini, menjelaskan segala sesuatu secara langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita mulai!
Kelas Penyimpanan SQLite
Pertama-tama, mari bicara tentang kelas penyimpanan SQLite. Pahami ini sebagai blok dasar data dalam SQLite. Ada lima kelas penyimpanan utama:
- NULL
- INTEGER
- REAL
- TEXT
- BLOB
Mari kitauraikan ini dengan beberapa contoh:
NULL
CREATE TABLE example (
id INTEGER,
name TEXT,
age INTEGER
);
INSERT INTO example (id, name) VALUES (1, 'Alice');
Dalam contoh ini, kita telah membuat tabel dan memasukkan baris di mana kolom 'age' tidak ditentukan. SQLite secara otomatis memberikan nilai NULL. NULL mewakili keabsenan data – itu seperti mengatakan, "Kami tidak tahu umur Alice."
INTEGER
INSERT INTO example (id, name, age) VALUES (2, 'Bob', 30);
Di sini, kita memasukkan umur Bob sebagai 30. SQLite menyimpan ini sebagai INTEGER. Integer adalah bilangan bulat tanpa titik desimal.
REAL
CREATE TABLE products (
id INTEGER,
name TEXT,
price REAL
);
INSERT INTO products (id, name, price) VALUES (1, 'Coffee', 3.99);
Harga 3.99 disimpan sebagai nilai REAL, yang adalah cara SQLite menangani bilangan desimal.
TEXT
INSERT INTO example (id, name, age) VALUES (3, 'Charlie', '25 years old');
Meskipun kita menyimpan umur, kita menggunakan TEXT di sini. SQLite akan menyimpan "25 years old" sebagai string karakter.
BLOB
BLOB adalah singkatan dari Binary Large Object. Ini digunakan untuk menyimpan data biner seperti gambar atau berkas.
CREATE TABLE files (
id INTEGER,
name TEXT,
content BLOB
);
-- Menyisipkan BLOB biasanya dilakukan dalam kode aplikasi, bukan SQL mentah
Affinity Tipe SQLite
Sekarang, mari bicara tentang tipe affinity. Ini adalah cara SQLite untuk fleksibel dengan tipe data. Bayangkan ini sebagai SQLite mencoba keras untuk memahami tipe data mana yang Anda ingin menyimpan.
Ada lima tipe affinity di SQLite:
- TEXT
- NUMERIC
- INTEGER
- REAL
- BLOB
Ini adalah tabel yang menyenangkan untuk menunjukkan bagaimana SQLite menentukan affinity mana yang digunakan:
Jika tipe yang dideklarasikan mengandung... | Affinity nya... |
---|---|
INT | INTEGER |
CHAR, CLOB, TEXT | TEXT |
BLOB | BLOB |
REAL, FLOA, DOUB | REAL |
Apa saja lainnya | NUMERIC |
mari lihat ini dalam tindakan:
CREATE TABLE affinity_example (
a TEXT,
b NUMERIC,
c INTEGER,
d REAL,
e BLOB
);
INSERT INTO affinity_example VALUES
('123', '456', '789', '101112', x'ABCDEF');
SELECT typeof(a), typeof(b), typeof(c), typeof(d), typeof(e) FROM affinity_example;
Ini akan mengeluarkan:
text, integer, integer, real, blob
Perhatikan bagaimana '456' menjadi integer karena affinity NUMERIC!
Affinity dan Nama Tipe SQLite
SQLite sangat fleksibel saat berbicara tentang nama tipe kolom. Anda dapat menggunakan tipe SQL standar, dan SQLite akan memetakannya ke affinitiesnya. Ini adalah referensi cepat:
Nama Tipe | Affinity |
---|---|
INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2, INT8 | INTEGER |
CHARACTER(20), VARCHAR(255), VARYING CHARACTER(255), NCHAR(55), NATIVE CHARACTER(70), NVARCHAR(100), TEXT, CLOB | TEXT |
BLOB, tanpa tipe data ditentukan | BLOB |
REAL, DOUBLE, DOUBLE PRECISION, FLOAT | REAL |
NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME | NUMERIC |
Tipe Boolean
SQLite tidak memiliki tipe Boolean khusus, tetapi jangan biarkan itu menipu Anda! Kita masih dapat bekerja dengan nilai benar/salah. SQLite menganggap 0 sebagai salah dan 1 sebagai benar.
CREATE TABLE tasks (
id INTEGER PRIMARY KEY,
description TEXT,
completed BOOLEAN
);
INSERT INTO tasks (description, completed) VALUES
('Learn SQLite', 0),
('Master SQL', 1);
SELECT * FROM tasks WHERE completed = TRUE;
Ini akan mengembalikan tugas "Master SQL" karena nilai 'completed' nya adalah 1 (benar).
Tipe Tanggal dan Waktu
Akhirnya, mari bicara tentang tanggal dan waktu. SQLite tidak memiliki tipe tanggal atau waktu bawaan, tetapi itu menyediakan beberapa fungsi tanggal dan waktu untuk bekerja dengan nilai ini.
Kita biasanya menyimpan tanggal dan waktu sebagai TEXT, INTEGER, atau REAL:
CREATE TABLE events (
id INTEGER PRIMARY KEY,
name TEXT,
date_text TEXT,
date_int INTEGER,
date_real REAL
);
INSERT INTO events (name, date_text, date_int, date_real) VALUES
('SQLite Workshop', '2023-06-15', 1686787200, 1686787200.0);
SELECT name,
date_text,
datetime(date_int, 'unixepoch') as date_from_int,
datetime(date_real, 'unixepoch') as date_from_real
FROM events;
Ini akan mengeluarkan sesuatu seperti:
SQLite Workshop, 2023-06-15, 2023-06-15 00:00:00, 2023-06-15 00:00:00
Dan itu adalah! Kita telah meliputi tipe data utama dalam SQLite, dari kelas penyimpanan dasar ke konsep yang lebih halus dari affinity tipe. Ingat, fleksibilitas SQLite adalah kekuatannya dan sesuatu yang harus Anda ingat. Selalu uji data Anda untuk memastikan itu disimpan dan diambil seperti yang Anda harapkan.
Latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini. Buat tabel Anda sendiri, masukkan beberapa data, dan lihat bagaimana SQLite menangani berbagai skenario. Sebelum Anda tahu, Anda akan menjadi ahli tipe data SQLite!
HAPPY CODING, dan may your databases always be normalized!
Credits: Image by storyset