modul basis data
TRANSCRIPT
BUKU PETUNJUK (MODUL) PRAKTIKUM
BASIS DATA
UNIT LAYANAN KOMPUTER JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA
Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada
Yogyakarta
ii
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).
iii
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
iv
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
v
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
vi
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
Praktikum Basis Data Hal 1
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 2
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 3
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 4
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 5
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 6
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 7
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 8
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,
998970
Diah Ayu, Reno
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 9
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 10
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 11
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 12
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 13
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 14
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 15
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 16
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 17
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 18
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 19
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 20
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 21
Langkah 12:
Sudah siap untuk mengkonfigurasi MySQL server? Silakan klik pada tombol Next.
Praktikum Basis Data Hal 22
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 23
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 24
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 25
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 26
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 27
Langkah 19:
Pilihan berikutnya mengenai jenis karakter yang Anda gunakan. Nah, pilih
saja karakter standar (Standard Character Set)
Praktikum Basis Data Hal 28
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 29
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 30
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 31
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 32
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 33
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 34
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 35
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 36
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)
[unsigned] Data berupa angka antara 0 – 4294967295 jika unsigned atau -2147483648 – 2147483647 jika signed. Panjang maksimal karakter sesuai yang dideklarasikan
Tinyint Tinyint(panjang) [unsigned]
Data berupa angka antara 0 – 255 jika unsigned atau -128 – 127 jika signed. Panjang maksimal karakter sesuai yang dideklarasikan
Mediumint mediumint(panjang) [unsigned]
Data berupa angka antara 0 – 1677215 jika unsigned atau -8388608 – 8388607 jika signed. Panjang maksimal karakter sesuai yang dideklarasikan
Bigint bigint(panjang) [unsigned]
Data berupa angka antara 0 – 1020
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 37
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 38
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 39
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 40
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 41
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 42
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 43
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 44
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 45
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 46
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 47
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 48
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 49
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 50
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 51
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 52
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 53
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 54
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 55
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 56
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 57
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 58
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 59
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 60
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 61
LATIHAN DML (DATA MANIPULATION LANGUAGE)
Pada sebuah Sistem Informasi diberikan rancangan basisdata seperti berikut
Praktikum Basis Data Hal 62
• 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 63
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 64
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’!