modul basis data

70

Click here to load reader

Upload: adie-suryadi

Post on 21-May-2015

4.842 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Modul basis data

BUKU PETUNJUK (MODUL) PRAKTIKUM

BASIS DATA

UNIT LAYANAN KOMPUTER JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA

Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Gadjah Mada

Yogyakarta

Page 2: Modul basis data

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).

Page 3: Modul basis data

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

Page 4: Modul basis data

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

Page 5: Modul basis data

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

Page 6: Modul basis data

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

Page 7: Modul basis data

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.

Page 8: Modul basis data

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

Page 9: Modul basis data

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

Page 10: Modul basis data

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.

Page 11: Modul basis data

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.

Page 12: Modul basis data

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!

Page 13: Modul basis data

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

Page 14: Modul basis data

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,

Page 15: Modul basis data

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

Page 16: Modul basis data

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

Page 17: Modul basis data

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.

Page 18: Modul basis data

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.

Page 19: Modul basis data

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.

Page 20: Modul basis data

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.

Page 21: Modul basis data

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.

Page 22: Modul basis data

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

Page 23: Modul basis data

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 >.

Page 24: Modul basis data

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.

Page 25: Modul basis data

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

Page 26: Modul basis data

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).

Page 27: Modul basis data

Praktikum Basis Data Hal 21

Langkah 12:

Sudah siap untuk mengkonfigurasi MySQL server? Silakan klik pada tombol Next.

Page 28: Modul basis data

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.

Page 29: Modul basis data

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.

Page 30: Modul basis data

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.

Page 31: Modul basis data

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 >.

Page 32: Modul basis data

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>.

Page 33: Modul basis data

Praktikum Basis Data Hal 27

Langkah 19:

Pilihan berikutnya mengenai jenis karakter yang Anda gunakan. Nah, pilih

saja karakter standar (Standard Character Set)

Page 34: Modul basis data

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.

Page 35: Modul basis data

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 >.

Page 36: Modul basis data

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.

Page 37: Modul basis data

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:*******

Page 38: Modul basis data

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.

Page 39: Modul basis data

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;

Page 40: Modul basis data

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)…

);

Page 41: Modul basis data

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.

Page 42: Modul basis data

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)

Page 43: Modul basis data

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:

Page 44: Modul basis data

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

Page 45: Modul basis data

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;

Page 46: Modul basis data

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.

Page 47: Modul basis data

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

Page 48: Modul basis data

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”;

Page 49: Modul basis data

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’);

Page 50: Modul basis data

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>

Page 51: Modul basis data

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

Page 52: Modul basis data

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).

Page 53: Modul basis data

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 :

Page 54: Modul basis data

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 ;

Page 55: Modul basis data

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”) ;

Page 56: Modul basis data

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

Page 57: Modul basis data

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.

Page 58: Modul basis data

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.

Page 59: Modul basis data

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.

Page 60: Modul basis data

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:

Page 61: Modul basis data

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;

Page 62: Modul basis data

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);

Page 63: Modul basis data

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));

Page 64: Modul basis data

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.

Page 65: Modul basis data

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.

Page 66: Modul basis data

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.

Page 67: Modul basis data

Praktikum Basis Data Hal 61

LATIHAN DML (DATA MANIPULATION LANGUAGE)

Pada sebuah Sistem Informasi diberikan rancangan basisdata seperti berikut

Page 68: Modul basis data

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

Page 69: Modul basis data

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

Page 70: Modul basis data

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’!