Anda di halaman 1dari 33

Modul Praktikum Basisdata I

MODUL PRAKTIKUM

BASIS DATA I 

Disusun Oleh :
Afiahayati, S.Kom

Laboratorium Komputer Dasar
Program Studi Ilmu Komputer 
Fakultas Matematika dan Ilmu Pengetahuan Alam
Universitas Gadjah Mada

D3 Komputer dan Sistem Informasi
1
Modul Praktikum Basisdata I

ENTITY RELATIONSHIP

Tujuan :
1. Memperkenalkan unsul­unsur penyusun suatu sistem
2. Memperlajari desain database menggunakan metode Entity Relationship 
Diagram(ERD).

Kemampuan :
1. Praktikan   mengetahui   apa   saja   penyusun   dari   suatu   sistem   yang   akan 
dibuat database.
2. Praktikan mengetahui simbol­simbol untuk menggambar model rancangan 
database dengan ER.
3. Praktikan mampu merancang database menggunakan ER.

1. 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 di suatu perusahaan 
adalah   sebuah   entity.  Entity  mempunyai   atribut   bernilai   (values),   misal   : 
000­11­3452 merupakan sebuah nomer induk seorang 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.
2. Composite atribute :  entity  yang atributnya dapat dibagi menjadi atribut 
yang lebih kecil. Misalnya : atribut nama bisa dibagi menjadi nama awal, 
nama tengah, dan nama akhir.
3. Single­valued   attribute :  entity  yang   atributnya   hanya   dapat   berisi   satu 
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   atribut 
lainnya. Misalnya : atribut umur dapat diketahui dari atribut tanggal lahir 
dan tanggal pada saat itu.

2. Relational

