Latihan
Soal Cerita
Saat ini kamu sedang bekerja disebuah toko komputer yang bernama "sehat com - toko komputer serba ada" sebaagain seorang programmer. Kamu diminta untuk membuat sebuah penyimpnan data yang mana data ini akan disimpan didalam sebuah database. Manager kamu sudah memberikan data contoh yang akan diinput ke dalam database seperti dibawah ini:
Contoh Tabel Barang
1
Logitech MX Master 3
15
1.000.000
1.299.000
01-08-2024
2
Razer DeathAdder V2
10
800.000
999.000
05-08-2024
3
Corsair Dark Core RGB SE
8
1.200.000
1.499.000
10-08-2024
4
SteelSeries Rival 3
12
700.000
899.000
12-08-2024
5
Logitech G502 Hero
14
1.100.000
1.399.000
03-08-2024
6
HyperX Pulsefire FPS Pro
10
950.000
1.199.000
07-08-2024
7
Razer Naga X
9
850.000
1.100.000
15-08-2024
8
Glorious Model O
11
1.000.000
1.299.000
09-08-2024
9
Cooler Master MM710
10
850.000
1.100.000
13-08-2024
10
Logitech G Pro X Superlight
8
1.400.000
1.799.000
06-08-2024
11
Corsair K95 RGB Platinum
10
2.000.000
2.499.000
03-08-2024
12
Razer BlackWidow V3
12
1.800.000
2.199.000
09-08-2024
13
Logitech G Pro X
14
1.500.000
1.799.000
12-08-2024
14
Ducky One 2 Mini
8
1.200.000
1.499.000
10-08-2024
15
HyperX Alloy FPS Pro
11
1.000.000
1.299.000
07-08-2024
16
SteelSeries Apex Pro
9
1.800.000
2.199.000
06-08-2024
17
Logitech G815 RGB
10
1.600.000
1.999.000
15-08-2024
18
Razer Huntsman Elite
8
2.200.000
2.699.000
01-08-2024
19
Ducky One 3 SF
7
1.500.000
1.799.000
12-08-2024
20
Corsair K70 RGB MK.2
6
1.800.000
2.299.000
08-08-2024
21
Dell UltraSharp U2720Q
5
5.500.000
6.500.000
07-08-2024
22
Asus ROG Swift PG259QN
6
12.000.000
13.499.000
15-08-2024
23
Samsung Odyssey G7
7
7.500.000
8.999.000
03-08-2024
24
LG UltraWide 34WK95U
8
8.000.000
9.499.000
10-08-2024
25
AOC CQ32G1
10
4.000.000
4.999.000
06-08-2024
26
MSI Optix MAG272CQR
9
4.500.000
5.499.000
14-08-2024
27
BenQ ZOWIE XL2546
5
6.500.000
7.999.000
11-08-2024
28
Acer Predator X34
6
9.500.000
10.999.000
13-08-2024
29
ViewSonic Elite XG270QG
7
7.000.000
8.499.000
04-08-2024
30
Philips 345B1C
8
5.000.000
6.000.000
02-08-2024
31
Lenovo LOQ Gaming i5-12450HX
9
10.500.000
11.999.000
13-08-2024
32
LENOVO LOQ 15IRX9 i7-13650HX RTX 4060
10
18.500.000
19.699.000
10-08-2024
33
Asus ROG Zephyrus G16 GU605MV-I946OL7G
10
39.000.000
39.999.000
01-08-2024
34
Acer Predator Helios 300 PH315-55
8
21.500.000
22.999.000
12-08-2024
35
MSI Katana GF66 12UE i7-12700H RTX 3050Ti
5
17.000.000
18.499.000
05-08-2024
36
Dell XPS 15 9520 i7-12700H
7
24.500.000
25.999.000
15-08-2024
37
Gigabyte AERO 16 XE5 i9-12900H RTX 3080
6
39.500.000
41.999.000
09-08-2024
38
Razer Blade 15 i7-12800H RTX 3070Ti
4
45.000.000
46.999.000
08-08-2024
39
Asus TUF Gaming F15 i7-12700H RTX 3060
9
15.500.000
16.999.000
14-08-2024
40
HP Omen 16 Ryzen 9 5900HX RTX 3070
5
29.000.000
30.999.000
07-08-2024
41
Lenovo ThinkPad X1 Carbon Gen 9 i7-1185G7
8
28.500.000
30.499.000
01-08-2024
42
Asus ExpertBook B9 i7-1165G7
5
26.000.000
27.999.000
15-08-2024
43
Dell Latitude 7420 i7-1185G7
9
22.500.000
23.999.000
12-08-2024
44
MacBook Air M1 2020
6
18.500.000
19.999.000
03-08-2024
45
Lenovo Yoga Slim 7i Carbon i5-1135G7
8
16.000.000
17.499.000
14-08-2024
46
HP Spectre x360 14 i7-1165G7
5
22.000.000
23.499.000
05-08-2024
47
Acer Spin 5 i7-1165G7
7
18.000.000
19.499.000
09-08-2024
48
MSI Prestige 14 Evo i7-1185G7
6
22.500.000
23.999.000
11-08-2024
49
Asus VivoBook S14 i5-1135G7
9
12.500.000
13.999.000
02-08-2024
50
Dell XPS 13 9310 i7-1165G7
4
25.500.000
27.499.000
07-08-2024
51
Origin EON15-X
1
6.000.000
6.500.000
01-07-2020
52
MSI GT80 Titan
1
6.300.000
6.800.000
01-07-2020
Latihan 1: Membuat Database
Buatlah database dengana database:
CREATE DATABASE sehat_com_db;
USE sehat_com_db;Latihan 2: Buatlah Tabel Barang
Kemudian buatlah sebuat tabel dengan nama tbl_barang:
CREATE TABLE tbl_barang (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_barang VARCHAR(255) NOT NULL,
kuantitas INT NOT NULL,
harga_modal DECIMAL(15,2) NOT NULL,
harga_jual DECIMAL(15,2) NOT NULL,
tanggal DATE NOT NULL
);
// gunakan query ini untuk melihat property di dalam tabel
DESCRIBE tbl_barang;Latihan 3: Insert Data
INSERT INTO tbl_barang (nama_barang, kuantitas, harga_modal, harga_jual, tanggal) VALUES
('Logitech MX Master 3', 15, 1000000.00, 1299000.00, '2024-08-01'),
('Razer DeathAdder V2', 10, 800000.00, 999000.00, '2024-08-05'),
('Corsair Dark Core RGB SE', 8, 1200000.00, 1499000.00, '2024-08-10'),
('SteelSeries Rival 3', 12, 700000.00, 899000.00, '2024-08-12'),
('Logitech G502 Hero', 14, 1100000.00, 1399000.00, '2024-08-03'),
('HyperX Pulsefire FPS Pro', 10, 950000.00, 1199000.00, '2024-08-07'),
('Razer Naga X', 9, 850000.00, 1100000.00, '2024-08-15'),
('Glorious Model O', 11, 1000000.00, 1299000.00, '2024-08-09'),
('Cooler Master MM710', 10, 850000.00, 1100000.00, '2024-08-13'),
('Logitech G Pro X Superlight', 8, 1400000.00, 1799000.00, '2024-08-06');
INSERT INTO tbl_barang (nama_barang, kuantitas, harga_modal, harga_jual, tanggal) VALUES
('Corsair K95 RGB Platinum', 10, 2000000.00, 2499000.00, '2024-08-03'),
('Razer BlackWidow V3', 12, 1800000.00, 2199000.00, '2024-08-09'),
('Logitech G Pro X', 14, 1500000.00, 1799000.00, '2024-08-12'),
('Ducky One 2 Mini', 8, 1200000.00, 1499000.00, '2024-08-10'),
('HyperX Alloy FPS Pro', 11, 1000000.00, 1299000.00, '2024-08-07'),
('SteelSeries Apex Pro', 9, 1800000.00, 2199000.00, '2024-08-06'),
('Logitech G815 RGB', 10, 1600000.00, 1999000.00, '2024-08-15'),
('Razer Huntsman Elite', 8, 2200000.00, 2699000.00, '2024-08-01'),
('Ducky One 3 SF', 7, 1500000.00, 1799000.00, '2024-08-12'),
('Corsair K70 RGB MK.2', 6, 1800000.00, 2299000.00, '2024-08-08');
INSERT INTO tbl_barang (nama_barang, kuantitas, harga_modal, harga_jual, tanggal) VALUES
('Dell UltraSharp U2720Q', 5, 5500000.00, 6500000.00, '2024-08-07'),
('Asus ROG Swift PG259QN', 6, 12000000.00, 13499000.00, '2024-08-15'),
('Samsung Odyssey G7', 7, 7500000.00, 8999000.00, '2024-08-03'),
('LG UltraWide 34WK95U', 8, 8000000.00, 9499000.00, '2024-08-10'),
('AOC CQ32G1', 10, 4000000.00, 4999000.00, '2024-08-06'),
('MSI Optix MAG272CQR', 9, 4500000.00, 5499000.00, '2024-08-14'),
('BenQ ZOWIE XL2546', 5, 6500000.00, 7999000.00, '2024-08-11'),
('Acer Predator X34', 6, 9500000.00, 10999000.00, '2024-08-13'),
('ViewSonic Elite XG270QG', 7, 7000000.00, 8499000.00, '2024-08-04'),
('Philips 345B1C', 8, 5000000.00, 6000000.00, '2024-08-02');
INSERT INTO tbl_barang (nama_barang, kuantitas, harga_modal, harga_jual, tanggal) VALUES
('Lenovo LOQ Gaming i5-12450HX', 9, 10500000.00, 11999000.00, '2024-08-13'),
('LENOVO LOQ 15IRX9 i7-13650HX RTX 4060', 10, 18500000.00, 19699000.00, '2024-08-10'),
('Asus ROG Zephyrus G16 GU605MV-I946OL7G', 10, 39000000.00, 39999000.00, '2024-08-01'),
('Acer Predator Helios 300 PH315-55', 8, 21500000.00, 22999000.00, '2024-08-12'),
('MSI Katana GF66 12UE i7-12700H RTX 3050Ti', 5, 17000000.00, 18499000.00, '2024-08-05'),
('Dell XPS 15 9520 i7-12700H', 7, 24500000.00, 25999000.00, '2024-08-15'),
('Gigabyte AERO 16 XE5 i9-12900H RTX 3080', 6, 39500000.00, 41999000.00, '2024-08-09'),
('Razer Blade 15 i7-12800H RTX 3070Ti', 4, 45000000.00, 46999000.00, '2024-08-08'),
('Asus TUF Gaming F15 i7-12700H RTX 3060', 9, 15500000.00, 16999000.00, '2024-08-14'),
('HP Omen 16 Ryzen 9 5900HX RTX 3070', 5, 29000000.00, 30999000.00, '2024-08-07');
INSERT INTO tbl_barang (nama_barang, kuantitas, harga_modal, harga_jual, tanggal) VALUES
('Lenovo ThinkPad X1 Carbon Gen 9 i7-1185G7', 8, 28500000.00, 30499000.00, '2024-08-01'),
('Asus ExpertBook B9 i7-1165G7', 5, 26000000.00, 27999000.00, '2024-08-15'),
('Dell Latitude 7420 i7-1185G7', 9, 22500000.00, 23999000.00, '2024-08-12'),
('MacBook Air M1 2020', 6, 18500000.00, 19999000.00, '2024-08-03'),
('Lenovo Yoga Slim 7i Carbon i5-1135G7', 8, 16000000.00, 17499000.00, '2024-08-14'),
('HP Spectre x360 14 i7-1165G7', 5, 22000000.00, 23499000.00, '2024-08-05'),
('Acer Spin 5 i7-1165G7', 7, 18000000.00, 19499000.00, '2024-08-09'),
('MSI Prestige 14 Evo i7-1185G7', 6, 22500000.00, 23999000.00, '2024-08-11'),
('Asus VivoBook S14 i5-1135G7', 9, 12500000.00, 13999000.00, '2024-08-02'),
('Dell XPS 13 9310 i7-1165G7', 4, 25500000.00, 27499000.00, '2024-08-07'),
('Origin EON15-X', 1, 6000000.00, 6500000.00, '2020-07-01'),
('MSI GT80 Titan', 1, 6300000.00, 6800000.00, '2020-07-01');Untuk menampilkan data yang sudah di insert bisa menggunakan query berikut ini:
SELECT * FROM tbl_barang;Maka akan menampilkan data seperti dibawah ini:

Latihan 4: Update Data
Selanjutnya ubahlah data seperti contoh dibawah ini:
Corsair K95 RGB Platinum ubah kuantitinya menjadi 20
Dell UltraSharp U2720Q ubah harga jual nya menjadi 7.000.000
BenQ ZOWIE XL2546 ubah tanggal input menjadi 2024 - 07 - 30
-- Update kuantitas untuk 'Corsair K95 RGB Platinum'
UPDATE tbl_barang
SET kuantitas = 20
WHERE nama_barang = 'Corsair K95 RGB Platinum';
-- Update harga jual untuk 'Dell UltraSharp U2720Q'
UPDATE tbl_barang
SET harga_jual = 7000000.00
WHERE nama_barang = 'Dell UltraSharp U2720Q';
-- Update tanggal untuk 'BenQ ZOWIE XL2546'
UPDATE tbl_barang
SET tanggal = '2024-07-30'
WHERE nama_barang = 'BenQ ZOWIE XL2546';Latihan 5: Menampilkan Data Setelah di Update
Sekarang coba tampilkan data yang sudah di update dengan menggunakan query dibawah ini:
select * from tbl_barang WHERE nama_barang = 'Corsair K95 RGB Platinum'or nama_barang = 'Dell UltraSharp U2720Q' or nama_barang = 'BenQ ZOWIE XL2546';Maka akan menampilkan data seperti ini:

Latihan 6: Menampilkan Total Kuantitas Semua Barang
Setelah kita sudah berhasil melakukan update terhadap tabel tbl_barang selanjutnya kita di minta untuk menampilkan total dari kuantitas. Untuk menampilkan total dari kuantitas dari semua barang bisa menggunakan query berikut ini:
SELECT SUM(kuantitas) AS total_kuantitas FROM tbl_barang;Maka akan menghasilkan tampilan seperti berikut ini:

Penjelasan:
SELECT:Bagian ini digunakan untuk memilih data dari tabel dalam database. Kata kunci
SELECTmenunjukkan bahwa kita akan mengambil data dari tabeltbl_barang.
SUM(kuantitas):Fungsi
SUM()digunakan untuk menjumlahkan semua nilai di kolomkuantitas. Dalam konteks ini,SUM(kuantitas)akan menghitung total keseluruhan dari semua nilaikuantitasdi dalam tabeltbl_barang.
AS total_kuantitas:Kata kunci
ASdigunakan untuk memberi nama alias pada hasil dari fungsiSUM(kuantitas). Dalam hal ini, hasil penjumlahan semua nilaikuantitasakan diberi nama aliastotal_kuantitas. Nama alias ini digunakan untuk memudahkan identifikasi kolom hasil ketika output ditampilkan.
FROM tbl_barang:Bagian ini menunjukkan dari mana data tersebut diambil.
tbl_barangadalah nama tabel dari mana data akan dipilih.
Latihan 7: Manampilkan Barang dengan Kuantitas Tertinggi
Sekarang kita diminta untuk nampilkan 5 data kuantitas barang yang paling banyak. Untuk menampilkan 5 barang dengan kuntitas terbanyak kita bisa menggunakan query berikut ini:
SELECT nama_barang, kuantitas FROM tbl_barang ORDER BY kuantitas DESC LIMIT 5;Maka akan menghasil tampilan seperti ini:

Penjelasan:
SELECT nama_barang, kuantitas:Bagian ini digunakan untuk memilih kolom
nama_barangdankuantitasdari tabeltbl_barang. Query ini akan mengembalikan nilai-nilai dari kolomnama_barang(nama barang) dankuantitas(jumlah barang).
FROM tbl_barang:Menunjukkan tabel
tbl_barangsebagai sumber data. Semua data yang dipilih berasal dari tabel ini.
ORDER BY kuantitas DESC:Mengurutkan hasil berdasarkan kolom
kuantitasdalam urutan menurun (descending). Ini berarti bahwa barang dengan kuantitas terbesar akan muncul terlebih dahulu dalam hasil. Kata kunciDESCsingkatan dari "descending" atau menurun.
LIMIT 5:Membatasi hasil query hanya pada 5 baris pertama. Jadi, hanya 5 barang dengan kuantitas terbesar yang akan ditampilkan.
Latihan 8: Delete Data
Selanjutnya kita mendapatkan kabar bahwa ada 2 barang yang sudah tidak ada didalam gudang, barang tersebut adalah Origin EON15-X dan MSI GT80 Titan yang sudah laku terjual. Jadi kita diminta untuk menghapus 2 barang tersebut dari database. Untuk menghapus data tersebut manager meminta kita menghapusnya berdasarkan ID dengan ketentuan seperti dibawah ini:
Hapus barang dengan nomor ID 51 dan 52 karena barang tersebut sudah laku terjual
Untuk menghapus data berdasarkan ID kita bisa menggunakan query berikut ini:
DELETE FROM tbl_barang where id = 51;
DELETE FROM tbl_barang where id = 52;Untuk memastikan apakah data tersebut sudah terhapus kita bisa menggunakan query berikut ini:
SELECT * FROM tbl_barang WHERE id = 51 or id = 52;Jika tidak menampilkan data apapun maka data sudah berhasil dihapus.
Latihan 9: Menampilkan Total Kuantitas Barang Berdasarkan Bulan
Selanjut manager kita meminta kita untuk menampilkan total kuantitas barang berdasarkan bulan. Untuk manampilkan total kuantitas barang berdasarkan bulan bisa menggunakan query berikut ini:
SELECT
DATE_FORMAT(tanggal, '%Y-%m') AS bulan,
SUM(kuantitas) AS total_kuantitas
FROM
tbl_barang
GROUP BY
DATE_FORMAT(tanggal, '%Y-%m')
ORDER BY
bulan;Maka akan menampilkan data seperti berikut ini:

Penjelasan:
SELECT:Bagian ini digunakan untuk memilih kolom yang ingin ditampilkan dari tabel
tbl_barang.
DATE_FORMAT(tanggal, '%Y-%m') AS bulan:Fungsi
DATE_FORMATdigunakan untuk memformat kolomtanggalagar hanya menampilkan tahun (%Y) dan bulan (%m). Contohnya, jikatanggaladalah2024-08-28, fungsi ini akan mengubahnya menjadi2024-08.Hasil dari fungsi ini diberi alias
bulan, sehingga dalam hasil query, kolom yang menunjukkan bulan akan diberi namabulan.
SUM(kuantitas) AS total_kuantitas:Fungsi
SUM()digunakan untuk menjumlahkan semua nilai dalam kolomkuantitasuntuk setiap kelompok data. Dalam hal ini, penjumlahan dilakukan untuk setiap bulan.Hasil penjumlahan ini diberi alias
total_kuantitas, sehingga dalam hasil query, kolom yang menunjukkan total kuantitas akan diberi namatotal_kuantitas.
FROM tbl_barang:Bagian ini menunjukkan bahwa data yang diambil berasal dari tabel
tbl_barang.
GROUP BY DATE_FORMAT(tanggal, '%Y-%m'):GROUP BYdigunakan untuk mengelompokkan data berdasarkan nilai yang dihasilkan oleh fungsiDATE_FORMAT. Artinya, data akan dikelompokkan berdasarkan bulan. Setiap grup akan berisi semua baris data yang jatuh pada bulan yang sama.Penjumlahan
SUM(kuantitas)akan dilakukan untuk setiap grup (yaitu, untuk setiap bulan).
ORDER BY bulan:Bagian ini mengatur hasil query berdasarkan kolom
bulan, dari bulan yang paling awal hingga yang paling akhir. Dengan kata lain, hasil akan diurutkan dalam urutan kronologis.
Latihan 10: Menambah Kolom Baru
Last updated