Basis Data Part 5: Bahasa SQL (Structured Query Language)

Dodit Suprianto
8 min readSep 26, 2021

--

Melanjutkan pertemuan sebelumnya. Sekarang kita akan belajar mengenal SQL (Structure Query Language).

INSERT INTO

Struktur dasar INSERT INTO adalah:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Sebagai contoh, kita akan menambahkan row pada tabel jenis_barang_tb. Dimana data yang sudah ada tampak sebagai berikut

Sekarang kita tambahkan jenis barang dengan perintah SQL sebagai berikut:

-- memilih database
use cobadb;
insert into jenis_barang_tb (jenis_barang_id, nama_jenis_barang) values('J7', 'Pecah Belah');
insert into jenis_barang_tb (jenis_barang_id, nama_jenis_barang) values('J8', 'Baju Anak');
insert into jenis_barang_tb (jenis_barang_id, nama_jenis_barang) values('J9', 'Baju Dewasa');
-- bisa pula penulisan sql tidak perlu nama field asalkan isian pada sisi values lengkap
insert into jenis_barang_tb values('J10', 'Mainan Anak');
insert into jenis_barang_tb values('J11', 'Pertukangan');
insert into jenis_barang_tb values('J12', 'Alat Elektronik');

Kemudian eksekusi skrip SQL atau gunakan shortcut Alt+X.

Tambahkan pula data baru pada tabel barang_tb dengan cara serupa

-- memilih database
use cobadb;
-- Jenis barang pecah belah = J7
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b2', 'Piring Antik', 'J7', 30000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b3', 'Gelas Keramik', 'J7', 40000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b4', 'Wajan Oval', 'J7', 35000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b5', 'Sotel', 'J7', 20000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b6', 'Sumpit', 'J7', 25000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b7', 'Mug Besar', 'J7', 10000);
-- Jenis barang Baju Anak = J8
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b8', 'Baju Lucu', 'J8', 95000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b9', 'Baju Cantik', 'J8', 100000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b10', 'Jeans Anak', 'J8', 115000);
-- Jenis barang Baju Dewasa = J9
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b11', 'Daster Polkadot', 'J9', 95000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b12', 'Jeans Belel Levis', 'J9', 215000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b13', 'Kardigan', 'J9', 300000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b14', 'Jaket Kulit', 'J9', 500000);
insert into barang_tb (barang_id, nama_barang, jenis_barang_id, harga) values('b15', 'Celana Kantor', 'J9', 225000);
-- bisa pula penulisan sql tidak perlu nama fieldnya,
-- asalkan isian pada values lengkap dan urutan sesuai dengan nama field tabel
-- Jenis barang Mainan Anak = J10
insert into barang_tb values('b16', 'Sepatu Roda', 'J10', 75000);
insert into barang_tb values('b17', 'Sepeda Gunung', 'J10', 600000);
insert into barang_tb values('b18', 'Roll Coaster', 'J10', 12000);
insert into barang_tb values('b19', 'Keranjang Basket Ball', 'J10', 100000);
-- Jenis barang Pertukangan = J11
insert into barang_tb values('b20', 'Palu', 'J11', 45000);
insert into barang_tb values('b21', 'Tang Cucut', 'J11', 45000);
insert into barang_tb values('b22', 'Tang Potong', 'J11', 45000);
insert into barang_tb values('b23', 'Gergaji Listrik', 'J11', 750000);
insert into barang_tb values('b24', 'Gerinda Listrik', 'J11', 750000);
insert into barang_tb values('b25', 'Paku Baja', 'J11', 3000);
insert into barang_tb values('b26', 'Kikir Besi', 'J11', 14000);
insert into barang_tb values('b27', 'Mesin Bor', 'J11', 800000);
-- Jenis barang Alat Elektronik = J12
insert into barang_tb values('b28', 'Lampu Hias', 'J12', 100000);
insert into barang_tb values('b29', 'Lampu Taman', 'J12', 100000);
insert into barang_tb values('b30', 'Radio Digital', 'J12', 170000);
insert into barang_tb values('b31', 'Remote TV', 'J12', 70000);
insert into barang_tb values('b32', 'TV Box', 'J12', 350000);
insert into barang_tb values('b33', 'Smart TV Xiaomi', 'J12', 3500000);
insert into barang_tb values('b34', 'Kulkas LG 2 Pintu', 'J12', 4500000);

