1.
Buatlah tabel Menu, Paket, Employee, Customer, Transaction dalam database
Restoranberdasarkan relational database schema berikut.
mysql -h localhost -u root
CREATE DATABASE restoran
USE restoran
CREATE TABLE customer(
id_customer VARCHAR(5),
nama_depan VARCHAR(30),
nama_belakang VARCHAR(30),
alamat VARCHAR(30),
email VARCHAR(30),
nomor_telepon VARCHAR(15),
PRIMARY KEY (id_customer)
);
CREATE TABLE employee(
id_employee VARCHAR(5),
nama_depan VARCHAR(30),
nama_belakang VARCHAR(30),
jabatan VARCHAR(30),
alamat VARCHAR(30),
email VARCHAR(30),
nomor_telepon VARCHAR(15),
gaji INT,
PRIMARY KEY (id_employee)
);
CREATE TABLE paket(
id_paket VARCHAR(5),
harga_paket INT,
PRIMARY KEY (id_paket)
);
CREATE TABLE transaction(
id_customer VARCHAR(5),
id_paket VARCHAR(5),
id_employee VARCHAR(5),
transaction_date DATE,
FOREIGN KEY (id_customer) REFERENCES customer(id_customer),
FOREIGN KEY (id_paket) REFERENCES paket(id_paket),
FOREIGN KEY (id_employee) REFERENCES employee(id_employee)
);
CREATE TABLE menu(
id_menu VARCHAR(5),
nama_menu VARCHAR(30),
jenis_menu VARCHAR(20),
id_paket VARCHAR(5),
PRIMARY KEY (id_menu),
FOREIGN KEY (id_paket) REFERENCES paket(id_paket)
);
2. Masukkan data berikut ke dalam table Employee.
INSERT INTO employee(id_employee, nama_depan, jabatan, alamat, email,
nomor_telepon, gaji)
VALUES ('E0001','Anthony', 'Manager', '70 Cool Guy', 'anthony@umn.ac.id', '123-456-
4565', 5000000);
INSERT INTO employee(id_employee, nama_depan, nama_belakang, jabatan, alamat,
email, nomor_telepon, gaji)
VALUES ('E0002','Akino', 'Archilles', 'Chef', '21 Kino Kino', 'akino@student.com',
'354-124-5786', 3500000);
INSERT INTO employee(id_employee, nama_depan, nama_belakang, jabatan, alamat,
email, nomor_telepon, gaji)
VALUES ('E0003','Kevin', 'Alexander', 'Cashier', '34 Nishinoya', 'alex@yahoo.com',
'096-123-7832', 3000000);
INSERT INTO employee(id_employee, nama_depan, nama_belakang, jabatan, alamat,
email, nomor_telepon, gaji)
VALUES ('E0004','Ivy', 'Marcia', 'Chef', '06 Wall Street', 'ivy@yahoo.com', '846-
732-8427', 3500000);
INSERT INTO employee(id_employee, nama_depan, nama_belakang, jabatan, alamat,
email, nomor_telepon, gaji)
VALUES ('E0005','Martha', 'Saphia', 'Customer Service', '78 Ruby Fort',
'martha@umn.ac.id', '718-296-2873', 3200000);
INSERT INTO employee(id_employee, nama_depan, jabatan, alamat, email,
nomor_telepon, gaji)
VALUES ('E0006','Nofiandy', 'Cashier', '03 Smooth Hair', 'nofiandy@gmail.com',
'516-927-9268', 3250000);
INSERT INTO employee(id_employee, nama_depan, jabatan, alamat, email,
nomor_telepon, gaji)
VALUES ('E0007','Octavany', 'Cashier', '23 Relaxing Cafe', 'octa@iseng.com', '654-
876-1928', 3150000);
3. Masukkkan data berikut ke dalam table Customer.
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0001', 'Michael', 'Oswin', '125 Laugh Land', 'oswin@yahoo.com', '745-387-
2874');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0002', 'Anna', 'Jeane', '163 Lolita Land', 'anna@gmail.com', '982-397-
4862');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0003', 'Raymond', NULL, '287 Chucky Suburb', 'raymond@gmail.com', '917-
376-4672');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0004', 'Theodore', 'Mulia', '287 Idea Annex', 'mulia@gmail.com', '122-
187-1111');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0005', 'Niki', 'Emersan', '297 Cult Annex', 'niki@yahoo.com', '196-292-
2223');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0006', 'Christine', 'Liviani', '275 Love Annex', 'liviani@live.com',
'000-198-2836');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0007', 'Hermawan', NULL, '212 Tall Building', 'hermawan@yahoo.com', '192-
168-1001');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0008', 'Agung', NULL, '293 Short Building', 'agung@yahoo.com', '192-168-
1993');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0009', 'Samuel', 'Sandro', '206 Oppa Annex', 'sam@live.com', '192-168-
2973');
INSERT INTO customer(id_customer, nama_depan, nama_belakang, alamat, email,
nomor_telepon)
VALUES ('C0010', 'Kennard', 'Alcander', '202 Brother Annex', 'ken@live.com', '198-
782-3864');
4.Masukkan data berikut kedalam table Paket.
INSERT INTO paket(id_paket, harga_paket)
VALUES ('P0001', 3000000);
INSERT INTO paket(id_paket, harga_paket)
VALUES ('P0002', 2500000);
INSERT INTO paket(id_paket, harga_paket)
VALUES ('P0003', 2000000);
5. Masukkan data berikut ke dalam table Menu.
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0001', 'Nasi Goreng Cinta', 'Makanan', 'P0001');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0002', 'Ayam Bumbu PHP', 'Makanan', 'P0002');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0003', 'Soto Daging CPP', 'Makanan', 'P0003');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0004', 'Siomay Pak BoBi', 'Makanan', 'P0001');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0005', 'Blue Integer', 'Minuman', 'P0001');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0006', 'Mocha Float', 'Dessert', 'P0003');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0007', 'Choco Banana Split', 'Dessert', 'P0002');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0008', 'Es Teh Panas', 'Minuman', 'P0002');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0009', 'Nasi Micin', 'Makanan', 'P0002');
INSERT INTO menu(id_menu, nama_menu, jenis_menu, id_paket)
VALUES ('M0010', 'Sapi Chabe', 'Makanan', 'P0003');
6. Masukkan data berikut ke dalam table Transaction
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0001', 'E0002', 'P0003', '2016-02-25');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0002', 'E0001', 'P0002', '2016-03-12');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0003', 'E0002', 'P0002', '2016-04-10');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0004', 'E0004', 'P0001', '2016-06-28');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0005', 'E0001', 'P0002', '2016-03-30');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0006', 'E0003', 'P0003', '2016-03-10');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0007', 'E0005', 'P0001', '2016-03-01');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0008', 'E0002', 'P0002', '2016-08-30');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0009', 'E0002', 'P0003', '2016-11-02');
INSERT INTO transaction(id_customer, id_employee, id_paket, transaction_date)
VALUES ('C0010', 'E0005', 'P0001', '2016-08-18');
7. Tampilkan semua isi dari tabel Menu.
SELECT * FROM menu;
8. Tampilkan nama depan dan nama belakang semua pekerja yang bekerja sebagai
kasir(Cashier).
SELECT nama_depan AS 'Nama Depan', nama_belakang AS 'Nama Belakang' FROM
employee WHERE jabatan = 'Cashier';
9. Tampilkan ID Paket, Harga Awal, dan Harga Akhir setelah Didiskon 30% dari harga
awal.
SELECT id_paket AS 'ID paket', harga_paket AS 'Harga Awal', TRUNCATE(harga_paket
* 70/100,0) AS 'Harga Akhir' FROM paket;
10. Tampilkan total gaji karyawan.
SELECT CONCAT('Rp. ', SUM(gaji)) AS 'Total Gaji' FROM employee;
11. Tampilkan Nama Depan, Nama Belakang, Jabatan serta E-mail karyawan yang
memiliki E-mail Yahoo.
SELECT nama_depan AS 'Nama Depan', nama_belakang AS 'Nama Belakang', jabatan AS
'Jabatan', email AS 'E-mail' FROM employee WHERE email LIKE '%@yahoo.com%';
12. Tampilkan Nama Depan, Nama Belakang, Jabatan, dan Jumlah Gaji. Dimana gaji
dibawah 3.800.000.
SELECT nama_depan AS 'Nama Depan', nama_belakang AS 'Nama Belakang', jabatan AS
'Jabatan', gaji AS 'Gaji' FROM employee WHERE gaji < 3800000;
13. Bapak Oswin selaku owner restoran ingin membuat email khusus untuk setiap
pelayan yang bekerja di restoran tersebut dengan cara:
1. E-mail dibuat berdasarkan nama depan (contoh: Anna Jeane = Anna).
2. Domain e-mail adalah “@restoswin.rs.id”
SELECT nama_depan AS 'Nama Depan', nama_belakang AS 'Nama Belakang',
LOWER(CONCAT(nama_depan, '@restoswin.rs.id')) AS 'Email Khusus' FROM employee;
14. Pak Chanek sangat suka membuat nama baru. Nama baru dapat dibangun dengan
menggabungkan 4 huruf pertama dari nama depan dan kata tengah dari alamat. Data
yang ditampilkan hanyalah yang memiliki digit pertama nomor tengah dari nomor
telepon adalah
‘1’ atau ‘7’.
Contoh:
a) Ambil 4 huruf pertama dari nama depan (“Christine” menjadi “Chri”)
b) Ambil kata tengah dari alamat (“275 Love Annex” menjadi “Love”)
c) Gabungkan hasil a dan b menjadi “ChriLove”
d) Cek digit pertama nomor tengah dari nomor telepon (“000-198-2836” memiliki
nomor tengah “198” dan digit pertama-nya adalah ‘1’ dan digit terakhir ‘8’)
SELECT CONCAT(LEFT(nama_depan,4),LEFT(SUBSTR(alamat,(INSTR(alamat,' ')
+1)),INSTR(alamat,' ')+1)) AS 'Nama Gabungan' FROM customer
-> WHERE SUBSTR(nomor_telepon, 5,3) LIKE '1%' OR SUBSTR(nomor_telepon, 5,3)
LIKE '%7';
15. Mr. Eka Harsono sangat menyukai string. Dia sedang mendalami materi hashing.
Hashing merupakan pengubahan suatu data menjadi data lain. Metode hashing yang
digunakan adalah
sebagai berikut:
a. Buat kalimat menjadi lowercase semua (“Nasi Goreng Cinta menjadi “nasi
goreng cinta”)
b. Ambil 2 huruf pertama dan 3 huruf terakhir dan buang leading space atau
trailing space jika
ada (“nasi goreng cinta” menjadi “nanta”)
c. Tambahkan kebalikan dari hasil B ke hasil B (“nanta” menjadi “nantaatnan”)
Data hashing yang ditampilkan adalah data menu yang berjenis makanan.
SELECT LOWER(TRIM(CONCAT(LEFT(nama_menu,2),
RIGHT(nama_menu,3),REVERSE(CONCAT(LEFT(nama_menu,2), RIGHT(nama_menu,3)))))) AS
'Hashing'
-> FROM menu WHERE jenis_menu = 'Makanan';
16. Pak Bagong ingin menyembunyikan gaji dari satiap karyawan. Metode yang dia
gunakan adalah sebagai berikut:
a. Untuk satuan 200.000 di-representasikan dengan ‘$’ contoh: ‘$$$$$’ =
1.000.000
b. Ditambahkan dengan sisanya untuk satuan 10.000 yang di-representasikan
dengan ‘#’
contoh: ‘#####’ = 50.000
Contoh akhir: ‘$$$$$##’ = (5*200.000)+(2*10.000) = 1.200.000
SELECT CONCAT(nama_depan, ' ', nama_belakang) AS 'Nama',
CONCAT(LPAD('',FLOOR(gaji/200000),'$'), LPAD('',MOD(gaji,200000)/10000,'#')) AS
'Gaji'
-> FROM employee WHERE NOT nama_belakang = 'NULL';