Praktikum Database Management System

24
Nama : Khairunnisa NIM : 1205467 Program Studi : Teknologi Pendidikan Mata Kuliah : Database Management System Praktikum Modul MODUL 1 1. Tabel Mahasiswa Hasil :

Transcript of Praktikum Database Management System

Nama : Khairunnisa

NIM : 1205467

Program Studi : Teknologi Pendidikan

Mata Kuliah : Database Management System

Praktikum Modul

MODUL 1

1. Tabel Mahasiswa

Hasil :

2. Tabel Matakuliah

Hasil :

3. Tabel ambil_mk

Hasil :

4. Relationship

MODUL 2

1. Tabel mahasiswa2

2. Matakuliah yang sksnya 1 ATAU 2

Syntax :

SELECT * FROM matakuliah

WHERE sks=1 OR sks=2

3. Matakuliah yang nama depannya tidak sama dengan “Praktikum”

syntax :

SELECT * FROM matakuliah

WHERE nama_mk NOT LIKE "praktikum*"

MODUL 3

1. Urutan berdasarkan semester dan kode_mk

Syntax :

SELECT kode_mk, nama_mk, sks, semester

FROM matakuliah

ORDER BY semester, kode_mk;

2. Urutan berdasarkan nama_mk

Syntax :

SELECT kode_mk, nama_mk, sks, (sks*2)

AS js FROM matakuliah

ORDER BY nama_mk;

3. Total sks dari tiap semester

Syntax :

SELECT semester, SUM(sks) AS jumlah

FROM matakuliah

GROUP BY semester;

4. Pengelompokan sks berdasarkan jumlah kemunculan, jumlah > 2

Syntax :

SELECT sks, COUNT(sks) AS jumlah

FROM matakuliah

WHERE sks > 2

GROUP BY sks

MODUL 4

1. Isi Data Tabel Mahasiswa

Membuat Database

Start -> cmd

Ketik cd c:\xampp\mysql\bin

mysql –u root

CREATE DATABASE _KHAIRUNNISA ;

\u _KHAIRUNNISA ;

Membuat tabel mahasiswa

Syntax :

CREATE TABLE mahasiswa(

Nim INT(12) NOT NULL,

Nama VARCHAR(60) NOT NULL,

Jenis_kelamin CHAR(1) NOT NULL,

Alamat VARCHAR(120),

PRIMARY KEY(nim)

);

SHOW TABLES;

Mengisi data ke tabel mahasiswa :

Mengisi di localhost/phpmyadmin -> pilih database _KHAIRUNNISA -> mahasiwa

-. Insert. Lalu isikan data sesuai tabel.

SQL pada XAMPP:

INSERT INTO `_khairunnisa`.`mahasiswa` (`nim`, `nama`, `jenis_kelamin`,

`alamat`) VALUES ('101', 'arief', 'L', 'Jl. Kenangan'), ('102', 'Budi', 'L', 'Jl.

Jombang'), ('103', 'Wati', 'P', 'Jl. Surabaya'), ('104', 'Ika', 'P', 'Jl. Jombang'), ('105',

'Tono', 'L', 'Jl. Jakarta'), ('106', 'Iwan', 'L', 'Jl. Bandung'), ('107', 'Sari', 'P', 'Jl.

Malang');

Di cmd : select *from mahasiswa ;

2. Tabel matakuliah

Syntax :

CREATE TABLE matakuliah(

Kode_mk CHAR(10) NOT NULL,

Nama_mk VARCHAR(30) NOT NULL,

Sks INT(1) NOT NULL,

Semester INT(1),

PRIMARY KEY(kode_mk)

);

SQL pada XAMPP :

INSERT INTO `_khairunnisa`.`matakuliah` (`kode_mk`, `nama_mk`, `sks`,

`semester`) VALUES ('PTI447', 'Praktikum Basis Data', '1', '3'), ('PTI777', 'Sistem

Informasi', '2', '3'), ('TIK342', 'Praktikum Basis Data', '1', '3'), ('PTI123', 'Grafika

Multimedia', '3', '5'), ('PTI333', 'Basis DataTerdistribusi', '3', '5'), ('TIK123', 'Jaringan

Komputer', '2', '5'), ('TIK333', 'Sistem Operasi', '3', '5');

Select *from matakuliah ;

3. Tabel ambil_mk

Syntax :

CREATE TABLE ambil_mk(

Nim INT(12) NOT NULL,

Kode_mk CHAR(10) NOT NULL

);

SQL pada XAMPP :

INSERT INTO `_khairunnisa`.`ambil_mk` (`nim`, `kode_mk`) VALUES ('101',

'PTI447'), ('103', 'TIK333'), ('104', 'PTI333'), ('104', 'PTI777'), ('111', 'PTI123'),

('123', 'PTI999');

Select *from ambil_mk ;

MODUL 5

1. Data mahasiswa yang mengambil matakuliah

Syntax :

SELECT DISTINCT mahasiswa.nim, mahasiswa.nama

FROM mahasiswa

INNER JOIN ambil_mk

ON mahasiswa.nim=ambil_mk.nim;

2. Data mahasiswa yang tidak mengambil mata kuliah berdasarkan jenis kelamin

Syntax :

SELECT jenis_kelamin, COUNT(jenis_kelamin) AS jumlah

FROM mahasiswa

LEFT OUTER JOIN ambil_mk

ON mahasiswa.nim=ambil_mk.nim

WHERE ambil_mk.nim IS NULL

GROUP BY jenis_kelamin;

3. Data mahasiswa yang mengambil matakuliah beserta kode_mk dan nama_mk

Syntax :

SELECT a.nim, mhs.nama, a.kode_mk, m.nama_mk

FROM mahasiswa mhs, ambil_mk a, matakuliah m

WHERE m.kode_mk=a.kode_mk

AND mhs.nim=a.nim;

4. Nim, nama, dan total sks lebih > 4 dan <10

Syntax :

SELECT mahasiswa.nim, mahasiswa.nama, SUM(semester+2) AS total_sks

FROM mahasiswa, ambil_mk, matakuliah

WHERE mahasiswa.nim = ambil_mk.nim and ambil_mk.kode_mk =

matakuliah.kode_mk and matakuliah.semester <>’5,6,7,8,9’;

5. Matakuliah yang tidak diambil oleh mahasiswa terdaftar

Syntax :

SELECT m.kode_mk, m.nama_mk, m.sks, m.semester

FROM matakuliah m

LEFT JOIN

(mahasiswa mhs LEFT JOIN ambil_mk a

ON mhs.nim=a.nim)

ON m.kode_mk=a.kode_mk

WHERE a.kode_mk IS NULL

ORDER BY nama_mk;

MODUL 7

1. Definisikan stored procedure untuk mendapatkan banyaknya matakuliah dan

jumlah total sks dengan melibatkan dua buah parameter OUT

Syntax :

BEGIN

SELECT COUNT(kode_mk), SUM(sks)

/* hasil counting di-pass back ke variable jumlah */

/* hasil suming di-pass back ke variable total */

INTO jumlah,total

FROM matakuliah;

END

Hasil :

2. Definisikan stored procedure untuk penambahan data ambil_mk.

Skenarionya, penambahan dapat dilakukan jika dan hanya jikanilai nim eksis

di tabel mahasiswa dan nilai kode_mk eksis di tabel matakuliah. Apabila

operasi berhasil, kembalikan status “OK”; sebaliknya jika gagal, kembalikan

pesan “Operasi Gagal”

Syntax :

BEGIN

DECLARE message VARCHAR(30);

IF(exists(select nim from mahasiswa where nim = n) AND exists(select kode_mk

from matakuliah where kode_mk = kode)) THEN

SET message = 'OK';

insert into ambil_mk (nim,kode_mk) values (n,kode);

else

set message = 'operasi gagal';

end if;

select message;

END

Hasil jika nim eksis pada tabel mahasiswa dan kode_mk eksis pada tabel

matakuliah:

Hasil jika nim tidak eksis pada tabel mahasiswa dan kode_mk tidak eksis pada tabel

matakuliah:

3. Definisikan stored procedure untuk memodifikasi data dosen apabila eksis

dan melakukan penambahan jika belum eksis.

Syntax :

BEGIN

DECLARE message VARCHAR(30);

IF(exists(select kode_dosen from dosen where kode_dosen = c)) THEN

SET message = 'Perbaharui Dosen';

update dosen set nama = n where kode_dosen = c;

else

set message = 'Masukan Dosen';

insert into dosen values (c,n);

end if;

select message;

END

Hasil jika memasukan dosen :

Hasil jika memperbaharui dosen dari dosen yang telah ada :

Modul 9

1. Definisikan updatable viewdengan check optionuntuk mendapatkan data

matakuliah yang sksnya di antara 1 dan 4, dan semesternya lebih dari

semester terkecil.

Syntax :

CREATE VIEW vMatkul1

AS

SELECT matakuliah.kode_mk, matakuliah.nama_mk, matakuliah.sks,

matakuliah.semester

FROM matakuliah

WHERE sks < 4 and semester > 1

WITH CHECK OPTION;

SELECT * FROM vMatkul1;

2. Definisikan nested view untuk mendapatkan data mahasiswa yang jenis

kelaminnya L, dengan main view berupa mahasiswa yang mengambil

sembarang matakuliah yang sksnya lebih dari sks terkecil.

Syntax :

CREATE VIEW vMatkul2

AS

SELECT mahasiswa.nim, mahasiswa.nama, mahasiswa.jenis_kelamin,

matakuliah.kode_mk, matakuliah.nama_mk, matakuliah.sks

FROM mahasiswa, matakuliah;

CREATE VIEW vMatkul3

AS

SELECT *

FROM vMatkul2

WHERE jenis_kelamin=’L’ AND sks>1;

SELECT * FROM vMatkul3 ;

3. Definisikan updatable viewuntuk mendapatkan nim dan nama mahasiswa

yang mengambil matakuliah di semester 3.

Syntax :

CREATE VIEW vUpdateNisa

AS

SELECT DISTINCT mahasiswa.nim, mahasiswa.nama

FROM mahasiswa, matakuliah

WHERE semester=3;

SELECT * FROM vUpdatNisa;

4. Definisikan view untuk mendapatkan nama dosen yang mengajar

matakuliah dengan jumlah siswa terbanyak.

Syntax :

CREATE VIEW vDosenNisa

AS

SELECT DISTINCT dosen.nama, dosen.kode_dosen

FROM dosen

LEFT JOIN

(mahasiswa LEFT JOIN ambil_mk

ON mahasiswa.nim=ambil_mk.nim)

ON dosen.kode_dosen=ambil_mk.kode_dosen

WHERE dosen.kode_dosen

ORDER BY COUNT (mahasiswa.nama);