D3 Komputer dan Sistem Informasi
2
Modul Praktikum Basisdata I

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 satu entitas 
B. Demikian pula entitas B juga berpasangan tepat satu dengan entitas A. 
Contoh entitas mahasiswa yang berelasi dengan entitas skripsi secara one 
to one.
2. One to many : Sebuah entitas A yang berpasangan secara banyak (nol atau 
lebih) dengan entitas di dalam B. Sedangkan entitas B hanya berpasangan 
dengan tepat satu entitas di dalam A. Contoh : entitas mahasiswa yang 
berelasi dengan entitas dosen dalam hubungan dosen pembimbing. Relasi 
yang   terjadi   secara   one   to   many.   Karena   seorang   mahasiswa   hanya 
memiliki   1   dosen   pembimbing.   Sedangkan   seorang   dosen   bisa   jadi 
memiliki mahasiswa bimbingan lebih dari satu.
3. Many   to   one   :   Sebuah   entitas   A   yang   berpasangan   dengan   tepat   satu 
entitas di dalam B. Sedangkan entitas B dapat berpasangan secara banyak 
(nol atau lebih) dengan entitas  di dalam  A. (sama seperti one to 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   dapat 
berpasangan 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.

3. 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   mempunyai   atribut   yang   dapat 
membedakan antara objek manusia1 dengan objek manusia2. 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   hanya   terdiri   dari   satu 

D3 Komputer dan Sistem Informasi
3
Modul Praktikum Basisdata I

atribut.   Hal   ini   untuk   memudahkan   dalam   pengolahan   data.   Nah,   untuk 
mendapatkan key dari candidate key (gabungan beberapa atribut), pilih atribut 
entitas yang paling unik (value  dalam atribut tidak ada yang sama) dan bisa 
membedakan   entitas   tersebut   dengan   entitas   yang   lain.   Jika   sudah 
mendapatkannya, key itulah yang disebut sebagai primary key.

Semisal ada  candidate key  berupa nama, NIP, dan tanggal lahir. Maka perlu 


disortir,  atribut  mana  yang paling  unik  dari ketiga  atribut  tersebut. Atribut 
nama   tidak   unik,   karena   ada   kemungkinan   dua   entitas   pekerja   mempunyai 
nama yang identik. Demikian pula dengan atribut tanggal lahir, sangat bisa 
jadi dua entitas pekerja mempunyai tanggal lahir yang sama. Hanya atribut 
NIP saja yang pasti berbeda dari tiap­tiap entitas pekerja.

4. Foreign Key

Di   atas   telah   dibahas   bahwa   entitas   dalam   database   harus   mempunyai 


hubungan   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   entitas   yang 
membutuhkan. Misal, suatu entitas pekerja dengan  primary key  NIP. 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 justru entitas 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 to 
one, maka primary key entitas A dimuat ke dalam entitas 
B atau sebaliknya.
2. Many to one : entitas A berhubungan dengan entitas B secara many to 
one, maka primary key entitas B dimuat ke dalam entitas 
A.
3. Many to many : entitas A berhubungan dengan entitas B secara many to 
many   maka   pemuatan   primary   key   dari   masing­masing 
entitas akan melibatkan suatu entitas baru.

D3 Komputer dan Sistem Informasi
4
Modul Praktikum Basisdata I

5. 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   entitas   yang 
memiliki primary key. Kedua adalah entitas  lemah yaitu entitas  yang 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.

Total 
Nama  harga ID  Nama 
customer barang barang

ID 
customer

Alamat  Customer Barang


Beli 
customer

ID 
telephon transaksi jumlah Harga 
Tgl satuan

Gambar 1. E­R digram pada proses pembelian

Pada   gambar   1   ditunjukkan   bahwa   suatu   proses/relasi   antar   tabel   dapat 


memiliki   atribut   jika   hal   itu   diperlukan.   Atribut   telepon   merupakan   atribut 
yang bisa memiliki banyak nilai. Atribut total merupakan atribut turunan dari 
atribut   jumlah   dan   harga   satuan.   Pada   gambar   di   atas   hanyalah   contoh 
sederhana   untuk   menggambarkan   pemakaian   komponen­komponen   E­R. 

D3 Komputer dan Sistem Informasi
5
Modul Praktikum Basisdata I

Namun  dalam  keadaan  sebenarnya kondisi  di atas  dapat diperluas  menjadi 


model basisdata yang lebih baik.

Latihan (untuk dikerjakan di kelas)

Buatlah sebuah model database untuk sistem informasi minimarket dan sistem 
informasi   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!

D3 Komputer dan Sistem Informasi
6
Modul Praktikum Basisdata I

NORMALISASI

Tujuan
1. Mengenalkan proses normalisasi dalam desain database
2. Memberikan gambaran mengenai keuntungan dan kelemahan normalisasi

Kemampuan
1. Praktikan mampu melakukan normalisasi dalam desain yang telah dibuat 
minimal sampai normalisasi ke­3
2. Praktikan memahami perlunya normalisasi dan tidaknya

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,  dan penghematan  sumber 
daya (space harddisk ­keuntungan tersier­). Inti dari normalisasi 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 dan delete. Namun pada tabel yang 
belum normal, pengisian data yang sama pada beberapa tabel dilakukan satu per 
satu.   Hal   ini   memungkinkan   terjadinya   kesalahan   input   oleh   manusia   (human 
error) sehingga beberapa record 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 normalisasi hingga lebih 
dari 5. Namun ada juga kasus yang hanya mencapai tahap normalisasi 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   primary   key).   Cara   melakukan   normalisasi 
pertama cukuplah mudah, namun harus dikerjakan dengan teliti. Bentuk normal 
tahap pertama terpenuhi jika sebuah table  tidak memiliki  atribut komposit atau 
lebih dari satu atribut dengan domain nilai yang sama.  
Misalkan terdapat atribut alamat pada suatu tabel untuk menyimpan nama jalan, 
kota,   kode   pos.   Atribut   alamat   merupakan   atribut   komposit.   Jika   kita   ingin 

D3 Komputer dan Sistem Informasi
7
Modul Praktikum Basisdata I

mengakses data berdasarkan kota, jika tetap menggunakan atribut alamat tidak 
bisa oleh karena itu atribut alamat dipecah menjadi atribut Alamat_jalan, Kota 
dan Kode_pos.

NIM Nama Jenis  Alamat


Kelamin
1028 Dennis  Pria Jl Kaliurang Km.7 N0. 
Adiswara 177,   Yogyakarta, 
55283

Hasil normalisasi ke­1 dari tabel di atas menjadi 

NIM Nama Jenis  Alamat_jalan Kota  Kode Pos 


Kelamin
1028 Dennis Adiswara Pria Jl.   Kaliurang  Yogyakarta 55283
Km.7  No 177

Dalam   prakteknya   normalisasi   tidak   selalu   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? 

Jika   database   melibatkan   data   berskala   besar,   hendaknya   dipikirkan   efek 


normalisasi   terhadap   pemrosesan   query.   Kalau   data   berskala   kecil   (ratusan), 
normalisasi merupakan solusi yang efektif.

C. Normalisasi II

