Jenis-jenis Tipe Data SQLite

Sistem database lain seperti MySQL dan PostgreSQL menggunakan static typing, artinya suatu kolom yang telah memiliki tipe data tertentu, tidak bisa menyimpan tipe data lain. Pada contoh di bawah, kolom quantity hanya bisa menyimpa bilangan bulat saja.

CREATE TABLE orders (
   ...
   quantity INT NOT NULL,
   ...
);

Sementara itu, SQLite menggunakan dynamic type system, artinya tipe data suatu kolom ditentukan oleh apa data yang tersimpan, bukan oleh tipe data yang dideklarasikan saat tabel dibuat. Ini artinya, meskipun sebuah kolom memiliki tipe data integer, kita masih bisa menambahkan tipe data seperti teks tanpa ada masalah.

Ada lima tipe data dasar yang disediakan SQLite, kelimanya disebut sebagai storage classes.

  1. NULL: artinya kosong atau tidak ada
  2. INTEGER: merupakan bilangan bulat (baik positif atau negatif).
  3. REAL: adalah bilangan desimal.
  4. TEXT: dipakai untuk menyimpan data teks tanpa batas maksimal panjangnya.
  5. BLOB: adalah singaktan dari binary large object yang bisa menyimpan berbagai macam data.

Untuk menentukan tipe data dari suatu value, SQLite akan mengikuti aturan berikut:

  • Jika data tersebut tidak diapit tanda petik, tidak
  • Jika data diapit oleh petik satu atau dua, maka dianggap TEXT.
  • Jika data tidak diapit oleh tanda petik, tidak memiliki simbol desimal dan tidak ada tanda pangkat, maka dianggap INTEGER.
  • Jika data tidak diapit oleh tanda petik, memiliki simbol desimal atau pangkat,
  • JIka data bernilai NULL tanpa tanda petik, dianggap NULL.
  • Jika data diawali oleh `X’…’, maka dianggap BLOB

SQLite tidak memiliki tipe data untuk date atau datetime, tapi kita bisa menggunakna TEXT, INT atau REAL untuk menyimpannya.

CREATE TABLE tipedata (
    id INTEGER PRIMARY KEY,
    data
);

Perhatikan pada kolom data kita tidak mendefinisikan tipe datanya apa. Lakukan insert data-data berikut:

INSERT INTO
  tipedata (data)
VALUES
  (1),
  (100),
  (3.14),
  ('A'),
  ('Belajar'),
  (NULL),
  (x'0000');

Selanjutnya kita periksa tipe data masing-masing baris dengan typeof.

SELECT
  id,
  data,
  typeof (data)
FROM
  tipedata;

Maka hasilnya akan terlihat seperti berikut:

id  data     typeof (data)
--  -------  -------------
1   1        integer      
2   100      integer      
3   3.14     real         
4   A        text         
5   Belajar  text         
6            null         
7            blob

Bila suatu kolom bisa menyimpan data secara dinamis, lalu pertanyaan berikutnya, bagaimana cara SQLite melakukan sorting? Secara garis besar, SQLite akan mengikuti aturan-aturan berikut:

  • NULL akan mendapat nilai terendah diantara data lain.
  • Berikutnya yang nilainya lebih tinggi adalah INTEGER dan REAL.
  • Nilai yang lebih tinggi berikutnya adalah TEXT.
  • Nilai tertinggi adalah BLOB.
SELECT
  id,
  data,
  typeof (data)
FROM
  tipedata
ORDER BY
  data;

Perintah di atas akan menghasilkan:

id  data     typeof (data)
--  -------  -------------
6            null         
1   1        integer      
3   3.14     real         
2   100      integer      
4   A        text         
5   Belajar  text         
7            blob    

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *