1. Home
  2. Docs
  3. Kelas Privat Python – 01
  4. Materi [Manajemen Data]
  5. Pengenalan SQL

Pengenalan SQL

Structured Query Language (SQL) adalah sebuah bahasa yang digunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya. wikipedia

Pada awal tahun 1970-an, tercetus ide untuk mengembangkan basis data relasional. Niatnya adalah membuat standar bahasa yang dapat digunakan oleh siapa saja. Karena hal tersebut munculah istilah SEQUEL ( Structured English Query Language). Sebelum adanya SEQUEL ini, pada tahun 1969 IBM terlebih dahulu melahirkan SQUARE sebagai cikal bakal dari SEQUEL. Nama tersebut lalu disingkat menjadi SQL karena adanya permasalahan merk dagang dengan perusahaan lain.

Pada tahun 1986, ANSI (American National Standards Institute), sebuah badan yang membuat standarisasi merancang sebuah standar untuk SQL. Tidak lama setelahnya, ISO (International Organization for Standardization) juga mengeluarkan standar untuk SQL. Ini dikerjakan dengan tujuan untuk menyeragamkan query yang digunakan di pada SQL dikarenakan perkembangan dari SQL yang begitu cepat sehingga banyak sekali perusahaan yang melakukan pengembangan sendiri SQL dengan menambahkan beberapa fitur tambahan. Walaupun begitu, perintah-perintah dasar masih memiliki kesamaan.

Terdapat tiga jenis perintah dasar dalam SQL. Pertama adalah Data Definition, Data Manipulation , dan Data Control.

Data Definition Language (DDL)

Perintah ini digunakan untuk membuat struktur sebuah database. Terdapat lima perintah utama, diantaranya:

  • Perintah Create: sebuah perintah yang bisa kamu gunakan ketika membuat sebuah database yang baru, baik itu berupa tabel baru atau sebuah kolom baru.
  • Perintah Alter: biasa digunakan ketika seseorang ingin mengubah struktur tabel yang sebelumnya sudah ada.
  • Perintah Rename: dapat kamu gunakan untuk mengubah sebuah nama di sebuah tabel ataupun kolom yang ada.
  • Perintah Drop: Bisa kamu gunakan dalam menghapus baik itu berupa database, table maupun kolom hingga index.
  • Perintah Show: perintah DDL ini digunakan untuk menampilkan sebuah tabel yang ada.

Data Manipulation Language (DML)

Perintah dasar SQL ini bertujuan untuk memanipulasi data yang ada dalam sebuah database. Beberapa perintah dalam DML di antaranya adalah insert, select, update, dan delete.

  • Perintah Insert: Kamu bisa menggunakan perintah ini untuk memasukkan sebuah record baru di dalam sebuah tabel database.
  • Perintah Select: Pada perintah ini kamu dapat menggunakannya dalam menampilkan maupun mengambil sebuah data pada tabel. Data yang diambil pun tidak hanya terbatas pada satu jenis saja melainkan lebih dari satu tabel dengan memakai relasi.
  • Perintah update: Ini dapat kamu gunakan ketika ingin melakukan pembaruan data di sebuah tabel. Contohnya saja jika ada kesalahan ketika memasukkan sebuah record. Kamu tidak perlu menghapusnya dan bisa diperbaiki menggunakan perintah ini.
  • Perintah Delete: Perintah DML ini dapat digunakan ketika kamu ingin menghapus sebuah record yang ada dalam sebuah tabel.

Data Control Language (DCL)

Perintah SQL ini berhubungan dengan administrasi dan aksesibilitas, digunakan khususnya untuk mengatur hak apa saja yang dimiliki oleh pengguna. Dua perintah yang termasuk pada DCL adalah:

  • Perintah Grant: Digunakan untuk memberikan hak akses ke user lainnya. Tentu pemberian hak akses ini dapat dibatasi atau diatur.
  • Perintah Revoke: Digunakan untuk mencabut maupun menghapus hak akses seorang pengguna yang awalnya diberikan akses oleh admin database melalui perintah Grant sebelumnya.

SQLite

Seperti MySQL, SQLite adalah perangkat lunak RDBMS yang digunakan untuk manajemen database SQL yang kita miliki. Lite dalam SQLite artinya adalah ringan dalam perihal konfigurasi, administras, dan penggunaan. Inilah alasan utama dalam pelatihan kali ini kita akan menggunakan SQLite sebagai perangkat lunak sistem managemen database.

SQLite memiliki beberapa fitur seperti: self-contained, serverless, zero-configuration, transactional.

Serverless

Normalnya, RDBMS seperti MySQL, PostgreSQL, dll membutuhkan server terpisah untuk menjalankan prosesnya. Aplikasi yang membutuhkan akses ke database akan menggunakan protokol TCP/IP untuk menerima dan mengirimkan permintaan. Ini dinamakan arsitektur klien/server

Berikut penggambaran arsitektur klient/server RDBMS:

RDBMS Client Server Architecture

