SQLite - Jenis Data
Hai, para ahli basisdata masa depan! Hari ini, kita akan melihat dunia yang menarik jenis data SQLite. Jangan khawatir jika Anda baru dalam pemrograman - saya akan menjadi panduan ramah Anda dalam perjalanan ini, menjelaskan segala sesuatu langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita mulai!
Kelas Simpan SQLite
Pertama-tama, mari bicarakan tentang kelas simpan SQLite. P想象这些是SQLite的基本构建块数据。 Ada lima kelas simpan utama:
- NULL
- INTEGER
- REAL
- TEXT
- BLOB
Mari kita rincikan 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 menugaskan nilai NULL. NULL mewakili keabsenan data - itu seperti mengatakan, "Kita 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 berarti Binary Large Object. Ini digunakan untuk menyimpan data biner seperti gambar atau file.
CREATE TABLE files (
id INTEGER,
name TEXT,
content BLOB
);
-- Memasukkan BLOB biasanya dilakukan dalam kode aplikasi, bukan SQL mentah
Affinity Tipe SQLite
Sekarang, mari bicarakan tentang afinitas tipe. Ini adalah cara SQLite untuk fleksibel dengan jenis data. Bayangkan SQLite mencoba sebaik mungkin untuk memahami jenis data apa yang Anda ingin menyimpan.
Ada lima afinitas tipe dalam SQLite:
- TEXT
- NUMERIC
- INTEGER
- REAL
- BLOB
Berikut adalah tabel yang menyenangkan untuk menunjukkan bagaimana SQLite menentukan afinitas mana yang akan digunakan:
Jika jenis yang dideklarasikan mengandung... | Afinitasnya adalah... |
---|---|
INT | INTEGER |
CHAR, CLOB, TEXT | TEXT |
BLOB | BLOB |
REAL, FLOA, DOUB | REAL |
Anything else | NUMERIC |
Mari kita lihat ini dalam aksi:
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 mengoutputkan:
text, integer, integer, real, blob
Perhatikan bagaimana '456' menjadi integer karena afinitas NUMERIC!
Affinity dan Nama Tipe SQLite
SQLite sangat fleksibel saat berurusan dengan nama jenis kolom. Anda dapat menggunakan jenis SQL standar, dan SQLite akan memetakannya ke afinitasnya. Berikut adalah referensi cepat:
Nama Jenis | Afinitas |
---|---|
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 jenis data ditentukan | BLOB |
REAL, DOUBLE, DOUBLE PRECISION, FLOAT | REAL |
NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME | NUMERIC |
Jenis Boolean
SQLite tidak memiliki jenis Boolean terpisah, tetapi jangan biarkan hal itu mengelabui 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).
Jenis Tanggal dan Waktu
Akhirnya, mari bicarakan tentang tanggal dan waktu. SQLite tidak memiliki jenis tanggal atau waktu bawaan, tetapi itu menyediakan beberapa fungsi tanggal dan waktu untuk bekerja dengan nilai ini.
Kami 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 mengoutputkan 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 jenis data utama di SQLite, dari kelas simpan dasar ke konsep yang lebih halus afinitas jenis. Ingat, fleksibilitas SQLite adalah kekuatannya dan sesuatu yang harus dipertimbangkan. Selalu tes data Anda untuk memastikan bahwa 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 scenario. Sebelum Anda tahu, Anda akan menjadi ahli jenis data SQLite!
Selamat coding, dan semoga basisdata Anda selalu diper normalisasi!
Credits: Image by storyset