Note. Pastikan bahwa field barang_tb.jenis_barang_id telah berelasi dengan jenis_barang_tb.jenis_barang_id dan datanya tersedia. Ingat konsep ER Model.

Hasil eksekusinya adalah sebagai berikut:

UPDATE

Pernyataan UPDATE digunakan untuk mengubah catatan yang ada dalam tabel.

UPDATE Sintaks:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Catatan: Hati-hati saat memperbarui catatan dalam tabel! Perhatikan klausa WHERE dalam pernyataan UPDATE. Klausa WHERE menentukan record mana yang harus diperbarui. Jika Anda menghilangkan klausa WHERE, semua catatan dalam tabel akan diperbarui!

Sebagai contoh kita akan mengubah pada tabel barang_tb, namun sebelumnya tampilkan dulu datanya:

-- memilih database
use cobadb;
-- menampilkan semua baris tabel barang_tb
-- dimana jenis_barang_id = J11
-- dan diurutkan dari kecil ke besar berdasarkan nama barang
select * from barang_tb
where jenis_barang_id = 'J11'
order by nama_barang;

Proses SELECT di filter berdasarkan jenis_barang_id untuk mengurangi banyaknya data yang ditampilkan.

Misalnya kita akan mengubah harga barang untuk barang_id=’b23’ dari 750000 menjadi 650000, caranya

-- memilih database
use cobadb;
-- menampilkan semua baris tabel barang_tb
-- dimana jenis_barang_id = J11
-- dan diurutkan dari kecil ke besar berdasarkan nama barang
select * from barang_tb
where jenis_barang_id = 'J11'
order by nama_barang;
-- mengubah harga dimana barang_id=b23
-- dari 750000 menjadi 650000
update barang_tb
set harga = 650000
where barang_id = 'b23';
-- kita tampilkan lagi datanya
-- untuk mengecek apa telah terjadi perubahan
select * from barang_tb
where jenis_barang_id = 'J11'
order by nama_barang;

Kasus yang lain misalnya, kita akan mengubah semua harga dalam tabel barang_tb khusus harga yang lebih dari 600000 menjadi 90000. Perubahan harga dikenakan khusus barang-barang yang tergolong J11 (‘Pertukangan’).

Bila diperhatikan, record yang seharusnya berubah ada 3, dengan barang_id antara lain b23=650000, b24=750000 dan b27=800000.

-- memilih database
use cobadb;
-- mengubah record barang_tb
-- yang semula lebih dari 600000 menjadi 900000
-- dimana perubahan hanya barang dengan jenis_barang_id=J11
update barang_tb
set harga = 900000
where jenis_barang_id = 'J11' and harga > 600000;
-- kita tampilkan lagi datanya
-- untuk mengecek apa telah terjadi perubahan
-- diurutkan berdasarkan harga secara descending (besar ke kecil)
select * from barang_tb
where jenis_barang_id = 'J11'
order by harga desc;

Hasil eksekusi SQL adalah sebagai berikut:

DELETE FROM

Pernyataan DELETE digunakan untuk menghapus record yang ada dalam tabel.

DELETE Syntax:

DELETE FROM table_name WHERE condition;

Catatan: Hati-hati saat menghapus record dalam tabel! Perhatikan klausa WHERE dalam pernyataan DELETE. Klausa WHERE menentukan record mana yang harus dihapus. Jika Anda menghilangkan klausa WHERE, semua record dalam tabel akan dihapus!

Secara aturan filter serupda dengan UPDATE. Di sini saya contoh kan 1 saja agar tidak habis datanya.

Kita akan menghapus record barang_tb dimana harga ≤ 5000 dan jenis_barang_id = J11.

Berdasarkan data sebelumnya, maka record dengan barang_id=25 dengan nama barang ‘Paku Baja’ akan terhapus karena dia memiliki harga = 3000 atau di bawah dari 5000.

-- memilih database
use cobadb;
-- Menghpus record dimana harga <= 5000
-- dan jenis_barang_id = J11
delete from barang_tb
where jenis_barang_id = 'J11' and harga <= 5000;
-- kita tampilkan lagi datanya
-- untuk mengecek apa telah terjadi perubahan
-- diurutkan berdasarkan harga secara descending (besar ke kecil)
select * from barang_tb
where jenis_barang_id = 'J11'
order by harga desc;

