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!

SQLite - Data Type

Kelas Penyimpanan SQLite

Pertama-tama, mari bicara tentang kelas penyimpanan SQLite. Pahami ini sebagai blok dasar data dalam SQLite. Ada lima kelas penyimpanan utama:

  1. NULL
  2. INTEGER
  3. REAL
  4. TEXT
  5. 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:

  1. TEXT
  2. NUMERIC
  3. INTEGER
  4. REAL
  5. 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