Menariknya adalah SQLite tidak bekerja seperti itu, SQLite tidak membutuhkan server khusus untuk berjalan. Aplikasi yang berinteraksi dengan databse SQLite melakukan pembacaan dan penulisan data langsung ke database pada media penyimpanan.

Diagram di bawah menggambarkan arsitektur server-less SQLite:

What is SQLite

Self-Contained

SQLite sebagai self-contained artinya SQLite membutuhkan dukungan yang minim dari sistem operasi atau library tambahan. Ini Artinya SQLite sangat cocok pada lingkungan development yang database yang langsung dimasukkan kedalam aplikasi, misal Android.

Zero-configuration

Karena sifatnya yang server-less maka SQLite juga tidak membutuhkan file konfigurasi khusus agar dapat berjalan.

Transactional

Semua transaksi dalam SQLite bersifat ACIDA (Atomic, Consistent, Isolated, and Durable).

Artinya adalah transaksi yang terjadi pada SQLite hanya memiliki dua kemungkinan, terlaksana secara sempurna atau tidak terjadi sama sekali.

Instalasi SQLite

Untuk melakukan instalasi SQLite kita harus melakukan pengunduhan terlebih dahulu. Kita dapat mengikuti langkah berikut

  1. pertama masuk ke situs https://www.sqlite.org
  2. Lalu buka halaman download https://www.sqlite.org/download.html

SQLite menyediakan paket instalasi untuk berbagai macam lingkungan, misalnya windows, linux, atau MacOS. Sebagai contoh, jika ingin melakukan kerja pada Windows, maka pilihlah seperti pada gambar di bawah.

Gambar ini memiliki atribut alt yang kosong; nama filenya adalah SQLite3-Windows-Download.png

Instalasi SQLite sendiri cukuplah mudah

  1. pertama, buatlah folder baru untuk menampung file sqlite. misalkan, C:\sqlite.
  2. Kedua lakukan ekstrasi pada hasil unduhan kita dan simpan di folder C:\sqlite folder.

Buka Command Prompt

Gambar ini memiliki atribut alt yang kosong; nama filenya adalah SQLite3-command-line-window.png

lalu navigasikan ke folder the C:\sqlite.

C:\cd c:\sqliteC:\sqlite>

Lalu ketikkan sqlite3, maka akan muncul tampilan seperti pada gambar di bawah.

C:\sqlite>sqlite3SQLite version 3.29.0 2019-07-10 17:32:03Enter ".help" for usage hints.Connected to a transient in-memory database.Use ".open FILENAME" to reopen on a persistent database.sqlite>

Untuk bisa membuka sqlite dari lokasi mana saja, kita bisa menaruh alamat folder sql tadi ke pengaturan PATH di windows. Untuk mengetahui perintah apa saja yang bisa kita lakukan kita dapat mengetik

.help

Perintah dalam SQLite

Kita dapat membuat/mengakses database yang kita miliki dengan menggunakan perintah:

sqlite3 DatabaseName.db

Untuk melakukan pengecekan database yang terhubung kita dapat mengunakan perintah

 .database

Untuk keluar dari database kita bisa menggunakan perintah

.exit

Jika kita telah memiliki atau membuat database sqlite sebelumnya dan ingin menyambungkannya kita dapat menggunakan perintah

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

Untuk Melepaskan kita gunakan perintah

DETACH DATABASE 'Alias-Name';

Untuk Membuat tabel baru kita menggunakan perintah

CREATE TABLE database_name.table_name(   column1 datatype PRIMARY KEY(one or more columns),   column2 datatype,   column3 datatype,   .....   columnN datatype);
  • database_name diisi dengan nama database yang kita ingin masukkan tabel
  • table_name adalah nama tabel kita
  • column diisi dengan nama/head dari kolom kita
  • datatype merupakan jenis datanya (integer, string, number, date, boolean)

Terdapat dua jenis Key Khusus dari sebuah tabel, yang pertama adalah Primary Key dan yang kedua adalah Foreign Key. Primary key merupakan identitas dari data pada tabel kalian, jadi tidak ada Primary Key yang sama dalam satu data (contohnya adalah NIK pada kependudukan). Foreign Key digunakan sebagai penghubung antara dua tabel. Bisa jadi Primary Key pada tabel A merupakan Foreign Key pada tabel B.

SQLite GUI – DB Browser

Menggunakan SQLite sangatlah mudah, tapi ada kalanya kita membutuhkan sebuah user interface agar lebih memudahkan kita dalam memanipulasi dan memvisualiasikan database kita. Banyak sekali SQLite GUI yang dapat kita gunakan, salah satunya adalah DB Browser fo SQLite

Instalasi

Masuk kedalam halaman https://sqlitebrowser.org/dl/ dan pilih file yang sesuai dengan spesifikasi alat kita. lalu lakukan instalasi. Setelah berhasil melakukan instalasi kita akan mendapatkan tampilan seperti gambar di bawah.

Gambar ini memiliki atribut alt yang kosong; nama filenya adalah sql2-1024x572.png

Jendela DB Browser

Terdapat 4 tab utama dalam db browser yaitu

  • Database Structure
  • Browser Data
  • Edit Pragmas
  • Execute SQL

