Anda di halaman 1dari 70

BUKU PETUNJUK (MODUL) PRAKTIKUM

BASIS DATA

UNIT LAYANAN KOMPUTER


JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Gadjah Mada
Yogyakarta
TATA TERTIB PRAKTIKAN

1. Masuk sesuai jadwal/waktu yang telah ditentukan/disepakati bersama, terlambat


lebih dari 15 menit dipersilahkan tidak memasuki ruang LABORATORIUM
KOMPUTER DASAR.
2. Praktikan yang tidak mengikuti praktikum lebih dari 3 kali tanpa keterangan
resmi, tidak berhak mengikuti responsi/ujian.
3. Tidak diadakan ujian susulan baik ujian tengah semester maupun akhir semester,
kecuali atas persetujuan dosen/pengampu mata kuliah bersangkutan.
4. Memakai Pakaian rapi dan sopan:
 Pria : - Kemeja Lengan panjang atau pendek
- Celana panjang Rapi
- Bersepatu
- Tidak boleh memakai T-shirt tanpa krah atau tanpa
lengan
 Wanita : - Kemeja Lengan panjang/pendek (tidak ketat dan atau
transparan)
- Rok ATAU Celana panjang (tidak ketat dan atau transparan)
- Bersepatu
- Tidak boleh memakai T-shirt tanpa krah atau tanpa lengan
5. Mahasiswa tidak diperbolehkan merokok, makan dan minum pada saat kuliah
praktikum.
6. Tas dan perlengkapan lain harus diletakkan pada tempat yang telah disediakan (hanya
diperbolehkan membawa barang berharga, Ex: Handphone, dompet dan alat yang
diperlukan untuk praktikum)
7. Barang berharga milik peserta kuliah praktikum menjadi tanggung jawab sendiri
(laboran tidak bertanggungjawab atas kehilangan barang tersebut).
8. Dering HP harus dimatikan (silent) pada saat kuliah praktikum.
9. Selesai Praktikum, Komputer dimatikan dan kursi dirapikan kembali.
10. Mahasiswa diwajibkan menjaga kebersihan dan ketertiban serta ketenangan belajar.
11. Mahsiswa tidak diperbolehkan menggunakan komputer untuk bermain games.
12. Mahasiswa tidak diperkenankan men-install program/software tanpa petugas lab.
13. Mahasiswa tidak diperkenankan memindah posisi hardware (mouse, keybord, monitor,
CPU)
14. Mahasiswa tidak diperbolehkan membawa atau mengambil (secara sengaja atau tidak
sengaja) perlengkapan praktikum yang ada di Laboratorium komputer).

ii
15. Mahasiswa wajib menjaga keutuhan semua peralatan yang ada di Laboratorium
Komputer serta tidak diperbolehkan memakai komputer Pengajar/Dosen.
16. Mengisi daftar hadir dan mencatat nomor kursi/Komputer yang digunakan selama
praktikum berlangsung ke dalam form daftar hadir yang telah disediakan.
17. Melaporkan keadaan komputer dan atau peralatan yang digunakan (Yang Rusak/tidak
berfungsi) sebelum, sesaat dan atau sesudah penggunaan ke dosen/asisten pengampu
atau kepada laboran.
18. Praktikan wajib mematikan Komputer yang telah selesai digunakan dan merapikan
kembali kursi, meja dan perlengkapan pendukung praktikum lainnya setelah praktikum
selesai dilaksanakan/berakhir.
19. Laboran berhak mencatat, memberikan sanksi atau melakukan tindakan seperlunya
terhadap praktikan yang melanggar tata tertib.

Unit Layanan Komputer


JIKE F.MIPA UGM

iii
KATA PENGANTAR

Assalamu’alaikum Wr. Wb.

Alhamdullilah, atas berkat rahmat Allah Yang Maha Kuasa dengan didorongkan
oleh keinginan luhur memperluas wawasan dalam pengetahuan tentang Basis Data,
maka buku petunjuk (modul) praktikum ini disusun/dibuat.

Buku petunjuk (modul) praktikum ini dibuat untuk membantu jalannya praktikum
Basis Data pada prodi S1 Ilmu Komputer dan Statistik. Buku petunjuk (modul) ini
dibuat sedemikian rupa sehingga dapat dengan mudah dipahami oleh pemakai buku
ini.

Terima kasih kami ucapkan kepada semua pihak yang telah membantu dan
mendukung pembuatan buku ini.

Wassalamu’alaikum Wr. Wb.

Unit Layanan Komputer


JIKE F.MIPA UGM

iv
DAFTAR ISI

Halaman
HALAMAN JUDUL ……………………………………………………… i
TATA TERTIB PRAKTIKAN …………………………………………… ii
KATA PENGANTAR ……………………………………………………. iv
DAFTAR ISI ……………………………………………………………… v
BAB I ENTITY RELATIONSHIP ……………………………………… 1
Tujuan Praktikum ………………………………………………… 1
Indikator …………………………………………………………... 1
A. Entity Set ………………………………………………………. 1
B. Relational ………………………………………………………. 2
C. Primary Key ……………………………………………………. 3
D. Foreign Key ……………………………………………………. 4
E. Entity-Relationship Diagram …………………………………... 5
Latihan …………………………………………………………….. 6
BAB II NORMALISASI ………………………………………………….. 7
Tujuan Praktikum …………………………………………………. 7
Indikator …………………………………………………………... 7
A. Normalisasi …………………………………………………….. 7
B. Normalisasi I …………………………………………………… 8
C. Normalisasi II ………………………………………………….. 10
D. Normalisasi III ………………………………………………… 11
Latihan ……………………………………………………………. 12
BAB III INSTALASI MySQL …………………………………………… 13
Tujuan Praktikum …………………………………………………. 13
Indikator …………………………………………………………... 13
Download (langkah 1 s.d. Langkah 24) …………………………… 13-31
Latihan ……………………………………………………………... 32
BAB IV DATA DEFINITION LANGUAGE (DDL) ……………………... 33
Tujuan Praktikum …………………………………………………. 33
Indikator …………………………………………………………... 33

v
Halaman
A. Database ……………………………………………………….. 33
B. Tabel …………………………………………………………… 34
C. Index …………………………………………………………… 40
Latihan DDL (Data Definition Language) ….…………………….. 40
BAB V DATA MANUPULATION LANGUAGE ………………………. 41
Tujuan Praktikum …………………………………………………. 41
Indikator …………………………………………………………... 41
Data Manipulation Language (DML) …………………………….. 41
Insert ……………………………………………………………… 42
Delete ……………………………………………………………... 43
Update …………………………………………………………….. 44
Select ……………………………………………………………… 46
Distenet ……………………………………………………………. 47
Operator Relational dan Logika …………………………………… 47
Operator In dan Out in …………………………………………….. 48
Operator Like ……………………………………………………… 50
Nuil dan Not nuil ………………………………………………….. 50
Mengurutkan Data ………………………………………………… 51
Join ………………………………………………………………… 52
Renaming Table …………………………………………………… 54
Fungsi Agregat dan Group By …………………………………….. 54
Having …………………………………………………………….. 55
Nested Query ……………………………………………………… 56
Exisi ……………………………………………………………….. 59
Viev ………………………………………………………………... 60
Latihan DML (Data Manipulation Language) …………………….. 61

vi
BAB I

ENTITY RELATIONSHIP

Tujuan Praktikum

1. Memperkenalkan unsur-unsur penyusun suatu sistem


2. Memperlajari desain database menggunakan metode Entity Relationship
Diagram (ERD).

Indikator

1. Praktikan mengetahui apa saja penyusun dari suatu sistem yang


akandibuat database.
2. Praktikan mengetahui simbol-simbol untuk menggambar model rancangan
database dengan ER.
3. Praktikan mampu menggambar model rancangan database menggunakan
ER.

A. Entity Set

Entity set adalah sesuatu atau objek yang ada di dalam dunia nyata yang
berbeda dengan objek lainnya, memiliki atribut penyusun, dan merupakan
pembangun suatu sistem. Contoh, manusia yang bekerja disuatu perusahaan
adalah sebuah entity. Entity mempunyai atribut bernilai (values), misal : 000-11-
3452 merupakan sebuah nomer indukseorang pekerja (atribut nomer induk
pekerja). Selain itu, seorang pekerja juga mempunyai tanggal lahir. Di sini tanggal
lahir merupakan atribut dari entity pekerja yang berkedudukan sejajar dengan
atribut nomer induk pekerja.

Entity mempunyai beberapa tipe atribut seperti :

1. Simple atribute : entity yang atributnya tidak dapat dibagi menjadi bagian
yang lebih kecil.

Praktikum Basis Data Hal 1


2. Composite atribute : entity yang atributnya dapat dibagi menjadiatribut
yang lebih kecil. Misalnya : atribut nama bisa dibagi menjadinama awal,
nama tengah, dan nama akhir.
3. Single-valued attribute : entity yang atributnya hanya dapat berisisatu
nilai. Misal nomer induk pekerja.
4. Multivalued attribute : entity yang atributnya dapat berisi nol, satu atau
lebih dari satu nilai. Misalnya : atribut telephon, bisa jadi seorang pekerja
mempunyai nol, satu, atau lebih telephon.
5. Atribut turunan : entity yang atributnya dapat diturunkan dari
atributlainnya. Misalnya : atribut umur dapat diketahui dari atribut tanggal
lahir dan tanggal pada saat itu.