SELECT

Pada pembahasan di atas kita sudah memanfaatkan beberapa pernyataan SELECT. Di sini kita akan membahas lebih dalam.

Pernyataan SELECT digunakan untuk memilih data dari database. Data yang dikembalikan disimpan dalam tabel hasil, yang disebut kumpulan hasil (result set).

Sintaks SELECT adalah sebagai berikut:

SELECT column1, column2, ...
FROM table_name;

Di sini, kolom1, kolom2, … adalah nama field dari tabel yang ingin Anda pilih datanya. Jika Anda ingin memilih semua field yang tersedia dalam tabel, gunakan sintaks berikut:

SELECT * FROM table_name;

WHERE

Klausa WHERE digunakan untuk memfilter record. Ini digunakan untuk mengekstrak hanya record/baris yang memenuhi kondisi tertentu.

Sintaks WHERE sebagai berikut:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Catatan: Klausa WHERE tidak hanya digunakan dalam pernyataan SELECT, tetapi juga digunakan dalam UPDATE, DELETE, dll.!

Operator SQL AND, OR, NOT

Klausa WHERE dapat digabungkan dengan operator AND, OR, dan NOT.

Operator AND dan OR digunakan untuk memfilter record berdasarkan lebih dari satu kondisi:

  • Operator AND menampilkan record jika semua kondisi yang dipisahkan oleh AND adalah TRUE.
  • Operator OR menampilkan record jika salah satu kondisi yang dipisahkan oleh OR adalah TRUE.

Operator NOT menampilkan record jika kondisi NOT TRUE.

Sintaks AND adalah sebagai berikut:

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

Sintaks OR adalah sebagai berikut:

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

Sintaks NOT adalah sebagai berikut:

SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;

Operator logika AND, OR dan NOT serupa dengan dalam bahasa pmerograman lainya. Berikut contoh tabel kebenarannya:

  • A AND B AND C
  • A OR B OR C
  • NOT A
  • NOT B
  • NOT C
  • Bagaimana jika A AND B OR C, A OR B AND C, A AND B OR NOT C?

ORDER BY

Kita juga sudah memanfaatkan kata kunci ORDER BY pada pemabahsan sebelumnya.

Kata kunci ORDER BY digunakan untuk mengurutkan result set dalam urutan menaik atau menurun.

Kata kunci ORDER BY mengurutkan catatan dalam urutan menaik secara default. Untuk mengurutkan catatan dalam urutan menurun, gunakan kata kunci DESC.

Sintaks ORDER BY:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

SQL Agregasi

Agregasi adalah pada SQL akan menghasilkan satu nilai tertentu hasil dari agregasi beberapa record dalam tabel.

Contoh agregasi SQL adalah:

  • MIN() — Fungsi MIN() mengembalikan nilai terkecil dari kolom yang dipilih.
  • MAX() — Fungsi MAX() mengembalikan nilai terbesar dari kolom yang dipilih.
  • COUNT()
  • AVG()
  • SUM()

Sintaks MIN():

SELECT MIN(column_name)
FROM table_name
WHERE condition;

Sekarang kita tampilkan semua baris barang_tb yang diurutkan ASC untuk harga

select * from barang_tb
order by harga;

Sekarang kita coba mencari harga terendah dari tabel di atas. Tentunya yang diharapkan adalah barang dengan barang_id=b7 karena memiliki harga 10000.

-- memilih database
use cobadb;
-- Agregasi MIN()
SELECT Min(barang_tb.harga) AS 'Harga Terendah'
FROM barang_tb;

Sintaks MAX():

SELECT MIN(column_name)
FROM table_name
WHERE condition;

Berikut contoh mencari baris/record dengan harga tertinggi dari tabel barang_tb.

SELECT Max(barang_tb.harga) AS 'Harga Tertinggi'
FROM barang_tb;

Tugas

  • Buatlah skrip SQL yang memanfaatkan kata kunci agregasi AVG, COUNT dan SUM.
  • Tampilkan hasilnya sebelum dan sesudah
  • Apa yang bisa ditarik kesimpulan dari agregasi AVG, COUNT dan SUM.

--

--

Dodit Suprianto

I am interested in IoT, especially cyber security on the IoT platform, develop functional edge computing, explore machine learning to solve IoT problems