Database Structure digunakan untuk melihat schema dari database yang kita miliki. Browser Data digunakan untuk melihat isi data dari tabel kita. Edit Pragmas untuk mengubah konfigurasi query non table kita. Execute SQL digunakan untuk menjalankan query yang kita butuhkan.

Untuk Pelatihan kali ini kita akan menggunakan tab Execute SQL untuk menjalankan semua query pada halaman ini. Setelah Query tersebut dituliskan kita dapat menggunakan tombol F5 atau tombol yang diberi kotak merah pada gambar.

Manipulasi Data pada SQL

Untuk basis data yang kita gunakan dalam materi kali ini dapat diunduh dari link berikut (sumber: www.sqlitetutorial.net)

chinook SQLite sample database

Lalu buka menggunakan menu open database.

Select

query select digunakan untuk memilih dan menampilkan data pada basis data yang kita pilih. secara sederhana query yang digunakan adalah

select * from customers

tanda apostrof artinya kita akan mengambil semua kolom yang ada pada tabel nametabel. jika kita menginginkan hanya satu jenis kolom maka kita maka kita dapat menuliskan

select CustomerId from customers -- untuk satu kolom
select CustomerId, FirstName from customers -- untuk banyak kolom

Pencarian dari banyak tabel bisa dilakukan dengan menentukan alias untuk setiap tabel. misal saat akan memanggil dari tabel customer dan employees maka kolom dipanggil dengan cara menggunakan alias.kolom

select a.CustomerId, b.EmployeeId from customers a, employees b

Untuk melakukan pencarian dengan syarat tertentu maka kita bisa menggunakan where

select * from customers where CustomerId = 1

Misalkan pada kolom yang kita cari terdapat banyak nilai yang sama kita dapat menggunakan distinct untuk mengambilnya sebagai nilai unik

select distinct City from customers where City = "Paris";
-- bedakan dengan
select City from customers where City = "Paris";

Untuk mengurutkan data yang akan kita tampilkan kita dapat menggunakan Order By

select * from customers Order By City ASC, FirstName DESC;

Query di atas akan mengurutkan terlebih dahulu hasil pencarian tabel customers terhadar kolom City secara Ascending setelah itu baru kolom FirstName secara Descending.

Join

Query Join digunakan untuk menggabungkan dua tabel atau lebih saat melakukan proses data. Bentuk visualisasi dari berbagai query join dapat dilihat pada gambar dibawah

Inner Join digunakan untuk mengambil hanya data yang saling beririsan, saat ada data yang tidak memiliki hubungan pada kedua tabel maka tidak akan dipanggil

select * from albums a inner join artists b on a.ArtistId = b.ArtistId;

Left Join digunakan untuk mengambil keseluruhan data tabel satu dan data irisan pada tabel dua

select * from albums a left join artists b on a.ArtistId = b.ArtistId;

Operator

Terdapat dua jenis operator yaitu comparison dan logical. comparisan adalah operator yang digunakan untuk membandingkan dua nilai sedangkan logical adalah operator yang dipakai untuk mengembalikan data sesuai syarat logic yang ditentukan

Comparison

OperatorPengertian
=Sama dengan
<> atau !=Tidak Sama dengan
<Kurang dari
>Lebih dari
<=Kurang dari sama dengan
>=Lebih dari sama dengan

Logical

OperatorPengertian
ALLReturn jika semua ekspresi benar
ANDReturn jika kedua ekspresi benar
ANYReturn jika ada ekspresi yang benar
BETWEENReturn jika nilai berada di antara
EXISTReturn jika sub query mengembalikan nilai
INReturn jika nilai ada pada list
LIKEReturn jika nilai sama dengan pola
NOTUntuk Membalik pengertian operator lain
ORReturn jika salah satu ekspresi benar

Manipulation

Insert

Query yang digunakan untuk memasukkan nilai pada tabel dan/atau kolom tertentu. query secara umumnya adalah

INSERT INTO table (column1,column2 ,..)
VALUES( value1,	value2 ,...);

Contohnya,

INSERT INTO artists (ArtistId,Name)
VALUES( 300,'Slank');

Update

Query yang digunakan untuk mengubah nilai pada tabel dan/atau kolom tertentu. query secara umumnya adalah,

UPDATE table
SET column_1 = new_value_1,
    column_2 = new_value_2
WHERE
    search_condition 

Contohnya,

UPDATE artists
SET Name = 'Noah'
WHERE
    ArtistId = 300;

Delete

Query yang digunakan untuk menghapus baris pada tabel tertentu. query secara umumnya adalah,

DELETE FROM table
WHERE search_condition

Contohnya,

DELETE FROM artists
WHERE ArtistId = 300;

Transaction

Transaksi dilakukan agar data yang kita manipulasi semua perubahannya teraplikasikan ke basis data. Query yang digunakan adalah,

BEGIN TRANSACTION;
-- manipulation query kita
COMMIT; --or
ROLLBACK;

Begin Transaction digunakan untuk memulai proses, Commit digunakan untuk mengaplikasikan perubahan dimana rollback digunakan untuk mengembalikan keadaan sebelum di ubah.