B. Relational

Relational adalah hubungan antara entity. Semisal pada contoh di atas


entity manusia mempunyai hubungan dengan entity alamat yaitu”tinggal di”. Di
dalam merancang database hendaknya seluruh entity yang ada mempunyai
hubungan dengan entity yang lain, minimal satu. Jika ada entity dalam database
yang tidak mempunyai hubungan dengan satupun entity yang lain, maka akan
timbul kesalahan dalam desain. Biasanya entity yang tidak berhubungan akan
dihilangkan.

Macam relasi ada 4, antara lain :

1. One to one : Sebuah entitas A yang berpasangan dengan tepat satuentitas


B. Demikian pula entitas B juga berpasangan tepat satu dengan entitas A.
Contoh entitas mahasiswa yang berelasi denganentitas skripsi secara one
to one.
2. One to many : Sebuah entitas A yang berpasangan secara banyak (nolatau
lebih) dengan entitas di dalam B. Sedangkan entitas B hanyaberpasangan
dengan tepat satu entitas di dalam A. Contoh : entitasmahasiswa yang
berelasi dengan entitas dosen dalam hubungandosen pembimbing. Relasi

Praktikum Basis Data Hal 2


yang terjadi secara one to many. Karenaseorang mahasiswa hanya
memiliki 1 dosen pembimbing. Sedangkanseorang dosen bisa jadi
memiliki mahasiswa bimbingan lebih darisatu.
3. Many to one : Sebuah entitas A yang berpasangan dengan tepat satuentitas
di dalam B. Sedangkan entitas B dapat berpasangan secarabanyak (nol
atau lebih) dengan entitas di dalam A. (sama seperti oneto many hanya
dibalik pengertiannya)
4. Many to many : Sebuah entitas A yang berpasangan secara banyak(nol
atau lebih) dengan entitas di dalam B. Dan entitas B juga
dapatberpasangan secara banyak (nol atau lebih) dengan entitas di dalam
A. Contoh : entitas mahasiswa yang berelasi dengan entitas matakuliah
dalam hubungan KRS. Relasi tersebut adalah many to many. Karena
seorang mahasiswa dapat mengambil banyak matakuliah. Sedangkan satu
mata kuliah bisa jadi diambil oleh beberapa mahasiswa.

C. Primary Key

Seperti yang telah disebutkan di atas, bahwa entity adalah suatu objek
yang berbeda dengan objek yang lainnya. Maka tiap entity harus mempunyai
atribut yang dapat membedakan antara objek satu dengan yang lainnya. Misalnya
entitas manusia, entitas ini tidak mempunyaiatribut yang dapat membedakan
antara objek manusia1 dengan objekmanusia2. Namun apabila manusia tersebut
menjadi pegawai (muncul entitas pegawai) maka objek manusia1 dan manusia2
sebagai anggota dari entitas pegawai akan mempunyai atribut yang membedakan,
yaitu NIP. Atribut inilah yang disebut dengan key. Manusia1 dan manusia2 tidak
mungkin memiliki NIP yang sama.

Key dapat terdiri dari beberapa atribut, yang biasa disebut dengan
candidate key. Namun dalam prakteknya key sebisa mungkin hanyaterdiri dari
satu atribut. Hal ini untuk memudahkan dalam pengolahan data. Nah, untuk
mendapatkan key dari candidate key (gabungan beberapa atribut), pilih atribut

Praktikum Basis Data Hal 3


entitas yang paling unik (value dalam atribut tidak ada yang sama) dan bisa
membedakan entitas tersebutdengan entitas yang lain. Jika sudah
mendapatkannya, key itulah yangdisebut sebagai primary key.

Semisal ada candidate key berupa nama, NIP, dan tanggal lahir.
Makaperlu disortir, atribut mana yang paling unik dari ketiga atribut tersebut.
Atribut nama tidak unik, karena ada kemungkinan dua entitas pekerjamempunyai
nama yang identik. Demikian pula dengan atribut tanggallahir, sangat bisa jadi
dua entitas pekerja mempunyai tanggal lahir yangsama. Hanya atribut NIP saja
yang pasti berbeda dari tiap-tiap entitaspekerja.

D. Foreign Key

Di atas telah dibahas bahwa entitas dalam database harus


mempunyaihubungan dengan entitas yang lain. Oleh karenanya, suatu entitas
yang memiliki hubungan dengan entitas lain harus memuat primary key dari
entitas yang ada hubungan dengannya. Pemuatan primary key ini tidak selalu pada
kedua entitas yang berhubungan. Namun cukup pada entitasyang membutuhkan.
Misal, suatu entitas pekerja dengan primary keyNIP. Entitas ini memiliki
hubungan dengan entitas bagian kerja dengan primary key ID bagian kerja. Untuk
bisa menghubungkan kedua entitas tersebut maka entitas bagian kerja tidak perlu
memasukkan primary key dari entitas pekerja ke dalam salah satu atributnya.
Namun justruentitas pekerja yang memasukkan primary key dari entitas bagian
kerja(ID bagian kerja).

Proses menampung primary key dari entitas lain ke dalam atribut entitas
disebut juga dengan foreign key.

Ada beberapa landasan pemuatan primary key suatu entitas ke entitas lain
yang berhubungan. Landasan ini memakai ciri relasi yang digunakan.

1. One to one : entitas A berhubungan dengan entitas B secara one toone,


maka primary key entitas A dimuat ke dalam entitasB atau sebaliknya.

Praktikum Basis Data Hal 4


2. Many to one : entitas A berhubungan dengan entitas B secara manyto one,
maka primary key entitas B dimuat ke dalamentitas A.
3. Many to many : entitas A berhubungan dengan entitas B secara manyto
many maka pemuatan primary key dari masing-masing entitas akan
melibatkan suatu entitas baru.

E. Entity-Relationship Diagram

E-R diagram digunakan untuk membuat suatu model database. Kemudian


dari model tersebut dibuatlah sistem database. Adapun macam-macam komponen
dalam E-R diagram adalah :

1. Persegi panjang : merepresentasikan entitas


2. Elips : merepresentasikan atribut
3. Belah ketupat : merepresentasikan relasi antar entitas
4. Garis : merepresentasikan link antar atribut
5. Elips dobel : merepresentasikan atribut yang memiliki
banyak nilai
6. Elips bergaris putus-putus : merepresentasikan atribut turunan
7. Garis dobel : merepresentasikan total pertisipasi dari
suatu entitas di dalam relationship
8. Pesegi panjang dobel : entitas yang lemah

Ada dua jenis entitas, yang pertama adalah entitas kuat yaitu entitasyang
memiliki primary key. Kedua adalah entitas lemah yaitu entitasyang tidak
memiliki primary key. Entitas kuat dan lemah ini akan dibahas lebih dalam pada
materi normalisasi.

Berikut contoh diagram E-R dalam kasus pelanggan yang membeli barang
secara grosir dari gudang pemasok barang.

Praktikum Basis Data Hal 5


Pada gambar 1 ditunjukkan bahwa suatu proses/relasi antar tabel
dapatmemiliki atribut jika hal itu diperlukan. Atribut telepon merupakanatribut
yang bisa memiliki banyak nilai. Atribut total merupakan atributturunan dari
atribut jumlah dan harga satuan. Pada gambar di atashanyalah contoh sederhana
untuk menggambarkan pemakaiankomponen-komponen E-R. Namun dalam
keadaan sebenarnya kondisi diatas dapat diperluas menjadi model basisdata yang
lebih baik.

Latihan (untuk dikerjakan di kelas)

Buatlah sebuah model database dari sistem akademik. Tentukan entitas - entitas
apa saja yang ada di dalamnya. Atribut-atribut penyusun entitas juga
dideskripsikan. Tentukan primary key entitas yang kuat. Serta relasi antar entitas.
Setelah itu coba gambarkan model tersebut dengan ERD!

Praktikum Basis Data Hal 6


BAB II

NORMALISASI

Tujuan Praktikum

1. Mengenalkan proses normalisasi dalam desain basis data.


2. Memberikan gambaran mengenai keuntungan dan kelemahan
normalisasi.

Indikator

1. Praktikan mampu melakukan normalisasi dalam desain yang


telahdibuat minimal sampai normalisasi ke-3.
2. Praktikan memahami perlu atau tidaknya dilakukan normalisasi pada
suatu basis data.

A. Normalisasi

Mengapa diperlukan normalisasi dalam desain database? Struktur database


yang normal, mudah untuk dilakukan query, update database tidak merepotkan,
bisa mendapatkan semua informasi yang diperlukan, danpenghematan sumber
daya (space harddisk -keuntungan tersier-). Inti darinormalisasi adalah membuat
desain database yang efisien (tidak ada pengulangan data), database memuat
semua sumber informasi, dan database merupakan kesatuan data.

Selain itu normalisasi diperlukan untuk menghindari anomali insertion,


