MODUL
ENAM
Jawaban
1).quary untuk membuat table
A. Table instruktur
mysql> create table instruktur(nip varchar(3)
primary key,namains varchar (30),jurusan varchar(30),asalkota varchar(25));
mysql> insert into instruktur values('1','steve
woznian','ilmu komputer','bantul'),
-> ('2','steve jobs','seni rupa','solo'),
-> ('3','james gosling','ilmu
komputer','klaten'),
-> ('4','bill gates','ilmu komputer','magelang');
B. Table matakuliah
mysql> create table matakuliah(nomk varchar(10)
primary key,namamk varchar (50),sks int(3));
mysql> insert into matakuliah
values('KOM101','ALGORITMA DAN PEMOGRAMAN','3'),
->
('KOM102','BASIS DATA','3'),
->
('SR101','DESAIN ELEMENTER','3'),
->
('KOM201','PEMOGRAMAN BERBASIS OBYEK','3');
C. Table kuliah
mysql> create table kuliah(nip varchar(3), nomk
varchar(10), ruangan varchar(5), jmlmhs int(5), foreign key(nip) references
instruktur(nip), foreign key(nomk) references matakuliah(nomk));
mysql> insert into kuliah
values('1','KOM101','101','50'),
->
('1','KOM102','102','35');
->('2','SR101','101','45'),
->('3','KOM201','101','55');
2. Tuliskan
query untuk mendapatkan data-data di bawah ini. Tambahkan data pada tabel
sesuai
dengan kebutuhan.
A.
Instruktur-instruktur
jurusan 'Ilmu Komputer'
mysql>
select nip, namains from instruktur where jurusan='ilmu komputer';
B.
Nomor mata kuliah yang pesertanya lebih dari
40 orang
mysql> select*from kuliah where
jmlmhs > 40;
C.
Nomor dan mata
kuliah yang pesertanya lebih dari 40 orang
mysql> select*from
kuliah where jmlmhs > 40;
D.
nip
instruktur yang mengampu mata kuliah dengan nomor 'KOM102'
mysql> select nip from kuliah
where nomk ='KOM102';
E.
nip instruktur
yang mengampu mata kuliah 'Basis Data'
mysql> select nip from kuliah
where nomk ='KOM102';
F.
nip
dan nama instruktur yang mengampu mata kuliah 'Basis Data'
mysql> select nip
from kuliah where nomk ='KOM102';
G.
Nama mata kuliah
dan ruangan yang diampu oleh 'Steve Jobs'
H.
Jumlah total
mahasiswa yang diampu oleh 'Steve Wozniak'
mysql> select namamk from
matakuliah where nomk='SR101';
I.
Nomor
dan nama instruktur yang mengampu mahasiswa terbanyak
mysql> select jmlmhs,count(*)
from kuliah group by jmlmhs;
J.
Nomor
dan nama instruktur yang belum mengampu mata kuliah apapun
3. Buatlah view untuk mendapatkan
data berikut ini:
A.
Nomor
dan nama instruktur yang belum mengampu mata kuliah apapun
mysql> select*from
view_1;
B. Jumlah
mata kuliah yang diampu oleh setiap instruktur
4. Buatlah Trigger untuk
pencatatan perubahan ruangan untuk sebuah mata kuliah. Catatan
perubahan disimpan dalam tabel berikut:
mysql> create table roomChanges(user_id varchar(15),
deskripsi varchar(100));
mysql> delimiter **
mysql> create trigger room_ruangan AFTER UPDATE
-> ON
tabel_kuliah
-> FOR
EACH ROW
->
BEGIN
->
INSERT INTO roomChanges
->
VALUES (user(), CONCAT('merubah ruangan ',NEW.no_mk,' dari ruang ',OLD.ruangan,
' to ',NEW.ruangan));
-> end
**
mysql> delimiter ;
mysql> update tabel_kuliah set ruangan=102 where
no_mk='KOM101';
mysql> select * from roomChanges;
5. Buatlah fungsi atau prosedur
sesuai kasus berikut ini:
A.
Fungsi
untuk menampilkan jumlah kuliah yang diadakan di sebuah ruangan (nama ruangan dimasukkan
sebagai input)
mysql> delimiter **
mysql> create function
countRoom(ruangan int(3))
-> returns int(2)
-> begin
-> return concat('1');
-> end **
mysql> delimiter ;
mysql> select
countRoom('102');
mysql> delimiter **
mysql> create function
countRoom(ruangan int(3))
-> returns int(2)
-> begin
-> return concat('0');
-> end **
mysql> delimiter ;
mysql> select
countRoom('103');
B.
Fungsi untuk mendapatkan nama ruangan
tempat sebuah mata kuliah diadakan (nomor mata kuliah dimasukkan sebagai
input). Berikan nilai 'not found' jika sebuah mata kuliah belum diberi
mysql> delimiter **
mysql> create function
getRoom(no_mk varchar(10))
-> returns varchar(8)
-> begin
-> return concat('102');
-> end **
mysql> delimiter ;
mysql> select
getRoom('KOM102');
mysql> delimiter **
mysql> create function getRoom(no_mk
varchar(10))
-> returns varchar(12)
-> begin
-> return concat('not found');
-> end **
mysql> delimiter ;
mysql> select
getRoom('KOM103');
C.
Prosedur untuk menampilkan nama mata kuliah
dan ruangan yang diampu oleh seorang instruktur (nama instruktur dimasukkan
sebagai input
mysql> create
procedure getruangan (out ruangan varchar(5))
-> begin
-> select count(*) into ruangan from
kuliah;
-> end #
D.
Prosedur untuk menampilkan jumlah SKS yang
diampu oleh seorang instruktur (nama
instruktur
dimasukkan sebagai input)
mysql> delimiter ^^
mysql> create procedure
getSks(in nama_insName varchar(22))
-> begin
-> select nama_ins, SUM(sks) from
tabel_kuliah_join3 where nama_ins like nama_insName;
-> end ^^
mysql> delimiter ;