Anda di halaman 1dari 82

MODUL PRAKTIKUM

BASIS DATA

PENYUSUN
TIM LABORAN

FAKULTAS SAINS DAN TEKNOLOGI


UNIVERSITAS ISLAM NEGERI SUMATERA UTARA
MEDAN
2017
MODUL PRAKTIKUM

Mata Kuliah Praktikum : Praktikum Basis Data


Kode Mata Kuliah Praktikum : 010701015
SKS :1
Program Studi : Ilmu Komputer
Semester : 3 (Ganjil)

DISAHKAN OLEH DIPERIKSA OLEH DISUSUN OLEH

DEKAN FAKULTAS KEPALA LABORATORIUM LABORAN LABORATORIUM


SAINS DAN FAKULTAS SAINS DAN
TEKNOLOGI UIN TEKNOLOGI UIN SUMATERA
SUMATERA UTARA UTARA MEDAN :
MEDAN :

Dr. H.M. Jamil, MA Rakhmat Kurniawan R, Ibnu Rusydi, M. Kom


M.Kom

2
KATA PENGANTAR

Assalamu’alaikum warahmatullahi wabarakatuh.


Alhamdulillahirabbil’alamin, Puji syukur kehadirat Allah SWT atas limpahan
rahmat dan karunianya sehingga modul praktikum basis data ini telah dapat diselesaikan.
Modul ini merupakan panduan bagi mahasiswa Program Studi Ilmu Komputer dalam
proses pembelajaran serta memberikan petunjuk praktis agar mahasiswa mendapatkan
gambaran secara jelas dalam melaksanakan praktikum Jaringan Komputer.
Kami mengucapkan terima kasih kepada dosen bidang studi yang telah
memberikan arahan kepada kami sehingga modul ini dapat terselesaikan dengan baik.
Kami juga mengucapkan terima kasih sebanyak-banyaknya kepada tim penyusun yang
sudah ikut berpartisipasi meluangkan waktunya untuk membantu kami.
Kami menyadari masih terdapat kekurangan dalam modul ini untuk itu kritik dan
saran terhadap penyempurnaan modul ini sangat diharapkan. Semoga modul ini dapat
memberi manfaat bagi mahasiswa Program Studi Ilmu Komputer khususnya dan bagi
semua pihak yang membutuhkan.
Akhir kata penulis berharap agar modul ini bermanfaat meningkatkan pemahaman
mahasiswa.
Wassalamu’alaikum warahmatullahi wabarakatuh.

Medan, Januari 2017

Tim Penyusun

3
DAFTAR ISI

COVER ................................................................................................................................. 1
LEMBAR PENGESAHAN .................................................................................................. 2
KATA PENGANTAR .......................................................................................................... 3
DAFTAR ISI ........................................................................................................................ 4

Praktikum 1 : Basic File System............................................................................................ 5


Praktikum 2 : ERD (Entity Relationship Diagram) ............................................................. 13
Praktikum 3 : Functional Dependency ................................................................................ 31
Praktikum 4 : Normalisasi ................................................................................................... 39
Praktikum 5 : Aljabar Relasional......................................................................................... 46
Praktikum 6 : Query Processing .......................................................................................... 56

DAFTAR PUSTAKA ......................................................................................................... 82

4
Praktikum 1 : Basic File System

A. Tujuan
1. Mengetahui jenis dari file dalam basis data
2. Mengetahui propertis dari basis data

B. Teori

Basis data (Database) adalah kumpulan data yang tersimpan secara sistematis didalam
komputer yang dapat diolah dan dimanipulasi menggunakan perangkat lunak untuk
menghasilkan informasi. Basis data (Database) menurut para ahli :
1. Chou (1987), Basis data (database) adalah kumpulan informasi bermanfaat yang
diorganisasikan dalam tata cara khusus.
2. Pabbri dan Schwab (1992), Basis data adalah sistem-sistem berkas terpadu yang
dirancang terutama untuk meminimalkan pengulangan data. Basis data dapat
dianggap sebagai tempat untuk sekumpulan berkas data yang terkomputeriasasi.
Jadi system basis data pada dasarnya adalah system terkomputerisasi yang tujuan
utamanya memelihara informasi dan membuat informasi tersebut tersedia saat
dibutuhkan.
3. Date (1995), Basis data dianggap sebagai tempat sekumpulan berkas
tekomputeriasasi.

Maka dari itu dapat disimpulkan Basis data adalah sekumpulan data yang terintegrasi
yang diorganisasikan untuk memenuhi kebutuhan para pemakai dalam suatu organisasi.
MySQL adalah system managemen database SQL yang bersifat open source dan paling
popular saat ini. Sistem database MySQL mendukung beberapa fitur seperti multithreaded,
multiuser, dan SQL database management sistem (DBMS). Database ini dibuat untuk
keperluan sistem database yang cepat, handal dan mudah digunakan. MySQL mempunyai
kelebihan, diantaranya :

1. Portabilitas. MySQL bisa jalan stabil pada beragam system operasi seperti
Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, serta ada banyak
lagi.
2. Perangkat lunak sumber terbuka (Open Source). MySQL didistribusikan juga
sebagai piranti lunak sumber terbuka, di bawah lisensi GPL hingga bisa dipakai
secara gratis.

5
3. Multi-user. MySQL bisa dipakai oleh sebagian pengguna dalam kurun waktu yang
bersamaan tanpa ada alami permasalahan atau perseteruan.
4. 'Performance tuning', MySQL mempunyai kecepatan yang mengagumkan dalam
mengatasi query simpel, dengan kata lain bisa mengolah semakin banyak SQL per
unit saat.
5. Macam jenis data. MySQL mempunyai macam jenis data yang sangatlah kaya,
seperti signed/unsigned integer, float, double, char, text, date, timestamp, dan
sebagainya.
6. Perintah serta Manfaat. MySQL mempunyai operator serta manfaat secara penuh
yang mensupport perintah Select serta Where dalam perintah (query).
7. Keamanan. MySQL mempunyai sebagian susunan keamanan seperti level
subnetmask, nama host, serta izin akses user dengan system perizinan yang
mendetail dan sandi terenkripsi.
8. Skalabilitas serta Pembatasan. MySQL dapat mengatasi basis data dalam taraf
besar, dengan jumlah rekaman (records) kian lebih 50 juta, 60 ribu tabel dan 5
miliar baris. Diluar itu batas indeks yang bisa ditampung mencapai 32 indeks pada
setiap tabelnya.
9. Konektivitas. MySQL bisa lakukan koneksi dengan client memakai protokol
TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).
10. Lokalisasi. MySQL bisa mendeteksi pesan kekeliruan pada client dengan memakai
lebih dari dua puluh bahasa. Walau juga demikian, bahasa Indonesia belum
termasuk di dalamnya.
11. Antar Muka. MySQL mempunyai antar muka (interface) pada beragam aplikasi
serta bhs pemrograman dengan memakai manfaat API (Application Programming
Interface).
12. Client serta Peralatan. MySQL dilengkapi dengan beragam peralatan (tool) yang
bisa dipakai untuk administrasi basis data, serta pada tiap-tiap peralatan yang ada
diikutkan panduan on-line.
13. Susunan tabel. MySQL mempunyai susunan tabel yang lebih fleksibel dalam
mengatasi ALTER TABLE, dibanding basis data yang lain sejenis PostgreSQL
maupun Oracle.

Tabel adalah kumpulan dari suatu field dan record. Dalam hal ini biasanya field
ditunjukkan dalam bentuk kolom dan record ditunjukkan dalam bentuk baris. Secara
sederhana, kolom dan baris dipakai sebagai tempat untuk menampung data. Database

6
digunakan sebagai tempat menampung suatu atau beberapa table berikut struktur query-
nya.
Operasi tabel adalah suatu aktivitas melakukan pengolahan, perubahan, dan pengaturan
tabel sehingga suatu tabel dapat dioperasikan sesuai dengan ketentuan data. Tabel
digunakan untuk menyimpan data, baik data yang berbentuk angka maupun bentuk huruf
atau karakter.
Aturan dalam penamaan tabel:
- Penggunaan “_” (underscore)
- Penggunaan “karakter” (huruf besar dan huruf kecil)
- Penggunaan “karakter dan angka”
- Penggunaan “karakter, angka dan underscore”

Tipe data adalah jenis data yang mempunyai batasan tempat dan karakteristik sesuai
dengan interprestasi data dan dapat diolah computer untuk memenuhi kebutuhan dalam
pemrograman Komputer.
MySQL (My Structure Query Language) merupakan salah satu DBMS dari sekian banyak
DBMS lain seperti Oracle, MS SQL, PostgresSQL dan banyak lagi. Semuanya
mempunyai fungsi dan manfaat yang hampir sama namun dalam kelebihan dan
kekurangan masing masing. MySQL menggunakan bahasa SQL dan dapat dikatakan
sebagai DBMS. DBMS (Database Manajemen System) merupakan salah satu sistem dalam
mengakses database dengan menggunakan bahasa SQL. MySQL juga merupakan aplikasi
Open source artinya memungkinkan untuk semua orang untuk menggunakan dan
memodifikasi aplikasi tersebut. Sehingga siapapun bisa mendapatkan aplikasi MySQL
secara gratis dan bebas digunakan. Alasan menggunakan MySQL ?
 Database MySQL mempunyai performance sangat cepat, dapat dipercaya
 Reliable,
 MySQL telah banyak menangani pembuatan software besar,
 Bersifat open source,
 Mudah digunakan,
 Dapat dijalankan diberbagai sistem operasi (multiplatform) → Linux, Windows, Mac
OS,
 Server multithread (dapat menangani beberapa permintaan (request) secara
bersamaan),
 Metode enkripsi-nya bagus,
 Menggunakan autentikasi user & password