anomali deletion, dan anomali update. Pada database yang sudah normal, anomali
insertion dapat dihindari karena pengisian data yang sama pada beberapa tabel
hanya dilakukan cukup dengan mengisikan pada satu tabel dan yang lain akan
mengikuti, begitu pula dengan perintah update dandelete. Namun pada tabel yang
belum normal, pengisian data yang sama pada beberapa tabel dilakukan satu per
satu. Hal ini memungkinkanterjadinya kesalahan input oleh manusia (human

Praktikum Basis Data Hal 7


error) sehingga beberaparecord yang seharusnya memiliki data yang sama, akan
memiliki data yang berbeda.

Bentuk normalisasi ada beberapa macam, mulai dari normalisasi 1,


normalisasi 2, dst. Beberapa kasus yang mencapai tahap normalisasihingga lebih
dari 5. Namun ada juga kasus yang hanya mencapai tahapnormalisasi 2 saja.
Normalisasi tiap kasus berbeda-beda. Hal ini disesuaikan dengan kebutuhan.
Apabila dengan normalisasi ke 2 database sudah mencukupi syarat di atas, maka
tidak diperlukan tahap normalisasi berikutnya.

B. Normalisasi I

Normalisasi pertama intinya adalah menghindari adanya data larik atau


array pada atribut serta membuang potensi terjadinya redudancy(pengulangan)
data di dalam entitas kuat (tabel yang memiliki primarykey). Cara melakukan
normalisasi pertama cukuplah mudah, namun harusdikerjakan dengan teliti.
Caranya adalah mengumpulkan seluruh entitasyang memiliki primary key.
Kemudian cek apakah ada kemungkinan dalamatribut-atribut tabel/entitas terdapat
data yang berisi list atau array. Jikaada kemungkinan ini, maka buat tabel bantu
seperti terlihat pada contoh dibawah ini.

NIP Nama Jenis Kelamin Alamat Telepon Nama Anak

9981 Joko Waloya Pria Jl. Turi no 17 Jogja 6875556, Diah Ayu, Reno
998970 Bagus

Dari tabel di atas terdapat data berupa larik dalam atribut anak dan
telepon. Permasalahannya adalah jika suatu saat dibutuhkan informasi siapa ayah
dari Diah Ayu, maka sistem harus mencari pada kumpulan data yang sangat
panjang. Akibatnya waktu pencarian menjadi lama. Tak masalah apabila record
dalam tabel hanya berjumlah puluhan, namun bilarecord sudah mencapai jutaan,

Praktikum Basis Data Hal 8


akan terasa waktu pencarian menjadi lama. Maka dari itu tabel di atas perlu
normalisasi dengan membuat tabel bantu.

NIP Nama Anak

9981 Diah Ayu

9981 Reno Bagus

Serta

NIP Telepon

9981 667556

9981 998970

Setelah membuat tabel bantu, tabel data_pekerja dihilangkan dua


atributnya yaitu nama anak dan telepon.

NIP Nama Jenis Kelamin Alamat

9981 Joko Waloya Pria Jl. Turi no 17 Jogja

Jika Anda bertanya permasalahan data berupa larik dapat dipecahkan


dengan membuat tabel menjadi:

NIP Nama Jenis Kelamin Alamat Telepon Nama Anak

9981 Joko Waloya Pria Jl. Turi no 17 Jogja 667556 Diah Ayu

9981 Joko Waloya Pria Jl. Turi no 17 Jogja 998970 Reno Bagus

Tentu bentuk seperti di atas tidak diperbolehkan, karena terjadi


perulangandata pada atribut primary key. Selain itu terjadi ketidakefektifan berupa

Praktikum Basis Data Hal 9


data yang sama berulang yaitu data nama, jenis kelamin, dan alamat(pemborosan).
Maka dari itu solusi memecah tabel merupakan solusi paling tepat.

Dalam prakteknya tidak selalu pemecahan tabel (normalisasi I) dilakukan.


Memang dari segi penyimpanan lebih hemat dan insertion data lebih mudah (tidak
bertele-tele). Tetapi untuk kedepannya dipikirkan juga apakah dengan
normalisasi, muncul dampak pada pemrosesan query yang menjadi lambat?
Sebagai contoh misalkan query untuk mengetahui nama pemilik nomer telepon
687556. Pemrosesan query akan melampaui proses joining terlebih dahulu, antara
tabel pekerja dan tabel alamat_pekerja. Setelah joining, baru proses searching
dijalankan. Di sini ada dua proses yang terlibat.

Dari kasus tersebut muncul dua kondisi yang melemahkan proses


normalisasi. Pertama adalah proses joining beberapa tabel memakan waktuyang
relatif lama apabila data sangat besar. Selain itu, proses joining dengan data yang
besar bisa menghabiskan memori pada saat query tersebut dijalankan.

Nah, lalu kalau kondisinya seperti ini, mengapa kita perlu


mempelajarinormalisasi? Pointnya seperti ini, jika database melibatkan data
berskala besar, hendaknya dipikirkan efek normalisasi terhadap pemrosesan
query. Kalau data berskala kecil (ratusan), normalisasi merupakan solusi yang
efektif.

Rumus ini silakan diingat karena kelak akan berguna.

C. Normalisasi II

Bentuk normalisasi kedua mempunyai ciri yaitu tiap entitas berada


dalamnormalisasi ke-1 dan tiap atribut entitas yang bukan key memiliki
ketergantungan kepada primary key-nya.

ID_transaksi  tgl transaksi, id pelanggan, nama pelanggan, alamat, telepon, total


biaya, status pembayaran.

ID_barang  nama barang, produksi, harga, jenis

Praktikum Basis Data Hal 10


Atribut-atribut tgl transaksi, id pelanggan, nama pelanggan, alamat,
telepon, total biaya, status pembayaran memiliki ketergantungan
denganID_transaksi dengan kata lain informasi tgl transaksi, id pelanggan,
namapelanggan, alamat, telepon, total biaya dan status pembayaran dapat
diketahui melalui ID_transaksinya.

Namun ada kemungkinan tiap-tiap hari ID transaksi akan berulang.


SemisalID transaksi hari ini dari 100 – 5000, sedangkan ID transaksi untuk
besokdan hari yang lain adalah sama 100 – 5000 sehingga tidak dimungkinkan
apabila ID transaksi digunakan sebagai primary key. Tabel membutuhkan primary
key tidak hanya satu atribut, maka primary key yang sesuai adalahID transaksi
dan tanggal transaksi. Hasilnya bentuk ketergantungan atribut non primary key
menjadi:

ID_transaksi, tgl transaksi  id pelanggan, nama pelanggan, alamat, telepon, total


biaya, status pembayaran

D. Normalisasi III

Bentuk normalisasi ketiga mempunyai ciri yaitu tiap entitas berada


dalamnormalisasi kedua dan tiap atribut yang bukan key tidak memiliki
ketergantungan transitif terhadap primary key-nya. Pada contoh sebelumnya tabel
transaksi memiliki atribut yang memiliki ketergantungantransitif dengan primary
key. Yaitu id_pelanggan, nama_pelanggan, alamat, dan telepon. Maka dari itu,
tabel transaksi dipecah dengan mengeluarkanatribut-atribut yang mempunyai
ketergantungan transitif dengan primary key. Hasilnya sbb :

ID_transaksi  tgl_transaksi, total_biaya, status_pembayaran, id_pelanggan

ID_pelanggan  nama_pelanggan, alamat, telepon

Jika diamati hasil normalisasi ketiga juga masih dalam bentuk normal
kedua. Karena atribut nama_palanggan, alamat dan telepon bergantung pada
ID_pelanggan.

Praktikum Basis Data Hal 11


Latihan

1. Buatlah desain database dengan kasus berbeda-beda, misalnya: database


korban gempa, database penyebaran penyakit, database akademik, database
inventory barang, database catatan sipil, database perpustakaan, dsb.

2. Dari desain tersebut buatlah proses normalisasinya. Denganmenjelaskan per


langkah dan satu per satu. Berikan alasan detail, seperti misalnya suatu atribut
dihapus karena redudan, dll.

Praktikum Basis Data Hal 12


BAB III

INSTALASI MySQL

Tujuan Praktikum

1. Memperkenalkan perangkat lunak MySQL


2. Memperlajari instalasi MySQL mulai dari pengunduhan hingga siap
dipakai.

Indikator

1. Praktikan mengetahui langkah-langkah instalasi MySQL.


2. Praktikan mampu mengkonfigurasi MySQL

Sejak Oktober 2005, MySQL AB selaku produsen database MySQL


akhirnya secara resmi mengumumkan bahwa MySQL 5.0 telah dirilis. Bahkan
MySQL AB memberikan embel-embel recommended pada MySQL 5.0 ini untuk
di download dan digunakan.

Download

Ya, seperti biasa download dulu softwarenya secara langsung ke


http://dev.mysql.com atau bisa juga langsung ke
http://dev.mysql.com/downloads/mysql/5.0.html. Selanjutnya cari link untuk
platform Windows (atau Windows Download). Ada 3 paket yang disediakan:

• Windows Essential (x86)

• Windows (x86)

• Windows, without installer

Instalasi MySQL basis Windows versi 5.0.x berbeda (tipis) dengan versi
4.1.x. Bagi Anda yang telah menggunakan MySQL versi 4.0.x, 4.1.x atau bahkan
versi 3.x, SANGAT SANGAT DISARANKAN SEKALI untuk melakukan
backup database terlebih dahulu. Lakukanlah backup database baik dengan
menggunakan fasilitas mysqldump maupun mysqlhotcopy.