Bentuk   normalisasi   kedua   mempunyai   ciri   yaitu   tiap   entitas   berada   dalam 
normalisasi ke­1 dan tiap atribut entitas yang bukan key memiliki ketergantungan 
fungsional   kepada   primary   key­nya   secara   utuh.   Sebuah   tabel   dikatakan   tidak 
memenuhi bentuk normalisasi ke­2 jika ketergantungannya hanya bersifat parsial 
(hanya   tergantiung   pada   sebagian   dari   key   primer).   Tabel   penjualan   memiliki 
primary key dan atribut sebagai berikut. 

No_nota, kode_barang →  Kode_pembeli, Nama_pembeli, Alamat_pembeli, 
Telepon_pembeli, kode_pegawai, tanggal, total, jumlah_beli

Pada table tersebut No_nota dan Kode_barang adalah key primer. Ketergantungan 
Fungsional pada table tersebut dapat dijelaskan sebagai berikut 
No_nota, Kode_barang →  Jumlah_beli
No_nota → Kode_pembeli
No_nota → Nama_pembeli
No_nota → Alamat_pembeli
No_nota → Telepon_pembeli

D3 Komputer dan Sistem Informasi
8
Modul Praktikum Basisdata I

No_nota → Kode_pegawai
No_nota → Tanggal
No_nota → Total
Kode_pembeli dan Kode_pegawai memiliki ketergantungan parsial yaitu hanya 
terhadap   No_nota     dan   tidak   bergantung   pada   kode_barang.   Sehingga   Tabel 
Penjualan tidak memenuhi bentuk normal ke­dua ( 2NF).  Agar memenuhi bentuk 
normal   kedua   maka   Tabel   Penjualan   dipecah   menjadi   dua   yaitu 
Tbl_Detail_Penjualan dan Tbl_Penjualan

Tbl_Detail_Penjualan 
No_nota, Kode_barang → Jumlah_jual

Tbl_Penjualan
No_nota   →   Tanggal,   Total,   Kode_pembeli,   Nama_pembeli,   Alamat_pembeli, 
Telepon_pembeli ,  kode_pegawai

Pada   Tbl_Detail_Penjualan   key   primer   –nya   adalah   No_nota   dan 


Kode_Barang sedangkan pada Tbl_Penjualan  key primer­nya adalah No_nota.

D. Normalisasi III

Sebuah table dikatakan berada dalam bentuk normal tahap ke tiga (3NF) 
jika untuk setiap KF (ketergantungan fungsional)  dengan notasi X → A , dimana 
A mewakili semua atribut tunggal di dalam table yang tidak ada di dalam X, maka
1. X  haruslah  superkey pada table tersebut
2. Atau A merupakan bagian dari key primer pada table tersebut
Pada   contoh   sebelumnya   tabel   penjualan   memiliki   ketergantungan 
fungsional sebagai berikut:

No_nota   →  Tanggal,   Total,   Kode_pembeli,   Nama_pembeli,   Alamat_pembeli, 


Telepon_pembeli,  kode_pegawai
Kode_pembeli → Nama_pembeli, Alamat_pembeli, Telepon_pembeli

Pada KF pertama, No_nota merupakan super key tabel sehingga bentuk 
normal   ketiga   dipenuhi.   Pada   KF   kedua,   Kode_   pembeli   bukan   merupakan 
superkey,   dan   atribut   Nama_pembeli,   Alamat_pembeli,   Telepon_pembeli   juga 
bukan  merupakan  bagian dari  primary  key tabel,  sehingga  tabel  perlu  dipecah 
menjadi Tabel Pelanggan dan Tabel Penjualan.  

Tabel Pelanggan
Kode_pembeli → Nama_pembeli, Alamat_pembeli, Telepon_pembeli

Tabel Penjualan
No_nota → Tanggal, Total, Kode_pembeli,  kode_pegawai

D3 Komputer dan Sistem Informasi
9
Modul Praktikum Basisdata I

Latihan

1. Berdasarkan ERD hasil dari latihan satu (ERD database Sistem Informasi 
Minimarket   dan   Sistem   Informasi   Akademik),   buatlah   tabel­   tabel 
relationalnya dan lakukan normalisasi sampai bentuk normal ke­3 (3NF).

D3 Komputer dan Sistem Informasi
10
Modul Praktikum Basisdata I

MYSQL

Database Management System yang digunakan dalam proses praktikum adalah 
MySQL versi 5 ke atas karena sudah mendukung pembuatan store procedure dan 
store function. Instalasi MySQL di Windows dan Linux berbeda. Di Windows 
MySQL   dapat   diinstall   dari   file   setup.   Untuk   mendapatkan   software   MySQL 
dapat   mendownload   melalui  www.mysql.org  secara   gratis.   Jangan   lupa   untuk 
memilih versi 5 atau di atasnya dan install MySQL server yang paling penting.