7
C. Praktikum
1) Instalasi MySQL
Untuk instalasi MySQL lebih mudah bila anda sekalian melakukan instalasi my sql dan
php my admin sekaligus dalam paket xampp . xampp bisa di download di
https://www.apachefriends.org/index.html. Sejak XAMPP 5.5.30 dan 5.6.14, XAMPP
menggunakan MariaDB bukan MySQL. Perintah dan tool nya sama untuk keduanya.
2) Aplikasi Server MySQL
Di dalam MySQL terdapat sebuah database yang ada sejak awal setelah anda menginstal
MySQL, nama database tersebut adalah mysql. Pada database tersebut tersimpan nama-
nama pengguna yang dapat mengakses MySQL secara lengkap dengan opsi otoritas yang
dapat dilakukan oleh pengguna tersebut. Secara default user dengan nama root adalah
pengguna yang menguasai secara utuh dan dapat membuat user lainnya (termasuk
membatasi user– user lain). Untuk dapat menggunakan MySQL anda harus memasukan
user dan password yang sama dengan apa yang dideklarasikan dalam database (MySQL).
Dalam penerapan sistem sebenarnya, MySQL Server dan MySQL Client biasanya
dijalankan pada komputer yang berbeda. Komputer Server berada pada sebuah ruangan
tersendiri dan terhubung melalui jaringan dengan beberapa komputer Client. Namun kali
ini kita akan menjalankan keduanya di dalam sebuah komputer saja. Untuk MySQL
Server, kita telah menjalankannya baik sebagai service dari control panel xammp, atau
manual dengan mysqld.exe .
Dengan MySQL server yang telah berjalan, kita akan mengaksesnya menggunakan
MySQL Client dari Command Promt Windows (selanjutnya akan kita singkat dengan
cmd), menggunakan aplikasi mysql.exe dari folder bin MySQL.
3) Akses MySQL
Untuk mengakses MySQL dengan mode text dari Console (Command Prompt = Microsoft
Windows), dapat dilakukan dengan cara :
a. Buka Command Promp dan berikan perintah (jika MySQL terinstall di direktori
C:\) :

b. Login. Berikan perintah (jika MySQL terinstall di direktori C:\)


 cd c:\xampp\mysql\bin
 login, ketikkan
 mysql -u root –h localhost root -p
 lalu enter, akan muncul perintah enter password: , biarkan kosong lalu tekan enter

8
 username : root
 password : (maksudnya password kosong)
Keterangan :
 -u = root
Opsi ini menunjukkan nama User yang digunakan
 -h = localhost
Opsi ini menunjukkan nama Host/IP (localhost/127.0.0.1)
 -p =
Opsi ini menunjukkan password yang digunakan (jika opsi ini digunakan), jika
tidak menggunakan password maka opsi ini tidak perlu dicantumkan.
Opsi ini juga dapat digunakan untuk mendeklarasikan nama database yang
digunakan.
Jika menggunakan XAMPP di Linux dapat diakses dengan : dnd@namahost:~$
/opt/lampp/bin/mysql –u root
Jika menggunakan XAMPP di Microsoft Windows dapat diakses dengan :
C:\xampp\mysql\bin\
Lalu ketikan mysql –u root –p

c. Keluar dari mysql


mysql> \q
bye

4) Tipe Data
Beberapa tipe data yang disediakan oleh MySQL antara lain :

9
5) Database Relational
Database Relational atau kita sering kita sebut database, merupakan kumpulan dari tabel-
tabel. Sedangkan tabel merupakan kumpulan dari beberapa Field/ baris atau column.
Untuk membuat suatu tabel maka seorang user harus membuat database terlebih dahulu.
Kemudian mengaktifkan database yang dibuat tersebut.

10
D. Tugas Praktikum
a. Apakah instalasi My SQL anda berhasil ? cobalah login ke mysql pada komputer anda
!
b. Buatlah sebuah database dengan nama “Prak_NIM”
c. Operasikan perintah SQL untuk :
i. Membuat database
ii. Melihat seluruh database pada mysql server
iii. Mengakses database/ menggunakan database
iv. Menghapus database
d. Pilih tema dalam perancangan database (ditentukan oleh asisten),
e. Buatlah laporan praktikum dengan ketentuan sebagai berikut :
i. Nama file laporan : PrakDB_Bab1-NIM.odt
ii. Isi file laporan :
1. Source SQL
2. Screenshot CMD

11
3. Tema yang ditentukan
iii. Simpan di directory “PrakDB-NIM” yang telah dibuat tadi

12
Praktikum 2 : ERD (Entity Relationship Diagram)
A. Tujuan
1. Memahami hubungan data
2. Memahami model konseptual dari suatu data

B. Teori
1. ERD (Entity Relationship Diagram)
Menurut salah satu para ahli, Brady dan Loonam (2010), Entity Relationship Diagram
(ERD) merupakan teknik yang digunakan untuk memodelkan kebutuhan data dari suatu
organisasi, biasanya oleh System Analys dalam tahap analisis persyaratan proyek
pengembangan system. Sementara seolah-olah teknik diagram atau alat peraga
memberikan dasar untuk desain database relasional yang mendasari sistem informasi yang
dikembangkan. ERD bersama-sama dengan detail pendukung merupakan model data yang
pada gilirannya digunakan sebagai spesifikasi untuk database.

Atau pengertian sempitnya adalah sebuah konsep yang mendeskripsikan hubungan antara
penyimpanan (database) dan didasarkan pada persepsi dari sebuah dunia nyata yang terdiri
dari sekumpulan objek yaitu disebut sebagai entity dan hubungan atau relasi antar objek-
objek tersebut

13
Selain dari simbol diatas, sebenarnya ada simbol lain lagi yaitu entitas asosiatif, atribut
derivat, dan lainnya. Akan tetapi secara garis besar ERD terdiri dari atas tiga komponen,
yaitu entitas (entity), atribut (attribute), dan relasi atau hubungan (relation). Entitas
merupakan dasar yang terlibat dalam sistem. Atribut atau field berperan sebagai penjelas
dari entitas, dan relasi atau hubungan yang terjadi antara dua entitas.
Dalam pembentukan ERD terdapat 3 komponen yang akan dibentuk yaitu :

 Entitas : Entitas merupakan mengenai basis data yaitu suatu obyek yang dapat
dibedakan dari lainnya yang dapat diwujudkan dalam basis data. Pengertian lainnya
menurut Brady dan Loonam (2010), entitas adalah objek yang menarik di bidang
organisasi yang dimodelkan.
Contoh : Mahasiswa, Kartu Anggota Perpustakaan (KAP), dan Buku.
 Hubungan (relasi/relationship) : Suatu hubungan adalah hubungan antara dua jenis
entitas dan direpresentasikan sebagai garis lurus yang menghubungkan dua entitas.
Contoh : Mahasiswa mendaftar sebagai anggota perpustakaan (KAP), relasinya
adalah mendaftar.
 Atribut : Atribut memberikan informasi lebih rinci tentang jenis entitas. Atribut
memiliki struktur internal berupa tipe data. Jenis-jenis atribut :

14
 Atribut Key = adalah satu atau gabungan dari beberapa atribut yang dapat
membedakan semua baris data ( Row/Record ) dalam tabel secara unik. Dikatakan
unik jika pada atribut yang dijadikan key tidak boleh ada baris data dengan nilai
yang sama.
Contoh : Nomor pokok mahasiswa (NPM), NIM dan nomor pokok lainnya
 Atribut simple = Atribut yang bernilai atomic, tidak dapat dipecah/ dipilah lagi
Contoh : Alamat, penerbit, tahun terbit, judul buku.
 Atribut Multivalue = Nilai dari suatu attribute yang mempunyai lebih dari satu
(multivalue) nilai dari atrribute yang bersangkutan.
Contoh : dari sebuah buku, yaitu terdapat beberapa pengarang.
 Atribut Composite = Atribut composite adalah suatu atribut yang terdiri dari
beberapa atribut yang lebih kecil yang mempunyai arti tertentu yang masih bisah
dipecah lagi atau mempunyai sub attribute.
Contoh : dari entitas nama yaitu nama depan, nama tengah, dan nama belakang
 Atribut Derivatif = Atribut yang tidak harus disimpan dalam database Ex. Total.
atau atribut yang dihasilkan dari atribut lain atau dari suatu relationship. Atribut ini
dilambangkan dengan bentuk oval yang bergaris putus-putus

Contoh Kasus 1:

Pada saat mendaftar menjadi anggota perpustakaan Fakultas, dicatatlah nama, nomor
mahasiswa dan alamat mahasiswa. Setelah itu mereka baru bisa meminjam buku di
perpustakaan. Buku-buku yang dimiliki perpustakaan banyak sekali jumlahnya. Tiap buku
memiliki data nomor buku, judul, pengarang, penerbit, tahun terbit. Satu buku bisa ditulis
oleh beberapa pengarang. Tentukan entitas, atribut dan relasi dari deskripsi di atas, dengan
menggambar ERDnya.

Jawab:

Entitas : Mahasiswa, KAP (Kartu Anggota Perpustakaan), Buku

Atribut : Nama, no.mahasiswa, Alamat mahasiswa, No.buku, Judul, Pengarang, Penerbit


dan tahun terbit.

Relasi : Daftar dan Pinjam

15
Contoh Kasus 2:

Seperti deskripsi soal kasus nomor 1, namun ada beberapa tambahan penjelasan seperti
berikut:
Seorang mahasiswa boleh meminjam beberapa buku. Satu buku boleh dipinjam beberapa
mahasiswa. Semua mahasiswa sangat pelu buku sehingga tidak ada yang tidak pernah
meminjam ke perpustakaan. Setiap peminjam akan dicatat tanggal peminjamannya. Semua
mahasiswa disiplin mengembalikan buku tepat satu minggu setelah peminjaman.
Gambarkan ERDnya.
MODEL ENTITY – RELATIONSHIP
Model Entity Relationship : Suatu penyajian data dengan menggunakan Entity dan
Relationship
Entity :
Objek secara fisik : Buku, Perpustakaan, Mahasiswa

16
Objek secara konsep : Meminjam
Relationship :

Atribut :
 Atribut Multivalue

Derajat dari Relationship :


 Trenary degree (Derajat Tiga)

17
Cardinality Ratio Constraint

 M:N

Participation Constraint

 Partial Participation

Diagram ERD :

18
Contoh Kasus 3 :
Seperti soal nomor 2, namun ada beberapa tambahan penjelasan seperti berikut :
Mahasiswa kadang-kadang terlambat mengembalikan buku, sehingga dikenakan denda.
Besarnya denda adalah Rp 500,- per hari keterlambatan. Mahasiswa dianggap terlambat
jika mengembalikan buku lebih lama dari 1 minggu.
Gambarkan ERDnya:

2. DDL (Data Defenition Language)


 Merupakan perintah SQL yang berkaitan dengan pendefinisian suatu struktur
database, dalam hal ini database dan table.
 Perintah DDL adalah: CREATE, ALTER, RENAME, DROP