Praktikum Basis Data Hal 13


Langkah 1:

Misalkan setelah selesai men-download MySQL basis Windows dari


http://dev.mysql.com, paket instalasi MySQL tersebut saya simpan dalam sebuah
c:\direktori download\mysql. Secara lengkap nama file tersebut mysql-5.0.15-
win32.zip.

Langkah 2:

Pilihlah file tersebut dan tekan ENTER (atau klik-ganda pada mouse)
untuk menjalankan program ekstrasi yang ada di komputer Anda (biasanya
program WinZip, WinRAR, dan sebagainya). Untuk contoh ini saya
menggunakan program WinZIP. Lanjutkan dengan mengklik pada tombol
Extract.

Praktikum Basis Data Hal 14


Langkah 3:

Arahkan direktori penampungan hasil ekstraksi file ke direktori


C:\TempMySQL (terserah Anda untuk membuat nama direktori ini). Lanjutkan
dengan mengklik pada tombol Extract.

Praktikum Basis Data Hal 15


Langkah 4:

Dalam beberapa saat program akan mengekstraksi paket MySQL ke dalam


direktori C:\TempMYSQL. Setelah selesai, keluarlah dari program Winzip
dengan mengklik pada tombol (X). Hasil ekstraksi hanya ada 1 buah file yang
bernama SETUP.EXE

Praktikum Basis Data Hal 16


Langkah 5:

Sekarang kita masuk ke direktori C:\TempMySQL (atau direktori yang


Anda buat tadi). Perhatikan ada sebuah file bernama SETUP.EXE. Sorotlah dan
klik ganda file ini (atau tekan ENTER) untuk menjalankan proses instalasi.

Langkah 6: Tampilan selamat datang akan muncul. Untuk melanjutkan proses


instalasi klik pada tombol Next >.

Praktikum Basis Data Hal 17


Langkah 7:

Pada tampilan ini Anda harus memilih jenis instalasi yang akan
dilaksanakan. Yang paling mudah adalah jenis instalasi Typical. Maka saya
sarankan kita menggunakan jenis Typical saja. Untuk melanjutkan, silakan klik
pada tombol Next.

Langkah 8:

Tampilan berikutnya konfirmasi bahwa program MySQL akan diinstall ke


dalam direktori C:\Program Files\MySQL\MySQL Server 5.0\. Karena kita
menggunakan jenis instalasi Typical, maka direktori instalasi tidak dapat kita
ubah (kecuali Anda menggunakan jenis instalasi Custom pada langkah no.7 di
atas). Untuk sementara kita gunakan saja apa adanya. Silakan klik tombol Install
unyuk melanjutkan.

Praktikum Basis Data Hal 18


Langkah 9:
Untuk langkah ini, Anda bisa santai dulu menunggu proses persiapan
instalasi berlangsung.

Langkah 10:

Tampilan berikutnya, MySQL menawarkan Anda untuk bergabung secara


gratis menjadi anggota di MySQL.com. Bila Anda berminat bergabung, silakan
pilih Create a new free MySQL.com account. Kalau sudah pernah memiliki
account di MySQL.com, silakan pilih baris kedua (Login to MySQL.com). Pada

Praktikum Basis Data Hal 19


modul ini kita pilih saja baris ke tiga. (Skip Sign-Up). Kemudian lanjutkan dengan
menekan tombol Next >.

Langkah 11:

Tunggu beberapa saat hingga proses instalasi selesai. Kemudian


(disarankan) untuk melanjutkan ke proses konfigurasi MySQl server (Configure
the MySQL Server now). Dan Anda bisa menekan tombol Finish untuk tahapan
ini (tapi akan dilanjutkan dengan proses konfigurasi).

Praktikum Basis Data Hal 20


Langkah 12:

Sudah siap untuk mengkonfigurasi MySQL server? Silakan klik pada


tombol Next.

Praktikum Basis Data Hal 21


Langkah 13:

Ada dua pilihan konfigurasi, Detailed Configuration dan Standard


Configuration. Kita pilih saja Detailed Configuration, karena membuat server
menjadi lebih optimal. Klik pada tombol Next > untuk melanjutkan.

Langkah 14:

Tampilan berikutnya, ada 3 pilihan jenis server: Developer Machine,


Server Machine atau Dedicated MySQL Server Machine. Untuk tutorial ini, kita
memilih Developer Machine. Dengan demikian MySQL tidak akan memonopoli
atau memberatkan kerja sistem lainnya yang ada di komputer Anda. Klik pada
tombol Next > untuk melanjutkan.

Praktikum Basis Data Hal 22


Langkah 15:

Tampilan berikutnya, tujuan dari MySQL tersebut nantinya untuk


kegunaan apa. Ada 3 pilihan, Multifunctional Database, Transactional Database
Only atau Non-Transactional Database Only. Untuk tutorial ini, kita pilih saja
Multifunctional Database. Klik pada tombol Next > untuk melanjutkan.

Praktikum Basis Data Hal 23


Langkah 16:

Tahap ini menampilkan drive mana jenis tabel InnoDB akan diinstall.
Mulai MySQL 4.1.x, InnoDB sudah dimasukkan dalam satu paket. Dengan
adanya InnoDB memungkinkan Anda untuk melakukan Transaction dalam
database. Dimana table MyISAM (yang merupakan jenis tabel default pada
MySQL) tidak mendukung Transaction. Untuk tampilan ini gunakan saja pilihan
standar yang ada, dan lanjutkan dengan meng-klik tombol Next.

Praktikum Basis Data Hal 24


Langkah 17:

Tampilan berikutnya, ada tiga pilihan jumlah maksimum koneksi yang


diijinkan pada server MySQL Anda: Decission Support (DSS)/OLAP, Online
Transaction Processing (OLTP), atau Manual Setting. Pilihan Decission Support
sudah cukup memadai untuk tutorial kita ini. Lanjutkan dengan menekan tombol
Next >.

Praktikum Basis Data Hal 25


Langkah 18:

Tampilan berikutnya, apakah Anda akan menggunakan fasilitas TCP/IP


untuk mengakses server MySQL atau tidak. Untuk yang menggunakan komputer
stand-alone, pilihan ini tidak ada pengaruhnya. Tapi bagi Anda yang terhubung
dengan komputer jaringan, boleh juga untuk mengaktifkan pilihan Enable TCP/IP
Networking.

Disini ada sedikit perbedaan dibanding dengan proses instalasi MySQL 4.1.x. Ada
tambahan pilihan Enable Strict Mode. Aktifkan saja pilihan ini sesuai dengan
yang disarankan oleh sistem. Lanjutkan dengan menekan tombol Next>.

Praktikum Basis Data Hal 26


Langkah 19:
Pilihan berikutnya mengenai jenis karakter yang Anda gunakan. Nah, pilih
saja karakter standar (Standard Character Set)

Praktikum Basis Data Hal 27


Langkah 20:

Tampilan berikutnya, Aktifkan pilihan Install as Windows Service dan


Launch the MySQL Server automatically . Dengan pilihan ini maka setiap
komputer Anda dinyalakan, secara otomatis program MySQL server akan
dijalankan.

Begitupun sebaiknya aktifkan pilihan Include Bin directory in Windows


Path. Program-program MySQL biasanya disimpan di dalam directory
C:\Program Files\MySQL\MySQL Server 5.0\Bin. Dengan mengaktifkan pilihan
ini, maka Anda dapat menjalankan atau memanggil program MySQL langsung
dari DOS/Command Prompt.

Praktikum Basis Data Hal 28


Langkah 21:

Tampilan berikutnya, mengenai masalah keamanan server MySQL. Anda


sebaiknya memberikan password khusus sebagai Root, dan tidak memberikan
peluang kepada orang-orang untuk memasuki sistem anda tanpa password. Maka
aktifkan pilihan Modify Security Setting dan masukkan password Root Anda
dengan seksama. Tetapi, matikan pilihan Create An Anonymous Account. Dengan
demikian tidak sembarangan orang dapat masuk menggunakan MySQL server
Anda.

Satu hal lagi, disarankan mematikan juga pilihan Enable Root access from
remote machines. Ini untuk mencegah celah-celah yang bisa dimasuki oleh orang-
orang yang tidak bertanggungjawab menyelinap ke dalam sistem kita. Lanjutkan
dengan menekan tombol Next >.

Praktikum Basis Data Hal 29


Langkah 22:

Bila Anda telah yakin untuk melanjutkan, klik pada tombol Execute. Dan
Anda bisa santai sejenak sambil menunggu proses setting selesai.

Langkah 23:

Bila tidak ada kendala apapun, maka selesailah keseluruhan proses


instalasi dan setting pada program MySQL 5.0.x ini. Silakan klik pada tombol
Finish untuk menuntaskan proses ini.

Praktikum Basis Data Hal 30


Langkah 24:

Sekarang silakan anda lakukan uji coba untuk mengakses MySQL dari
DOS Prompt/Command Line. Ketikkan saja:

C:>mysql -u root -p

Enter password:*******

Praktikum Basis Data Hal 31


