Sejarah SQLite
D. Richard Hipp dirancang SQLite pada musim
semi tahun 2000 saat bekerja untuk General Dynamics pada kontrak dengan Angkatan Laut Amerika Serikat . Hipp
adalah merancang perangkat lunak yang digunakan di kapal rudal perusak dipandu kapal, yang awalnya didasarkan
pada HP-UX dengan IBM Informix database back-end. Tujuan desain
dari SQLite adalah untuk memungkinkan program untuk dioperasikan tanpa
menginstal sistem database manajemen atau administrasi . Pada bulan Agustus 2000,
versi 1.0 dirilis SQLite, berdasarkan gdbm (GNU Database Manager). SQLite 2,0 gdbm diganti dengan
kustom B-pohon implementasi, menambahkan dukungan untuk transaksi. SQLite 3.0, sebagian didanai oleh America Online , menambahkan internasionalisasi , mengetik nyata , dan perbaikan besar lainnya.
Pengertian RDBMS
Relational Database Management System (RDBMS) atau Sistem
Manajemen Basisdata Relasional adalah sebuah program komputer (atau secara
lebih tipikal adalah seperangkat program komputer) yang di desain untuk
mengatur/memanajemen sebuah basis data sebagai sekumpulan data yang disimpan
secara terstruktur, dan melakukan operasi-operasi atas data atas permintaan
penggunanya. Contoh penggunaan DBMS ada
banyak sekali dan dalam berbagai bidang kerja, misalnya akuntansi,
manajemen sumber daya manusia, dan lain sebagainya.
Pengertian SQLite
SQLite
merupakan sebuah sistem manajemen basis data relasional
yang bersifat ACID-compliant dan memiliki ukuran pustaka
kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan proyek yang bersifat
public domain yang dikerjakan oleh D. Richard Hipp.
Tidak seperti pada
paradigma client-server umumnya, Inti SQLite
bukanlah sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program,
melainkan sebagai bagian integral dari sebuah program secara keseluruhan.
Sehingga protokol komunikasi utama yang digunakan adalah melalui pemanggilan API
secara langsung melalui bahasa pemrograman. Mekanisme seperti ini tentunya
membawa keuntungan karena dapat mereduksi overhead, latency times,
dan secara keseluruhan lebih sederhana. Seluruh elemen basisdata (definisi
data, tabel, indeks, dan data) disimpan sebagai sebuah file. Kesederhanaan dari
sisi disain tersebut bisa diraih dengan cara mengunci keseluruhan file basis
data pada saat sebuah transaksi dimulai.
Fitur-fitur pada SQLite
Pustaka SQLite mengimplementasikan
hampir seluruh elemen-elemen standar yang berlaku pada SQL-92, termasuk transaksi yang bersifat atomic,
konsistensi basisdata, isolasi, dan durabilitas (dalam bahasa inggris lebih
sering disebut ACID), trigger, dan
kueri-kueri yang kompleks. Tidak ada pengecekan tipe sehingga data bisa
dientrikan dalam bentuk string untuk sebuah kolom bertipe integer. Beberapa
kalangan melihat hal ini sebagai sebuah inovasi yang menambah nilai guna dari
sebuah basisdata, utamanya ketika digunakan dalam bahasa pemrograman berbasis
script (PHP, Perl), sementara kalangan lain melihat hal tersebut sebagai
sebuah kekurangan.
Beberapa proses ataupun thread dapat
berjalan secara bersamaan dan mengakses basisdata yang sama tanpa mengalami masalah.
Hal ini disebabkan karena akes baca data dilakukan secara paralel. Sementara
itu akses tulis data hanya bisa dilakukan jika tidak ada proses tulis lain yang
sedang dilakukan; jika tidak, proses tulis tersebut akan gagal dan
mengembalikan kode kesalahan (atau bisa juga secara otomatis akan mencobanya
kembali sampai sejumlah nilai waktu yang ditentukan habis). Hanya saja ketika
sebuah tabel temporer dibuat, mekanisme penguncian pada proses multithread akan
menyebabkan masalah. Update yang terkini (versi 3.3.4) dikatakan telah
memperbaiki masalah ini.
Sebuah program yang mandiri
dinamakan sqlite disediakan dan bisa digunakan untuk mengeksekusi kueri dan
memanajemen file-file basisdata SQLite. Program tersebut juga merupakan contoh
implementasi penulisan aplikasi yang menggunakan pustaka SQLite.
Integrasi dengan Bahasa Lain
·
SQLite termasuk dalam framework REALbasic,
yang memungkinkan aplikasi yang dikembangkan dengan menggunakan REALbasic dapat
memanfaatkan basisdata SQLite.
·
Pustaka SQLite bisa digunakan secara langsung pada
bahasa C/C++, namun untuk Tcl
dan beberapa bahasa pemrograman berbasis script juga tersedia.
·
Modul DBI/DBD
untuk Perl juga tersedia pada
CPAN,
DBD:SQLite, namun modul ini bukanlah antarmuka dengan SQLite melainkan
memasukkan SQLite secara keseluruhan dalam modul tersebut.
·
Modul Python
juga tersedia (PySQLite)
yang diimplementasikan pada DB API Python versi 2.0 (PEP 249)
·
PHP dimulai dengan PHP5
telah memasukkan SQLite, versi PHP4 sebelumnya bisa juga digunakan untuk
mengakses SQLite, namun modul SQLite tidak dimasukan secara standar bawaan.
·
Dimulai Lazarus versi 0.9.8 dan
Free Pascal 2.0.0,
SQLite didukung untuk digunakan oleh para programmer. Tutorial tersebut bisa
didapatkan disini.
·
Meskipun borland tidak mempaketkan SQLite secara
standar bawaan, Delphi sudah mendukung
SQLite juga menggunakan pustaka yang dibuat oleh pihak ketiga (Aducom
dan Zeos). Banyak program
administrasi basisdata SQLite baik komersil ataupun bebas yang menawarkan
kemudahan-kemudahan dalam memanajemen basisdata SQLite terdapat di internet
dibuat dengan menggunakan bahasa ini.
·
SQLite juga termasuk dalam paket yang dibundle secara
standar bawaan pada Mac OS
X, dan digunakan sebagai salah satu pilihan mekanisme penyimpanan
data pada API Apple.
SQLite
Database Server
Pada prinsipnya SQLite
merupakan library C yang diimplementasikan secara embeddable (tertanam) sebagai
SQL database engine. Hal ini akan memungkinkan program yang berhubungan dengan
SQLite dapat mengakses database tanpa menjalankan proses RDBMS secaraterpisah,
sebagaimana pada umumnya ketika anda menggunakan MySQL Server, PostgreSQL,
Oracle, dan sebagainya.
Kemasan praktis inilah yang memberikan banyak sekali keuntungan, di mana anda tidak perlu melakukan manajemen database server terpisah. Selain itu, ukuran kecil yang sengaja didesain pada SQLite memungkinkan kita untuk membuat aplikasi yang ringan dengan kinerja tinggi.
Kemasan praktis inilah yang memberikan banyak sekali keuntungan, di mana anda tidak perlu melakukan manajemen database server terpisah. Selain itu, ukuran kecil yang sengaja didesain pada SQLite memungkinkan kita untuk membuat aplikasi yang ringan dengan kinerja tinggi.
Kelebihan
dan Kekurangan pada SQLite
Kelebihan Sqlite :
Sqlite merupakan salah
satu embbeded database yang wajib dipertimbangkan untuk digunakan pada aplikasi
bukan enterprise karena memiliki beberapa kelebihan yaitu :
·
Secara umum cukup stabil
·
Perfomanya lebih efesien dan cepat
dibandingkan database yang lain
·
Sedikit menggunakan memory, hanya
membutuhkan sigle library untuk mengakses database
·
Berjalan dibanyak platform yang berbeda,
dan dapat dipindahkan dengan mudah tanpa setting administrasi yang rumit.
·
Memenuhi standart ACID (Atomicity,
Consistensy, Isolation, dan Durability )
·
Mendukung ANSI 92 SQl Standar.
·
Mempunyai API untuk bahasa C++, PHP,
Perl, Phyton, dan Tcl.
·
License public domain, free untuk
redistributed.
Kekurangan Sqlite :
·
·
·
·
·
·
Tipe Data pada SQLite
SQLite menggunakan
sistem tipe lebih umum dinamis. Dalam SQLite, tipe data dari nilai dikaitkan
dengan nilai itu sendiri, tidak dengan kontainer. Sistem tipe dinamis SQLite
adalah kompatibel dengan sistem yang lebih umum jenis statis mesin database
lain dalam arti bahwa pernyataan SQL yang bekerja pada database statis diketik
harus bekerja dengan cara yang sama di SQLite. Namun, dinamis mengetik di SQLite
memungkinkan untuk melakukan hal-hal yang tidak mungkin dalam database kaku
diketik tradisional.
Penyimpanan Kelas
dan Datatypes
Setiap nilai yang disimpan dalam database SQLite
(atau dimanipulasi oleh mesin database) memiliki salah satu kelas penyimpanan
berikut:
·
NULL .
Nilai adalah nilai NULL.
·
INTEGER . Nilai
adalah integer ditandatangani, disimpan dalam 1, 2, 3, 4, 6, atau 8 byte,
tergantung pada besarnya nilai.
·
REAL .
Nilai adalah nilai floating point, disimpan sebagai nomor 8-byte IEEE floating point.
·
Nilai adalah string teks, disimpan menggunakan
pengkodean database (UTF-8, UTF-16BE atau UTF-16LE).
·
BLOB . Nilai
adalah gumpalan data, disimpan persis seperti itu masukan.
Perhatikan bahwa kelas
penyimpanan adalah sedikit lebih umum daripada sebuah datatype. Kelas
penyimpanan INTEGER, misalnya, termasuk 6 tipe data bilangan bulat yang berbeda
dari panjang yang berbeda. Tapi begitu nilai-nilai INTEGER dibaca off disk dan
ke dalam memori untuk pemrosesan, mereka akan dikonversi ke tipe data yang paling
umum (8-byte signed integer). Dan untuk sebagian besar, "kelas
penyimpanan" tidak dapat dibedakan dari "datatype" dan kedua
istilah ini dapat digunakan secara bergantian.
Ø Boolean
Datatype
SQLite tidak memiliki
kelas penyimpanan terpisah Boolean. Sebaliknya,
nilai Boolean disimpan sebagai bilangan bulat 0 (false) dan 1 (benar).
Ø Date
and Time Datatype
SQLite tidak memiliki kelas
penyimpanan disisihkan untuk menyimpan tanggal dan / atau waktu. Sebaliknya,
built-in Date and Time Fungsi dari SQLite mampu
menyimpan tanggal dan waktu sebagai TEXT, REAL, atau INTEGER:
o
TEXT sebagai ISO8601
strings ("YYYY-MM-DD HH: MM: SS.SSS").
o
REAL angka hari
Julian, jumlah hari sejak tengah hari di Greenwich pada tanggal 24 November,
4714 SM menurut kalender Gregorian proleptic.
o
INTEGER as Unix Time, jumlah
detik sejak 1970/01/01 00:00:00 UTC.
Aplikasi dapat memilih
untuk menyimpan tanggal dan waktu dalam salah satu format dan mengkonversi
antara format bebas menggunakan built-in fungsi tanggal dan waktu.
Structured Query Language
Sebelum kita mulai bekerja dengan SQLite, kita mendefinisikan beberapa
istilah penting. Sebuah query database adalah mencari informasi dari
database. Sebuah permintaan yang ditulis dalam bahasa SQL. Structured Query
Language (SQL) adalah bahasa komputer yang digunakan untuk membuat,
mengambil, update dan menghapus data dari database. Ini dikembangkan oleh
perusahaan IBM. SQL memiliki tiga subset :
1. DDL (Data
Definition Language) adalah
statement yang digunakan untuk mendefinisikan skema atau struktur dari suatu
database. Terdiri dari :
- CREATE
- membuat suatu objek dalam database.
- ALTER -
mengubah struktur objek dari suatu database.
- DROP -
menghapus objek dari suatu database.
- TRUNCATE
- menghapus semua record dari sebuah tabel, termasuk semua alokasi ruang
untuk record tersebut ikut dihapus.
- RENAME
- mengganti nama suatu objek database.
2. DML (Data
Manipulation Language) adalah statement yang digunakan untuk mengelola data di dalam skema atau
struktur objek.
- SELECT
- mendapatkan data dari suatu database.
- INSERT
- memasukkan data ke dalam sebuah tabel.
- UPDATE
- mengubah data yang sudah ada dalam sebuah tabel.
- DELETE
- menghapus record dari sebuah tabel, alokasi ruang tidak dihapus.
3. DCL (Data
Control Language).
- GRANT -
memberikan hak akses pengguna ke database.
- REVOKE
- mencabut atau menarik kembali hak akses yang telah diberikan dengan
statement GRANT
SQL pada
SQLite
SQLite telah memahami sebagian besar syntax SQL. Dalam tutorial kali ini pembahasan materi terbatas pada beberapa syntax SQL saja. Yaitu : CREATE, INSERT, UPDATE, DELETE, dan SELECT.
SQLite telah memahami sebagian besar syntax SQL. Dalam tutorial kali ini pembahasan materi terbatas pada beberapa syntax SQL saja. Yaitu : CREATE, INSERT, UPDATE, DELETE, dan SELECT.
CREATE
Ketikkan perintah berikut ke dalam SQLite console anda :
Ketikkan perintah berikut ke dalam SQLite console anda :
CREATE TABLE MHS(
npm char(15) primary key,
nama char(25),
jenkel char(10),
alamat char(10),
notlp char(15)
);
Penjelasan :
- Statement
CREATE TABLE - statement untuk membuat tabel. Di sini kita akan membuat
TABLE dengan nama MHS di mana field-field-nya terdiri dari : npm, nama,
jenkel, alamat, notlp.
- Primary
Key - suatu nilai dalam database yang digunakan untuk mengidentifikasi
suatu baris dalam tabel.
- Data
Type (seperti char dll)
INSERT
Ketikkan perintah berikut ke dalam SQLite console anda :
Ketikkan perintah berikut ke dalam SQLite console anda :
INSERT INTO MHS(
npm, nama, jenkel, alamat,
notlp)
VALUES(
'200843500123','Suradi
Sanjaya','laki-laki','Jakarta','021-55555555');
INSERT INTO MHS(
npm, nama, jenkel, alamat,
notlp)
VALUES(
'200843500124','Rani Desti','perempuan','Jakarta','021-56565656');
INSERT INTO MHS(
npm, nama, jenkel, alamat,
notlp)
VALUES(
'200843500125','Ronny
Siantar','laki-laki','Jakarta','021-45564565');
Penjelasan :
- Statement
INSERT di atas merupakan syntax SQL untuk memasukkan data ke dalam suatu
TABLE. Dalam hal ini kita memasukkan data tentang mahasiswa ke dalam TABLE
MHS.
SELECT
Ketikkan statement berikut ke dalam SQLite console anda :
Ketikkan statement berikut ke dalam SQLite console anda :
SELECT * FROM MHS;
Bila
perintah di atas kita eksekusi, akan menghasilkan output seperti ini :
200843500123
|
Suradi
Sanjaya
|
laki-laki
|
Jakarta
|
021-55555555
|
200843500124
|
Rani Desti
|
perempuan
|
Jakarta
|
021-56565656
|
200843500125
|
Ronny
Siantar
|
laki-laki
|
Jakarta
|
021-45564565
|
Penjelasan :
Statement SELECT di atas berguna untuk mengambil atau memanggil satu atau lebih record dalam suatu TABLE. Operator ( * ) bertugas sebagai perwakilan dari semua field. Artinya jika kita menggunakan ( * ) maka yang kita panggil adalah record semua field.
Statement SELECT di atas berguna untuk mengambil atau memanggil satu atau lebih record dalam suatu TABLE. Operator ( * ) bertugas sebagai perwakilan dari semua field. Artinya jika kita menggunakan ( * ) maka yang kita panggil adalah record semua field.
UPDATE
Ketikkan perintah berikut ke dalam SQLite console anda :
Ketikkan perintah berikut ke dalam SQLite console anda :
UPDATE MHS SET
nama="Ranny
Destia",
alamat="Bandung"
WHERE
npm="200843500124";
Penjelasan :
Statement UPDATE di atas digunakan untuk mengubah record yang sudah ada dari suatu TABLE. Dalam hal ini kita akan merubah nama & alamat dari mahasiswa yang memiliki npm 200843500124. Perlu diingat bahwa penggunaan klausa WHERE dalam statement UPDATE sangat penting. Karena apabila kita tidak mengikut sertakan klausa WHERE tersebut dijamin semua record (nama & alamat) pada TABLE MHS akan ikut berubah
Statement UPDATE di atas digunakan untuk mengubah record yang sudah ada dari suatu TABLE. Dalam hal ini kita akan merubah nama & alamat dari mahasiswa yang memiliki npm 200843500124. Perlu diingat bahwa penggunaan klausa WHERE dalam statement UPDATE sangat penting. Karena apabila kita tidak mengikut sertakan klausa WHERE tersebut dijamin semua record (nama & alamat) pada TABLE MHS akan ikut berubah
Perintah SQLite jika dibandingkan dengan MySQL
Membuat database
mysql> create database nama_db
d:/sqlite/> sqlite3 nama_db
d:/sqlite/> sqlite3 nama_db
Untuk membuat database pada SQLite, kita langsung mengakses file sqlite3.exe dan menuliskan nama database. Jika tidak ditemukan database tersebut maka SQLite akan membuatkan untuk kita, jika ditemukan SQLite akan mengakses database tersebut dan masuk ke dalam console SQLite
Menghapus database
mysql> drop database nama_db
Tidak perlu menggunakan perintah, cukup hapus file database tersebut.
Membuat table
mysql> create table nama_tabel (nama_field tipe_data(ukuran));
sqlite> create table nama_tabel (nama_field tipe_data(ukuran));
sqlite> create table nama_tabel (nama_field tipe_data(ukuran));
Perintah yang sama persis antara MySQL dan SQLite.
Menampilkan semua table
mysql> show tables;
sqlite> .tables
sqlite> .tables
Menghapus table
mysql> drop table nama_tabel;
sqlite> drop table nama_tabel;
sqlite> drop table nama_tabel;
Menampilkan deskripsi (skema) tabel
mysql> desc nama_tabel;
sqlite> .schema nama_tabel
sqlite> .schema nama_tabel
Menambahkan field baru pada tabel
mysql> alter table nama_tabel add nama_field tipe_data(ukuran)
sqlite> alter table nama_tabel add nama_field tipe_data(ukuran)
sqlite> alter table nama_tabel add nama_field tipe_data(ukuran)
Mengubah nama tabel
mysql> alter table nama_tabel rename nama_tabel_baru;
sqlite> alter table nama_tabel rename nama_tabel_baru;
sqlite> alter table nama_tabel rename nama_tabel_baru;
Menghapus field
mysql> alter table nama_tabel drop nama_field;
Pada sqlite tidak ada perintah untuk menghapus field
Menginputkan data
mysql> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);
sqlite> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);
sqlite> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);
Menghapus data
mysql> delete from nama_tabel [where kondisi]
mysql> delete from nama_tabel [where kondisi]
mysql> delete from nama_tabel [where kondisi]
Cara penggunaan kondisi pada MySQL dan SQLite juga tidak berbeda
Mengubah data
mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where
kondisi]
mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where
kondisi]
kondisi]
mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where
kondisi]
Menampilkan data
mysql> select [nama_field|*] from nama_tabel [where kondisi]
sqlite> select [nama_field|*] from nama_tabel [where kondisi]
sqlite> select [nama_field|*] from nama_tabel [where kondisi]
Penggunaan kondisi (contoh menggunakan select)
mysql> select * from nama_tabel where nama_field1 = nilai and nama_field2 like
“string%”
sqlite> select * from nama_tabel where nama_field1 = nilai and nama_field2 like
“string%”
“string%”
sqlite> select * from nama_tabel where nama_field1 = nilai and nama_field2 like
“string%”
Natural Join (relasi sederhana)
mysql> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field)
sqlite> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field)
nama_tabel1.field)
sqlite> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field)
Right Join
mysql> select * from nama_tabel1 right join nama_tabel2 on (nama_tabel2.field =
nama_tabel1.field)
nama_tabel1.field)
Sayangnya SQLite juga tidak mensupport right join dan full outer join
Instalasi SQLite
Meskipun secara built-in SQLite sudah didukung oleh PHP, akan tetapi untuk dapat menginteraksikannya, anda membutuhkan SQLite database server. Dapat dikatakan instalasi SQLite merupakan istalasi yang apaling praktis dari sekian program aplikasi anda. Sebab di sini anda tidak perlu melakukan tahap-tahap instalasi yang cukup panjang.
1.
Umumnya anda akan mendapatkan file
sqlite dalam bentuk terkompres, untuk itu dilakukan ekstrak dan anda akan
mendapatkan file aplikasi kecil dengan nama sqlite. Sebaiknya anda tidak perlu
mengubah nama file tersebut.
2.
Letakkan file padadirektori yang mudah
diakses, disini anda dapat menggunakan direktori C:\.
3.
Sampai
disini proses instalasi sudah selesai, dan anda dapat mencoba untuk menggunakan
SQLite melalui program kecil bernama sqlite.
4.
Namun demikian, untuk memudahkan anda
dalam menjalankan serta melakukan pengaksesan, tambahkan lokasi tempat anda
meletakkan SQLite ke dalam konfigurasi path.
Jika anda memberikan konfigurasi path, anda dapat
mengakses SQLite dari sembarang direktori. Hal ini akan membantu anda ketika
harus membuat database pada lokasi lain selain drive utama. Apabila anda
menggunakan Windows 9x, cari dan buka file autoexec.bat kemudian tambahkan
baris pada path.
SET PATH=C:\
Konfigurasi di atas dengan asumsi bahwa anda meletakkan file sqlite pada direktori C. Selain itu, jika anda menggunakan Windows 2000/XP, lakukan konfigurasi path dengan melakukan klik kanan ikon My Computer > Properties > Advance > Environment Variables. Selanjutnya klik ganda pada PATH lalu tambahkan konfigurasi PATH.
SET PATH=C:\
Konfigurasi di atas dengan asumsi bahwa anda meletakkan file sqlite pada direktori C. Selain itu, jika anda menggunakan Windows 2000/XP, lakukan konfigurasi path dengan melakukan klik kanan ikon My Computer > Properties > Advance > Environment Variables. Selanjutnya klik ganda pada PATH lalu tambahkan konfigurasi PATH.
Sumber
:
terimakasih infonya lengkap sekali ^^ useful post. ;)
BalasHapus