C. Praktikum
1) Microsoft Visio 2013
Entity Relationship Diagram (ERD) adalah sebuah diagram yang menunjukkan informasi
yang dibuat, disimpan dan digunakan untuk bisnis. Ada banyak tools yang digunakan
untuk membuat ERD, dan saya akan menjelaskan langkah untuk membuat ERD dengan
menggunakan Microsoft Visio 2013. Berikut adalah dalam membuat entitiy relationship
diagram :
1. Buka aplikasi Microsoft Visio 2013, pada tampilan home akan muncul semua diagram yang
dapat dibuat dengan menggunakan Microsoft Visio

19
2 Jika ingin membuat ERD pilih Crow’s Foot Database Notation

3. Setelah memilih diagram yang ingin dibuat akan muncul page untuk menggambarkan ERD.
1. Bagian kiri tersedia shapes berupa notasi untuk menggambarkan ERD
2. Bagian Tengah merupakan lembar kerja unutk menggambarkan ERD

20
Membuat ENTITY
1. Pilih Entity pada diagram toolbar, drag ke lembar kerja maka akan muncul gambar entity

2. Mengubah
nama entitas dengan cara klik kanan > Edit Text. Atau dengan cara klik 2x pada bagian
entitas name

Membuat Primary Key dan Foreign Key

21
1. Mengubah attribute menjadi Primary Key, pilih attribute yang ingin dijadikan primary
key klik kanan > Set Primary Key , pastikan bahwa Set Primary Key sudah tercentang

2. Mengubah
attribute menjadi Foreign Key, pilih attribute yang ingin dijadikan foreign key klik kanan > Set
Foreign Key, pastikan bahwa Set Foreign Key sudah tercentang

3. Membuat Attribute menjadi


Foreign Key dan Primary Key sekaligus, pilih attribute klik kanan > Set Primary Key lalu klik
kanan > Set Foreign Key, pastikan bahwa Set Primary Key dan Set Foreign Key nya sudah
tercentang

22
4. Menambahkan Primary Key setelah
atau sebelum attribute yang diinginkan, klik pada attribute yang mau diinsert, klik kanan >
Set ‘Primary Key Attribute’ Before atau klik kanan > Set ‘Primary Key Attribute’ After

Menambahkan Data Type

1. Menapilkan data type untuk ERD. Klik pada entity yang ingin di tampilkan data
typenya, klik kanan > Show Attribute Type

23
2. Mengubah data type. Klik pada data type yang ingin diubah, klik kanan > edit text

Membuat Relationship dan Cardinality

1. Pilih relationship pada diagram toolbar, drag dan letakkan pada entity yang ingin diberi
relationship hingga muncul kotak hijau.

2.
Mengubah Cardinality. Pilih Cardinality yang ingin diganti, klik kanan lalu pilih Set Begin
Symbol atau Set End Symbol. Lalu pilih Cardinality yang diinginkan (Zero or More, 1 or
More, 1 and only 1, Zero or 1)

24
3.
Begin Symbol merupakan symbol yang untuk yang entitas yang pertama di letakkan
relationshipnya atau ditandai dengan lingkaran hijau, End symbol Cardinality berikutnya

2) MySQL
Setelah menciptakan suatu database dan mengaktifkan database tersebut maka dapat
dilakukan perintah pembuatan tabel.
a. Create Table
 Perintahnya :
Create Table Nama_Table (Nama_Field_1 Tipe_Data (Size),
Nama_Field_2 Tipe_Data (Size));
 Contoh : mysql > Create Table Mahasiswa (NIM char(11), Nama
varchar(40), Alamat varchar(100));

25
b. Melihat Table dan Struktur Table
Untuk melihat seluruh table yang telah dibuat sebelumnya, (Dengan syarat :
sudah berada di database yang mempunyai table tersebut).
 perintahnya :
mysql > Show Tables;

Sedangkan untuk melihat struktur dari masing-masing tabel,


 perintahnya :
Desc/Describe Nama_Table ;

 Contoh :
mysql > Desc Mahasiswa;

c. ALTER TABLE (Merubah Struktur Table)


Ada empat macam perubahan yang dapat dilakukan terhadap struktur tabel, yaitu
:
1. Perubahan terhadap nama field/kolom
2. Perubahan terhadap tipe data
3. Penambahan field
4. Penghapusan field

1. Merubah Nama Field

26
Perubahan yang terjadi hanya pada nama field/kolom saja. Nama field/kolom
lama diganti dengan nama field/kolom yang baru. Untuk merubah nama field
tersebut dapat digunakan perintah Change.
 Perintahnya :
Alter Table Nama_Table Change Nama_Field_Lama
Nama_Field_Baru Tipe_Data (Size);
 Contoh :
mysql > Alter Table Mahasiswa
Change Nama Nama_Mhs Char (40);

2. Merubah Tipe Data


Perubahan yang terjadi hanya pada tipe data yang digunakan oleh
field/kolom tertentu. Tipe data baru langsung disebutkan di belakang nama
field/kolom, tanpa harus menyebutkan tipe data lama. Untuk merubah tipe
data tersebut digunakan perintah Modify.
 Perintahnya :
Alter Table Nama_Table
Modify Nama_Field Tipe_Data_Baru (Size);
 Contoh :
mysql > Alter Table Mahasiswa Modify NIM Char (8);

27
3. Menambah Field
Struktur tabel akan berubah dengan bertambahnya field/kolom baru di
dalamnya. Untuk menambahkan field baru dapat digunakan perintah Add.
 Perintahnya :
Alter Table Nama_Table
Add Nama_Field_Baru Tipe_Data (Size);
 Contoh :
mysql > Alter Table Mahasiswa Add Fakultas Varchar(30);

4. Menghapus Field

28
Struktur tabel dapat mengalami perubahan karena berkurangnya
field/kolom tertentu. Untuk menghapus file dalam suatu table tersebut dapat
dilakukan dengan perintah Drop Column.
 Perintahnya :
Alter Table Nama_Table Drop Column Nama_Field;
 Contoh :
mysql > Alter Table Mahasiswa Drop Column Fakultas;

d. DROP TABLE (Menghapus Table)


Jika table yang dibuat tadi sudah tidak dibutuhkan, table bisa dihapus. Sehingga
ingin menghapusnya maka dapat digunakan perintah Drop Table.
 Perintahnya :
Drop Table Nama_Table;

 Contoh :
mysql > Drop Table Mhs;

29
D. Tugas Praktikum
1. Buatlah ERD untuk kasus quiz online (seperti quiz online Basis data / Pemrograman).
Dosen membuat soal yang kemudian akan dikerjakan oleh mahasiswa secara online.
Gambarkan ERD dengan menggunakan Microsoft Visio.
2. Di dalam database “Order Entry” yang telah anda buat pada praktikum sebelumnya.
Untuk nim ganjil gunakan tabel customer,orderitems,order Operasikan salah satu tabel
dengan perintah SQLberikut ini :
i. Perubahan terhadap nama field/kolom
ii. Perubahan terhadap tipe data
iii. Penambahan field
iv. Penghapusan field
3. Buatlah tabel baru dengan nama contact_customer

Kemudian hapus table tersebut jika telah berhasil anda buat, jangan lupa menyimpan
snapshot cmd nya.
4. Buatlah laporan praktikum dengan ketentuan sebagai berikut :
a. Nama file laporan : PrakDB_Bab4-NIM.odt
b. Isi file laporan :
i. Source SSQL
ii. Screenshot CMD
b. Simpan di directory “PrakDB-NIM”.

30
Praktikum 3 : Functional Dependency

A. Tujuan
1. Mahasiswa memahami konsep functional dependency
2. Mahasiswa memahami sintaks yang termasuk ke dalam DML (data manipulation
language)

B. Teori
1. Functional Dependency
Functional Dependency (ketergantungan Fungsional) biasanya disebut dengan singkatan
FD, fungsi dari FD sendiri adalah menggambarkan relationship atau hubungan, batasan,
serta keterkaitan antara atribut-atribut dalam relasi. Suatu atribut dikatakan sebagai FD
pada atribut yang lain jika harga dalam atribut tersebut digunakan akan menentukan
atribut yang lain.
Simbol  mewakili bentuk FD dengan cara pembacaan “secara fungsional menentukan”.
Contoh:
A  B, ini berarti bahwa A dan B atribut dari tabel. Secara fungsional A menentukan B
atau B tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A sama, maka
nilai B juaga sama. Dalam sebuah tabel dapat digambarkan sebagai berikut.

Contoh 1
Tabel Pemasok
No_Pemasok Nama_Pemasok
P01 Imam
P02 Septi
P03 Hana

FD dari tabel Tabel Pemasok adalah


No_PemasokNama_Pemasok

Contoh 2
Nilai
Matakuliah NIM NamaMhs NilaiHuruf
Struktur Data 5309998 Sefriani Nurrahilah A
Struktur Data 5309991 Supai A

31
SBD 5309992 Samina B
PBO 5309991 Sembada AB

FD dari tabel Nilai adalah


- NIMNamaMhs
- {Matakuliah,NIM}NilaiHuruf
Hal ini dikarenakan atribut NilaiHuruf tergantung pada matakuliah dan NIM. Jika
Matakuliah dan NIM yang sama, maka Nilai Huruf juga sama.

Macam-macam Dependency Functional dependency

1. Full functonal dependency


Menunjukan jika terdapat atribut A dan B dalam suatu relasi, dimana:
- B memiliki ketergantungan fungsional secara penuh pada A,
- B bukan memiliki dependensi terhadap subset A.

Contoh 1
NIM Nama Ipk idRuang Dosen
5309991 Setia 3.4 221 Suharjo
5309994 Sepya 3.2 201 Santi
5309996 Sela 3.7 110 Sefa

{NIM,nama}idRuang bukan Full Dependency


Jika nama dihilangkan, maka NIMidRunga bisa Full dependency

Contoh 2
No_Dosen Nama Jk Pendidikan Th_Lulus
S12 Tri Supriati Wanita S1 2008
S32 Yusuf Widodo Pria S2 2006
S42 Suci Lasmini Wanita S1 2010

{No_Dosen,Pendidikan}Th_Lulus
B tidak memiliki dependensi terhadap subset A.

2. Partially dependency

32
Merupakan ketergantungan fungsional, dimana beberapa atribut dapat dihilangkan dari A
dengan tidak menghilangkan ketergantungan.
B memiliki dependensi terhadap subset A.