Langkah 25:

Coba juga untuk memasukkan beberapa perintah MySQL seperti show


databases, dan sebagainya. Bila hal ini bisa berjalan sebagaimana mestinya, maka
sekaranglah saatnya bagi Anda untuk sejenak bersantai. Instalasi MySQL 5.0.x
basis windows telah tuntas Anda lakukan.

Praktikum Basis Data Hal 32


BAB IV

DATA DEFINITION LANGUAGE (DDL)

Tujuan Praktikum

1. Menjelasakan apa itu Data Definition Language.


2. Menjelaskan perintah – perintah dasar untuk mendefinisikan objek dari
basis data.

Indikator

1. Praktikan mampu memahami Data Definition Language (DDL).


2. Praktikan mampu membuat perintah untuk mendefinisikan objek dari
basis data meliputi atribut – atribut basis data dan tabel.

Data Definition Language (DDL) merupakan kelompok perintah yang digunakan


untuk melakukan pendefinisian database maupun tabel.

Perintah dasar dalam DDL ini adalah:

1. CREATE : perintah ini digunakan untuk membuat database, tabel,


view dan index.
2. ALTER : perintah ini digunakan untuk mengubah struktur tabel.
3. DROP : perintah ini digunakan untuk menghapus database, tabel,
view dan index.

A. Database

Perintah untuk membuat database yaitu:

CREATE DATABASE namadatabase;

Praktikum Basis Data Hal 33


Perintah ini digunakan pertama kali sebelum membuat tabel, view,
maupun komponen lain dalam sistem database. Nama database dapat
terdiri dari kombinasi huruf dan karakter namun sebaiknya tidak
mengandung spasi dan tanda baca untuk memudahkan pengaturan
database dikemudian hari. Contoh:

CREATE DATABASE pembelian;

Sedangkan perintah untuk melakukan penghapusan database, yaitu:

DROP DATABASE namadatabase;

Contoh query:

DROP DATABASE pembelian;

B. Tabel
Perintah umum untuk membuat tabel pada database yaitu:

CREATE TABLE namatabel (


Field1 TipeData1(jumlahdigit)[keterangan primary key
atau not null jika diperlukan],
Field2 TipeData2 (jumlahdigit)…
);

Praktikum Basis Data Hal 34


Atau secara lebih lengkapnya:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS]tbl_name

(create_definition,...)

[table_option ...]

[partition options]

Berikut adalah contoh query pembuatan table sederhana:

CREATE TABLE customer (

id char (8) primary key not null,

nama text not null,

kota char (8));

Field1 adalah atribut yang menjadi nama kolom pertama, Filed2


adalah nama kolom yang kedua, dan seterusnya sejumlah kolom yang
akan didefinisikan pada sebuah tabel. Tipedata1 adalah tipedata yang
digunakan untuk mendefinisikan tipe data yang digunakan pada kolom
yang bersangkutan. Sedangkan jumlahdigit merupakan jumlah yang
dialokasikan untuk tipe data tersebut, namun ada juga yang tidak perlu
dinyatakan jumlahdigit nya karena sudah secara otomatis didefinisikan
oleh database tersebut.

Praktikum Basis Data Hal 35


Berikut tipe data – tipe data yang didukung oleh MySQL:

Tipe Data Deklarasi Keterangan


Char char(panjang) Kolom bertipe char dapat diisi dengandata
teks. Panjang maksimal hanya 255karekter
Varchar varchar(panjang) Tipe ini berisi data teks dengan
panjangmaksimal seperti yang
dideklarasikan
Tinytext tinytext Seperti varchar
Text text Berisi data teks dengan panjangkarakter
yang lebih luas dari tipe-tipe sebelumnya
Integer Int(panjang) Data berupa angka antara 0 – 4294967295
[unsigned] jika unsigned atau -2147483648 –
2147483647 jika signed. Panjang maksimal
karakter sesuai yang dideklarasikan
Tinyint Tinyint(panjang) Data berupa angka antara 0 – 255 jika
[unsigned] unsigned atau -128 – 127 jika signed.
Panjang maksimal karakter sesuai yang
dideklarasikan
Mediumint mediumint(panjang) Data berupa angka antara 0 – 1677215 jika
[unsigned] unsigned atau -8388608 – 8388607 jika
signed. Panjang maksimal karakter sesuai
yang dideklarasikan
Bigint bigint(panjang) Data berupa angka antara 0 – 1020
[unsigned]
Float float(panjang) Data berupa angka real dengan presisi
hingga pangkat 38. Panjang maksimal adalah
53
Double double(panjang) Data berupa angka real dengan presisi
hingga pangkat 308.

Date date Menyimpan nilai dalam format (tahun –


bulan -
tanggal)
Datetime datetime Menyimpan nilai dalam format (tahun -
bulan- tanggal – jam – menit - detik)

Timestamp Timestamp (panjang) Menyimpan date dan time berdasarkan


panjang yang diberikan

Time time menyimpan nilai dalam format (jam menit


detik)

Praktikum Basis Data Hal 36


Foreign Key

Cara mendefinisikan foreign key ada bermacam-macam tergantung kasus.

Berikut contoh-contoh pendefinisian foreign key.

create table skripsi (

nim char (8) references mahasiswa(nim),

judul text not null,

pembimbing char (8));

Pembuatan tabel di atas akan mempengaruhi insertion data ke


dalam tabel. Secara otomatis setiap kali kita mengisikan record ke tabel
akan dicek pada kolom nim, apakah nim yang dimasukkan ke tabel skripsi
ada di kolom nim tabel mahasiswa. Penulisan create table di atas dapat
diganti dengan

create table skripsi (

nim char (8) references mahasiswa,

judul text not null,

pembimbing char (8));

Tanpa menyebutkan nama kolom di dalam tabel mahasiswa, referensi akan


otomatis ke primary key tabel terkait. Syaratnya primary key harus terdiri dari
satu kolom. Jika referensi lebih dari satu kolom pada tabel yang sama maka
penulisan create table menjadi:

Praktikum Basis Data Hal 37


create table example

(a integer,

b integer,

c integer,

foreign key (a,c) references table2(x,y));

Penulisan create table untuk referensi lebih dari satu dan menunjuk pada tabel
yang berbeda sebagai berikut:

create table skripsi (

nim char (8) references mahasiswa(nim),

judul text not null,

pembimbing char (8) references dosen(nip));

Biasanya pendefinisian foreign key diikuti dengan aksi yang akan berlaku untuk
tabel yang direferensi maupun yang mereferensi. Aksi yang didukung oleh
MySQL antara lain:

1. On Delete Restrict: kolom terkait pada tabel yang direferensi tidak dapat
dihapus.
2. On Delete No Action: sama seperti On Delete Restrict.
3. On Delete Cascade: jika kolom pada tabel yang direferensi dihapus maka
data pada kolom yang mereferensi juga turut dihapus.
4. On Delete Set Null: Jika kolom pada tabel yang direferensi dihapus maka
data pada kolom yang mereferensi diubah menjadi null.
5. On Update Restrict: update pada kolom yang masih direferensi suatu tabel
tidak diperbolehkan

Praktikum Basis Data Hal 38


6. On Update Cascade: jika kolom pada tabel yang direferensi diupdate maka
data kolom tabel yang mereferensi juga turut diupdate.
7. On Update Set Null: jika kolom pada tabel yang direferensi diupdate maka
data kolom tabel yang mereferensi akan diubah menjadi null.

Perintah untuk menghapus tabel pada database yaitu:

DROP TABLE namatabel;

Contoh query untuk menghapus table customer:

DROP TABLE customer;

Sedangkan untuk mengubah tabel, dapat dilakukan dengan sintaks sebagai


berikut:
ALTER TABLE namatabel

ADD(nama_kolom_baru tipe AFTER/BEFORE nama_kolom_lama)


CHANGE (nama_kolom_lama nama_kolom_baru tipedata_baru)
DROP (nama_kolom_lama);

Contoh query untuk menambah field kota di tabel Customer:

ALTER TABLE customer ADD kota varchar(30);

Contoh query untuk mengubah suatu field, misalnya tipe data kota dalam
tabel Customer:

ALTER TABLE customer MODIFY COLUMN kota char(25);

Sedangkan untuk menghapus field, gunakan perintah:

ALTER TABLE customer DROP COLUMN kota;

Praktikum Basis Data Hal 39


C. Index
Index adalah skema objek yang digunakan untuk meningkatkan
kecepatan dalam mendapatkan baris data yang diinginkan dengan
menggunakan pointer. Cara membuat index yaitu dengan perintah:

CREATE INDEX namaindex ON namatabel(namakolom);

Sedangkan untuk menghapus index menggunakan perintah:

DROP INDEX namaindex;

LATIHAN DDL (DATA DEFINITION LANGUAGE)


Buatlah basis data Perpustakaan kemudian buat tabel anggota dengan struktur sebagai
berikut:

Nama field/atribut Tipe data Ukuran Keterangan

ID_anggota Varchar 4 Primary Key

Nama Varchar 15

Alamat Varchar 20

No_Telp Varchar 12

Tgl_Lahir Varchar

Kemudian buatlah query untuk melakukan hal-hal berikut:


1. Hapus (drop) keterangan primary key pada “ID_anggota”.
2. Tambahkan kembali primary key pada “ID_anggota”.
3. Lihat field table “anggota”.
4. Ganti nama table “anggota” menjadi “anggota_baru”.
5. Ganti nama atribut “Nama” dengan “Nama_Anggota”.
6. Ubah tipe “Tgl_Lahir” menjadi Date.

Praktikum Basis Data Hal 40


BAB V

DATA MANIPULATION LANGUAGE

Tujuan Praktikum

3. Menjelasakan apa itu Data Manipulation Language.


4. Menjelaskan query-query pada Data Manipulation Language beserta
contohnya.

Indikator

3. Praktikan mampu memahami Data Manipulation Language (DML).


4. Praktikan mampu membuat perintah untuk memanipulasi data
menggunakan Data Manipulation Language.

Data manipulation language (DML)

Data manipulation language (DML) merupakan perintah SQL yang


digunakan untuk memanipulasi database. Perintah DML diantaranya sebagai
berikut :

1. Insert
Digunakan untuk memasukkan data ke dalam tabel.
2. SELECT
Digunakan untuk memilih dan menampilkan data.
3. Update
Digunakan untuk mengubah data dalam tabel.
4. Delete
Digunakan untuk menghapus data dari tabel

Praktikum Basis Data Hal 41


INSERT

Terdapat beberapa sintaks umum yang digunakan untuk pengisian data ke


dalam tabel.

1. INSERT INTO nama_tabel VALUES (daftar nilai),


(daftar nilai),

Perintah di atas berfungsi untuk mengisikan data ke dalam tabel secara


urut dari kolom paling kiri hingga paling akhir. Values yang diberikan harus sama
jumlahnya dengan kolom yang tersedia di dalam tabel.

Contoh:

INSERT INTO kurir VALUES ("dewi", "3", "2006-09-10",


"08.00.00", "9908");

2. INSERT INTO nama_tabel (daftar kolom) VALUES


(daftar nilai),...

Pengisian seperti ini tidak menghiraukan apakah kolom yang seharusnya NOT
NULL terisi atau tidak. Cara ini digunakan seperlunya, sebab bisa menimbulkan
error seperti kolom primary key tidak terisi.

INSERT INTO pelanggan(ID_pelanggan, nama_pelanggan) VALUES


("140", "Gugun");

3. I INSERT INTO nama_tabel SET nama_kolom = nilai,


...

Sintaks tersebut di atas harus menuliskan nama kolom secara benar, jika tidak
maka akan menyebabkan error.

INSERT INTO pelanggan SET ID_pelanggan=”140”,


nama_pelanggan=”Gugun”;

Praktikum Basis Data Hal 42


DELETE

Delete digunakan untuk menghapus record suatu tabel. Sedangkan untuk


menghapus data pada kolom tertentu menggunakan perintah update.

Sintaks untuk menghapus data dari sebuah tabel secara umum berbentuk:

DELETE FROM <tabel>

WHERE <kondisi>

Perhatikan contoh query berikut

DELETE FROM pembeli

WHERE alamat_kota=”surabaya” ;

Contoh query lain

DELETE FROM pembelian

WHERE total between 0 and 999;

Perbedaan antara contoh delete di atas dengan sebelumnya adalah kondisi yang
dipakai. Jika data berupa angka, memungkinkan kondisi berupa suatu range nilai.

Filtering pada delete dapat berupa fungsi SELECT seperti

DELETE FROM pembelian

WHERE kode_pegawai IN (SELECT kode_pegawai


FROM pegawai Praktikum Basis Data 1
WHERE nama = ‘Ani’);

Praktikum Basis Data Hal 43


Tentunya SELECT yang dilakukan hanya satu kolom karena pencocokan
kode_pegawai hanya bisa dengan satu kolom.

Filtering juga bisa berupa fungsi agregat

DELETE FROM pembelian

WHERE total < (SELECT AVG(total)

FROM pembelian);

Dari fungsi SELECT menghasilkan sebuah nilai rata-rata dari seluruh total yang
dilakukan pembeli di tabel pembelian. Apabila ada data di kolom total tabel
pembelian yang kurang dari nilai rata-rata tersebut, maka record terkait akan
dihapus.

Yang harus diperhatikan dalam delete adalah, fungsi ini hanya dapat melibatkan
satu tabel. Terlihat dalam tabel setelah FROM hanya berisi sebuah tabel. Cara ini
berbeda dengan FROM pada fungsi SELECT (dibahas selanjutnya) yang bisa
melibatkan lebih dari satu tabel.

UPDATE

Update merupakan perintah untuk mengubah data yang sudah ada didalam tabel.
Perintah update memiliki sintaks secara umum sebagai berikut

UPDATE <tabel>

SET <nama kolom> = <value>

WHERE <kondisi>

Praktikum Basis Data Hal 44


Contoh perintah update sebagai berikut:

UPDATE pembelian SET total= 10000 WHERE no_nota=101;

Perintah update di atas adalah untuk mengganti data total dan id_member pada
tabel pembelian yang memiliki no_nota=101. Set menginstruksikan penggantian
nilai pada kolom tertentu, dapat berupa nilai konstan seperti contoh di atas atau
sebuah ekspresi seperti berikut

UPDATE barang SET harga = harga + 1000;

Query di atas digunakan merubah harga semua barang pada tabel barang ditambah
sebesar 1000.

Perintah yang lain untuk mengubah 2 data kolom sekaligus, sebagai berikut:

UPDATE pembelian SET total=11000, id_member=19 WHERE no_nota=12;

Perintah update juga bisa digunakan untuk menghapus data sebuah kolom pada
tabel. Perhatikan query berikut

UPDATE pembeli SET alamat_jalan = ”” WHERE id_member =110;

Hasil dari query di atas, data alamat_jalan yang ber-id_member 110 akan
dihilangkan/diset NULL. Contoh perintah update yang lain, perhatikan query
berikut

Praktikum Basis Data Hal 45


UPDATE barang

SET harga = case

WHEN harga > 10000 then 15000

WHEN harga > 20000 then 25000

ELSE 5000

END;

Update dilakukan pada tabel barang kolom harga di mana terdapat


beberapa kondisi dengan perilaku yang berbeda. Pada contoh di atas terdapat tiga
kondisi harga, dimana tiap kondisi memiliki statement yang berbeda.

SELECT

Perintah SELECT digunakan untuk memilih dan menampilkan data dari


suatu database, baik dari satu tabel atau lebih. Fungsi SELECT dalam bentuk
sederhana hanya mempunyai pasangan kata FROM, yang berarti memilih tabel
yang akan diSELECT. Bentuk umumnya sbb:

SELECT <nama kolom>

FROM <nama tabel>

Contoh:

SELECT * FROM pembeli;

Perintah di atas digunakan untuk memilih semua kolom dan seluruh record
pada tabel pembeli. Pemilihan seperti ini memungkinkan terjadinya redudansi
data (data berulang).

Praktikum Basis Data Hal 46


Distinct

Fungsi distinct digunakan untuk menampilkan record yang berbeda berdasarkan


satu kolom. Perhatikan contoh berikut:

SELECT DISTINCT nama_pembeli FROM pembeli ;

Menampilkan kolom nama_pembeli dengan record yang dipilih hanya muncul


satu kali (tidak ada pengulangan nama_pelanggan). Fungsi distinct di atas hanya
digunakan untuk pemilihan satu kolom. Untuk pemilihan distinct lebih dari satu
kolom, perhatikan query berikut ini:

SELECT DISTINCT * FROM pembelian GROUP BY id_member ;

Terlihat berbeda dari SELECT distinct sebelumnya, fungsi SELECT di


atas ditambahkan dengan kata group by. Hal ini disebabkan, distinct hanya dapat
berlaku pada satu kolom. Jadi meskipun banyak kolom yang dipilih namun hanya
ada satu kolom yang bisa diberlakukan fungsi distinct.

Hasilnya seluruh kolom dan record pada tabel transaksi akan dipilih dan
data pada kolom id_member tidak ada yang sama/berulang.

Operator Relational dan Logika

Selain FROM pelengkap dari fungsi SELECT adalah where. Where berfungsi
untuk memberikan kondisi pemilihan sehingga hasil perintah SELECT sesuai
dengan yang dibutuhkan. Terdapat operator relasional dengan tanda =, <>, <, >,
<=, >=, serta operasi logika AND, OR, XOR yang digunakan sebagai kondisi
pada where. Sintaksnya sebagai berikut :

Praktikum Basis Data Hal 47


SELECT <nama kolom>

FROM <nama tabel>

WHERE <kondisi>

Kata SELECT diikuti oleh nama kolom yang akan dipilih. Kata FROM diikuti
oleh nama tabel dimana asal kolom yang dipilih. Kata where diikuti oleh batasan
record-record yang terpilih (kondisi). Contoh penggunaan where dalam SELECT,
perhatikan contoh berikut:

SELECT id_member

FROM pembelian

WHERE total >= 50000 AND tanggal=”2009-01-02”;

