BASIS DATA
ii
15. Mahasiswa wajib menjaga keutuhan semua peralatan yang ada di Laboratorium
Komputer serta tidak diperbolehkan memakai komputer Pengajar/Dosen.
16. Mengisi daftar hadir dan mencatat nomor kursi/Komputer yang digunakan selama
praktikum berlangsung ke dalam form daftar hadir yang telah disediakan.
17. Melaporkan keadaan komputer dan atau peralatan yang digunakan (Yang Rusak/tidak
berfungsi) sebelum, sesaat dan atau sesudah penggunaan ke dosen/asisten pengampu
atau kepada laboran.
18. Praktikan wajib mematikan Komputer yang telah selesai digunakan dan merapikan
kembali kursi, meja dan perlengkapan pendukung praktikum lainnya setelah praktikum
selesai dilaksanakan/berakhir.
19. Laboran berhak mencatat, memberikan sanksi atau melakukan tindakan seperlunya
terhadap praktikan yang melanggar tata tertib.
iii
KATA PENGANTAR
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.
iv
DAFTAR ISI
Halaman
HALAMAN JUDUL ……………………………………………………… i
TATA TERTIB PRAKTIKAN …………………………………………… ii
KATA PENGANTAR ……………………………………………………. iv
DAFTAR ISI ……………………………………………………………… v
BAB I ENTITY RELATIONSHIP ……………………………………… 1
Tujuan Praktikum ………………………………………………… 1
Indikator …………………………………………………………... 1
A. Entity Set ………………………………………………………. 1
B. Relational ………………………………………………………. 2
C. Primary Key ……………………………………………………. 3
D. Foreign Key ……………………………………………………. 4
E. Entity-Relationship Diagram …………………………………... 5
Latihan …………………………………………………………….. 6
BAB II NORMALISASI ………………………………………………….. 7
Tujuan Praktikum …………………………………………………. 7
Indikator …………………………………………………………... 7
A. Normalisasi …………………………………………………….. 7
B. Normalisasi I …………………………………………………… 8
C. Normalisasi II ………………………………………………….. 10
D. Normalisasi III ………………………………………………… 11
Latihan ……………………………………………………………. 12
BAB III INSTALASI MySQL …………………………………………… 13
Tujuan Praktikum …………………………………………………. 13
Indikator …………………………………………………………... 13
Download (langkah 1 s.d. Langkah 24) …………………………… 13-31
Latihan ……………………………………………………………... 32
BAB IV DATA DEFINITION LANGUAGE (DDL) ……………………... 33
Tujuan Praktikum …………………………………………………. 33
Indikator …………………………………………………………... 33
v
Halaman
A. Database ……………………………………………………….. 33
B. Tabel …………………………………………………………… 34
C. Index …………………………………………………………… 40
Latihan DDL (Data Definition Language) ….…………………….. 40
BAB V DATA MANUPULATION LANGUAGE ………………………. 41
Tujuan Praktikum …………………………………………………. 41
Indikator …………………………………………………………... 41
Data Manipulation Language (DML) …………………………….. 41
Insert ……………………………………………………………… 42
Delete ……………………………………………………………... 43
Update …………………………………………………………….. 44
Select ……………………………………………………………… 46
Distenet ……………………………………………………………. 47
Operator Relational dan Logika …………………………………… 47
Operator In dan Out in …………………………………………….. 48
Operator Like ……………………………………………………… 50
Nuil dan Not nuil ………………………………………………….. 50
Mengurutkan Data ………………………………………………… 51
Join ………………………………………………………………… 52
Renaming Table …………………………………………………… 54
Fungsi Agregat dan Group By …………………………………….. 54
Having …………………………………………………………….. 55
Nested Query ……………………………………………………… 56
Exisi ……………………………………………………………….. 59
Viev ………………………………………………………………... 60
Latihan DML (Data Manipulation Language) …………………….. 61
vi
BAB I
ENTITY RELATIONSHIP
Tujuan Praktikum
Indikator
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.
1. Simple atribute : entity yang atributnya tidak dapat dibagi menjadi bagian
yang lebih kecil.
B. Relational
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
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
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.
E. Entity-Relationship Diagram
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.
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!
NORMALISASI
Tujuan Praktikum
Indikator
A. Normalisasi
B. Normalisasi I
9981 Joko Waloya Pria Jl. Turi no 17 Jogja 6875556, Diah Ayu, Reno
998970 Bagus
Dari tabel di atas terdapat data berupa larik dalam atribut anak dan
telepon. Permasalahannya adalah jika suatu saat dibutuhkan informasi siapa ayah
dari Diah Ayu, maka sistem harus mencari pada kumpulan data yang sangat
panjang. Akibatnya waktu pencarian menjadi lama. Tak masalah apabila record
dalam tabel hanya berjumlah puluhan, namun bilarecord sudah mencapai jutaan,
Serta
NIP Telepon
9981 667556
9981 998970
9981 Joko Waloya Pria Jl. Turi no 17 Jogja 667556 Diah Ayu
9981 Joko Waloya Pria Jl. Turi no 17 Jogja 998970 Reno Bagus
C. Normalisasi II
D. Normalisasi III
Jika diamati hasil normalisasi ketiga juga masih dalam bentuk normal
kedua. Karena atribut nama_palanggan, alamat dan telepon bergantung pada
ID_pelanggan.
INSTALASI MySQL
Tujuan Praktikum
Indikator
Download
• Windows (x86)
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.
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.
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:
Langkah 10:
Langkah 11:
Langkah 14:
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.
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>.
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 >.
Bila Anda telah yakin untuk melanjutkan, klik pada tombol Execute. Dan
Anda bisa santai sejenak sambil menunggu proses setting selesai.
Langkah 23:
Sekarang silakan anda lakukan uji coba untuk mengakses MySQL dari
DOS Prompt/Command Line. Ketikkan saja:
C:>mysql -u root -p
Enter password:*******
Tujuan Praktikum
Indikator
A. Database
Contoh query:
B. Tabel
Perintah umum untuk membuat tabel pada database yaitu:
(create_definition,...)
[table_option ...]
[partition options]
(a integer,
b integer,
c integer,
Penulisan create table untuk referensi lebih dari satu dan menunjuk pada tabel
yang berbeda sebagai berikut:
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
Contoh query untuk mengubah suatu field, misalnya tipe data kota dalam
tabel Customer:
Nama Varchar 15
Alamat Varchar 20
No_Telp Varchar 12
Tgl_Lahir Varchar
Tujuan Praktikum
Indikator
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
Contoh:
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.
Sintaks tersebut di atas harus menuliskan nama kolom secara benar, jika tidak
maka akan menyebabkan error.
Sintaks untuk menghapus data dari sebuah tabel secara umum berbentuk:
WHERE <kondisi>
WHERE alamat_kota=”surabaya” ;
Perbedaan antara contoh delete di atas dengan sebelumnya adalah kondisi yang
dipakai. Jika data berupa angka, memungkinkan kondisi berupa suatu range nilai.
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>
WHERE <kondisi>
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
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:
Perintah update juga bisa digunakan untuk menghapus data sebuah kolom pada
tabel. Perhatikan query berikut
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
ELSE 5000
END;
SELECT
Contoh:
Perintah di atas digunakan untuk memilih semua kolom dan seluruh record
pada tabel pembeli. Pemilihan seperti ini memungkinkan terjadinya redudansi
data (data berulang).
Hasilnya seluruh kolom dan record pada tabel transaksi akan dipilih dan
data pada kolom id_member tidak ada yang sama/berulang.
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 :
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
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
SELECT id_member
FROM pembelian
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
SELECT nama
FROM pembelian
Like hanya digunakan jika data berupa string atau karakter. Sebagai contoh
perhatikan query berikut :
SELECT *
FROM pembeli
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
Filtering yang lain menggunakan kata kunci is null atau is not null. Perhatikan
query berikut
FROM pembeli
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 :
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.
1. inner join
Perintah inner join, berfungsi menggabungkan dua buah tabel dengan seleksi
tertentu. Seleksi menggunakan perintah on diikuti dengan kondisi seleksi.
Misalnya:
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
ON pembeli.id_member = pembelian.id_member ;
ON pembeli.id_member = pembelian.id_member ;
ON pembeli.id_member = pembelian.id_member
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.
Fungsi aggregat adalah fungsi matematika sederhana dalam SQL. Fungsi aggregat
hanya bisa digunakan untuk kolom bertipe angka (misal integer, shortint). Fungsi
aggregat sebagai berikut :
GROUP BY nama ;
Query di atas digunakan untuk menghitung jumlah transaksi yang dilakukan tiap-
tiap pelanggan tetap di suatu toko.
Having
GROUP by A.nama
GROUP BY A.nama
Nested Query
Nested query atau juga disebut dengan subquery adalah query yang
minimal memiliki dua perintah SELECT. Perhatikan contoh query berikut:
FROM pembeli
where (id_member) in
SELECT no_nota
FROM pembelian
FROM pembelian
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.
SELECT total
FROM pembelian
FROM pembelian
FROM pembelian
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
SELECT id_member,nama
FROM pembeli
FROM pembelian);
Query di atas akan menampilkan id_member dan nama dari tabel pembeli yang
pernah melakukan transaksi pembelian.
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.
GROUP BY A.nama
HAVING SUM(B.total)>500000;
– 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
– krs
– krs_item
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
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?
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
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’!