Konten Ini Di Lindungi
Silakan masuk atau daftar untuk melihat konten ini
Nama Database: inventori_toko
Mahasiswa mampu membuat dan mengimplementasikan database baru menggunakan konsep relasi antar tabel dan operasi JOIN untuk menampilkan data yang saling berhubungan.
Buatlah sebuah database dengan nama
inventori_toko yang digunakan untuk mencatat
data toko, produk, dan
transaksi penjualan.
inventori_tokoCREATE DATABASE inventori_toko;
Database ini memiliki tiga tabel utama sebagai berikut:
toko| Nama Kolom | Tipe Data | Keterangan |
|---|---|---|
| kode_toko | CHAR(5) | PRIMARY KEY |
| nama_toko | VARCHAR(50) | - |
| alamat | VARCHAR(100) | - |
| kota | VARCHAR(30) | - |
CREATE TABLE toko ( kode_toko CHAR(5) PRIMARY KEY, nama_toko VARCHAR(50), alamat VARCHAR(100), kota VARCHAR(30) );
INSERT INTO toko (kode_toko, nama_toko, alamat, kota) VALUES
('T001', 'Toko Sinar Jaya', 'Jl. Merdeka No. 45', 'Samarinda'),
('T002', 'Toko Maju Bersama', 'Jl. Pahlawan No. 12', 'Balikpapan'),
('T003', 'Toko Berkah Abadi', 'Jl. Ahmad Yani No. 87', 'Bontang');
produk| Nama Kolom | Tipe Data | Keterangan |
|---|---|---|
| kode_produk | CHAR(7) | PRIMARY KEY |
| nama_produk | VARCHAR(50) | - |
| harga | DECIMAL(10,2) | - |
| stok | INT | - |
CREATE TABLE produk ( kode_produk CHAR(7) PRIMARY KEY, nama_produk VARCHAR(50), harga DECIMAL(10,2), stok INT );
INSERT INTO produk (kode_produk, nama_produk, harga, stok) VALUES
('P001', 'Sabun Mandi', 5000, 100),
('P002', 'Shampoo 250ml', 12000, 50),
('P003', 'Pasta Gigi', 8000, 70),
('P004', 'Detergen', 15000, 40);
penjualan| Nama Kolom | Tipe Data | Keterangan |
|---|---|---|
| kode_transaksi | CHAR(8) | PRIMARY KEY |
| kode_toko | CHAR(5) | FOREIGN KEY |
| kode_produk | CHAR(7) | FOREIGN KEY |
| jumlah | INT | - |
| tanggal_transaksi | DATE | - |
CREATE TABLE penjualan ( kode_transaksi CHAR(8) PRIMARY KEY, kode_toko CHAR(5), kode_produk CHAR(7), jumlah INT, tanggal_transaksi DATE, FOREIGN KEY (kode_toko) REFERENCES toko(kode_toko), FOREIGN KEY (kode_produk) REFERENCES produk(kode_produk) );
INSERT INTO penjualan (kode_transaksi, kode_toko, kode_produk, jumlah, tanggal_transaksi) VALUES
('TRX0001', 'T001', 'P001', 20, '2024-10-01'),
('TRX0002', 'T001', 'P002', 15, '2024-10-02'),
('TRX0003', 'T002', 'P003', 30, '2024-10-03'),
('TRX0004', 'T002', 'P004', 10, '2024-10-03'),
('TRX0005', 'T003', 'P001', 25, '2024-10-04');
Silakan masuk atau daftar untuk melihat konten ini
Menampilkan nama_toko, kota, nama_produk, jumlah, dan tanggal_transaksi.
SELECT t.nama_toko, t.kota, p.nama_produk, j.jumlah, j.tanggal_transaksi FROM penjualan j JOIN toko t ON j.kode_toko = t.kode_toko JOIN produk p ON j.kode_produk = p.kode_produk;
SELECT t.nama_toko, SUM(j.jumlah) AS total_penjualan FROM penjualan j JOIN toko t ON j.kode_toko = t.kode_toko GROUP BY t.nama_toko;
(Gunakan LEFT JOIN dan kondisi IS NULL)
SELECT p.nama_produk FROM produk p LEFT JOIN penjualan j ON p.kode_produk = j.kode_produk WHERE j.kode_produk IS NULL;
SELECT t.nama_toko, COUNT(DISTINCT j.kode_produk) AS jumlah_produk FROM toko t LEFT JOIN penjualan j ON t.kode_toko = j.kode_toko GROUP BY t.nama_toko;
(Gunakan subquery)
SELECT nama_produk, harga FROM produk WHERE harga > (SELECT AVG(harga) FROM produk);
v_penjualan_detailMenampilkan nama_toko, nama_produk, jumlah, dan tanggal_transaksi.
CREATE VIEW v_penjualan_detail AS SELECT t.nama_toko, p.nama_produk, j.jumlah, j.tanggal_transaksi FROM penjualan j JOIN toko t ON j.kode_toko = t.kode_toko JOIN produk p ON j.kode_produk = p.kode_produk;
SELECT t.nama_toko, COUNT(j.kode_transaksi) AS jumlah_transaksi
FROM toko t
JOIN penjualan j ON t.kode_toko = j.kode_toko
GROUP BY t.nama_toko
HAVING COUNT(j.kode_transaksi) = (
SELECT COUNT(*)
FROM penjualan
GROUP BY kode_toko
ORDER BY COUNT(*) DESC
LIMIT 1
);
DELETE FROM penjualan WHERE YEAR(tanggal_transaksi) < 2024;
Gunakan perintah SQL berikut dalam penyelesaian tugas ini:
File ini dapat langsung digunakan sebagai panduan atau laporan praktikum.
Pastikan seluruh query diuji di MySQL/MariaDB agar hasil
sesuai dengan tabel contoh.
Gabung dalam percakapan