Contoh
NIM Nama Ipk idRuang Dosen
5309991 Setia 3.4 221 Suharjo
5309994 Sepya 3.2 201 Santi
5309996 Sela 3.7 110 Sefa

NIM,NamaidRuang
Jika Nama dihilangkan, ketergantungan masih ada.

3. Transitive dependency
Merupakan tipe FD, dimana kondisi A,B,C adalah atribut sebuah relasi dimana AB dan
BC (C dikatakan sebagai transitive dependency terhadap A melalui B).

Contoh
Nip Nama Jabatan Gaji(jt) kdCabang almCabang
1112 Selama Supervisor 7 05 Banjarnegara
1121 Sena Supervisor 7 01 Semarang
1122 Senja Quality Control 10 01 Wonosobo
Nip{Nama,Jabatan,Gaji,kdCabang,almCabang}
kdCabangalmCabang

2. DML (Data Manipulation Language)


 Merupakan perintah SQL yang berkaitan dengan manipulasi atau pengolahan data
atau record dalam table.
 Perintah DML antara lain: SELECT, INSERT, UPDATE, DELETE.

C. Praktikum
1) Insert Table
Insert merupakan perintah yang dapat digunakan untuk melakukan input data ke
dalam tabel

33
yang sudah ada.
 Perintahnya :
Insert Into Nama_Table Values (
Isi_Field_1, Isi_Field_2, … , Isi_Field_N) ;
 Atau dengan perintah :
Insert Into Nama_Table (
Nama_Field_1, Nama_Field_2, … , Nama_Field_N)
Values
(Isi_Field_1, Isi_Field_2, … , Isi_Field_N) ;
 Contoh penggunaan pada skema order entry
mysql> Insert Into Mahasiswa Values (,'05052652','Paijo',
'Jalan Wates km 11');

Contoh dengan sintaks lain

Untuk memperlancar entry data , isikan table customer sehingga datanya terisi
seperti dibawah ini

2) Query Sederhana
Select merupakan perintah yang dapat digunakan untuk :
 Menampilkan data secara keseluruhan yang terdapat di dalam table.
 Menampilkan data tertentu yang terdapat di dalam table.
 Menampilkan dan mengurutkan data secara ascending dan descending

a. Menampilkan Data Secara Keseluruhan


Jika ingin menampilkan data data secara keseluruhan yang terdapat di dalam
table, misalnya table Mhs_2 secara keseluruhan.

34
 Perintahnya:
Select * from Nama_Table;

 Contoh:
mysql> Select * From Mahasiwa;

b. Menampilkan Kolom Data Tertentu


Jika hanya ingin menampilkan beberapa field tertentu dalam suatu table.
Misalkan dari data yang terdapat pada tabel Mahasiswa yang mempunyai Field
(NIM, Nama_Mhs, Alamat) dan hanya akan menapilkan NIM dan Nama_Mhs.
 Perintahnya :
Select Nama_Field_1, … , Nama_Field_N From Nama_Table;

 Contoh :
mysql> Select NIM, Nama_Mhs From Mahasiswa;

c. Menampilkan Baris Data Tertentu


Jika hanya ingin menampilkan beberapa baris tertentu dalam suatu table.
Misalkan dari data yang terdapat pada tabel Mahasiswa ingin menampilkan baris
tertentu maka akan ditambahkan kondisi pada clause setelah where.
 Perintahnya :
Select * from Nama_Table where Kondisi;

 Contoh :
mysql> Select NIM, Nama_Mhs From Mahasiwa Where Nim=05052652;

3) Update Table

35
Update merupakan perintah yang dapat digunakan untuk melakukan perubahan
terhadap data yang sudah ada/dibuat. Latihan setelah sub bab ini kita gunakan
skema order entry
 Perintahnya :
Update Nama_Table Set Nama_Field = 'Data_Baru'
Where Nama_Field_Key = 'Data_Key';

 Contoh :
mysql> Update customers Set cust_address = 'Gejayan
Yogya',cust_country=‟INA‟
Where cust_id='10002';

4) Delete Table
Delete merupakan perintah yang dapat digunakan untuk menghapus data yang
terdapat di dalam tabel.
 Perintahnya :
Delete From Nama_Table Where Nama_Field_Key;

 Contoh :
mysql> Delete From Mhs_2 Where ID='5';

5) Query dengan Kondisi


Query dengan perbandingan kondisi bentuk umumnya adalah sbb :

Select * from Nama_Table where Kondisi;

Pada bagian kondisi bisa diberikan berbagai value misalnya salah satunya dengan
beberapa operator relasional

 Operator Relasional
Operator relasional merupakan operator yang digunakan untuk
membandingkan antara dua buah nilai dalam suatu table.

36
Perintahnya :
Select * From Nama_Table
Where Nama_Field [Operator Relasional] Ketentuan;

Contoh :
select * from customer where cust_id = „10003‟ or cust_name =‟wascals;

Artinya menampilkan data customer yang mempunya id 10003 atau namanya


wascals.

select prod_name from products where prod_price >=20 ;

artinya menampilkan data barang barang yang harganya lebih dari 20.

Bisa dicoba untuk query dengan berbagai kondisi yang lain. Silahkan tanya
asisten untuk lebih lanjut.

D. Tugas Praktikum

37
38
Praktikum 4 : Normalisasi

A. Tujuan
Mahasiswa mampu memahami defenisi dan tujuan normalisasi

B. Teori
1. Defenisi Normalisasi
Normalisasi adalah suatu teknik untuk mengorganisasi data ke dalam tabel-tabel
untuk memenuhi kebutuhan pemakai di dalam suatu organisasi.

2. Tujuan Normalisasi
 Untuk menghilangkan kerangkapan data
 Untuk mengurangi kompleksitas
 Untuk mempermudah pemodifikasian data

3. Proses Normalisasi
 Data diuraikan dalam bentuk tabel, selanjutnya dianalisis berdasarkan
persyaratan tertentu ke beberapa tingkat.
 Apabila tabel yang diuji belum memenuhi persyaratan tertentu, maka tabel
tersebut perlu dipecah menjadi beberapa tabel yang lebih sederhana sampai
memenuhi bentuk yang optimal.

4. Tahapan Normalisasi

39
a. Bentuk Normal Kesatu (1NF)
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kesatu bila setiap data
bersifat atomik yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai
data

40
b. Bentuk Normal Kedua (2NF)
Suatu relasi dikatakan sudah memenuhi Bentuk Normal Kedua bila relasi
tersebut sudah memenuhi bentuk Normal kesatu, dan atribut yang bukan key
sudah tergantung penuh terhadap keynya.

c. Bentuk Normal Ketiga (3NF)

41
Suatu relasi dikatakan sudah memenuhi Bentuk Normal ketiga bila relasi
tersebut sudah memenuhi bentuk Normal kedua dan atribut yang bukan key
tidak tergantung transitif terhadap keynya.

C. Praktikum
Normalisasi pada database perkuliahan
Asumsi :
 Seorang mahasiswa dapat mengambil beberapa mata kuliah ‰
 Satu mata kuliah dapat diambil oleh lebih dari satu mahasiswa ‰
 Satu mata kuliah hanya diajarkan oleh satu dosen ‰
 Satu dosen dapat mengajar beberapa mata kuliah ‰
 Seorang mahasiswa pada mata kuliah tertentu hanya mempunyai satu nilai

42
43
D. Tugas Praktikum
Studi Kasus

44
45
Praktikum 5 : Aljabar Relasional

A. Tujuan
Mahasiswa mampu memahami konsep aljabar relasional dan sintaks-sintaks dasar
dalam basis data

B. Teori
Relational Algebra (aljabar relasional) merupakan kumpulan operasi terhadap relasi
dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi
yang baru dan termasuk kategori prosedural dan juga menyediakan seperangkat operator
untuk memanipulasi data.

Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karena
bahasa berdasar sejumlah operator yang beroperasi pada relasi – relasi (tabel – tabel).
Masing –masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi –
relasi lain sebagai hasil. Query adalah sekedar ekspresi yang melibatkan operator –
operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap query.
SQL adalah bahasa yang deklaratif yang berarti tidak menspesifikasikan algoritma yang
digunakan untuk pengolahan query. Ekspresi relasional dapat dipandang sebagai
spesifikasi algoritma (meskipun dalam level lebih tinggi dibanding algoritma untuk bahasa
pemrograman konvensional). Pemrogram menggunakan query SQL, DBMS menggunakan
aljabar relasional sebagai bahasa antara dalam spesifikasi algoritma query. Langkah –
langkah dalam DBMS untuk pengolahan query adalah:
1. DBMS melakukan parsing terhadap string dari query SQL dan menerjemahkannya
menjadi ekspresi aljabar relasional yang dapat menuntun kedalam algoritma sederhana
yang tidak efisien.
2. Setelah itu, bagian query optimizer mengkonversi ekspresi aljabar relasional ini
menjadi ekspresi lain yang ekvivalen nemun lebih efisien untuk dieksekusi.
3. Berdasarkan ekpresi aljabar relasional yang telah dioptimasi, query optimizer
mempesiapkan rencana eksekusi query (query execution plan) yang kemudian
ditransformasikan menjadi kode yang dapat dieksekusi pembangkit kode di DBMS.

46
4. Karena ekspresi aljabar mempunyai semantik matematika yang presisi maka sistem
dapat memferifikasi ekvivalensi ekspresi yang dioptimasi yang dihasilkan dari
manipulasi ekpresi asal. Semantiks ini juga memungkinkan pembandingan rencana –
rencana evaluasi query yang berbeda.

C. Praktikum
Operasi Aljabar Relasional Untuk mengimplementasikan kedalam operasi aljabar
relasional, berikut ini diberikan relasi–relasi dari database Penjadwalan_mengajar_dosen.
Relasi – relasi tersebut meliputi:

Tabel Dosen

Tabel Matakuliah

47
Tabel Jurusan

Tabel Mengajar

Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karena
bahasa berdasar sejumlah operator yang beroperasi pada relasi – relasi (tabel – tabel).
Masing –masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi –
relasi lain sebagai hasil. Query adalah sekedar ekspresi yang melibatkan operator –
operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap query.

1. Operasi Selection ( σ )