Di Linux instalasi MySQL lebih sulit dibandingkan di Windows. Pertama, kenali 
bentuk file instalasi MySQL yang Anda punyai. Apakah berbentuk file package 
atau file source. Untuk file source biasanya kita perlu untuk mengkompile terlebih 
dahulu   kemudian   baru   menginstall.   File   package   karena   sudah   dalam   bentuk 
binary (sudah dikompile) maka yang perlu kita lakukan hanya menginstall saja. 
Instalasi   dengan   masing­masing   jenis   file   dapat   dilihat   pada   panduan   yang 
biasanya juga disertakan dalam bundel master MySQL.

Disarankan dalam manual MySQL untuk memilih master MySQL dalam bentuk 
package .RPM. Jangan lupa pula untuk selalu menggunakan manual MySQL 5.0.0 
sebagai pedoman.

A. Storage Engine
MySQL   5   mendukung   beberapa   engine   penyimpanan   yang   berfungsi   untuk 
menangani tipe­tipe tabel yang berbeda. Mysql menyimpan engine penyimpanan 
yang   menangani   tabel   transaction­safe   dan   meng­handle   tabel   non­transaction­
safe. 
1. MyISAM
Menangani   tabel   yang   non­transactional.   Tipe   tabel   ini   menyediakan 
penyimpanan   dan   retrieval   berkecepatan   tinggi,   dan   juga   kemampuan 
pencarian fulltext. MyISAM didukung di semua konfigurasi MySQL dan 
merupakan   engine   penyimpanan   default   kecuali   anda   telah   melakukan 
konfigurasi MySQL untuk menggunakan tipe lain sebagai defaultnya.
2. MEMORY
Tipe   ini   menyediakan   tabel   memory   dalam   (in­memory).   Engine 
penyimpanan   MERGE   mengijinkan   koleksi   dari   tabel   MyISAM   yang 
serupa untuk di­handle sebagai  tabel tunggal.  Seperti MyISAM, engine 
penyimpanan   MEMORY   dan   MERGE   meng­handle   non­transactional 
tabel, keduanya juga termasuk dalam defaultnya MySQL

Catatan: engine penyimpanan MEMORY dulunya dikenal sebagai engine 
HEAP

3. Engine  penyimpanan  InnoDB dan BDB menyediakan  tabel  transaction­


safe.   BDD   termasuk   distribusi   biner   dalam   MySQL­Max   pada   sistem 
operasi   yang   mendukungnya.   InnoDB   juga   termasuk   dalam   semua 

D3 Komputer dan Sistem Informasi
11
Modul Praktikum Basisdata I

distribusi   biner   MySQL   5.1.   Dalam   distribusi   sumber,   anda   dapat 


mengatur   pemakaian   salah   satu   engine   dengan   melakukan   konfigurasi 
MySQL.
4. Engine   penyimpanan   EXAMPLE   adalah   engine   yang   tidak   melakukan 
apapun. Anda dapat membuat tabel dengan engine ini, tapi tidak ada data 
yang  dapat disimpan  dalam  engine  ini  atau  di­retrieval  dari engine  ini. 
Kegunaan   engine   ini   adalah   menyajikan   contoh   dalam   source   code 
MySQL   yang   mengilustrasikan   bagaimana   memulai   penulisan   engine 
penyimpanan yang baru. Ini merupakan minat utama untuk para developer
5. NDB Cluster merupakan engine penyimpanan yang digunakan oleh cluster 
MySQL   untuk   mengimplement   tabel   yang   dibagi   melalui   banyak 
komputer. Jenis ini tersedia di distribusi biner MySQL­Max 5.1.   engine 
penyimpanan ini baru didukung di sistem operasi Linux, Solaris, dan Mac 
OS X. Pada release  yang akan datang,  akan diusahakan didukung oleh 
Windows
6. Engine penyimpannan ARCHIVE digunakan untuk menyimpan sejumlah 
data yang besar tanpa mengindex dengan footprint yang sangat kecil
7. Engine penyimpanan CSV menyimpan data dalam file text menggunakan 
format nilai pemisah koma
8. Engine   penyimpanan   BLACKHOLE   menerima   tetapi   tidak   menyimpan 
data dan retrievals selalu mengembalikan set kosong.
9. Engine   penyimpanan   FEDERATED   menyimpan   data   di   database   yang 
jauh. Saat ini,  engine ini hanya bekerja  dengan MySQL, menggunakan 
MySQL C Client API.
Konfigurasi   MySQL   di   Sistem   Operasi   Windows   untuk   mengaktifkan   storage 
engine dapat dilakukan pada file  my.cnf di direktori  ../mysql/bin/my.cnf

