Pages

Jumat, 18 Januari 2013

modul 6


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 ;



Pengikut