48
Selection / Select (σ ), adalah operasi untuk menyeleksi tupel – tupel yang memenuhi suatu
predikat, kita dapat menggunakan operator perbandingan (<,>,>=,<=,=,#) pada predikat.
Beberapa predikat dapat dikombinasikan menjadi predikat majemuk menggunakan
penghubung AND ( ∧ ) dan OR ( ∨ ).
Contoh operasi Select:
Query : Tampilkan daftar dosen yang tempat lahirnya di „Bekasi‟.
Aljabar relasional: σtempat_lhr=‟Bekasi‟ (Dosen)

2. Operasi Projection ( π )
Projection / Project ( π ), adalah operasi untuk memperoleh kolom – kolom tertentu.
Operasi project adalah operasi unary yang mengirim relasi argumen dengan kolom –
kolom tertentu. Karena relasi adalah himpunan, maka baris – baris duplikasi dihilangkan.
Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut : π
colum1,…,column ( tabel)
Contoh operasi Project:
Query : Tampilkan nid,nama_dosen,alamat,kota dari relasi Dosen
Aljabar relasional: π nid,nama_d,alamat,kota (Dosen)

3. Operasi Cartesian-Product ( X )
Cartesian-product ( X ), adalah operasi untuk menghasilkan table hasil perkalian kartesian.
Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :

R X S = {(x,y) | x ϵ R dan y ϵ S}

49
Operasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa
relasi, operasi ini adalah operasi biner. Sebagaimana telah dinyatakan bahwa relasi adalah
subset hasil cartesian-product dan himpunan domain relasi – relasi tersebut. Kita harus
memilih atribut – atribut untuk relasi yang dihasilkan dari cartesian-product.
Contoh operasi Cartesian-product:
Query : Tampilkan nid, nama_dosen (dari relasi Dosen), nama_mk (dari relasi
Matakuliah), thn_akademik, smt, hari, jam_ke, waktu,kelas (dari relasi Mengajar) dimana
semester mengajar adalah pada semester „1‟.
Aljabar relasional: π nid, nama_dosen, nama_mk, thn_akademik, smt, hari, jam_ke, waktu,
kelas (σ smt=1 ∧ Dosen.nid = Mengajar.nid ∧ Mengajar.kdmk = Matakuliah.kdmk (Dosen
x Matakuliah x Mengajar))

4. Operasi Union (∪),


Union adalah operasi untuk menghasilkan gabungan table degan syarat kedua table
memiliki atribut yang sama, yaitu domain atribut ke-i masing – masing table harus sama.
Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :

R ∪ S = {x | x ϵ R atau X ϵ S}

Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang sama sehingga
jumlah komponennya sama.

50
Query : Tampilkan nid (dari relasi Dosen) Union dari nid (dari relasi Mengajar) .
Aljabar relasional: π nid (Dosen) ∪ nid (Mengajar)

5. Set-difference ( --- )
Set-difference ( -- ), adalah operasi untuk mendapatkan table pada suatu relasi, tapi tidak
ada pada relasi yang lainnya. Sintaks yang digunakan dalam operasi union ini adalah
sebagai berikut :

R – S = { x | x ϵ R dan X ϵ S}

Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang tidak sama yang
akan ditampilkan, artinya adalah atribut R yang tidak ada di S akan ditampilkan,
sedangkan atribut yang sama tidak ditampilkan.
Query : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar).
Aljabar relasional: π nid (Dosen) -- nid (Mengajar)

51
6. Rename (ρ)
Rename (ρ), adalah operasi untuk menyalin table lama kedalam table yang baru. Sintaks
yang digunakan dalam operasi union ini adalah sebagai berikut :

ρ [nama_table] (table_lama)

Query : Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis
kelaminnya adalah „Pria‟.
Aljabar relasional: ρ DosenNew (σ jkelamin=‟Pria‟) (Dosen))

Untuk operasi rename ini hasil dari perintah tersebut adalah membentuk table baru dengan
nama DosenNew beserta datanya dimana jenis kelaminnya adalah „Pria‟

7. Set-Intersection (∩)
Set-intersection / Intersection (∩) termasuk kedalam operator tambahan, karena operator
ini dapat diderivikasi dari operator dasar seperti berikut: A ∩ B =A - (A– B ), atauA ∩ B =
B - ( B –A) Operasi ini merupakan operasi binary, yang digunakan untuk membentuk
sebuah relasi baru dengan tuple yang berasal dari kedua relasi yang dihubungkan,
misalkan:

52
Query : Tampilkan nid (dari relasi Dosen) Setintersection dari nid (dari relasi Mengajar).
Aljabar relasional: π nid (Dosen) ∩ nid (Mengajar)

8. Theta-join (θ) / Equi-join (⋈)


Theta-join ( ) dan equi-join adalah operasi untuk menggabungkan operasi selection dan
cartesian-product dengan suatu kriteria
Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar
Aljabar relasional: Matakuliah ⋈ Mengajar.kdmk=Matakuliah.kdmk Mengajar

9. Natural-join (⋈)
Natural-join (⋈) sama seperti operasi equi-join adalah operasi untuk menggabungkan
operasi selection dan Cartesian-Product dengan suatu kriteria pada kolom yang sama.
Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar
Aljabar relasional: Matakuliah ⋈ Mengajar.kdmk=Matakuliah.kdmk Mengajar

53
10. Outer-join ( )
Outer-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product
dengan suatu kriteria pada kolom yang sama.
Query : Tampilkan nid_nama_d (dari relasi Dosen) dan thn_akademik, smt, hari, jam_ke,
waktu (dari relasi Mengajar) dengan outer join, artinya adalah pada kolom nid, nama_d
pada relasi Dosen akan ditampilkan walaupun dosen tersebut tidak melakukan transaksi
mengajar.
Aljabar relasional: π nid, nama_d (Dosen) π thn_akademik, smt, hari, jam_ke,waktu
(Mengajar)

11. Devision (÷)


Devision (÷) adalah operasi yang banyak digunakan dlam query yang mencakup frase
“setiap” atau “untuk semua”, operasi ini juga merupakan pembagian atas tuple – tuple dari
dua relasi.
Query : Tampilkan nid, hari, waktu (dari relasi Mengajar) dan nid (dari relasi Dosen)
dimana dosen yang jenis kelaminnya „Pria‟ dan lakukan devision pada kedua relasi
tersebut.

54
Aljabar relasional: π nid,hari,waktu (Mengajar)) † (π nid (σ jkelamin=‟Pria‟ (Dosen)))

D. Tugas Praktikum
1. Berdasarkan Tabel – Tabel Tugas Praktikum Kasus 2 pada Praktikum 4 buatlah
sebuah query untuk masing masing :
a. join 2 table clause where
b. Query dengan join on dari 3 table
c. Natural join
d. Outer join
e. Theta Join
2. Buatlah laporan praktikum dengan ketentuan sebagai berikut :
a. Nama file laporan : PrakDB_Bab8-NIM.odt
b. Isi file laporan :
i. Source SSQL
ii. Screenshot CMD
b. Simpan di directory “PrakDB-NIM” .

55
Praktikum 6 : Query Processing

A. Tujuan
Mahasiswa mampu menjelaskan konsep pemrosesan query

B. Teori
Database Manajemen Sistem (DBMS) adalah kumpulan dari program-program yang
membolehkan user untuk menciptakan dan memelihara sebuah database. DBMS sudah
menjadi peralatan standar untuk melindungi pengguna komputer dari bagian-bagian kecil
dalam pengelolaan secondary storage (harddisk). DBMS didesain untuk meningkatkan
produktivitas dari aplikasi para programmer dan untuk memberikan kemudahan
pengaksesan data oleh komputer.
Pengaksesan data di dalam DBMS dapat dilakukan dengan berbagai macam cara. Dan
tentunya dalam melakukan pengaksesan data ada hal-hal yang perlu diperhatikan seperti
ketepatgunaan implementasi dari data itu sendiri serta waktu prosesnya. Ada banyak plan
(rencana) yang dapat diikuti oleh database manajemen sistem dalam memproses dan
menghasilkan jawaban sebuah query. Semua plan pada akhirnya akan menghasilkan
jawaban (output) yang sama tetapi pasti mempunyai harga yang berbeda-beda, seperti
misalnya total waktu yang diperlukan untuk menjalankan sebuah query.
Optimisasi query mencoba memberikan suatu pemecahan untuk menangani masalah
tersebut dengan cara menggabungkan sejumlah besar teknik-teknik dan strategi, yang
meliputi transformasi-transformasi logika dari query-query untuk mengoptimisasi jalan
akses dan penyimpanan data pada sistem file. Setelah ditransformasikan, sebuah query
harus dipetakan ke dalam sebuah urut-urutan operasi untuk menghasilkan data-data yang
diminta.

56
Gambar 1. Tahapan proses sebuah query

Sebuah query yang diekspresikan dalam sebuah bahasa query tingkat tinggi seperti SQL
mula-mula harus dibaca, diuraikan dan disahkan (scanning, parsing, validating). Query
tersebut kemudian dibentuk menjadi sebuah struktur data yang biasa disebut dengan query
tree. Dan kemudian DBMS (Database Manajemen Sistem) harus merencanakan sebuah
strategi eksekusi untuk mendapatkan kembali hasil dari query dari file-file database.
Tahapan-tahapan proses dari sebuah query di dalam sebuah sistem database ditunjukkan
pada gambar 1. Berikut penjelasan dari masing-masing tahapan :
 Scanner melakukan identifikasi (pengenalan) token-token seperti SQL keywords,
attribute, dan relation name. Proses ini disebut dengan scanning.
 Query Parser mengecek kevalidan query dan kemudian menterjemahkannya ke
dalam sebuah bentuk internal yaitu ekspresi relasi aljabar atau parse tree. Proses ini
disebut dengan parsing.
 Query Optimizer memeriksa semua ekspresi-ekspresi aljabar yang sama untuk
query yang diberikan dan memilih salah satu dari ekspresi tersebut yang terbaik

57
yang memiliki perkiraan termurah. Dengan kata lain, tugas dari query optimizer
adalah menghasilkan sebuah rencana eksekusi. Proses ini disebut dengan
optimisasi query.
 Code Generator atau Interpreter mentransformasikan rencana akses yang
dihasilkan oleh optimizer ke dalam kode-kode. Setelah itu, kode-kode tersebut
dikirimkan ke dalam query processor untuk dijalankan.
 Query Processor melakukan eksekusi query untuk mendapatkan hasil query yang
