LAPORAN “ BASIS DATA “
Disusun Untuk Memenuhi Persyaratan Mengikuti Ujian Akhir Semester Mata Kuliah Basis Data
Disusun Oleh :
1. Fahmi Fahmi Hilm Hilmans ansyah yah (40953 (40953232 232067 0679) 9) 2. Angga Nurdiansyah (409532314998) 3. Pravantio Fazori
(409532315002)
Dosen Pembina Matakuliah : Triyanna Widiyaningtyas, M.T
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PROGRAM STUDI D3 TEKNIK ELEKTRONIKA Desember 2009
Pendahuluan
My SQL merupakan database yang mendukung RDBMS (Relational Database Management System). Sebagai database yang mendukung RDBMS, database ini
terbukti telah
banyak digunakan
dalam
berbagai kebutuhan
pendokumentasian data.. SQL (dibaca "ess-que-el") merupakan kependekan dari Structured Query Language. SQL digunakan untuk berkomunikasi dengan sebuah Database. Sesuai dengan ANSI,SQL merupakan bahasa standar untuk sistem menajemen database relasional. Statemen SQL digunakan untuk melakukan tugastugas seperti melakukan update terhadap database, atau mengambil data dari sebuah database. Beberapa database relasional yang menggunakan SQL adalah: MySQL, Oracle, Sybase, Microsoft SQL Server, Access, Ingres, dan lain-lain. Dalam laporan basis data ini yang paling penting adalah dengan memperbanyak latihan dan mempraktekkan semua yang telah disampaikan. Disini hanya akan diberikan pengenalan tentang sintaks SQL dalam MySQL yang sederhana dan paling sering digunakan baik untuk penggunaan biasa ataupun untuk administratif. SQL terdiri dari beberapa komponen, dua diantaranya yang sangat fundamental
adalah DDL ( Data
Definision
Language)
dan
DML
( Data
Manipulation Language).
A. DDL ( Data Definision Language) DDL menyediakan perintah-perintah untuk mendefinisikan, memodifikasi, dan menghapus skema relasi. Misalnya tabel, view, prosedur, dan fungsi. Contoh perintah DDL adalah : CREATE, ALTER, dan DROP.
B. DML ( Data Manipulation Language ) DML menyediakan perintah-perintah untuk menambah , memodifikasi, menghapus, dan mengambil data didalam Basis data. Contoh perintah DML adalah; INSERT,UPDATE, DELETE, dan SELECT Pada laporan ini studi kasus yang digunakan adalah dengan tema jadwal keberangkatan kereta api di stasiun Surabaya yang terdiri dari Empat tabel. Masingmasing tabel tersebut adalah tabel kereta, tujuan, jadwal dan harga_tiket. Data yang digunakan adalah sebagai berikut :
Tabel kereta
kd_kere nama_kereta ta K011 Mutiara Timur K022 Penataran K041 Komuter K031 Kereta Barang K066 Eksekutif K051 Malang Express K023 Penataran K071 Jaya Baru K067 Eksekutif Tabel tujuan
kd_tujua tujuan n TK01 Malang TK02 Jakarta TK03 Banyuwa ngi TK04 Sidoarjo TK05 Blitar TK06 Madiun Tabel jadwal
kd_jadw al J11 J12 J13 J14 J15 J16 J17
pukul 08.00 09.45 10.15 11.00 13.15 15.45 17.15
Tabel harga_tiket
kd_keret a K011 K022 K023 K041
harga 12.000 5.000 5.000 4.000
kapasita s 200
kd_tujua n TK03
kd_jadw al J13
250 150 0
TK01 TK04 TK06
J12 J14 J11
100 175
TK02 TK01
J13 J11
250 125 100
TK01 TK05 TK01
J16 J15 J17
K051 K066 K067 K071
15.000 75.000 25.000 9.500
Himpunan entitas diatas dapat direpresentasikan ke dalam bentuk diagram skema di bawah ini:
harga_tiket
kereta kd_kereta nama_kereta kapasitas kd_tujuan kd_jadwal
kd_kereta harga(Rp)
tujuan kd_tujuan tujuan
jadwal kd_jadwal pukul
Berikut adalah beberapa sintaks dasar dalam MySQL 1) Membuat database
CREATE DATABASE stasiun ; 2) Menggunakan database
USE stasiun ; 3) Menampilkan database
SHOW DATABASES ;
4) Menghapus database
DROP DATABASE stasiun ; 5) Membuat Tabel
Pada pembuatan tabel ini mengacu pada tabel yang terdapat pada database Stasiun yaitu, tabel kereta, tujuan, jadwal dan harga_tiket. sintaknya adalah :
o Tabel kereta : CREATE TABLE kereta ( kd_kereta VARCHAR(5) NOT NULL, nama_kereta VARCHAR(20) NOT NULL, kapasitas INT(5), kd_tujuan VARCHAR(5) NOT NULL, kd_jadwal VARCHAR(5) NOT NULL, PRIMARY KEY (kd_kereta) ) ;
Simpan dengan nama kereta.sql
o Tabel tujuan : CREATE TABLE tujuan ( kd_tujuan VARCHAR(5) NOT NULL, tujuan VARCHAR(20) NOT NULL, PRIMARY KEY (kd_tujuan) ) ;
Simpan dengan nama tujuan.sql
o Tabel jadwal : CREATE TABLE jadwal ( kd_jadwal VARCHAR(5) NOT NULL, pukul TIME NOT NULL, PRIMARY KEY(kd_jadwal) ) ;
Simpan dengan nama jadwal.sql
o Tabel harga_tiket : CREATE TABLE harga_tiket ( kd_kereta VARCHAR(5) NOT NULL, harga VARCHAR(8), PRIMARY KEY(kd_kereta) ) ;
Simpan dengan nama harga_tiket.sql
6) Mengisi data tabel
o Mengisi data pada tabel kereta
INSERT INTO kereta (kd_kereta,nama_kereta,kapasitas,kd_tujuan,kd_jadwal) VALUES ("K011","Mutiara Timur","200","TK03","J13"), ("K022","Penataran","250","TK01","J12"), ("K041","Komuter","150","TK04","J14"), ("K031","Kereta Barang","0","TK06","J11"), ("K066","Eksekutif","100","TK02","J13"), ("K051","Malang Express","175","TK01","J11"), ("K023","Penataran","250","TK01","J15"), ("K071","Jaya Baru","125","TK05","J15"), ("K067","Eksekutif","100","TK01","J17") ; Simpan dengan nama data_kereta.sql
o Mengisi data pada tabel tujuan INSERT INTO tujuan (kd_tujuan,tujuan) VALUES ("TK01","Malang"), ("TK02","Jakarta"), ("TK03","Banyuwangi"), ("TK04","Sidoarjo"), ("TK05","Blitar"), ("TK06","Madiun") ; Simpan dengan nama data_tujuan.sql
o Mengisi data pada tabel jadwal INSERT INTO jadwal (kd_jadwal,pukul) VALUES ("J11","08:00"), ("J12","09:45"), ("J13","10:15"), ("J14","11:00"), ("J15","13:15"), ("J16","15:45"), ("J17","17:15") ; Simpan dengan nama data_jadwal.sql
o Mengisi data pada tabel harga_tiket INSERT INTO harga_tiket (kd_kereta,harga) VALUES ("K011","12000"), ("K022","5.000"), ("K023","5.000"), ("K041","4.000"), ("K051","15.000"), ("K066","75.000"), ("K067","25.000"), ("K071","95.00") ; Simpan dengan nama data_harga_tiket.sql
*) semua file tersebut di eksekusi dengan cara mengetik sintaks : SOURCE (alamat data ) (nama file) contoh: source D:\basisdata\kereta.sql
untuk menampilkan table yang telah dibuat tadi, menggunakan sintaks: SELECT *FROM [nama_tabel];
C. JOIN
Join dapat diklasifikasikan kedalam dua jenis, yaitu:
Inner Join
Inner join pada dasarnya adalah menemukan persimpangan (intersection) antara dua buah tabel. Contoh sintaks inner join diperlihatkan sebagai berikut: SELECT *FROM kereta INNER JOIN tujuan ON kereta.kd_tujuan = tujuan.kd_tujuan; Simpan dengan nama innerjoin.sql
Outer Join
Outer join dibagi ke dalam tiga jenis: Left, Right, dan Full outer join. Left Outer Join
Contoh sintaks Left Outer Join diperlihatkan sebagai berikut: SELECT *FROM kereta k LEFT OUTER JOIN harga_tiket h ON k.kd_kereta = h.kd_kereta; Simpan dengan nama leftouterjoin.sql
Right outer join
Contoh sintaks Right Outer Join diperlihatkan sebagai berikut: SELECT *FROM kereta k RIGHT OUTER JOIN harga_tiket h ON k.kd_kereta = h.kd_kereta; Simpan dengan nama rightouterjoin.sql
D. SUBQUERY
Subquery adalah salah satu metode untuk mendapatkan informasi dari beberapa tabel dalam database. Arti subquery sendiri adalah query didalam query. jadi untuk mendapatkan informasi pada tabel ataupun relasional tabel yang sangat kompleks kita dapat menggunakan kondisi dengan sub permintaan tertentu. Subquery dapat diklasifikasikan ke dalam tiga jenis yaitu;
Scalar Subquery
Misal scalar subquery terdapat pernyataan berikut:
“ Dapatkan data kereta yang tujuannya sama dengan kereta dengan nama kereta Malang Express “ Sintaks yang digunakan dalam pernyataan diatas adalah : SELECT *FROM kereta WHERE kd_tujuan = (SELECT kd_tujuan FROM kereta WHERE kd_kereta = "K051"); Simpan dengan nama scalar_subquery.sql
Multiple-Row Subquery
Pada subquery ini, kita menggunakan operator komparasi
IN, ANY/SOME
atau ALL Operator IN
Kita bisa menggunakan operator ini untuk mendapatkan data kereta yang mempunyai harga tiket. Sintaks yang digunakan dalam pernyataan ini adalah : SELECT k.kd_kereta, k.nama_kereta FROM kereta k
WHERE k.kd_kereta IN (SELECT kd_kereta FROM harga_tiket); Simpan dengan nama operatorin.sql
Operator ANY/SOME
Operator ANY/SOME memiliki arti: membandingkan suatu nilai dengan setiap nilai yang dikembalikan oleh subquery. Misalkan kita ingin mendapatkan data kereta yang memiliki kapasitas lebih besar dari sembarang kapasitas pada kereta tujuan Malang. SELECT *FROM kereta WHERE kapasitas > ANY (SELECT kapasitas FROM kereta WHERE kd_tujuan = "TK01"); Simpan dengan nama operatorany.sql
Operator ALL
Operator ALL memiliki arti membandingkan suatu nilai dengan semua nilai yang dikembalikan oleh subquery. Misal, tampilkan data kereta yang mempunyai kapasitas lebih kecil dari semua kapasitas penumpang dengan tujuan kereta ke Malang. SELECT *FROM kereta WHERE kapasitas < ALL (SELECT kapasitas FROM kereta WHERE kd_tujuan = "TK01"); Simpan dengan nama operatorall.sql
Multiple-Column Subquery
Pada Multiple-Column Subquery, nilai dari subquery dalam bentuk kolom ganda dikomparasikan dengan query. Misalkan kita ingin menampilkan data kereta yang jadwal keberangkatan sama dengan kereta barang. SELECT *FROM kereta WHERE kd_jadwal IN (SELECT kd_jadwal FROM jadwal WHERE kd_jadwal = "J11"); Simpan dengan nama operatorany.sql
E. STORED PROCEDURE
Stored procedure adalah sebuah prosedur layaknya subprogram (subrutin) di dalam bahasa pemrograman regular yang tersimpan dalam katalog basis data. Misal untuk menciptakan procedure menggunakan perintah : DELIMITER // CREATE PROCEDURE getKereta () BEGIN SELECT *FROM kereta; END // DELIMITER; Simpan dengan nama procedure.sql Untuk memanggilnya menggunakan perintah:
CALL getKereta ();
Dalam implementasi nyata, penggunaan stored procedure sering melibatkan parameter. Di MySQL, parameter stored procedure dibedakan menjadi tiga mode:
IN,OUT, dan INOUT. Parameter IN
Misal, kita ingin mendapatkan semua data kereta di kapasitas penumpang tertentu. DELIMITER // CREATE PROCEDURE penumpang (IN kpts INT(5)) BEGIN SELECT *FROM kereta WHERE kapasitas = kpts; END //
DELIMITER; Simpan dengan nama parameterin.sql
Untuk memanggil stored procedure yang memiliki parameter, maka kita harus menspesifikasikan argumenya. Misalnya kita ingin mendapatkan data kereta dengan kapasitas 175.
Parameter OUT
Misal, kita ingin mendapatkan jumlah seluruh penumpang pada tabel kereta. DELIMITER // CREATE PROCEDURE jumlah_penumpang (OUT total INT(5)) BEGIN SELECT SUM(KAPASITAS) INTO total FROM kereta; END // DELIMITER; Simpan dengan nama parameterout.sql
Untuk memanggil stored procedure dengan parameter OUT, maka kita harus menspesifikasikan argumenya. Lalu langkah selanjutnya, untuk mendapatkan nilai variable dengan menggunakan perintah SELECT.
Parameter INOUT
Pada parameter ini, kita bisa mengirimkan parameter ke stored procedure dan mendapatkan nilai kembalian yang baru. Sebagai contoh kita buat stored procedure seperti berikut : DELIMITER // CREATE PROCEDURE berangkat_pkl (INOUT arg VARCHAR(5)) BEGIN
SELECT COUNT(kd_kereta) INTO arg FROM kereta WHERE kd_jadwal = arg; END // DELIMITER ; Simpan dengan nama parameterinout.sql
Contoh penggunaannya, misal untuk mendapatkan jumlah kereta yang jadwalnya “J13”
F. TRIGGER
Trigger dapat diartikan sebagai himpunan kode (posedural) yang diesksekusi secara otomatis sebagai respon atas suatu kejadian berkaitan dengan tabel basis data. kejadian (event) yang dapat digunakan trigger umumnya berupa pernyataan INSERT, UPDATE dan DELETE. Contoh pernyataan pembuatan Trigger sebagai berikut : DELIMITER // CREATE TRIGGER tambah_kereta BEFORE INSERT ON kereta FOR EACH ROW BEGIN SET NEW.kapasitas = NEW.kapasitas - 10; END // DELIMITER ; Simpan dengan nama trigger.sql
Pernyataan diatas memiliki arti untuk memgurang nilai kapasitas dengan 10 setiap kali ada penambahan data baru. Berikan perintah untuk menambah data baru seperti; INSERT kereta VALUES (“K081”, “Logawa”, “200”, “TK03”, “J16”); Query OK, 1 row affected (0.08 sec)
Periksa hasilnya;