Cara membaca fungsi SELECT dimulai dari kata FROM. FROM pembelian yang
berarti semua kolom dan record pada tabel pembelian dipilih. Kemudian Where
total >= 50000 AND tanggal=”2009-01-02” berarti penyaringan record yang
terpilih. Record yang memenuhi syarat where saja yang terpilih. Terakhir,
SELECT id_member berarti kolom tabel pembelian yang sebelumnya terpilih
semua akan disaring sehingga hanya kolom bernama id_member saja yang
terpilih. Terdapat operator relasional lain pada where, yaitu : between. Berfungsi
pada query sebagai berikut:

SELECT id_member

FROM pembelian

WHERE 50000 <= total AND total <= 100000 ;

Praktikum Basis Data Hal 48


Sama dengan query berikut:

SELECT id_member

FROM pembelian

WHERE total BETWEEN 50000 AND 100000;

Kebalikan dari between adalah NOT BETWEEN.

Operator in dan not in

Fungsi lain yang mengikuti where adalah in dan not in. Fungsi in atau not in
digunakan untuk melakukan filtering terhadap record yang dipilih. Jika data pada
suatu kolom sesuai dengan daftar in atau not in maka record yang mengandung
data tersebut ditampilkan.

SELECT id_member

FROM pembelian

Where total in (500000,1000000) ;

Query di atas akan menampilkan id_member dari tabel pembelian yang


mempunyai total 50000 atau 1000000. Jika berbentuk string, penulisannya
menggunakan petik dua, perhatikan contoh berikut:

SELECT nama

FROM pembelian

WHERE alamat_kota in (“Jakarta”, “Bogor”, Tangerang”) ;

Praktikum Basis Data Hal 49


Operator Like

Like hanya digunakan jika data berupa string atau karakter. Sebagai contoh
perhatikan query berikut :

SELECT *

FROM pembeli

Where nama like "%iz%" ;

Perintah di atas berguna untuk memilih baris dari tabel pembeli yang mengandung
karakter ‘iz’ di tengah-tengah nama. Karakter yang digunakan untuk fungsi like
adalah persen (%) dan underscore( _ ).

% → string apapun

_ → character apapun

Contoh-contoh berikut akan lebih memudahkan pemahaman tentang pemakaian


fungsi like.

1. “Rum%” → ”Rumanystring” → kata yang awalnya dimulai dengan Rum.

2. ”%fi%” → ”anystringfianystring” → kata yang di tengah-tengahnya


mengandung karakter fi.

3. " _ _ “ → kata yang tepat dua karakter.

4. ” _ _ _ _%” → kata yang minimum terdiri dari 4 karakter.

Null dan Not null

Filtering yang lain menggunakan kata kunci is null atau is not null. Perhatikan
query berikut

Praktikum Basis Data Hal 50


SELECT distinct nama

FROM pembeli

Where telepon is not null ;

Hasil dari query tersebut adalah nama-nama pembeli yang memiliki telepon tidak
null.

Mengurutkan Data

Fungsi yang digunakan untuk mengurutkan data yaitu order by. Terdapat
dua jenis pengurutan data, yaitu secara ascending atau descending. Defaultnya
fungsi order by mengurutkan secara ascending. Jika order by diikuti oleh kata
desc, maka data akan diurutkan secara descending, jika order by diikuti oleh kata
asc atau tidak maka data akan diurutkan secara ascending. Perhatikan contoh
query berikut :

SELECT * FROM pembelian

WHERE id_member IN ("123","125","137")

ORDER BY (tanggal) ASC;

Query di atas akan menampilkan data dari seluruh kolom pada tabel
pembelian untuk record yang memiliki id_meber = ("123","125","137") kemudian
diurutkan berdasarkan tanggal transaksi secara ascending.

Praktikum Basis Data Hal 51


Join

Perintah join digunakan untuk menggabungkan dua tabel atau lebih.

Klausa join ada beberapa macam :

1. inner join

2. left outer join

3. right outer join

Perintah inner join, berfungsi menggabungkan dua buah tabel dengan seleksi
tertentu. Seleksi menggunakan perintah on diikuti dengan kondisi seleksi.
Misalnya:

SELECT pembeli.* , pembelian.*

FROM pembeli Inner join pembelian

ON pembeli.id_member = pembelian.id_member ;

Hasil dari query di atas adalah record-record dari tabel pembeli digabung
dengan tabel pembelian dengan filtering id_member masing-masing tabel adalah
sama. Sedangkan untuk perintah left outer join, dapat dilihat pada query berikut

SELECT pembeli.* , pembelian.*

FROM pembeli LEFT OUTER JOIN pembelian

ON pembeli.id_member = pembelian.id_member ;

Query di atas memiliki hasil berupa penggabungan antara tabel pembeli


dan tabel pembelian dengan syarat data id_member pada tabel pembeli dan tabel
pembelian harus sama dan seluruh record pada tabel pembeli harus muncul.

Praktikum Basis Data Hal 52


Sedangkan untuk perintah right outer join, dapat dilihat pada query berikut:

SELECT pembeli.* , pembelian.*

FROM pembeli LEFT OUTER JOIN pembelian

ON pembeli.id_member = pembelian.id_member ;

Query di atas menghasilkan gabungan antara tabel pembeli dan tabel


pembelian dengan syarat data id_member pada tabel pembelia dan tabel
pembelian harus sama dan seluruh record pada tabel pembelian harus muncul.

Where diletakkan setelah perintah join. Fungsinya adalah untuk


melakukan filtering record hasil join. Sebagai contoh perhatikan query berikut:

SELECT pembeli.* , pembelian.*

FROM pembeli LEFT OUTER JOIN pembelian

ON pembeli.id_member = pembelian.id_member

WHERE pembelian.total >50000;

Hasil dari query tersebut sama seperti pada perintah left outer join
sebelumnya namun ada pengurangan jumlah record yang ditampilkan. Dari
semula record transaksi semua dipilih record yang total-nya lebih besar dari
50000.

Praktikum Basis Data Hal 53


Renaming Table

SQL memberikan fasilitas untuk melakukan renaming (penggantian nama)


suatu kolom ataupun tabel. Perhatikan contoh query berikut:

SELECT A.nama AS customer, B.total AS total

FROM pembeli AS A, pembelian AS B

Where A.id_member = B.id_member ;

Renaming kolom akan terlihat pada hasil SELECT-nya. Namun untuk


renaming tabel tidak akan terlihat dikarenakan renaming tabel hanya bersifat
sementara dan hanya berguna untuk memudahkan pengenalan tabel saat penulisan
query.

Fungsi Aggregat dan Group By

Fungsi aggregat adalah fungsi matematika sederhana dalam SQL. Fungsi aggregat
hanya bisa digunakan untuk kolom bertipe angka (misal integer, shortint). Fungsi
aggregat sebagai berikut :

sum → nilai jumlah suatu kolom

avg → nilai rata – rata suatu kolom Praktikum Basis Data 1

max → nilai maksimal suatu kolom

min → nilai minimum suatu kolom

count → nilai cacah suatu kolom

Fungsi Group By digunakan untuk mengelompokkan data berdasarkan


engelompokkan menurut satu atau lebih dari satu kolom. Fungsi Group By
digunakan untuk memfasilitasi fungsi agregat. Perhatikan contoh query berikut:

Praktikum Basis Data Hal 54


SELECT A.nama, sum(B.total) AS total

FROM pembeli AS A, pembelian AS B

WHERE A.id_member = B.id_member

GROUP BY nama ;

Query di atas digunakan untuk menghitung jumlah transaksi yang dilakukan tiap-
tiap pelanggan tetap di suatu toko.

Having

Having merupakan fungsi pelengkap dari agregat dan digunakan bersama


group by. Fungsinya menerangkan kondisi agregat tertentu.

Perhatikan contoh berikut:

Menghitung jumlah transaksi pembelian yang bernilai lebih dari 100000,


yang dilakukan tiap-tiap pelanggan tetap disuatu toko. Maka query yang diberikan
sebagai berikut :

SELECT A.nama, sum(B.total) as total_belanja

FROM pembeli as A, pembelian as B

WHERE A.id_member = B.id_member

GROUP by A.nama

HAVING SUM(B.total) > 100000;

Praktikum Basis Data Hal 55


Dengan kata lain having hampir mirip fungsinya dengan where, yaitu
berfungsi untuk mengiris hasil SELECT menjadi lebih kecil anggotanya dengan
syarat tertentu. Contohnya adalah sebagai berikut yaitu query untuk menghitung
rata - rata belanja dari tiap pelanggan yang pernah berkunjung lebih dari 3 kali.

SELECT A.nama,avg(B.total) AS rata_belanja

FROM pembeli AS A, pembelian AS B

WHERE A.id_member = B.id_member

GROUP BY A.nama

HAVING COUNT(B.total) > 3;

Nested Query

Nested query atau juga disebut dengan subquery adalah query yang
minimal memiliki dua perintah SELECT. Perhatikan contoh query berikut:

SELECT id_member, nama

FROM pembeli

where (id_member) in

(SELECT distinct id_pelanggan FROM transaksi);

Praktikum Basis Data Hal 56


Query di atas sama seperti perintah SELECT berikut:

SELECT a.id_member, a.nama

FROM pembeli as a, pembelian as b

WHERE a.id_member = b.id_member ;

Contoh query yang lain:

SELECT b.jumlah_barang, b.kode_barang, a.total_biaya,