diinginkan.
Bagian yang diarsir pada gambar 1 adalah merupakan komponen utama yang berperan
penting dalam proses optimisasi query yang menjadi topik utama dari seluruh pembahasan
ini.
Alasan dibahasnya tahapan proses query pada gambar 1 adalah sematamata untuk
memberikan gambaran yang jelas tentang bagaimana pada umumnya sebuah query
diproses di dalam sebuah Database Manajemen Sistem (DBMS).

Pengenalan Tentang Query


Sebuah query adalah sebuah ekspresi bahasa yang menggambarkan data yang akan
didapatkan kembali dari sebuah database. Dalam hubungannya dengan optimisasi query,
seringkali diasumsikan bahwa query-query tersebut dinyatakan dalam sebuah dasar-dasar
isi dan sekumpulan cara orientasi, yang memberikan optimizer pilihan-pilihan diantara
alternatif prosedur-prosedur evaluasi.
Query dapat digunakan pada beberapa keadaan. Kebanyakan aplikasi nyatanya adalah
permintaan-permintaan secara langsung dari user yang memerlukan informasi tentang
bentuk maupun isi dari database. Apabila permintaan user terbatas pada sekumpulan
query-query standar, maka query-query tersebut dapat dioptimisasi secara manual oleh
pemrograman prosedur-prosedur pencarian gabungan dan membatasi input dari user pada
sebuah ukuran menu. Tetapi bagaimanapun juga, sebuah sistem optimisasi query otomatis
menjadi penting apabila query-query khusus ditanyakan dengan menggunakan bahasa
query yang digunakan secara umum seperti SQL.
Aplikasi yang kedua dari query terjadi pada transaksi-transaksi yang mengubah data yang
disimpan berdasarkan nilainya saat itu. Pada akhirnya, query seperti ekspresi-ekspresi
dapat digunakan secara internal dalam sebuah DBMS, sebagai contoh adalah untuk
mengecek kebenaran akses dan menyamakan kebenaran akses-akses yang terjadi.
Membicarakan tentang query, sangat erat hubungannya dengan cara penulisan query
tersebut ke dalam sebuah bentuk bahasa yang mudah dimengerti. Pada umumnya, bahasa

58
query yang digunakan untuk mengekspresikan sebuah pernyataan dari query adalah SQL
(Structure Query Language).
SQL adalah sebuah bahasa database yang luas yang memiliki statement- statement
(pernyataan) untuk definisi data, query dan update data (memperbaharui data). SQL
mempunyai satu statement dasar untuk mendapatkan kembali informasi dari sebuah
database. Statement dasar dari SQL adalah SELECT.
Bentuk dasar dari statement SELECT biasa disebut dengan blok select from where yang
terbentuk dari tiga macam klausa yaitu SELECT, FROM dan WHERE yang mempunyai
bentuk sebagai berikut :
SELECT <daftar Attribute>
FROM
<daftar Tabel>
WHERE <kondisi>
Dimana <daftar attribute> adalah sebuah daftar dari nama-nama attribute yang nilai-
nilainya didapatkan oleh query. Sedangkan <daftar tabel> adalah sebuah daftar dari nama-
nama relasi yang diperlukan oleh proses sebuah query. <kondisi> adalah sebuah kondisi
ekspresi boolean yang mengidentifikasikan tuple-tuple yang akan dikembalikan oleh
query.
Selanjutnya, statement Select-From-Where akan selalu digunakan dalam pembahasan
mengenai proses dan teknik optimisasi query nanti dengan tujuan untuk lebih
memudahkan pemahaman tentang proses dan teknik optimisasi query karena statement
tersebut merupakan statement dasar yang mudah dimengerti dan umum digunakan.

Hubungan Database Dengan Pemrosesan Query


Database adalah kumpulan dari data-data yang berhubungan satu sama lainnya yang
digunakan untuk pencarian suatu data tertentu pada saat SQL query dijalankan. Sebuah
database dirancang, dibuat dan ditempati oleh data dengan tujuan tertentu. Di dalam sistem
database relasional, tabel-tabel dari database saling berhubungan satu sama lainnya. Dan
sebuah tabel database akan selalu memiliki attribute names (nama-nama attribute),
relation names (nama-nama relasi), dan tuples (record-record).
Untuk lebih jelasnya, pada gambar 2 diberikan sebuah tabel database yang lengkap
dengan attribute, relation name dan tuples.

59
Gambar 2. Attributes dan tuples dari relasi STUDENT

Attribute digunakan untuk mengidentifikasikan sebuah nama yang diikutsertakan dalam


relasi dan menspesifikasikan domain (tipe data sederhana yang menentukan sebuah
pemisahan data). Sedangkan tuples adalah kumpulan dari record-record di dalam sebuah
database. Relation name mendefinisikan attribute-attribute yang diperlukan dalam predikat
dan mendefinisikan arti dari predikat tersebut.

Sistem Katalog Dalam Database Manajemen Sistem (DBMS)


Sistem katalog adalah sebuah sistem yang digunakan untuk menyimpan informasi-
informasi mengenai suatu database. Informasi yang disimpan dalam sebuah katalog dari
sebuah relasional database manajemen sistem meliputi relation names, attribute names,
dan attributes domains (tipe-tipe data), gambaran dari batasan-batasan (primary key,
secondary key, foreign key, NULL/NOT NULL dan tipe-tipe dari batasan-batasan
lainnya), dan bentuk-bentuk penyimpanan dan index-index.
Query optimizer melakukan akses pada katalog untuk jalan akses, implementasi
(pelaksanaan) informasi, dan data statistik untuk menentukan jalan terbaik untuk
menjalankan sebuah query.

Tabel 1. Contoh Katalog yang Menyimpan Informasi tentang Database


Sebagai contoh, optimizer mengakses katalog untuk mengecek field-field mana dari
sebuah relasi yang memiliki akses hash atau akses index-index, sebelum memutuskan
bagaimana untuk menjalankan sebuah kondisi pilihan ataupun kondisi join pada relasi.
Contoh dari sebuah katalog yang menyimpan informasi tentang database dapat dilihat pada
tabel 1.

60
Optimisasi Query
Optimisasi Query adalah suatu proses untuk menganalisa query untuk menentukan
sumber-sumber apa saja yang digunakan oleh query tersebut danapakah penggunaan dari
sumber tersebut dapat dikurangi tanpa merubah output. Atau bisa juga dikatakan bahwa
optimisasi query adalah sebuah prosedur untuk meningkatkan strategi evaluasi dari suatu
query untuk membuat evaluasi tersebut menjadi lebih efektif. Optimisasi query mencakup
beberapa teknik seperti transformasi query ke dalam bentuk logika yang sama, memilih
jalan akses yang optimal dan mengoptimumkan penyimpanan data.
Optimisasi query merupakan bagian dasar dari sebuah sistem database dan juga merupakan
suatu proses untuk menghasilkan rencana akses yang efisien dari sebuah query di dalam
sebuah database. Secara tidak langsung, sebuah rencana akses merupakan sebuah strategi
yang nantinya akan dijalankan untuk sebuah query, untuk mendapatkan kembali operasi-
operasi yang apabila dijalankan akan menghasilkan database record query. Ada tiga aspek
dasar yang ditetapkan dan mempengaruhi optimisasi query, yaitu : search space, cost
model dan search strategy.
Search space adalah sekumpulan rencana-rencana akses yang sama secara logika yang
dapat digunakan untuk mengevaluasi sebuah query. Semua rencana-rencana dalam search
space query mengembalikan hasil yang sama biarpun beberapa rencana lebih efisien
dibandingkan dengan rencana yang lainnya.
Cost model menandakan sebuah harga untuk tiap rencana dalam search space. Harga dari
rencana tersebut adalah sebuah perkiraan dari sumber-sumber yang digunakan pada saat
rencana dijalankan, dimana harga yang lebih rendah, merupakan yang terbaik dari rencana-
rencana yang ada.
Search strategy adalah sebuah perincian dari rencana-rencana mana dalam search space
yang akan diperiksa. Apabila search space-nya kecil, maka strategi yang dapat diteruskan
adalah menghitung dan mengevaluasi setiap rencana. Meskipun kebanyakan search space
bahkan untuk query-query yang sederhana adalah sangat besar, akan tetapi query optimizer
selalu memerlukan aturan heuristik untuk mengontrol nomer dari rencana-rencana yang
akan diperiksa.

Sejarah Singkat Optimisasi Query


Optimisasi query lahir sejak sebelum tahun 1970. Pada saat itu yang dikenal dengan
jaman kegelapan (dark age), optimisasi query masih dilakukan secara manual oleh
manusia. Selain itu, pada jaman tersebut database relasional juga belum dikenal sehingga
diperlukan seseorang yang benar-benar ahli dalam database untuk melakukan optimisasi

61
query. Jadi pada jaman kegelapan hingga tahun 1970an, optimisasi query masih dilakukan
oleh manusia dan masih menggunakan cara yang benar-benar kuno.
Seiring dengan perkembangan jaman di mana teknologi menjadi semakin maju, maka
sekitar pertengahan tahun 1970-an sampai pada pertengahan tahun 1980-an optimisasi
query tidak lagi dilakukan secara manual, tetapi dilakukan oleh suatu sistem yang dikenal
dengan sistem R yang kemudian menjadi berkembang pada optimisasi perintah JOIN,
sekumpulan tahapan untuk optimisasi query selanjutnya. Hingga saat ini, optimisasi query
terus berkembang bersamaan dengan bermunculannya teknik-teknik baru yang digunakan
dalam proses optimisasi query meskipun pada dasarnya hanya ada dua macam teknik
utama yang biasanya digunakan dalam mengoptimisasi sebuah query. Bisa dikatakan
bahwa optimisasi query merupakan tulang punggung dari sebuah sistem karena
ketepatgunaan suatu sistem sangat tergantung dari optimizernya.
Hampir semua DBMS menggunakan sistem optimisasi query untuk mengurangi waktu
eksekusi query sehingga kerja sistem dapat dioptimalkan dan penggunaan sumber-sumber
dapat diminimumkan. Selain itu, akes dari disk yang sangat lambat dibandingkan dengan
akses memory membuat optimisasi query menjadi semakin penting.

Tujuan Optimisasi Query


