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 unsulunsur 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 simbolsimbol 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 :
000113452 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. Singlevalued 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
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
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.
4. 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 masingmasing
entitas akan melibatkan suatu entitas baru.
D3 Komputer dan Sistem Informasi
4
Modul Praktikum Basisdata I
5. EntityRelationship Diagram
ER diagram digunakan untuk membuat suatu model database. Kemudian dari
model tersebut dibuatlah sistem database. Adapun macammacam komponen
dalam ER 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 putusputus: 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.
Total
Nama harga ID Nama
customer barang barang
ID
customer
ID
telephon transaksi jumlah Harga
Tgl satuan
Gambar 1. ER digram pada proses pembelian
D3 Komputer dan Sistem Informasi
5
Modul Praktikum Basisdata I
Latihan (untuk dikerjakan di kelas)
Buatlah sebuah model database untuk sistem informasi minimarket dan sistem
informasi akademik. Tentukan entitasentitas apa saja yang ada di dalamnya.
Atributatribut 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 ke3
2. Praktikan memahami perlunya normalisasi dan tidaknya
A. Normalisasi
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.
Hasil normalisasi ke1 dari tabel di atas menjadi
C. Normalisasi II
Bentuk normalisasi kedua mempunyai ciri yaitu tiap entitas berada dalam
normalisasi ke1 dan tiap atribut entitas yang bukan key memiliki ketergantungan
fungsional kepada primary keynya secara utuh. Sebuah tabel dikatakan tidak
memenuhi bentuk normalisasi ke2 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 kedua ( 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
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:
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 ke3 (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 masingmasing 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 tipetipe tabel yang berbeda. Mysql menyimpan engine penyimpanan
yang menangani tabel transactionsafe dan menghandle tabel nontransaction
safe.
1. MyISAM
Menangani tabel yang nontransactional. 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 (inmemory). Engine
penyimpanan MERGE mengijinkan koleksi dari tabel MyISAM yang
serupa untuk dihandle sebagai tabel tunggal. Seperti MyISAM, engine
penyimpanan MEMORY dan MERGE menghandle nontransactional
tabel, keduanya juga termasuk dalam defaultnya MySQL
Catatan: engine penyimpanan MEMORY dulunya dikenal sebagai engine
HEAP
D3 Komputer dan Sistem Informasi
11
Modul Praktikum Basisdata I
Tabeltabel Transactionsafe (TSTs) memiliki beberapa keuntungan dibandingkan
dengan tabeltabel nontransactionalsafe (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
transactionsafe 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 nontransactionsafe
• 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 :
mysqldnt 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 mysqldnt 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 = filefile 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
070129 19:01:41 InnoDB: Started; log sequence number 0 46740
mysqld: ready for connections.
Version: '4.1.11Debian_4log' 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.11Debian_4log' 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 distrodistro Linux yang lain.
C. Perintah MySQL
Beberapa perintah dasar Mysql :
help (\h) Mengeluarkan help untuk perintahperintah 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 objekobjek database.
Yang termasuk dalam DDL adalah
1. Create
Digunakan untuk membuat database dan objekobjek database
2. Alter
Digunakan untuk mengubah database dan objekobjek database
3. Drop
Digunakan untuk menghapus database dan objekobjek 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 filefile yang berhubungan dengan tabeltabel 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
Perhatikan contoh penggunaan query create berikut ini:
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;
D3 Komputer dan Sistem Informasi
16
Modul Praktikum Basisdata I
menggunakan opsi startup server –default –storageengine atau –default –table
type, atau dengan melakukan pengaturan defaultstorageengine atau default
storagetype 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;
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
bermacammacam file tambahan yang dibutuhkan untuk tabel yang mereka
manage.
Sebuah database mungkin memiliki tabeltabel berbeda tipe. Oleh karena
itu, tabeltabel tidak perlu di buat dengan engine penyimpanan yang sama.
Foreign Key
Cara mendefinisikan foreign key ada bermacammacam tergantung kasus. Berikut
contohcontoh 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
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 objectobject 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
Untuk mengubah suatu field, misalnya tipe data kota dalam tabel Customer
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
Hatihati 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
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", "20060910",
"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’)
Delete from pembelian
Where total < (select avg(total)
From pembelian)
Dari fungsi select menghasilkan sebuah nilai ratarata dari seluruh total yang
dilakukan pembeli di tabel pembelian. Apabila ada data di kolom total tabel
pembelian yang kurang dari nilai ratarata 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 :
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 berid_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
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
recordrecord yang terpilih (kondisi). Contoh penggunaan where dalam select,
perhatikan contoh berikut:
Select id_member
From pembelian
Where total >= 50000 AND tanggal=”20090102”;
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)
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 tengahtengah nama. Karakter yang digunakan
untuk fungsi like adalah persen (%) dan underscore( _ ).
% → string apapun
_ → character apapun
a) “Rum%” → ”Rumanystring” → kata yang awalnya dimulai dengan Rum.
b) ”%fi%” → ”anystringfianystring” → kata yang di tengahtengahnya
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 namanama 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 recordrecord dari tabel pembeli digabung
dengan tabel pembelian dengan filtering id_member masingmasing 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
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 selectnya. 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
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
tiaptiap 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 tiaptiap 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
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)
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))
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)
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 fieldfield 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, 19972004.
Makhrus, F. Modul Berkas dan Basisdata, 2007, Program Studi Ilmu Komputer
UGM.
D3 Komputer dan Sistem Informasi
33