BASIS DATA
PENYUSUN
TIM LABORAN
2
KATA PENGANTAR
Tim Penyusun
3
DAFTAR ISI
COVER ................................................................................................................................. 1
LEMBAR PENGESAHAN .................................................................................................. 2
KATA PENGANTAR .......................................................................................................... 3
DAFTAR ISI ........................................................................................................................ 4
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:\) :
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
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:
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
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:
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
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
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
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
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;
Contoh :
mysql > Desc Mahasiswa;
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);
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;
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
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
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
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,NamaidRuang
Jika Nama dihilangkan, ketergantungan masih ada.
3. Transitive dependency
Merupakan tipe FD, dimana kondisi A,B,C adalah atribut sebuah relasi dimana AB dan
BC (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}
kdCabangalmCabang
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');
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
34
Perintahnya:
Select * from Nama_Table;
Contoh:
mysql> Select * From Mahasiwa;
Contoh :
mysql> Select NIM, Nama_Mhs From Mahasiswa;
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';
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 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.
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))
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)
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)
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).
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.
59
Gambar 2. Attributes dan tuples dari relasi STUDENT
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.
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.
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.
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:
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.
Contohnya adalah:
66
MySQL juga mendukung bentuk comparison seperti di bawah ini:
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);
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:
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
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:
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;
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 :
b. Kemudian paste di MySQL Command Line nya (dan jangan lupa di tambahi
dengan mengetik slash “\” kemudian nama file nya) Enter .
("Agus",10),
("Budi",16),
("Citra",12),
("Dani",17);
(10,"Penelitian"),
(11,"Pemasaran"),
(12,"SDM"),
(13, "Keuangan");
72
Inner Join
a. Ketikkan syntax dibawah ini di notepad dan simpan dengan nama inner1.sql
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
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.
74
d. 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 ;
SUBQUERY
Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama?
76
Tampilkan data mobil dari pelanggan yang menyewa mobil paling lama?
77
D. Tugas Praktikum
Perhatikan, dalam mengerjakan tugas praktikum ini, sebaiknya pernyataan SQL
disimpan di file untuk kemudian dieksekusi.
Tabel Mahasiswa
Tabel ambil_mk
78
Tabel Matakuliah
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).
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
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
Henry F. Korth, Abraham Silberschatz. 2011. Database system concepts 6th Edition.
McGraw-Hill
82