a.no_nota, a.tanggal

FROM pembelian as a , detail_pembelian as b

WHERE a.no_nota = b.no_nota and a.no_nota in

(SELECT no_nota FROM pembelian WHERE pembelian.id_member


=101) ;

Perintah di atas adalah memilih record-record data transaksi pembelian dimana


no_nota dari tabel detail pembelian dan tabel pembelian merupakan no_nota yang
dimiliki oleh pembeli ber-id 101.

SELECT DISTINCT nama, id_member


FROM pembeli
WHERE id_member in
(SELECT id_member
FROM pembelian
WHERE no_nota in
(SELECT no_nota
FROM detail_pembelian
GROUP BY no_nota
HAVING SUM(jumlah_barang) >= 50));

Praktikum Basis Data Hal 57


Perintah di atas adalah memilih record-record data pembeli yang memiliki total
jumlah barang pada tabel detail pembelian >= 50 item. Bentuk query di atas
memang kurang efektif, namun di sini hanya untuk contoh bentuk nested query
yang lebih kompleks.

SELECT no_nota

FROM pembelian

WHERE total > SOME (SELECT total

FROM pembelian

WHERE total >= 50000);

Perintah nested di atas disebut juga dengan set comparison. Kata yang digunakan
sebagai ciri set comparison adalah > some, >= some, < some, <= some, = some,
<> some, > all, >= all, <all, <=all, = all, dan, <> all.

Perhatikan subquery berikut:

SELECT total

FROM pembelian

where total >= 50000

Subquery diatas menghasilkan record total_biaya dari tabel pembelian yang


bernilai lebih dari sama dengan 50000. Kemudian perintah > some di dalam
parent query berfungsi membandingkan nilai total_biaya dari tabel pembelian.
Jika nilai tersebut lebih besar sama dengan minimal satu record hasil dari
subquery, maka nilai tersebut terpilih.

Praktikum Basis Data Hal 58


SELECT no_nota

FROM pembelian

WHERE total < all (SELECT total

FROM pembelian

WHERE total >= 50000);

Perbedaan antara some dan all dapat dilihat dengan membandingkan query
sebelumnya dengan query di atas. Jika some, nilai akan bernilai benar jika
memenuhi syarat (dalam hal ini >) minimal satu record hasil subquery. Namun
untuk all, akan bernilai benar jika syarat (dalam hal ini < ) terpenuhi pada semua
record hasil subquery.

Exist

Arti kata exist adalah ada. Kata kunci Exist digunakan pada filtering setelah kata
where, biasanya digunakan pada nested query. Perhatikan

contoh query berikut:

SELECT id_member,nama

FROM pembeli

WHERE EXIST (SELECT id_member

FROM pembelian);

Query di atas akan menampilkan id_member dan nama dari tabel pembeli yang
pernah melakukan transaksi pembelian.

Praktikum Basis Data Hal 59


VIEW

View mulai ada pada MySQL Versi 5.0. View digunakan untuk
menyederhanakan Query SQL dan membatasi field-field yang dibutuhkan pada
saat mengakses tabel. View seperti tabel, tetapi datanya berasal dari tabel lain.

Sintaks view adalah sebagai berikut:

CREATE VIEW <nama view> AS <select statement>;

Perhatikan contoh query berikut:

CREATE VIEW pembelian_besar AS

SELECT A.nama, B.no_nota, sum(B.total)

FROM pembeli A, pembelian B

WHERE A.id_member =B.id_member

GROUP BY A.nama

HAVING SUM(B.total)>500000;

Query di atas membuat view untuk menampilkan nama pembeli, no nota


dan total pembelian > 500000. View sama seperti tabel, dapat dilakukan query
terhadap view, tetapi hanya perintah SELECT.

Praktikum Basis Data Hal 60


LATIHAN DML (DATA MANIPULATION LANGUAGE)

Pada sebuah Sistem Informasi diberikan rancangan basisdata seperti berikut

Praktikum Basis Data Hal 61


• Tabel Master

– program_studi
– mahasiswa
• Mahasiswa terdaftar dalam satu program studi
– matakuliah
• Kode matakuliah unik dalam satu prodi
• Kode matakuliah boleh sama antar prodi
– semester
• Format sem_id: [tahun:4][sem:1], contoh: 20041 à 2004 ganjil
• Tabel Transaksional

– kelas

• Kelas diselenggarakan dalam tiap semester

– krs

• Menyimpan informasi satu sesi krs tiap mahasiswa per semester

• Krs menyimpan status persetujuan, apakah krs yang diambil


mahasiswa tersebut telah disetujui dosen pembimbing

– krs_item

• Berisi data tiap matakuliah kelas yang diambil oleh


mahasiswa dalam tiap sesi semesternya.

• Data yang bisa dimasukkan ke tabel ini hanya data


matakuliah yang sudah ditawarkan di kelas

• Data nilai tersimpan dalam tabel ini

1. Tambahkan sampel data ke dalam tabel program studi,prodi_id = 1,2,3


prodi_nama = matematika,ilmu komputer,statistika

2. Tambahkan sample data untuk mahasiswa angkatan 2004, dengan data sebagai
berikut

mhs_nim = 91237,91236,91235
mhs_angkatan = 2004,2004,2004
mhs_nama = 'Edi Sugiyanto','Suci Eryani‘,’Adi Hartanto’
mhs_prodi_id = 3,3,3

Praktikum Basis Data Hal 62


mhs_jenis_kelamin = 'L','P','L'
mhs_tanggal_lahir=‘1985-1-12’,'1985-1-1‘, '1985-9-23'
3. Tambahkan dalam tabel program_studi dengan data prodi_id=4,
prodi_nama = ‘kimia’

4. Tambahkan data baru tabel semester dengan data sebagai berikut

sem_id= 20071,20072,20081,20082
sem_tahun =2007,2007,2008,2008
sem_nama =ganjil,genap,ganjil,genap
5. Tambahkan data baru ke tabel mahasiswa dengan data sebagai berikut

mhs_nim = 10028,9932,9872,9572,9232,9432
mhs_angkatan = 2004,2004,2003,2003,2002,2002
mhs_nama = ani,adi,andi,ana,ari,anti
mhs_prodi_id = 1,2,3,1,2,3
mhs_jenis_kelamin = P,L,L,P,L,P
mhs_tanggal_lahir = ?diisi terserah?

6. Tambahkan data baru ke tabel matakuliah dengan data sebagai berikut

mk_kode = 1001,1001,1001,2001,3001,4001
mk_prodi_id = 1,2,3,2,2,2
mk_nama = kalkulus,kalkulus,kalkulus,alpro,datamining, bioinformatika
mk_semester = 1,1,1,2,4,6
mk_sifat = w,w,w,w,p,p
mk_sks = 3,3,3,3,3,3
7. Ubah data mahasiswa dengan nama Suci Eryani mhs_angkatan=2004
menjadi mhs_angkatan=2003
8. Hapus data pada tabel program studi dengan nama prodi=‘kimia’
9. Tampilkan NIM,Nama ,Jenis kelamin dari mahasiswa angkatan 2004
10. Tampilkan daftar angkatan mahasiswa yang terdapat dalam database,
diurutkan mulai dari angkatan terbesar (descending).
11. Tampilkan total (banyak) mahasiswa yang ada dalam database
12. Tampilkan jumlah mahasiswa per angkatan diurutkan secara descending
13. Tampilkan jumlah mahasiswa per angkatan per prodi. Diurutkan berdasarkan
a. Angkatan (mulai dari angkatan tertua)
b. Prodi

Praktikum Basis Data Hal 63


14. Tampilkan data mahasiswa dengan format sebagai berikut:
No_mahasiswa : mhs_angkatan/nim
Nama_mahasiswa
Contoh :
+---------------------+--------------------+
| no_mahasiswa | mhs_nama |
+---------------------+--------------------+
| 04/10028 | ani |
+---------------------+--------------------+

15. Tampilkan data mahasiswa dengan format sebagai berikut:


Tahun-nama
Jenis kelamin
Contoh :
+---------------------+--------------------+
| mahasiswa | mhs_jns_kel |
+---------------------+--------------------+
| 87-ani | P |
+---------------------+--------------------+

16. Tampilkan nama mahasiswa dan tahun lahir


17. Tampilkan nama mahasiswa dan bulan lahir
18. Tampilkan nama mahasiswa dan hari lahir
19. Tampilkan nama mahasiswa yang lahir pada bulan agustus, januari
20. Tampilkan nama mahasiswa yang lahir pada bulan januari,februari, maret
dan agustus
21. Tampilkan nama program studi beserta mata kuliah wajib yang dimiliki
22. Masukkan sampel data berikut ini ke dalam tabel krs
Krs_sem_id =20081,20081,20071
Krs_mhs_nim=9232,10028,9572
Krs_disetujui=1,1,1

23. Tampilkan nama mahasiswa dan nama program studi, mahasiswa yang
sudah krs pada tahun 2008 semester ganjil
24. tampilkan prodi yang mempunyai mahasiswa lebih dari 3
25. Tampilkan matakuliah dan prodi-nya, yang berasal dari prodi ‘ilmu komputer’
dan ‘statistika’!

Praktikum Basis Data Hal 64

Anda mungkin juga menyukai