correlation with https://teguhth.blogspot.com/2019/04/study-kasus-praktis-belajar-query-mysql.html
1. table barang
ALTER TABLE barang MODIFY KODE_BARANG CHAR(10) NOT NULL;
DELIMITER //
CREATE PROCEDURE generate_barang(IN jumlah INT)
BEGIN
DECLARE i INT;
DECLARE mulai INT;
SELECT COALESCE(
MAX(CAST(SUBSTRING(KODE_BARANG, 5) AS UNSIGNED)),
0
)
INTO mulai
FROM barang
WHERE KODE_BARANG LIKE 'ELK-%';
SET i = mulai + 1;
WHILE i <= mulai + jumlah DO
INSERT INTO barang
(
KODE_BARANG,
NAMA_BARANG,
SATUAN_BARANG,
STOK_BARANG
)
VALUES
(
CONCAT('ELK-', LPAD(i, 6, '0')),
CASE MOD(i - 1, 6)
WHEN 0 THEN 'RICE COOKER'
WHEN 1 THEN 'LEMARI ES'
WHEN 2 THEN 'TELEVISI'
WHEN 3 THEN 'RADIO/TAPE'
WHEN 4 THEN 'KOMPUTER'
WHEN 5 THEN 'KIPAS ANGIN'
END,
CASE MOD(i - 1, 6)
WHEN 0 THEN 'BUAH'
WHEN 1 THEN 'UNIT'
WHEN 2 THEN 'UNIT'
WHEN 3 THEN 'BUAH'
WHEN 4 THEN 'UNIT'
WHEN 5 THEN 'BUAH'
END,
MOD(i - 1, 50) + 1
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_barang(1000000);
2. table suplier
ALTER TABLE suplier MODIFY KODE_SUPLIER CHAR(10) NOT NULL;
DELIMITER //
CREATE PROCEDURE generate_suplier(IN jumlah INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= jumlah DO
INSERT INTO suplier
(
KODE_SUPLIER,
NAMA_SUPLIER,
ALAMAT_SUPLIER,
KOTA_SUPLIER,
TELEPON_SUPLIER
)
VALUES
(
CONCAT('SUP-', LPAD(i, 6, '0')),
CONCAT('PT SUPLIER ', i),
CONCAT('JL INDUSTRI ', MOD(i, 100) + 1),
CASE MOD(i, 5)
WHEN 0 THEN 'JAKARTA'
WHEN 1 THEN 'BANDUNG'
WHEN 2 THEN 'BOGOR'
WHEN 3 THEN 'TANGERANG'
WHEN 4 THEN 'BEKASI'
END,
CONCAT('(021) 8', LPAD(MOD(i, 10000000), 7, '0'))
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_suplier(1000000);
3. table customer
ALTER TABLE customer
MODIFY KODE_CUSTOMER CHAR(10);
DELIMITER //
DROP PROCEDURE IF EXISTS generate_customer;
DELIMITER //
CREATE PROCEDURE generate_customer(IN jumlah INT)
BEGIN
DECLARE current_count INT DEFAULT 0;
DECLARE nomor INT DEFAULT 1;
SELECT COUNT(*)
INTO current_count
FROM customer;
SET nomor = current_count - 6 + 1;
WHILE current_count < jumlah DO
INSERT INTO customer
(
KODE_CUSTOMER,
NAMA_CUSTOMER,
ALAMAT_CUSTOMER,
KOTA_CUSTOMER,
TELEPON_CUSTOMER
)
VALUES
(
CONCAT('C-', LPAD(nomor, 7, '0')),
CONCAT('TOKO CUSTOMER ', nomor),
CONCAT('JL ABC ', MOD(nomor, 999) + 1),
CASE MOD(nomor, 5)
WHEN 0 THEN 'JAKARTA'
WHEN 1 THEN 'BANDUNG'
WHEN 2 THEN 'BOGOR'
WHEN 3 THEN 'TANGERANG'
WHEN 4 THEN 'BEKASI'
END,
CONCAT('(021) 8', LPAD(MOD(nomor, 10000000), 7, '0'))
);
SET nomor = nomor + 1;
SET current_count = current_count + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_customer(1000000);
4. table pasok
DELIMITER //
CREATE PROCEDURE generate_pasok(IN jumlah INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= jumlah DO
INSERT INTO pasok
(
KODE_PASOK,
KODE_BARANG,
KODE_SUPLIER,
TANGGAL_PASOK,
JUMLAH_PASOK
)
VALUES
(
CONCAT('PAS-', LPAD(i, 6, '0')),
CONCAT(
'ELK-',
LPAD(MOD(i - 1, 6) + 1, 2, '0')
),
CASE MOD(i - 1, 6)
WHEN 0 THEN 'EJ-01'
WHEN 1 THEN 'EJ-02'
WHEN 2 THEN 'EB-01'
WHEN 3 THEN 'EB-02'
WHEN 4 THEN 'EB-03'
WHEN 5 THEN 'EB-04'
END,
DATE_ADD(
'2002-01-01',
INTERVAL MOD(i - 1, 365) DAY
),
MOD(i - 1, 20) + 1
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_pasok(1000000);
5. table pembelian
set session max_statement_time = 0;CALL generate_pembelian(1000000);
DELIMITER //
CREATE PROCEDURE generate_pembelian(IN jumlah INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE kode_barang CHAR(6);
DECLARE kode_customer CHAR(6);
WHILE i <= jumlah DO
-- Pilih barang secara berulang
SET kode_barang = CASE MOD(i, 4)
WHEN 0 THEN 'ELK-01'
WHEN 1 THEN 'ELK-02'
WHEN 2 THEN 'ELK-03'
WHEN 3 THEN 'ELK-04'
END;
-- Pilih customer secara berulang
SET kode_customer = CASE MOD(i, 4)
WHEN 0 THEN 'J-0001'
WHEN 1 THEN 'J-0002'
WHEN 2 THEN 'B-0001'
WHEN 3 THEN 'B-0002'
END;
INSERT INTO pembelian
(
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
)
VALUES
(
CONCAT('BEL-', LPAD(i, 6, '0')),
kode_barang,
kode_customer,
DATE_ADD('2002-01-01', INTERVAL MOD(i, 365) DAY),
MOD(i, 20) + 1
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_pembelian(1000000);
1. table barang
ALTER TABLE barang MODIFY KODE_BARANG CHAR(10) NOT NULL;
DELIMITER //
CREATE PROCEDURE generate_barang(IN jumlah INT)
BEGIN
DECLARE i INT;
DECLARE mulai INT;
SELECT COALESCE(
MAX(CAST(SUBSTRING(KODE_BARANG, 5) AS UNSIGNED)),
0
)
INTO mulai
FROM barang
WHERE KODE_BARANG LIKE 'ELK-%';
SET i = mulai + 1;
WHILE i <= mulai + jumlah DO
INSERT INTO barang
(
KODE_BARANG,
NAMA_BARANG,
SATUAN_BARANG,
STOK_BARANG
)
VALUES
(
CONCAT('ELK-', LPAD(i, 6, '0')),
CASE MOD(i - 1, 6)
WHEN 0 THEN 'RICE COOKER'
WHEN 1 THEN 'LEMARI ES'
WHEN 2 THEN 'TELEVISI'
WHEN 3 THEN 'RADIO/TAPE'
WHEN 4 THEN 'KOMPUTER'
WHEN 5 THEN 'KIPAS ANGIN'
END,
CASE MOD(i - 1, 6)
WHEN 0 THEN 'BUAH'
WHEN 1 THEN 'UNIT'
WHEN 2 THEN 'UNIT'
WHEN 3 THEN 'BUAH'
WHEN 4 THEN 'UNIT'
WHEN 5 THEN 'BUAH'
END,
MOD(i - 1, 50) + 1
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_barang(1000000);
2. table suplier
ALTER TABLE suplier MODIFY KODE_SUPLIER CHAR(10) NOT NULL;
DELIMITER //
CREATE PROCEDURE generate_suplier(IN jumlah INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= jumlah DO
INSERT INTO suplier
(
KODE_SUPLIER,
NAMA_SUPLIER,
ALAMAT_SUPLIER,
KOTA_SUPLIER,
TELEPON_SUPLIER
)
VALUES
(
CONCAT('SUP-', LPAD(i, 6, '0')),
CONCAT('PT SUPLIER ', i),
CONCAT('JL INDUSTRI ', MOD(i, 100) + 1),
CASE MOD(i, 5)
WHEN 0 THEN 'JAKARTA'
WHEN 1 THEN 'BANDUNG'
WHEN 2 THEN 'BOGOR'
WHEN 3 THEN 'TANGERANG'
WHEN 4 THEN 'BEKASI'
END,
CONCAT('(021) 8', LPAD(MOD(i, 10000000), 7, '0'))
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_suplier(1000000);
3. table customer
ALTER TABLE customer
MODIFY KODE_CUSTOMER CHAR(10);
DELIMITER //
DROP PROCEDURE IF EXISTS generate_customer;
DELIMITER //
CREATE PROCEDURE generate_customer(IN jumlah INT)
BEGIN
DECLARE current_count INT DEFAULT 0;
DECLARE nomor INT DEFAULT 1;
SELECT COUNT(*)
INTO current_count
FROM customer;
SET nomor = current_count - 6 + 1;
WHILE current_count < jumlah DO
INSERT INTO customer
(
KODE_CUSTOMER,
NAMA_CUSTOMER,
ALAMAT_CUSTOMER,
KOTA_CUSTOMER,
TELEPON_CUSTOMER
)
VALUES
(
CONCAT('C-', LPAD(nomor, 7, '0')),
CONCAT('TOKO CUSTOMER ', nomor),
CONCAT('JL ABC ', MOD(nomor, 999) + 1),
CASE MOD(nomor, 5)
WHEN 0 THEN 'JAKARTA'
WHEN 1 THEN 'BANDUNG'
WHEN 2 THEN 'BOGOR'
WHEN 3 THEN 'TANGERANG'
WHEN 4 THEN 'BEKASI'
END,
CONCAT('(021) 8', LPAD(MOD(nomor, 10000000), 7, '0'))
);
SET nomor = nomor + 1;
SET current_count = current_count + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_customer(1000000);
4. table pasok
DELIMITER //
CREATE PROCEDURE generate_pasok(IN jumlah INT)
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <= jumlah DO
INSERT INTO pasok
(
KODE_PASOK,
KODE_BARANG,
KODE_SUPLIER,
TANGGAL_PASOK,
JUMLAH_PASOK
)
VALUES
(
CONCAT('PAS-', LPAD(i, 6, '0')),
CONCAT(
'ELK-',
LPAD(MOD(i - 1, 6) + 1, 2, '0')
),
CASE MOD(i - 1, 6)
WHEN 0 THEN 'EJ-01'
WHEN 1 THEN 'EJ-02'
WHEN 2 THEN 'EB-01'
WHEN 3 THEN 'EB-02'
WHEN 4 THEN 'EB-03'
WHEN 5 THEN 'EB-04'
END,
DATE_ADD(
'2002-01-01',
INTERVAL MOD(i - 1, 365) DAY
),
MOD(i - 1, 20) + 1
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_pasok(1000000);
5. table pembelian
set session max_statement_time = 0;CALL generate_pembelian(1000000);
DELIMITER //
CREATE PROCEDURE generate_pembelian(IN jumlah INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE kode_barang CHAR(6);
DECLARE kode_customer CHAR(6);
WHILE i <= jumlah DO
-- Pilih barang secara berulang
SET kode_barang = CASE MOD(i, 4)
WHEN 0 THEN 'ELK-01'
WHEN 1 THEN 'ELK-02'
WHEN 2 THEN 'ELK-03'
WHEN 3 THEN 'ELK-04'
END;
-- Pilih customer secara berulang
SET kode_customer = CASE MOD(i, 4)
WHEN 0 THEN 'J-0001'
WHEN 1 THEN 'J-0002'
WHEN 2 THEN 'B-0001'
WHEN 3 THEN 'B-0002'
END;
INSERT INTO pembelian
(
KODE_PEMBELIAN,
KODE_BARANG,
KODE_CUSTOMER,
TANGGAL_PEMBELIAN,
JUMLAH_PEMBELIAN
)
VALUES
(
CONCAT('BEL-', LPAD(i, 6, '0')),
kode_barang,
kode_customer,
DATE_ADD('2002-01-01', INTERVAL MOD(i, 365) DAY),
MOD(i, 20) + 1
);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
CALL generate_pembelian(1000000);



No comments:
Post a Comment