Tabel­tabel Transaction­safe (TSTs) memiliki beberapa keuntungan dibandingkan 
dengan tabel­tabel non­transactional­safe (NTSTs):
a) Tabel lebih aman. Bahkan jika MySQL crash atau anda mendapat masalah 
hardware,   anda   dapat   memperoleh   data   anda   kembali,   menggunakan 
recovery automatic atau dari backup tambah dengan log transaction
b) Anda dapat menggabungkan banyak perintah dan menjalankannya semua 
pada  waktu yang sama  dengan perintah  COMMIT  (jika  autocommit  di 
disable)
c) Anda   dapat   mengeksekusi   ROLLBACK   untuk   membatalkan   perubahan 
anda (jika autocommit di disable)
d) Jika update gagal, semua perubahan akan dikembalikan semula. (jika non­
transaction­safe   tabel,   semua   perubahan   yang   telah   dikerjakan   akan 
disimpan tetap)
e) bisa   menyediakan   concurrency   lebih   baik   untuk   tabel   yang   mendapat 
banyak update secara concurrent dengan pembacaan.

D3 Komputer dan Sistem Informasi
12
Modul Praktikum Basisdata I

Keuntungan engine penyimpanan non­transaction­safe
• Lebih cepat
• Permintaan ruang disk yang lebihi kecil
• Memory lebih kecil untuk melakukan update

B. Menjalankan MySQL
Setelah   menginstall   MySQL   yang   Anda   perlu   lakukan   adalah   menghidupkan 
server   MySQL.   Di   Windows   menghidupkan   server   MySQL   dengan   membuka 
console Windows terlebih dahulu. Kemudian masuk ke dalam folder bin di mana 
MySQL diinstall, misalnya C:\Program\MySQL\bin. Jalankan perintah berikut :

mysqld­nt ­start

perintah tersebut dipakai apabila Windows yang Anda pakai versi NT (XP, NT, 
2000). Sedangkan apabila versi Windows di bawah NT Anda perlu mengganti 
perintah mysqld­nt dengan mysqld saja.

Di Linux MySQL akan terinstall ke dalam beberapa folder. Antara lain :
/etc/mysql = konfigurasi mysql diletakkan
/var/run/mysql/mysqld.sock = tempat soket untuk koneksi ke server mysql
/usr/bin = file­file binary mysql

Ada dua kondisi yang harus diperhatikan. Pertama, mysql Anda dijalankan secara 
otomatis ketika Linux booting. Kedua, mysql Anda tidak berjalan secara otomatis. 
Oleh karenanya, Anda perlu menghidupkan server secara manual. Caranya adalah 
ketikkan perintah di bawah ini dalam console Linux :

mysqld

Apabila muncul pesan kesalahan sbb :

070129 18:59:13 [ERROR]  Can't start server: Bind on TCP/IP port: Address 
already in use
070129 18:59:13 [ERROR] Do you already have another mysqld server running  
on port: 3306 ?
070129 18:59:13 [ERROR] Aborting

070129 18:59:13 [Note] mysqld: Shutdown complete

berarti   mysql   Anda   sebenarnya   sudah   berjalan   sebelum   perintah   mysqld 


dijalankan. perintah mysqld sukses ketika muncul pesan

070129 19:01:41  InnoDB: Started; log sequence number 0 46740
mysqld: ready for connections.
Version: '4.1.11­Debian_4­log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306 
Source distribution

D3 Komputer dan Sistem Informasi
13
Modul Praktikum Basisdata I

Untuk mematikan server mysql dapat melalui mysqladmin dengan perintah sbb :

mysqladmin shutdown

Kini Anda bisa masuk ke server mysql dengan mengetikkan perintah

mysql ­u root

di konsole Linux. Jika muncul pesan error sebagai berikut :

070129 19:01:41  InnoDB: Started; log sequence number 0 46740
mysqld: ready for connections.
Version: '4.1.11­Debian_4­log'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306 
Source distribution

hal ini menandakan bahwa mysql server Anda belum hidup. Untuk menghidupkan 
lihat contoh di atas. Linux pada contoh menggunakan Debian, secara umum tidak 
ada perbedaan dengan distro­distro Linux yang lain.

C. Perintah MySQL

