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

No
Nama Barang
Kuantitas
Harga Modal (IDR)
Harga Jual (IDR)
Tanggal

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:

  1. SELECT:

    • Bagian ini digunakan untuk memilih data dari tabel dalam database. Kata kunci SELECT menunjukkan bahwa kita akan mengambil data dari tabel tbl_barang.

  2. SUM(kuantitas):

    • Fungsi SUM() digunakan untuk menjumlahkan semua nilai di kolom kuantitas. Dalam konteks ini, SUM(kuantitas) akan menghitung total keseluruhan dari semua nilai kuantitas di dalam tabel tbl_barang.

  3. AS total_kuantitas:

    • Kata kunci AS digunakan untuk memberi nama alias pada hasil dari fungsi SUM(kuantitas). Dalam hal ini, hasil penjumlahan semua nilai kuantitas akan diberi nama alias total_kuantitas. Nama alias ini digunakan untuk memudahkan identifikasi kolom hasil ketika output ditampilkan.

  4. FROM tbl_barang:

    • Bagian ini menunjukkan dari mana data tersebut diambil. tbl_barang adalah 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:

  1. SELECT nama_barang, kuantitas:

    • Bagian ini digunakan untuk memilih kolom nama_barang dan kuantitas dari tabel tbl_barang. Query ini akan mengembalikan nilai-nilai dari kolom nama_barang (nama barang) dan kuantitas (jumlah barang).

  2. FROM tbl_barang:

    • Menunjukkan tabel tbl_barang sebagai sumber data. Semua data yang dipilih berasal dari tabel ini.

  3. ORDER BY kuantitas DESC:

    • Mengurutkan hasil berdasarkan kolom kuantitas dalam urutan menurun (descending). Ini berarti bahwa barang dengan kuantitas terbesar akan muncul terlebih dahulu dalam hasil. Kata kunci DESC singkatan dari "descending" atau menurun.

  4. 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:

  1. SELECT:

    • Bagian ini digunakan untuk memilih kolom yang ingin ditampilkan dari tabel tbl_barang.

  2. DATE_FORMAT(tanggal, '%Y-%m') AS bulan:

    • Fungsi DATE_FORMAT digunakan untuk memformat kolom tanggal agar hanya menampilkan tahun (%Y) dan bulan (%m). Contohnya, jika tanggal adalah 2024-08-28, fungsi ini akan mengubahnya menjadi 2024-08.

    • Hasil dari fungsi ini diberi alias bulan, sehingga dalam hasil query, kolom yang menunjukkan bulan akan diberi nama bulan.

  3. SUM(kuantitas) AS total_kuantitas:

    • Fungsi SUM() digunakan untuk menjumlahkan semua nilai dalam kolom kuantitas untuk 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 nama total_kuantitas.

  4. FROM tbl_barang:

    • Bagian ini menunjukkan bahwa data yang diambil berasal dari tabel tbl_barang.

  5. GROUP BY DATE_FORMAT(tanggal, '%Y-%m'):

    • GROUP BY digunakan untuk mengelompokkan data berdasarkan nilai yang dihasilkan oleh fungsi DATE_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).

  6. 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