Prinsip ekonomi yang diperlukan untuk sebuah query adalah mengoptimisasi rosedur-
prosedur, mencoba untuk memaksimumkan output dari sejumlah sumber-sumber yang
diberikan ataupun untuk meminimumkan penggunaan sumber untuk memberikan output.
Tujuan dari optimisasi query adalah berbeda-beda untuk setiap sistem. Ada yang
menggunakan optimisasi query untuk meminimumkan waktu proses sedangkan pada
situasi lain bisa juga optimisasi query diperlukan untuk waktu respon, meminimumkan I/O
dan meminimumkan penggunaan memory. Tetapi pada dasarnya, tujuan dari optimisasi
query adalah menemukan jalan akses yang termurah untuk meminimumkan total waktu
pada saat proses sebuah query. Untuk mencapai tujuan tersebut, maka diperlukan optimizer
untuk melakukan analisa query dan untuk melakukan pencarian jalan akses.

Join
Operasi Join, Join merupakan operasi yang digunakan untuk menggabungkan
dua tabel atau lebih dengan hasil berupa gabungan dari kolom-kolom yang berasal
dari tabel-tabel tersebut. Pada join sederhana, tabel-tabel digabungkan dan
didasarkan pada pencocokan antara kolom pada tabel yang berbeda.
Pada MySQL, perintah join ada beberapa macam yaitu :

62
– Inner Join
– Outer Join
– Cross Join
– Union Join

Inner Join
Inner join merupakan jenis join yang paling umum yang dapat digunakan pada
semua database. Jenis ini dapat digunakan bila ingin merelasikan dua set data yang ada di
tabel, letak relasinya setelah pada perintah ON pada join.
Bentuk baku perintah inner join :
SELECT <field1>,<field2>,<fieldn> FROM <tabel1> INNER JOIN <tabel2>
ON <key.tabel1> = <key.tabel2>

Contoh :
– Tampilkan nip, nama dan gaji semua pegawai.
select i.nip,i.nama,p.gaji from infoprib i inner join pekerjaan
p on i.nip = p.nip;
Outer Join
Outer join merupakan jenis join yang sedikit berbeda dengan inner join. Pada
MySQL, bentuk perintah untuk menerapkan outer join ada 2 yaitu :
SELECT <field1>,<field2>,<fieldn> FROM <tabel1> LEFT JOIN <tabel2> ON
<key.tabel1> = <key.tabel2>
dan
SELECT <field1>,<field2>,<fieldn> FROM <tabel1> RIGHT JOIN <tabel2>
ON <key.tabel1> = <key.tabel2>
Left join digunakan dalam situasi ketika ingin mengembalikan semua elemen data set A,
terlepas dari apakah nilai kunci ada dalam data set B.
Right join digunakan dalam situasi ketika ingin mengembalikan semua elemen data set B,
terlepas dari apakah nilai kunci ada dalam data set A.
Contoh :
– Tampilkan nip, nama dan gaji semua pegawai
select i.nip,i.nama,p.gaji from infoprib i left join pekerjaan p
on i.nip = p.nip;

63
Pada contoh diatas, tabel infoprib sebagai tabel yang posisinya di kiri sedangkan tabel
pekerjaan berada pada posisi sebelah kanan. Sehingga bila perintah diatas diganti dengan:
select i.nip,i.nama,p.gaji from infoprib i left join pekerjaan p on
i.nip = p.nip;
hasilnya akan berkebalikan dengan left join.
Untuk lebih memahami, perhatikan diagram dibawah ini.

Bila ingin menampilkan semua data yang ada di tabel sebelah kiri baik yang mempunyai
pasangan ataupun yang tidak mempunyai pasangan dengan data pada tabel di sebelah
kanan, maka gunakan left join. Sedangkan bila yang terjadi adalah kebalikannya, yaitu
ingin menampilkan semua data yang ada di sebelah kanan baik yang mempunyai
pasangan ataupun yang tidak mempunyai pasangan dengan data pada tabel di sebelah kiri,
maka gunakan right join.

Cross Join
Cross join kadangkala disebut juga sebagai Cartesian Product. Bila
menggunakan cross join, maka hasil dari cross join akan menciptakan hasil yang
didasarkan pada semua kemungkinan kombinasi baris dalam kedua set data. Dengan
demikian, jumlah baris yang dikembalikan adalah N M , dimana N✕ adalah jumlah baris
dalam kumpulan data A dan M jumlah baris dalam kumpulan data B. Jelas, jumlah baris
dalam cross join dapat menjadi sampah.

Bentuk perintah dari cross join adalah :


SELECT <field1>,<field2>,<fieldn> FROM <tabel1> CROSS JOIN <tabel2>
atau
SELECT <field1>,<field2>,<fieldn> FROM <tabel1>, <tabel2>
Sebagai contoh adalah :
– Tampilkan nip, nama dan gaji semua pegawai
select i.nip,i.nama,p.gaji from infoprib i cross join pekerjaan p;
select i.nip,i.nama,p.gaji from infoprib i, pekerjaan p;

64
Union Join
Union didukung oleh MySQL mulai dari versi 4.0. Pemakaian union dapat
menyederhanakan perintah persyaratan OR yang bertingkat. Bila dalam sebuah query
menghasilkan pemakaian perintah OR yang lebih dari satu sehingga dapat membuat
bingung, sebagai gantinya digunakan perintah UNION. Union dapat dikatakan sebagai
perintah untuk menggabungkan hasil query sql yang fungsinya sama dengan perintah OR.
Agar lebih jelas, perhatikan contoh berikut ini.

Contoh :
– Tampilkan nip, nama dan gaji dari pegawai yang bekerja di bagian akuntansi dan SDM.
(anggap saja perintah sql yang digunakan sudah kompleks)
Bila menggunakan perintah OR, maka perintah sqlnya akan seperti dibawah ini :
select i.nip,i.nama,p.gaji from infoprib i join
pekerjaan p on
i.nip=p.nip where p.kode_bag="3" or p.kode_bag="4";
Tetapi perintah OR dapat diganti dengan perintah UNION dan bila di jalankan
akan
menghasilkan hal yang sama.
(select i.nip,i.nama,p.gaji from infoprib i join
pekerjaan p on
i.nip=p.nip where p.kode_bag="3") UNION
(select i.nip,i.nama,p.gaji from infoprib i join
pekerjaan p on
i.nip=p.nip where p.kode_bag="4")

Subquery
Sub Query adalah query didalam query. Artinya seleksi data berdasarkan dari hasil seleksi
data yang telah ada. Sintak SQL nya sama dengan sintak SQL pada umumnya, hanya saja
kondisi setelah where atau from diikuti dengan query baru atau sub query. Sintak SQL
nya sebagai berikut:

Di bawah ini adalah contoh penggunaan subquery:

65
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

Dari contoh tersebut, SELECT * FROM t1 ... merupakan query yang paling luar (outer
query), dan SELECT column1 FROM t2) merupakan subquery. Bisa dikatakan bahwa
subquery adalah sekumpulan query yang ada di outer query, sehingga ada kemungkinan
subquery terdapat dalam subquery lagi dan kemudian setumpukan subquery tersebut ada di
sebuah query. Subquery bisa diibaratkan anaknya, dan outer query adalah induknya.
Keuntungan utama dari subquery adalah:
 Subquery membuat query-query menjadi tersusun, sehingga ada kemungkinan
untuk memisahkan / memberi batasan area untuk setiap bagian statement.
 Subquery menyediakan cara alternatif untuk menjalankan operasi-operasi yang
dalam keadaan lain akan membutuhkan JOIN dan UNION yang kompleks.
 Subquery lebih mudah dibaca dibanding JOIN atau UNION yang kompleks.

Sebuah subquery bisa mengembalikan scalar (single value/satu nilai), single row (satu
baris), single column (satu kolom), atau table (satu/lebih baris dari satu/lebih kolom). Ada
beberapa batasan untuk tipe statement yang subquery bisa digunakan di dalamnya. Sebuah
subqeury dengan SELECT yang biasa dapat berisikan: DISTINCT, GROUP BY, ORDER
BY, LIMIT, joins, indexhints, UNION,comments, dan fungsi-fungsi lainnya. Sedangkan,
outer statement (statement yang paling luar) yang memiliki subquery tidak hanya bisa
menggunakan SELECT saja, tapi dia juga bisa menggunakan INSERT, UPDATE,
DELETE, SET, atau DO.

Penggunaan Perbandingan (Comparison) untuk Subquery


Pada umumnya, jika terdapat fungsi perbadingan di subquery, bentuk querynya akan
sebagai berikut:

non_subquery_operand comparison_operator (subquery)

Dimana comparison_operator adalah salah satu dari operator-operator di bawah ini:

= > < >= <= <> != <=>

Contohnya adalah:

... WHERE 'a' = (SELECT column1 FROM t1)

66
MySQL juga mendukung bentuk comparison seperti di bawah ini:

non_subquery_operand LIKE (subquery)

Di bawah ini terdapat pula contoh subquery yang menggunakan comparison dan tidak
menggunakan hubungan JOIN di dalamnya. Query ini mengambil semua baris di tabel t1
dimana kolom nilai dari column1 ada sama dengan nilai maksimum dari column2 yang
ada di tabel t2:

SELECT * FROM t1
WHERE column1 = (SELECT MAX(column2) FROM t2);

Penggunaan Subquery SELECT Setelah FROM


Subquery dengan statement SELECT selain bisa digunakan setelah operator comparison,
juga bisa digunakan setelah FROM. Sintaksnya adalah sebagai berikut:

SELECT ... FROM (subquery) [AS] name ...

Tulisan [AS] name adalah wajib dicantumkan, karena setiap tabel setelah kata FROM
harus memiliki nama. Setiap nama kolom di subquery select harus memiliki nama yang
unik.
Di bawah ini adalah bagaimana penggunaan subquery setelah FROM.

SELECT sb1,sb2,sb3
FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb
WHERE sb1 > 1;

Di bawah ini adalah contoh lain penggunaan subquery setelah FROM. Karena
AVG(SUM(column1)) tidak bisa dilakukan. Maka, SUM(column1) dibuat menjadi
subquery setelah FROM.

SELECT AVG(sum_column1)
FROM (SELECT SUM(column1) AS sum_column1
FROM t1 GROUP BY column1) AS t1;

67
Sedangkan, subquery (sum_column1) bisa dipanggil oleh outer query yang membutuhkan,
contohnya untuk dihitung AVERAGE-nya seperti contoh di atas.

C. Praktikum
QUERY PROCESSING
MEMBUAT DATABASE DAN TABLE
Contoh:
 Misalkan kita ingin menyimpan data anggota yaitu: nomor, nama, email, alamat, kota.