Beberapa perintah dasar Mysql :
help   (\h)    Mengeluarkan help untuk perintah­perintah dasar Mysql
?        (\?)    Sinonim dari `help'.
clear     (\c)   Menghilangkan baris perinta yang telah ditulis
Connect (\r)    Melakukan koneksi kembali ke server dengan argumen 
opsional database dan nama host
ego      (\G)  Mengirim perintah ke server dan menampilkan hasilnya 
secara vertikal
exit     (\q)   Keluar dari MySQL konsole
go       (\g)   Mengirim perintah ke server MySQL
notee    (\t)    Tidak menuliskan hasil ke outfile
print    (\p)   Print perintah yang baru saja dituliskan
prompt   (\R)   Mengganti prompt MySQL
quit     (\q)   Keluar dari MySQL
rehash   (\#)   Membangun kembali hashing
source   (\.)    Mengeksekusi SQL dari file, dengan argumen path dari file
status   (\s)    Mendapatkan status dari server
tee      (\T)   Membuat outfile, semua keluaran disimpan dalam outfile
use      (\u)   Menggunakan database, dengan argumen nama database
delimiter  (\d)   Mengaktifkan delimiter

D3 Komputer dan Sistem Informasi
14
Modul Praktikum Basisdata I

DATA DEFINITION LANGUAGE (DDL)

Data definition language (DDL) merupakan perintah SQL yang digunakan 
untuk mendefinisikan atau mendeklarasikan objek­objek database. 
Yang termasuk dalam DDL adalah 
1. Create
Digunakan untuk membuat database dan objek­objek database
2. Alter
Digunakan untuk mengubah database dan objek­objek database
3. Drop
Digunakan untuk menghapus database dan objek­objek database

A. Create 
1. Create Database
Sintaks dasar dari perintah create database adalah:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name

CREATE DATABASE digunakan untuk membuat database. Jika database 
sudah ada, maka database dengan nama database yang sama tidak bisa di create 
karena nama database adalah unik. Untuk mencegah terjadinya error seperti ini 
diperlukan klausa tambahan yaitu IF NOT EXISTS. 
Opsi  create_specification  menunjukkan   karakteristik   database. 
Karakteristik database disimpan di dalam file db.opt di dalam direktori database. 
Klausa  CHARACTER   SET  menunjukkan  set   karakter   database   secara  default. 
klausa COLLATE menunjukkan perbandingan database. 
Sebuah   database   dalam   MySQL   diimplementasikn   sebagai   suatu 
direktori yang meyimpan file­file yang berhubungan   dengan tabel­tabel dalam 
database.
Contoh penggunaan perintah untuk membuat database
CREATE DATABASE penjualan; 
Sintaks   tersebut   digunakan   untuk   membuat   database   di   MySQL   dengan   nama 
database ‘penjualan’.

2. Create Table 

D3 Komputer dan Sistem Informasi
15
Modul Praktikum Basisdata I

Sintaks   ini   digunakan   untuk   membuat   tabel­tabel   dalam   database, 


berikut adalah sintaks dasarnya:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name


(create_definition,...)
[table_option ...]
[partition_options]

CREATE TABLE NamaTabel


(
NamaField1 TipeData [Ket],
NamaField2 TipeData [Ket],
...
NamaField3 TipeData [Ket]
)

Perhatikan contoh penggunaan query create berikut ini:

CREATE TABLE Barang(


Kode_Brg char(10) PRIMARY KEY NOT NULL,
Nama_Brg Varchar(30) NOT NULL,
Stok_Brg Numeric,
Harga_Brg Numeric
)

Catatan: sebelum membuat tabel maka anda harus mengaktifkan database yang 
akan dibuatkan tabelnya dengan menggunakan perintah USE.
Contoh :
USE Penjualan;

Tanda [ ] berarti bahwa perintah tersebut berupa optional artinya boleh 
diikutsertakan atau boleh juga diabaikan tergantung dari keperluan misalnya jika 
kita   ingin   membuat   primary   key   pada   tabel   yang   kita   buat   maka   kita   bisa 
menyertakan kata kunci primary key. Null tidak sama dengan nol tetapi memiliki 
arti bahwa kolom atau field tersebut tidak ada data yang dimasukkan. Not Null 
menyatakan bahwa data pada kolom tersebut tidak boleh kosong dan harus diisi.
Ketika dibuat tabel baru, dapat ditentukan engine penyimpanan mana yang 
digunakan   dengan   menambahkan   opsi   tabel   ENGINE   ke   perintah   CREATE 
TABEL:
CREATE TABLE t (i INT) ENGINE = INNODB;

Jika   opsi   ENGINE   atau   TYPE   dihilangkan,   engine   default   akan 


digunakan.   Secara   normal,   adalah   MyISAM,   tetapi   dapat   diubah   dengan 

D3 Komputer dan Sistem Informasi
16
Modul Praktikum Basisdata I

menggunakan opsi startup server –default –storage­engine atau –default –table­
type,   atau   dengan   melakukan   pengaturan   default­storage­engine   atau   default­
storage­type di file konfigurasi my.cnf.
Dapat dilakukan pengaturan engine penyimpanan default yang digunakan 
selama   current   session   dengan   melakukan   pengaturan   variabel   storage_engine 
atau table_type:
SET storage_engine=MYISAM;
SET table_type=BDB;

Jika   MySQL   diinstal   di   windows   menggunakan   MySQL   Configuration 


Wizard,   engine   penyimpanan   InnoDB   dapat   dipilih   sebagai   default.   Untuk 
melakukan   konversi   tabel   dari   engine   penyimpanan   yang   satu   ke   yang   lain, 
gunakan perintah ALTER TABLE yang membuat engine baru:

ALTER TABLE t ENGINE = MYISAM;

Untuk   tabel   baru,   MySQL   selalu   membuat   file   .frm   untuk   menyimpan 
definisi tabel dan kolom. Indeks tabel dan data mungkin disimpan di satu atau 
banyak file, tergantung dari engine penyimpanan. Server membuat file .frm di atas 
level   engine   penyimpanan.   Engine   penyimpanan   tesendiri   dapat   membuat 
bermacam­macam   file   tambahan   yang   dibutuhkan   untuk   tabel   yang   mereka 
manage. 

Sebuah database mungkin memiliki tabel­tabel berbeda tipe. Oleh karena 
itu, tabel­tabel tidak perlu di buat dengan engine penyimpanan yang sama.

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

D3 Komputer dan Sistem Informasi
17
Modul Praktikum Basisdata I

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

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 

• On Delete Restrict :   kolom   terkait   pada   tabel   yang   direferensi   tidak 


dapat dihapus.
• On Delete No Action : sama seperti On Delete Restrict.
• On Delete Cascade :   jika   kolom   pada   tabel   yang   direferensi   dihapus 
maka data pada kolom yang mereferensi juga turut dihapus.
• On Delete Set Null :   Jika   kolom   pada   tabel   yang   direferensi   dihapus 
maka data pada kolom yang mereferensi diubah menjadi null.
• On Update Restrict : update pada kolom yang masih direferensi suatu 
tabel tidak diperbolehkan
• On Update Cascade :   jika   kolom   pada   tabel   yang   direferensi   diupdate 
maka data kolom tabel yang mereferensi juga turut diupdate.
• On Update Set Null :   jika   kolom   pada   tabel   yang   direferensi   diupdate 
maka data kolom tabel yang mereferensi akan diubah menjadi null.

D3 Komputer dan Sistem Informasi
18
Modul Praktikum Basisdata I

Peletakan action pada definisi foreign key terlihat seperti contoh berikut
create table skripsi (
nim char (8) references mahasiswa(nim) on update cascade,
judul text not null,
pembimbing   char   (8)   references   dosen(nip)   on   update   set  
null);

create table anggota (
id_anggota varchar(10) primary key not null,
id_pelanggan varchar(10) not null,
bidang varchar(25),
index(id_pelanggan),
foreign key (id_pelanggan) 
references pelanggan(id_pelanggan)
on update cascade on delete cascade
);

B. DROP
DROP merupakan perintah SQL atau query yang digunakan untuk menghapus 
objek database. 
DROP Nama_Objek
Contoh:
DROP TABLE Barang;
DROP DATABASE Penjualan;

C. ALTER
Alter  merupakan   perintah   SQL  untuk  mengubah  object­object   database  seperti 
mengubah   tipe   data   field,   menambah   field,   menghapus   field,   menambah 
constraint, menghapus constraint. 
Perintah dasar alter adalah seperti berikut ini:
ALTER TABLE Nama_Tabel <ACTION>
<ACTION> dapat berupa:
1. Menambah field
2. Mengubah field
3. Menghapus field
4. Menambah Constraint
5. Menghapus Constraint
Constraint berfungsi untuk membatasi nilai yang mungkin diinputkan ke sebuah 
field dan menjaga integritas relasi antar tabel dalam database. 

Ada 5 jenis constraint yaitu:
1. Primary key, merupakan kunci utama dalam sebuah tabel
D3 Komputer dan Sistem Informasi
19
Modul Praktikum Basisdata I

2. Foreign Key, merupakan kunci tamu dalam sebuah tabel
3. Unique
4. Default
5. Check, validasi data yang diinputkan ke suatu field
Contoh
Menambah field kota di tabel Customer

ALTER TABLE customer ADD kota varchar(30)

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

D. TIPE KOLOM
Setiap kolom dalam tabel memiliki tipe. Tipe kolom dalam SQL  dikelompokkan 
sebagai berikut
1. Numeric
TINYINT, SMALLINT, INT, DECIMAL, NUMERIC
Hati­hati dengan tipe data FLOAT: float tersimpan tidak secara presisi
2. Boolean
MySQL: Gunakan TINYINT(1)
3. Date – Time
4. String
CHAR vs VARCHAR
Jika lebih dari 255 karakter, gunakan tipe TEXT
5. Currency
Gunakan DECIMAL. Contoh: DECIMAL(10,2)  10 digit, 2 angka di 
belakang koma
6. BLOB (Binary Large Object)
7. ENUM
ENUM(‘L’, ‘P’)

D3 Komputer dan Sistem Informasi
20
Modul Praktikum Basisdata I

DATA MANIPULATION LANGUAGE

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

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

4. Insert into nama_table select statement
Mengisi data dengan value hasil dari select query, akan dijelaskan lebih 
lanjut pada sub bab selanjutnya. 
D3 Komputer dan Sistem Informasi
21
Modul Praktikum Basisdata I

B. DELETE
Delete  digunakan   untuk   menghapus   record   suatu   tabel.   Sedangkan   untuk 
menghapus   data   pada   kolom   tertentu   menggunakan   perintah   update.     Sintaks 
delete secara umum berbentuk

Delete form <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
    Where nama = ‘Ani’)

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.

D3 Komputer dan Sistem Informasi
22
Modul Praktikum Basisdata I

C. UPDATE

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

Update <tabel>
Set <nama kolom> = <value>
Where <kondisi>

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

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.

D3 Komputer dan Sistem Informasi
23
Modul Praktikum Basisdata I

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

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

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

D3 Komputer dan Sistem Informasi
24
Modul Praktikum Basisdata I

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

Sama dengan query berikut: 
Select id_member
From pembelian
Where total between 50000 AND 100000

Kebalikan dari between adalah not between.
3. 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:

D3 Komputer dan Sistem Informasi
25
Modul Praktikum Basisdata I

Select nama 
From pembelian
Where alamat_kota in (“Jakarta”, “Bogor”, “Tangerang”)

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

a) “Rum%” → ”Rumanystring”  → kata yang awalnya dimulai dengan Rum.
b) ”%fi%”   →  ”anystringfianystring”   →  kata   yang   di   tengah­tengahnya 
mengandung karakter fi.
c) " _ _  “ → kata yang tepat dua karakter.
d) ” _ _ _ _%” → kata yang minimum terdiri dari 4 karakter.

D3 Komputer dan Sistem Informasi
26
Modul Praktikum Basisdata I

5. Null dan Not null
Filtering   yang   lain   menggunakan   kata   kunci  is   null  atau  is   not   null. 
Perhatikan query berikut

Select distinct nama
From pembeli
Where telepon is not null

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

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

7. Join
Perintah  join  digunakan untuk menggabungkan dua tabel atau lebih. Klausa 
join ada beberapa macam :

a) inner join
b) left outer join
c) 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.

D3 Komputer dan Sistem Informasi
27
Modul Praktikum Basisdata I

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

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

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

D3 Komputer dan Sistem Informasi
28
Modul Praktikum Basisdata I

a) sum  →  nilai jumlah suatu kolom
b) avg → nilai rata – rata suatu kolom
c) max → nilai maksimal suatu kolom
d) min → nilai minimum suatu kolom
e) count → nilai cacah suatu kolom

Fungsi   Group   By   digunakan   untuk   mengelompokkan   data   berdasarkan 


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

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. 

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

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

D3 Komputer dan Sistem Informasi
29
Modul Praktikum Basisdata I

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

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

Yaitu   memilih   record­record   pelanggan   yang   pernah   bertransaksi.   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))

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)

D3 Komputer dan Sistem Informasi
30
Modul Praktikum Basisdata I

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

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.

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.

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

D3 Komputer dan Sistem Informasi
31
Modul Praktikum Basisdata I

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

D3 Komputer dan Sistem Informasi
32
Modul Praktikum Basisdata I

DAFTAR PUSTAKA

Korth,   dkk.,   Database   System   Concept  fourth   edition,   1999,   McGraw   Hill, 
California.

MySQL Manual Reference, 1997­2004.

Makhrus, F. Modul Berkas dan Basisdata, 2007, Program Studi Ilmu Komputer 
UGM. 

D3 Komputer dan Sistem Informasi
33

Anda mungkin juga menyukai