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!

SQLite - Data Type

Kelas Simpan SQLite

Pertama-tama, mari bicarakan tentang kelas simpan SQLite. P想象这些是SQLite的基本构建块数据。 Ada lima kelas simpan utama:

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

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