Sedangkan strukturnya seperti tabel dibawah ini:

 Data yang diinginkan

 Menggunakan phpMyAdmin
Merupakan software yang digunakan untuk membuat dan ygg memaintenance
database. Kita dapat mengakses database MySQL dengan account kita di
phpMyAdmin. Pastikan server MySQL dan program phpMySQL sudah berjalan.
Uuntuk membuka tampilan phpMyAdmin di komputer lokal melalui URL komputer
lokal melalui URL http://localhost/phpmyadmin/
 Masukkan login sebagai root atau sesuai dengan user yang sudah dibuat

68
 Menentukan field dan type data

 Contoh Tabel

 Create Tabel dengan phpmyadmin

69
 Perintah MySQL untuk membuat tabel seperti diatas adalah:

 Untuk memasukkan sebuah baris (record) kedalam tabel MySQL adalah sebagai
berikut:

 Untuk menghapus suatu record dengan kriteria tertentu digunakan perintah sebagai
berikut:

Contoh: Menghapus record dari tabel anggota yang bernomor „3‟


delete from anggota where nomor=3;
DELETE FROM anggota; (Menghapus seluruh record anggota)
 Untuk memodifikasi (merubah) isi record tertentu adalah dengan menggunakan
perintah dengan menggunakan perintah sebagai berikut:

 Contoh: Merubah e-mail dari anggota yang bernomor 12 menjadi „supri@yahoo.com‟


dalam tabel anggota.

 Untuk merubah kolom kota menjadi „surabaya‟ semuanya dalam tabel anggota

 Isi tabel dapat ditampilkan dengan menggunakan perintah SELECT, cara penulisan
perintah SELECT adalah:

70
select nm_kolom from namatable;

OPTIMISASI QUERY
JOIN
Pada praktikum ini kita akan menggunakan dua buah tabel bernama Karyawan dan
Departemen dengan relationship bekerja pada. Struktur tabelnya diperlihatkan
sebagai berikut:
CREATE TABLE karyawan (
nama varchar(30) NOT NULL,
id_dep int(5) NOT NULL
) ENGINE=MyISAM;

CREATE TABLE departemen (


id_dep int(5) NOT NULL,
nama_dep varchar(30) NOT NULL,
PRIMARY KEY (id_dep)
) ENGINE=MyISAM;

Syntax tersebut kita ketikkan pada Notepad kemudian simpan dengan nama
yang diinginkan dan jangan lupa menggunakan ekstensi sql (*.sql)
Seperti berikut :

Setelah tersimpan dengan ekstensi *.sql kita tinggal memanggil file tersebut
pada program MySQL. Dan membuka program Mysql dapat dengan cara Start
button  All Programs  MySQL  MySQL Server 5.2 MySQL Command
Line Client.

71
Setelah itu kita harus membuat/menggunakan database yang sudah ada, dengan
cara mengetikkan script use [nama_databasenya], seperti dibawah :

Setelah terdapat keterangan “Database changed” maka database tersebut sudah


bisa digunakan.
Kemudian kita akan memanggil file sql yang telah kita buat dengan menggunakan
syntax “ \. [alamat file berada]“.

a. Copy alamat tempat file berada.

b. Kemudian paste di MySQL Command Line nya (dan jangan lupa di tambahi
dengan mengetik slash “\” kemudian nama file nya)  Enter .

c. Setelah muncul keterangan Query OK, maka itu tandanya berhasil.


d. Kemudian masukkan data tabelnya, dengan cara mengetikkan syntax berikut
dengan notepad.

INSERT INTO karyawan values

("Agus",10),

("Budi",16),

("Citra",12),

("Dani",17);

INSERT INTO departemen values

(10,"Penelitian"),

(11,"Pemasaran"),

(12,"SDM"),

(13, "Keuangan");

e. Simpan dengan langkah sebelumnya. Kemudian panggil pada MySQL CL nya.

72
 Inner Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner1.sql

SELECT * FROM karyawan INNER JOIN departemen


ON karyawan.id_dep= departemen.id_dep ;

b. Panggil pada MySQL CL

c. Setelah itu kita akan mencoba menggunakan syntax bentuk Implisit. Bentuk
Bentuk implisit dari inner join diperlihatkan sebagai berikut:
SELECT * FROM karyawan, departemen
WHERE karyawan.id_dep= departemen.id_dep ;
d. Simpan dengan nama inner2.sql dan panggil melalui MySQL CL nya.

Dalam pengambilan data ini, kita juga bisa menspesifikasikan field terkait.
Sebagai contoh, hanya mengambil nama karyawan dan namadepartemen saja.
e. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner3.sql

SELECT karyawan.nama, departemen.nama_dep FROM karyawan


INNER JOIN departemen
ON karyawan.id_dep= departemen.id_dep ;

f. Panggil melalui MySQL CL nya.

73
Agar penulisan SQL lebih efisien, kita dapat memanfaatkan fitur
“derivedtable” (atau alias).
g. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner4.sql
SELECT k.nama, d.nama_dep FROM karyawan k
INNER JOIN departemen d
ON k.id_dep= d.id_dep ;
h. Panggil melalui MySQL CL nya.

Pada pernyataan SQL di atas, tabel karyawan dinotasikan dengan huruf kdan
tabel departemen menggunakan huruf d.

 Outer Join
 Left Outer Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
outer1.sql
SELECT * FROM karyawan k
LEFT OUTER JOIN departemen d
ON k.id_dep= d.id_dep ;
b. Panggil melalui MySQL CL nya.

Apabila diperlukan, kita juga dapat menggunakan klusa WHERE di


dalamjoin. Sebagai contoh, untuk mendapatkan data karyawan yang
tidakmemiliki departemen.
c. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
outer2.sql
SELECT * FROM karyawan k
LEFT OUTER JOIN departemen d
ON k.id_dep= d.id_dep
WHERE d.id_dep IS NULL ;

74
d. Panggil melalui MySQL CL nya.

 Right Outer Join


a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
router.sql

SELECT * FROM karyawan k


RIGHT OUTER JOIN departemen d
ON k.id_dep= d.id_dep ;

b. Panggil melalui MySQL CL nya.

 Full Outer Join


a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama
router.sql
SELECT * FROM karyawan k
RIGHT OUTER JOIN departemen d
ON k.id_dep= d.id_dep
UNION
SELECT * FROM karyawan k
RIGHT OUTER JOIN departemen d
ON k.id_dep= d.id_dep ;

b. Panggil melalui MySQL CL nya.

 Cross Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama cross.sql

75
SELECT * FROM karyawan
CROSS JOIN departemen ;

b. Panggil melalui MySQL CL nya.

Cross join juga dapat direpresentasikan dalam bentuk implisit.


c. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama cross1.sql
SELECT * FROM karyawan, departemen ;
d. Panggil melalui MySQL CL nya.

SUBQUERY

 Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama?

76
 Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama?

 Tampilkan nama pegawai beserta jumlah penjagaan transaksi paling banyak.

77
D. Tugas Praktikum
Perhatikan, dalam mengerjakan tugas praktikum ini, sebaiknya pernyataan SQL
disimpan di file untuk kemudian dieksekusi.

Tugas praktikum ini menggunakan tabel-tabel yang sudah dibuat sebelumnya.


Berikut adalah data-data tabel yang akan digunakan (sesuaikan nilainya agar
sama persis).

Tabel Mahasiswa

Tabel ambil_mk

78
Tabel Matakuliah

1. Dapatkan banyak mahasiswa yang mengambil matakuliah. Selesaikan


dengan pendekatan join eksplisit dan implisit.

2. Kelompokan data mahasiswa yang tidak mengambil matakuliah


berdasarkan jenis kelaminnya, kemudian hitung banyaknya.

3. Dapatkan nim dan nama mahasiswa yang mengambil matakuliah beserta


kode_mk dan nama_mk yang diambilnya. Selesaikan dengan pendekatan
join eksplisit dan implisit.

4. Dapatkan nim, nama, dan total sks yang diambil oleh mahasiswa, Dimana total
sksnya lebih dari 4 dan kurang dari 10.

79
5. Dapatkan data matakuliah yang tidak diambil oleh mahasiswa terdaftar
(mahasiswa yang terdaftar adalah mahasiswa yang tercatat di tabel
mahasiswa).

6. Buatlah database baru dengan nama Universitas. Lalu didalamnya terdapat


tabel-tabel berikut :
Tabel Instruktur
nip nama_ins jurusan asal_kota
1 Muhammad Akbar Ilmu Sejarah Malang
2 Saichul Fitrian A. Ilmu Komputer Malang
3 Annafia Oktafian Ilmu Komputer Klaten
4 Budy Pratama Ilmu Komputer Magelang

Tabel matakuliah
kd_mk nama_mk sks
PTI101 Algoritma dan Pemograman 3
PTI102 Basis Data 3
PTI103 Visual Basic 3
IS101 Sejarah Indonesia 3

Tabel ambil_mk
nip kd_mk ruangan jml_mhs
3 PTI101 H5211 40
2 PTI102 H5212 45
2 PTI103 H5206 40
1 IS101 I7312 30

a. Tampilkan kd_mk dan mata kuliah yang jumlah mahasiswanya 40.


b. Tampilkan data Instruktur yang mengajarkan „Basis Data‟.
c. Tampilkan data Instruktur yang tidak mengajar.

80
2. Buatlah tabel seperti di
bawah ini. Tabel
Customer
customer_id customer_name customer_addres
CS001 Aan Pasuruan
CS002 Hanif Banyuwangi
CS003 Mirza Malang
CS004 Tanti Tegal
CS005 Budie Kediri

Tabel Orders
order_id order_date customer_id qty amount
CS001 10-12-2016 CS001 1 40000
CS002 11-01-2017 CS002 2 50000
CS003 12-01-2017 CS005 3 35000

Gabungkan kedua tabel tersebut dengan JOIN dan UNION


DAFTAR PUSTAKA

Henry F. Korth, Abraham Silberschatz. 2011. Database system concepts 6th Edition.
McGraw-Hill

Raghu Ramakrishnan and Johannes Gehrke. 2003. Database Management Systems


Third Edition. McGraw-Hill 3.

C. J. Date. 2006. An Introduction to Database Systems 8th. Pearson Education Jeffrey


Ullman, Jennifer Widom, and Hector Garcia-Molina. 2013. Database Systems:
Pearson New International Edition: The Complete Book.

82

Anda mungkin juga menyukai