Lecture Notes
Database System
(Sistem Basis Data)
disusun oleh
Nanda Arista Rizki, M.Si.
Fidia Deny Tisna Amijaya, M.Si.
JURUSAN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS MULAWARMAN
2019

Copyright©2019 Nanda Arista Rizki, Fidia Deny Tisna Amijaya
http://math.fmipa.unmul.ac.id
This work is licensed under a Creative Commons
\Attribution-NonCommercial-ShareAlike 4.0 Internatio-
nal " license.
April, 2019

Daftar Isi
Daftar Isi ii
1 Pengenalan Sistem Basis Data 1
1.1 Skala Pengukuran Data . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 ModelEntity-Relationship. . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 Entitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 Atribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.3 Relasi dan himpunan relasi . . . . . . . . . . . . . . . . . . . . 6
1.3Entity-Relationship Diagram(ERD) . . . . . . . . . . . . . . . . . . . 10
1.4 Aljabar Relasional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.1Select. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.2Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4.3Cartesian-product. . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4.4Union. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.4.5Set-di erence. . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4.6Rename. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.5 Latihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Pemrograman SQL 22
2.1 MembuatDatabase. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2 Mende nisikan Tipe Data . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Mengkalkulasi Atribut . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4 Menggunakan Variabel dan Fungsi . . . . . . . . . . . . . . . . . . . 30
2.5 Mengurutkan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.6 Kriteria Seleksi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.7 LogikaBoolean. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.8 Logika Kondisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.9 Ringkasan Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
ii

DAFTAR ISI iii
3 Implementasi Lazarus 48
3.1 Komponen DBGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2 Komponen DBNavigator dan DBEdit . . . . . . . . . . . . . . . . . . 51
3.3 MemanipulasiDatabase. . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4 Memanfaatkan StringGrid . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 Menggunakan LazReport . . . . . . . . . . . . . . . . . . . . . . . . . 55
Lampiran 65

Deskripsi mata kuliah iv
Materi Kuliah
Pertemuan Bahan Kajian
1 Pengenalan
2 Model Entity-Relationship(entitas dan atribut)
3 Model Entity-Relationship(relasi dan himpunan relasi)
4 Entity-Relationship Diagram(ERD)
5 Aljabar relasional
6 Structured Query Language(SQL)
7 SQL
8 UTS
9 Manajemen dataset
10 Komponen dbgrid
11 Komponen dbedit dan dbnavigator
12 Manipulasi data
13 Komponen lazreport
14 Diskusi pembuatan program (PROYEK)
15 Diskusi pembuatan program (PROYEK)
16 UAS
Sistem Penilaian
Kriteria Persentase Keterangan
Afektif 10% Kehadiran, Attitude
Praktikum 20% Tugas, UTP, dan UAP (Asisten)
UTS 30% Tugas, dan Nilai UTS
UAS 40% Tugas, Diskusi proyek, dan Nilai UAS
Info lebih lanjut, kunjungi http://math.fmipa.unmul.ac.id/index.php/nanda.

BAB 1
Pengenalan Sistem Basis Data
Database-management System(DBMS) adalah kumpulan data yang saling terkait
dan satu set program untuk mengakses datanya. Kumpulan data ini disebut basis
data (database), yang merupakan kumpulan informasi mengenai fakta-fakta yang di-
simpan dalam komputer secara sistematik. Tujuan utama DBMS adalah menyimpan
dan mencari informasi basis data dengan mudah, cepat, dan e sien. Sistem basis
data dirancang untuk mengelola banyak informasi. Data-data ini perlu diolah me-
lalui analisis tertentu sehingga berguna dalam pengambilan keputusan. Basis data
sangat erat kaitannya dengan kehidupan sehari-hari, yaitu data perusahaan, data
bank, universitas, dan lain-lain. Data tertentu juga dapat diperoleh melalui hasil
pengamatan. Pemanfaatan basis data dilakukan dengan tujuan yaitu:
1. speed)
2. space)
3. accuracy)
4. availability)
5. completeness)
6. security)
7. shareability).
1

Saat ini semua kebutuhan informasi dapat dipenuhi dengan cepat. Mulai
mengetahui kurs dolar, jadwal tayang bioskop, banyaknyasubscriberseorangyou-
tuber, sampai banyaknyafollowerakun seseorang. Selain itu, di era industri 4.0
ini juga mempermudah seseorang dalam melakukan akti tasnya, yaitu mulai dari
memesan tiket, belanja bulanan, membayar uang kos dan lain-lain. Tanpa disadari,
semua data informasi ini masuk ke dalam suatu sistem basis data. Sistem ini sa-
ngat diperlukan untuk analisis lebih lanjut mengenai semua hal yang akan diteliti.
Dengan teknikdata mining,serveruntuk sistem basis data dapat mengetahui pa-
da tanggal berapa saja jadwal penerbangan padat, kapan waktu yang tepat untuk
suatu toko memberi diskon belanja, dan kasus menarik lainnya.
Misalkan di kota Samarinda saat ini sangat viral dengan adanya penjualan
roti. Jika pihak penjual membuat suatu aplikasi sehingga pembeli dapat mengakses
menu pembelian, maka semua data penjualan yang tersimpan dapat dimanfaatkan
oleh penjual untuk meningkatkan pendapatannya. Basis data yang tersimpan dalam
serverdapat berupa waktu pembelian, tanggal pembelian, cuaca saat pembelian,
banyaknya pesanan, jenis roti yang dipesan, spesi kasihandphonepembeli, dan
lain-lain. Bahkan jika pembeli memilikimember card, maka penjual roti dapat
mengetahui identitas yang lebih banyak lagi untuk digali.
1.1 Skala Pengukuran Data
Sebelum mengenal lebih jauh tentang basis data dan penggunaannya, alangkah baik-
nya jika mempelajari skala pengukuran data terlebih dahulu. Data dibagi menjadi
4 skala, yaitu nominal, ordinal, interval, dan rasio yang dapat dirangkum dalam
Tabel 1.1.
Nilai-nilai dari data nominal digunakan ketika data tersebut hanya sebagai
pembeda saja. Dalam hal ini, semua data dianggap sama atau setara. Artinya
tidak ada datum yang lebih unggul, lebih baik, dan lebih tinggi. Contoh data no-
minal adalah warna, jenis pekerjaan, jenis kelamin, program studi, dan lain-lain.
Lebih mudah dipahami ketika nilai-nilai dari variabel nominal bernilai bilangan bu-
lat. Misalkan warna kesukaan mahasiswa program studi matematika adalah merah
marun, biru dongker, hijau toska, kuning langsat, dan putih susu. Peneliti boleh
memberi nilai-nilai untuk setiap warna tersebut. Karena data ini bersifat nominal,
Sistem Basis Data 2 07065349

maka nilai-nilai warna ini tergantung oleh peneliti. Sebagai contoh, warna merah
marun bernilai2, biru dongker bernilai1, hijau toska bernilai 0, kuning langsat
bernilai 1, dan putih susu bernilai 2. Peneliti lain mungkin saja memiliki penilaian
berbeda. Artinya nilai data nominal boleh ditukar.
Tabel 1.1: Skala-skala Pengukuran Data
Skala Tipe data Operasi Fitur pembeda Ukuran pemusatan
data
Nominal diskrit =, 6= hanya kategori hanya modus
Ordinal diskrit =, 6=,, kategori terurut modus dan median
Interval kontinu =,6=,,,
+,
makna interval modus, median, dan
mean
Rasio kontinu =, 6=,,,
+,,,
nilai nol mutlak modus, median, dan
mean
Selanjutnya adalah data ordinal. Dalam data ordinal, urutan data diper-
hatikan. Artinya, urutan nilai dari data ordinal harus monoton. Salah satu contoh
data ordinal adalah tingkat kelezatan suatu makanan. Seperti halnya data nomi-
nal, Peneliti menginput jika nilai dari data ordinal diubah ke dalam bilangan bulat.
Karena "sangat lezat" lebih baik daripada "lezat" dan "lezat" lebih baik daripa-
da "hambar", maka Peneliti boleh menginput tingkat "hambar" bernilai 1, tingkat
"lezat" bernilai 2, dan tingkat "sangat lezat" bernilai 3. Peneliti dilarang memberi
nilai untuk tingkat "hambar" sebesar 3, jika nilai untuk tingkat "lezat" dan "sangat
lezat" masing-masing adalah 1 dan 2.
Selanjutnya, bayangkan jika banyaknya nilai data ordinal sangat banyak lalu
dikumpulkan menjadi bilangan yang padat seperti bilangan rasional. Semua nilai-
nilai ini memiliki peningkatan yang konstan dan relatif kecil. Data ordinal ini dapat
dikatakan data interval. Data interval berbeda dengan istilah selang interval pada
matakuliah kalkulus. Data inverval lebih menekankan pada sifat dari himpunannya
saja. Contoh yang paling mudah untuk mengilustrasikan data interval adalah data
suhu (temperatur). Semakin tinggi nilai suhu suatu ruangan, maka keadaan ruangan
tersebut semakin panas. Dalam hal ini, suhu 24

Cbukan berarti 2 kali lebih panas
dari 12

Cdan suhu 12

Cbukan berarti 2 kali lebih panas dari12

C. Suhu ruangan
yang tidak panas juga bukan berarti memiliki nilai suhu 0

C.
Skala pengukuran data yang paling tinggi adalah data rasio. Nilai untuk da-
ta rasio dapat dikonversi menjadi data interval, data ordinal, atau data nominal.
Sistem Basis Data 3 07065349

Perhatikan bahwa data interval juga dapat diubah menjadi data ordinal, atau data
nominal. Hasil pengukuran data rasio yang bisa dibedakan, diurutkan, memiliki
jarak tertentu, dan bisa dibandingkan. Nilai nol mutlak pada data rasio berarti
benar-benar menyatakan tidak ada.
1.2 ModelEntity-Relationship
ModelEntity-Relationshipmemiliki dua komponen utama pembentuk, yaitu entitas
(entity) dan relasi (relation). Kedua komponen ini dideskripsikan lebih jauh melalui
sejumlah atribut atau properti.
1.2.1 Entitas
Entitas adalah individu yang mewakili sesuatu obyek yang nyata dan dapat dibe-
dakan dari sesuatu yang lain. Contohnya adalah Winda, Ayla, Neni, Nurul, Mobil
Toyota, Mobil Honda, Mobil Daihatsu, Melodi, Haruka, Buku aljabar linier, Bu-
ku basis data, Nasi kuning, Nasi goreng, Jus wortel,Milkshake, Roti balok, dan
lain-lain.
Gambar 1.1: Himpunan entitas Mahasiswa
Himpunan entitas (entity set) adalah sekelompok entitas yang berada dalam
lingkup yang sama. Contoh himpunan entitas antara lain Pegawai, Mobil, Pe-
langgan, Mahasiswa, Buku, Makanan, Minuman, dan lain sebagainya. Himpunan
entitas (yang kurang praktis dalam penyebutannya) ini seringkali digantikan dengan
sebutan entitas saja. Oleh karena itu, sering kali ditemukan penggunaan istilah enti-
Sistem Basis Data 4 07065349

tas yang berarti himpunan entitas. Dalam sistem basis data, istilah entitas merujuk
pada nama tabel. Karena penggunaan entitas sebagai nama tabel, maka baris ke
idari entitas disebut data kei. Perhatikan bahwa Gambar 1.1 merupakan entitas
Mahasiswa.
1.2.2 Atribut
Komponen selanjutnya adalah atribut. Komponen atribut adalah karakteristik (pro-
perti) yang mendeskripsikan suatu entitas. Dalam sistem basis data, atribut ini
merujuk pada kolom tabel. Sebagai contoh, atribut pada entitas Mahasiswa yang
ditampilkan dalam Gambar 1.1 adalah nim, namamhs, alamatmhs, dan hobimhs.
Atribut dibagi menjadi tujuh jenis yaitu atribut sederhana, atribut komposit,
atribut bernilai tunggal, atribut bernilai banyak, atribut harus bernilai (mandatory
attribute), atribut nilainull, dan atribut turunan. Beberapa atribut ditunjukkan
dalam Gambar 1.2. Adapun penjelasan masing-masing jenis ini adalah sebagai
berikut:
1.
tohnya adalah jenis kelamin dan jurusan.
2.
sub-sub atribut yang masing-masing memiliki makna. Sebagai contoh, pada
atribut Nama dapat diuraikan menjadi nama depan, nama tengah, nama be-
lakang. Contoh lainnya adalah atribut alamat (nama jalan, nomor rumah,
kota).
3.
nilai di tiap datanya. Contohnya NIM, nama, dan tanggal lahir.
4.
Misalnyahobbydan nomorhandphone.
5. mandatory attribute) adalah atribut yang harus berisi
suatu data. Contohnya adalah NIM, nama mahasiswa, dan alamat.
6. nulladalah atribut yang belum memiliki nilai. Dalam hal ini,null
artinya kosong. Contohnya, pada atribut hobimhs untuk entitas mahasiswa
Sistem Basis Data 5 07065349

(Gambar 1.2) bernama Bunga yang memang tidak memilikihobby. Atribut
nulljuga dapat diartikan bahwa datanya belum siap atau masih meragukan.
7.
lainnya. Atribut turunan sebenarnya hanya digunakan sebagai penjelas dan
dapat ditiadakan. Contoh atribut turunan adalah angkatan. Nilai-nilai pada
atribut angkatan dapat diketahui dari atribut nim (biasanya dua karakter per-
tama dalam nim menyatakan dua digit bilangan tahun masuknya mahasiswa
yang bersangkutan). Contoh atribut turunan lainnya adalah atribut indeks
prestasi yang dapat diperoleh dari hasil perhitungan nilai.
Gambar 1.2: Beberapa jenis atribut
Primary keyadalah atribut yang dapat membedakan data satu dengan data
yang lainnya dalam suatu entitas. Contohnya adalah NIM, Kodemakanan, dan
Kodebarang. Fungsi penggunaanPrimary Keyadalah untuk membedakan data
satu dengan data yang lainnya.
1.2.3 Relasi dan himpunan relasi
Beberapa entitas yang berbeda dapat saling berkaitan dan dapat dihubungkan. Da-
lam sistem basis data, hubungan ini dinamakan relasi (relationship). Jadi, relasi
menunjukkan adanya hubungan di antara sejumlah entitas yang berasal dari him-
punan entitas yang berbeda. Contohnya adalah transaksi barang, Kartu Rencana
Studi (KRS), Pembelian, dan lain sebagainya. Perhatikan Gambar 1.3, bahwa ma-
Sistem Basis Data 6 07065349

hasiswa dengan nim='1702' dan namamhs = 'Bunga' (dalam himpunan entitas Ma-
hasiswa) memiliki relasi dengan entitas mata kuliah dengan kodemk='MA02' dan
namamk='Pengantar Topologi'. Relasi di antara kedua entitas tadi mengandung
arti bahwa mahasiswa bernama Bunga sedang mempelajari mata kuliah Pengantar
Topologi di sebuah program studi.
Gambar 1.3: Contoh relasi antara himpunan entitas Mahasiswa dan himpunan en-
titas mata kuliah
Himpunan relasi (relationship sets) merupakan kumpulan semua relasi dalam
suatu sistem basis data. Seperti halnya penggunaan istilah himpunan entitas yang
disingkat menjadi entitas (walaupun sebenarnya memiliki perbedaan makna), istilah
himpunan relasi jarang sekali digunakan dan lebih sering disingkat dengan istilah
relasi saja.
Perhatikan bahwa relasi antar entitas pada Gambar 1.3 hanya berlaku pada
semester tertentu saja. Kelak akan ditunjukkan adanya faktor waktu dalam relasi
antar entitas tersebut yang dapat diterapkan. Semua relasi yang ada di antara
himpunan entitas tersebut membentuk sebuah himpunan relasi. Untuk menjelaskan
apa yang terjadi di antara kedua himpunan relasi tersebut, maka dapat diberi nama
himpunan relasi 'mempelajari' atau himpunan relasi 'belajar'.
Kardinalitas atau derajat relasi adalah jumlah maksimum entitas yang dapat
berelasi pada entitas lainnya. Jika diberikan dua himpunan entitas (yaituAdan
B), maka kardinalitas relasinya dibedakan menjadi 4 jenis, yaitu:
1. One to One), yang berarti satu entitasAberhubungan pa-
ling banyak satu dengan entitasB. Begitupun sebaliknya, satu entitas pada
himpunanBberhubungan paling banyak satu dengan entitasA. Perhatikan
Gambar 1.4.
Sistem Basis Data 7 07065349

Gambar 1.4: Kardinalitas relasi Satu ke Satu
2. One to Many), yang berarti satu entitasAdapat berhu-
bungan lebih dari satu dengan entitasB. Namun tidak berlaku sebaliknya,
dimana setiap entitas pada himpunan entitasBberhubungan dengan paling
banyak dengan satu entitas pada himpunan entitasA. Perhatikan Gambar
1.5.
Gambar 1.5: Kardinalitas relasi Satu ke Banyak
3. Many to One), yang berarti satu entitasAberhubungan pa-
ling banyak dengan satu entitasB. Namun tidak berlaku sebaliknya, dimana
setiap entitas pada himpunan entitasBdapat berhubungan lebih dari satu
dengan entitasA. Perhatikan Gambar 1.6.
Kardinalitas relasi Satu ke Banyak dan Kardinalitas relasi Banyak ke Satu
dapat dianggap sama, karena tinjauan kardinalitas relasi selalu dapat dilihat
dari dua sisi. Artinya, posisi himpunan entitasAdan himpunan entitasB
dapat saja ditukar.
4. Many to Many), yang berarti satu entitasAdapat berhu-
bungan lebih dari satu dengan entitasBdan sebaliknya. Perhatikan Gambar
1.7.
Sistem Basis Data 8 07065349

Gambar 1.6: Kardinalitas relasi Banyak ke SatuGambar 1.7: Kardinalitas relasi Banyak ke Banyak
Contoh kasus untuk relasi Satu ke Satu adalah satu dosen mengepalai satu
jurusan di suatu universitas. Dalam hal ini seorang dosen paling banyak menge-
palai satu jurusan, walaupun ada dosen yang tidak mengepalai jurusan manapun.
Sebaliknya, setiap jurusan pasti dikepalai oleh paling banyak satu dosen. Selanjut-
nya diagram seperti pada Gambar 1.4 untuk kasus ini dapat disederhanakan menjadi
Gambar 1.8.
Gambar 1.8: Penyederhanaan relasi Satu ke Satu
Contoh kasus untuk relasi Satu ke Banyak adalah satu dosen dapat mengajar banyak
mata kuliah. Selanjutnya diagram seperti pada Gambar 1.5 untuk kasus ini dapat
disederhanakan menjadi Gambar 1.9.
Gambar 1.9: Penyederhanaan relasi Satu ke Banyak
Contoh kasus untuk relasi Banyak ke Banyak adalah satu mahasiswa mempelajari
Sistem Basis Data 9 07065349

banyak mata kuliah, dan sebaliknya satu mata kuliah juga dipelajari oleh banyak
mahasiswa. Selanjutnya diagram seperti pada Gambar 1.7 untuk kasus ini dapat
disederhanakan menjadi Gambar 1.10.
Gambar 1.10: Penyederhanaan relasi Banyak ke Banyak
1.3Entity-Relationship Diagram(ERD)
ModelEntity-Relationshipyang berisi komponen-komponen himpunan entitas dan
himpunan relasi yang masing-masing dilengkapi dengan atribut-atribut, dapat di-
gambarkan dengan lebih sistematis menggunakan DiagramEntity-Relationshipatau
Entity-Relationship Diagram(ERD). Notasi simbolik di dalam ERD yang wajib di-
ketahui adalah sebagai berikut:
1.
2. pri-
mary key, harus digarisbawahi.
3.
4.
dan himpunan entitas dengan atributnya.
5.
Berikut adalah contoh penggambaran relasi antar himpunan entitas beserta
kardinalitas relasi dan atribut-atributnya:
1. one-to-one)
Contoh ERD untuk relasi pada Gambar 1.8 adalah seperti pada Gambar 1.11a.
2. one-to-many)
Contoh ERD untuk relasi pada Gambar 1.9 adalah seperti pada Gambar 1.11b.
Sistem Basis Data 10 07065349

3. many-to-many)
Contoh ERD untuk relasi pada Gambar 1.10 adalah seperti pada Gambar
1.11c.
Penggabungan semua relasi untuk Gambar 1.11a, Gambar 1.11b, dan Gambar 1.11c
ditunjukkan pada Lampiran 1.
(a) Relasi Satu ke Satu(b) Relasi Satu ke Banyak(c) Relasi Banyak ke Banyak
Gambar 1.11: Contoh ERD
Berikut adalah tahapan dalam perancangan sistem basis data:
1.
2.
3.
4.
Sistem Basis Data 11 07065349

5.
1.4 Aljabar Relasional
Bahasa Query merupakan bahasa yang termasuk dalam kategori bahasa tingkat
tinggi (high level language) yang digunakanuseruntuk memperoleh informasi dari
basis data. Bahasa Query dibagi menjadi dua jenis, yaitu bahasa prosedural dan
bahasa non-prosedural. Pada sebuah bahasa prosedural,usermeminta sistem un-
tuk melakukan serangkaian operasi terhadap basis data dalam rangka mendapatkan
informasi yang diinginkan. Namun dalam bahasa non-prosedural,usermenunjuk-
kan informasi yang diinginkan tanpa menyatakan suatu cara atau prosedur tertentu
untuk memperoleh informasi tersebut.
Bahasa Query yang didasarkan pada operasi-operasi dalam aljabar relasional
merupakan bahasa Query yang prosedural. Bahasa ini memiliki sejumlah opera-
si yang memanfaatkan suatu atau beberapa tabel atau relasi basis data sebagai
masukan dan menghasilkan sebuah tabel atau relasi basis data yang baru sebagai
keluarannya. Sejumlah operasi dasar yang dikenal dalam aljabar relasional, yaitu
select,project,cartesian-product,union,set-di erence, danrename.
1.4.1Select()
Operasi ini digunakan untuk mengambil sejumlah baris data yang memenuhi pre-
dikat yang diberikan. Predikat mengacu pada kondisi yang ingin dipenuhi dalam
operasi seleksi. Sintaks yang digunakan untuk menyatakan operasi ini adalah
P(R) =ftjt2R; P(t)g
dimanaPadalah predikat pada atribut-atribut diRyang dapat dihubungkan de-
ngan^(and),_(or), dan¬(not). Bentuk umum dari predikat seleksi adalah
<atribut> op <atribut>;
Sistem Basis Data 12 07065349

atau
<atribut> op <konstanta>;
denganopadalah salah satu dari =,6=,>,,<, dan. Sebagai contoh, perhatikan
relasirberikut
mk.nama ketuakelompoknamaanggotanilaipresentasi
Statistika MatematikaRakhma Mustika 81
Statistika MatematikaRakhma Rahayu 82
Model Risiko Mustika Mustika 83
Model Risiko Rahayu Rahayu 84
Maka operator seleksiketuakelompok=namaanggota^nilaipresentasi>82(r) menghasilkan
mk.nama ketuakelompoknamaanggotanilai presentasi
Model Risiko Mustika Mustika 83
Model Risiko Rahayu Rahayu 84
Dalam relasi terakhir memuat atributmk:namayang berarti atributnamayang
berasal dari himpunan entitasmk.
1.4.2Project()
Operasi ini dapat menentukan atribut-atribut data dari sebuah tabel atau hasil
Query yang akan ditampilkan. Dengan kata lain, operasi ini merupakan relasi an-
tar beberapa kolom yang diperoleh dengan menghapus kolom yang tidak terdaftar.
Sintaks yang digunakan untuk menyatakan operasi ini adalah
Q
A1;A2;:::;Ak
(r),
denganA1; A2; : : : ; Akadalah nama-nama atribut danradalah relasinya. Dalam
hal ini, diperbolehkan hanya satu atribut saja. Sebagai contoh, perhatikan relasir
berikut
mk.nama mhs.nama tugas
RakhmaStatistika Matematika84
RakhmaStatistika Matematika83
Rakhma Model Risiko 82
MustikaStatistika Matematika81
MustikaStatistika Matematika80
Mustika Model Risiko 79
Sistem Basis Data 13 07065349

Maka ekspresiproject
Q
mk:nama;mhs:nama
(r) menghasilkan
mk.nama mhs.nama
RakhmaStatistika Matematika
RakhmaStatistika Matematika
Rakhma Model Risiko
MustikaStatistika Matematika
MustikaStatistika Matematika
Mustika Model Risiko
Karena baris pertama adalah sama dengan baris kedua, sehingga hasilnya menjadi
mk.nama mhs.nama
RakhmaStatistika Matematika
Rakhma Model Risiko
MustikaStatistika Matematika
Mustika Model Risiko
1.4.3Cartesian-product()
Operasi ini dapat menggabungkan data dari dua buah tabel atau hasil Query. Sim-
bol yang digunakan untuk menyatakan operasi ini adalah "" dan sintaks yang
digunakan untuk operasi ini adalah
rs=ftqjt2r^q2sg:
Diasumsikan atributr(R) dans(S) adalah bebas atau dapat ditulis menjadi
R\S=;:
Jika atributr(R) dans(S) tidak saling bebas, maka perlu dilakukanrenaming. Se-
bagai contoh, perhatikan relasirberikut
mhs.namamhs.nim
Rakhma 65003
Rahayu 65015
dan relasisberikut
Sistem Basis Data 14 07065349

mk.kodeketuakelompokpresentasi
001 Rakhma 78
001 Rahayu 79
002 Rakhma 80
003 Rakhma 81
Maka ekspresirsmenghasilkan
mhs.namamhs.nimmk.kodeketuakelompokpresentasi
Rakhma 65003 001 Rakhma 78
Rakhma 65003 001 Rahayu 79
Rakhma 65003 002 Rakhma 80
Rakhma 65003 003 Rakhma 81
Rahayu 65015 001 Rakhma 78
Rahayu 65015 001 Rahayu 79
Rahayu 65015 002 Rakhma 80
Rahayu 65015 003 Rakhma 81
Oleh karena itu, jika ekspresinya adalahmhs:nama=ketuakelompok(rs), maka meng-
hasilkan
mhs.namamhs.nimmk.kodeketuakelompokpresentasi
Rakhma 65003 001 Rakhma 78
Rakhma 65003 002 Rakhma 80
Rakhma 65003 003 Rakhma 81
Rahayu 65015 001 Rahayu 79
1.4.4Union([)
Operasi ini dapat menggabungkan data dari dua kelompok baris data (row) yang
sejenis (memiliki hasilprojectyang sama). Notasi untuk operasi ini adalah
r[s=ftjt2r_t2sg:
Untuk semuar[sharus memenuhi:
1.rdansharus memiliki atribut yang sama
2. rharus
mempunyai tipeyang sama dengan kolom kedua daris.
Sistem Basis Data 15 07065349

Sebagai contoh, relasirmenyatakan keadaan sistem akademik dalam tahap penga-
juan KRS berikut
mk.kodemhs.nim
001 65001
001 65002
002 65001
dan relasisyang menyatakan keadaan sistem dalam tahap perbaikan KRS berikut
mk.kodemhs.nim
001 65002
002 65002
Maka operatorunionr[smenghasilkan
mk.kodemhs.nim
001 65001
001 65002
002 65001
002 65002
1.4.5Set-di erence()
Operasi ini merupakan kebalikan dari operasiunion, yaitu pengurangan data di
tabel atau hasilprojectpertama oleh data di tabel atau hasilprojectkedua. Simbol
dari operasi ini adalah
rs=ftjt2r^t =2sg:
Untuk semuarsharus memenuhi:
1.rdansharus memiliki atribut yang sama
2. rharus
mempunyai tipeyang sama dengan kolom kedua daris.
Sebagai contoh, relasirmenyatakan keadaan sistem akademik dalam tahap penga-
juan KRS berikut
Sistem Basis Data 16 07065349

mk.kodemhs.nim
001 65001
001 65002
002 65001
dan relasisyang menyatakan keadaan sistem dalam tahap perbaikan KRS berikut
mk.kodemhs.nim
001 65002
002 65002
Maka operatorunionrsmenghasilkan
mk.kodemhs.nim
001 65001
002 65001
1.4.6Rename(X(E))
Adakalanya operasi biner (cartesian-product,set-di erence) diterapkan pada sumber
data yang sama. Perlu diingat bahwaw suatu operator tidak boleh mengoperasikan
tabel atau relasi yang sama. Operasirenamediperlukan ketika ingin melakukan
penamaan kembali pada suatu tabel atau hasil relasiprojectagar dapat ditunjukkan
acuan yang jelas dalam sebuah operasi yang lengkap, khususnya yang melibatkan
dua atau lebih sumber data yang sama. Sintaks untuk operasi ini adalah
X(E);
denganXmenyatakan nama baru dari ekspresiE. Dalam hal ini,Eadalah nama
tabel. Misal diberikan himpunan entitas mahasiswa berikut
nomorindukmahasiswanamamahasiswa
65001 Erlina
65003 Nurul
65004 Ghony
maka sintaksmhs(mahasiswa) mengartikan bahwa himpunan entitas mahasiswa
diberi nama baru yaitu himpunan entitasmhs. Dalam hal ini, fungsi operator
renameadalah memberi nama tabel atau relasi yang panjang menjadi lebih pendek.
Sistem Basis Data 17 07065349

Operasirenamedapat pula diterapkan hingga ke level atribut, dengan sintaks
X(A1;A2;:::;An)(r):
Artinya, atribut pertama dalam relasirdiberi namaA1dan seterusnya hingga
atribut kendalam relasirdiberi namaAn. Jadi sintaks ini tidak hanya memberi
nama baru untuk tabel atau relasi, namun juga nama baru untuk setiap atributnya.
Sebagai contoh, sintaksmhs(nim;nama)(mahasiswa) menghasilkan relasimhsberikut
nimnama
65001Erlina
65003Nurul
65004Ghony
Namun jika ingin mengganti beberapa atribut saja dalam relasir, maka sintaks yang
digunakan adalah
a b(r);
sehingga atributbdalam relasirberubah nama menjadi atributa.
Operatorrenamejuga dapat menggabungkan relasi dari dua tabel yang terpi-
sah. Perhatikan relasismt1 berikut
mksmt1 namamhs
Kalkulus I Erlina
Kalkulus I Nurul
Kalkulus I Ghony
Pemrograman Komputer I Erlina
Pemrograman Komputer I Nurul
Pemrograman Komputer I Ghony
dan relasi dalamsmt2 berikut
mksmt2 namamhs
Kalkulus II Erlina
Kalkulus II Nurul
Kalkulus II Ghony
Pemrograman Komputer II Erlina
Pemrograman Komputer II Nurul
Pemrograman Komputer II Ghony
Maka ekspresimk mksmt1(smt1)[mk mksmt2(smt2) menghasilkan
Sistem Basis Data 18 07065349

dan relasi berikut
mk namamhs
Kalkulus I Erlina
Kalkulus I Nurul
Kalkulus I Ghony
Pemrograman Komputer I Erlina
Pemrograman Komputer I Nurul
Pemrograman Komputer I Ghony
Kalkulus II Erlina
Kalkulus II Nurul
Kalkulus II Ghony
Pemrograman Komputer II Erlina
Pemrograman Komputer II Nurul
Pemrograman Komputer II Ghony
Operatorrenamejuga dapat menemukan nilai maksimum dalam suatu atribut.
Sebagai contoh, perhatikan relasinilaipk2 berikut
mk namamhsnilai
Pemrograman Komputer II Erlina80
Pemrograman Komputer II Nurul 81
Pemrograman Komputer II Ghony 82
Karena sintaks nilaipk2:nilaimenghasilkan himpunanf80;81;82gdan sintaks
nilaipk2:nilai(nilaipk2:nilai<pk2:nilai(nilaipk2pk2(nilaipk2)))
menghasilkan himpunanf80;81g. Oleh karena itu, nilai maksimum dalam relasi
nilaipk2 dapat ditentukan dengan sintaks
nilaipk2:nilainilaipk2:nilai(nilaipk2:nilai<pk2:nilai(nilaipk2pk2(nilaipk2))):
1.5 Latihan
1.
Misal, diberikan 3 buah tabel yaitu tabel pelanggan, tabel kurir, dan tabel
roti seperti yang disajikan pada Tabel 1.2, Tabel 1.3, dan Tabel 1.4.
Sistem Basis Data 19 07065349

Tabel 1.2: Pelanggan
idpelanggan namapelanggan alamatpelanggan nomorhppelanggan
p1 Isyana Jl. Perjuangan 081234567890
p2 Melodi Jl. Pramuka 081234567891
p3 Raisa Jl. M. Yamin 081234567892
Tabel 1.3: Kurir
idkurir namakurir penilaianpelanggan
k1 justin 4.4
k2 bieber 4.9
Tabel 1.4: Roti
idroti namaroti rasa roti hargaroti
r1 cheesecake keju 18.181
r2 sweet choco coklat 18.181
r3 matcha cake green tea 14.545
r4 new vanila vanila 14.545
r5 sugar-apple bread srikaya 14.545
Peneliti boleh memberi kode untuk setiap informasi dalam tabel tersebut.
Misal, pada tabel roti, untuk rasa keju diberi kode r1, rasa coklat diberi kode
r2, rasa vanila diberi kode r3, rasa green tea diberi kode r4, dan rasa srikaya
diberi kode r5. Selanjutnya apakah semua tabel tersebut dapat dihubungkan?
Jika ya, apakah dengan suatu transaksi?
2.
(a)
(b)
(c)
(d)
(e)
(f) null?
(g)
3. primary keytiap entitas dari soal nomor 1!
Sistem Basis Data 20 07065349

4.
5. Entity-Relationship(ER) nya!
6. select!
7. project!
8. cartesian-product!
9. union!
10. set-di erence!
11. rename!
Sistem Basis Data 21 07065349

BAB 2
Pemrograman SQL
Bahasa Query formal yang dipenuhi oleh ekspresi matematis yang telah dijelaskan
pada Subbab 1.4, menjadi dasar teoritis dalam pembentukan bahasa Query terapan.
Algoritma dan sintaks dari ekspresi-ekspresi bahasa Query terapan disusun berda-
sarkan bahasa Query formal.
Bahasa Query terapan yang paling populer adalahStructured Query Language
(SQL). Bahasa ini sering diterapkan dalam berbagaidevelopment toolsserta pro-
gram aplikasi ketika berinteraksi dengan basis data. Bahasa SQL ini sering di-
gunakan karena diakomodir oleh hampir semuaRelational Database Management
System(RDBMS), yaitusoftwarepengelolaan basis data yang akan menentukan
bagaimana data diorganisasi, disimpan, diubah, dan diambil kembali. Selain itu,
softwareRDBMS juga dapat menerapkan mekanisme pengamanan data, pemakaian
data secara bersama, pemaksaan akuratan/konsistensi data, dan sebagainya.
SoftwareRDBMS yang digunakan dalam Bab 2 dan Bab 3 adalah Firebird.
Firebird merupakan RDBMS yang bersifatopen sourceyang dapat diunduh secara
gratis di http:// rebirdsql.org.Firebird InteractiveSQLUtilityatau disingkat ISQL
merupakan alat interaktif berupacommand lineyang disediakan oleh Firebird untuk
mengaksesdatabaseFirebird. Namun untuk mempermudah dalam pengoperasian,
dapat menggunakansoftwareWFSQL karena sudah menyediakan fasilitas berbasis
Graphical User Interface(GUI).
22

2.1 Membuat Database
Structured Query Language(SQL) merupakan bahasa yang tidak menganutcase
sensitive, sehingga perbedaan dalam penggunaan huruf besar atau kecil tidak ber-
pengaruh. Langkah awal untuk memulai pemrograman SQL ini adalah membuat
database. Adapun sintaksnya untuk membuatdatabaseadalah sebagai berikut:
1CREATEC ndirektorindb.fdb"
2usersysdbamasterkey;
Untuk mengkoneksikan suatudatabaseyang telah dibuat, gunakan sintaks berikut:
1CONNECTC ndirektorindb.fdb"
2usersysdbamasterkey;
Setelah itu, untuk menampilkan informasi suatudatabase, gunakan sintaks berikut:
1SHOW DATABASE;
Untuk menampilkan nama dari SQLroles, gunakan sintaks berikut:
1SHOW ROLES;
Untuk menampilkan informasi mengenai versisoftwareISQL atau WFSQL, gunakan
sintaks berikut:
1SHOW VERSION; atau;
Perhatikan bahwausernamedanpasswordyang sering digunakan masing-
masing adalah 'SYSDBA' dan 'masterkey'.Usernamedanpasswordtersebut me-
rupakan penggunaan standar. Untuk urusan administrasi pengguna, gunakancom-
mand lineyang disediakan oleh Firebird yaituGSECyang hanya dapat dijalankan
olehuserSYSDBA. Fasilitas ini juga dapat dijalankan melaluiCommand Prompt.
Sistem Basis Data 23 07065349

Untuk menambahkanuserNyaman Beneh sebagaiuserjajak denganpassword"am-
plang", gunakan sintaks berikut:
1gsecuser SYSDBApassword masterkey
2GSEC>add pw amplangfname Nyamanlname Beneh
3GSEC>quit
Perlu diperhatikan bahwa penggunaan tanda minus berbeda dengan tanda minus
ganda (yang berarti suatu komentar). Untuk mengubahpassworduntukuserjajak
menjadi "samarinda", gunakan sintaks berikut:
1gsecuser SYSDBApassword masterkey
2GSEC>modify jajakpw samarinda
3GSEC>quit
Oleh karena itu, mengubahpassworduntuk SYSDBA dari "masterkey" menjadi
"unmul", gunakan sintaks berikut:
1gsecuser SYSDBApassword masterkey modify sysdbapw unmul
Untuk menghapususerjajak pada server lokal, gunakan sintaks berikut:
1gsecuser SYSDBApassword masterkey delete
Tabel 2.1: NamaEntitas
Atribut1 Atribut2   Atributn
datake1atribut1datake1atribut2  datake1atributn
.
.
.
.
.
.
.
..
.
.
.
datakeiatribut1datakeiatribut2  datakeiatributn
.
.
.
.
.
.
.
.
.
.
.
.
datakematribut1datakematribut2  datakematributn
Setelah membuat atau mengkoneksidatabase, selanjutnya adalah membuat
tabel entitas. Strukturdatabasesecara umum dapat dilihat pada Gambar (2.1).
Berikut adalah sintaks untuk membuat tabel entitas:
Sistem Basis Data 24 07065349

1CREATE entitas (
2 atribut1 tipedata1,
3 atribut2 tipedata2,
4 ...,
5 atributn tipedatan);
Laluinputdata dalam entitas dengan sintaks berikut:
1INSERT entitas
2 datakeiatribut1,
3 datakeiatribut2,
4 ...,
5 datakeiatribut1);
Kesalahan peng-input-an data tidak dapat dihindari. Salah satu penyebabnya
adalahhuman error. Prosedur untuk memperbaharui data yang spesi k berdasarkan
atribut adalah menggunakan sintaks berikut:
1UPDATE
2SET 1=ekspresi1,
3atribut2=ekspresi2,
4...,
5atributn=ekspresin
6WHERE
KlausaDELETEdigunakan untuk penghapusan beberapa data. Berikut ada-
lah sintaks umum penggunaannya:
1DELETE
2FROM
3WHERE
Untuk menghapus semua data dalam entitas, gunakan sintaks berikut:
1DELETE
2FROM
Sistem Basis Data 25 07065349

Kemudian untuk menghapus entitas beserta datanya dari memori, gunakan sintaks
berikut:
1DROP
Perubahan yang dilakukan padadatabasedengan memanipulasi data (yakni
perintahINSERT,UPDATE, danDELETE) tidaklah permanen sampai perin-
tahCOMMIT dijalankan. Oleh karena itu, gunakan sintaks berikut untuk menja-
lankan perubahan data yang dimanipulasi.
1COMMIT;
PerintahCOMMIT biasanya dilakukan setelah semua pekerjaan selesai, lalu pro-
ses tersebut akan membuat suatusavepoints. Sebaliknya jika ingin mengembalikan
pekerjaan kesavepointsterakhir, maka gunakan perintahROLLBACK .
Untuk menampilkan nama-nama entitas yang ada dalam suatudatabase, dapat
menggunakan sintaks berikut:
1SHOW TABLES;
Untuk menampilkan suatu atribut dan tipe datanya, dapat menggunakan sintaks
berikut:
1SHOW TABLES entitas;
Selanjutnya untuk menampilkan data berdasarkan suatu atribut, dapat mengguna-
kan sintaks berikut:
1SELECT
2FROM
Sistem Basis Data 26 07065349

Perhatikan bahwa klausaSELECTberasosiasi dengan operator projeksi dalam ba-
hasa Query formal, yaitu
Q
Atribut
(entitas). Jika ingin menampilkan semua data
dalam entitas, maka gunakan sintaks berikut:
1SELECT*
2FROM
Contohdatabasedapat dilihat pada Tabel (2.2).Databasetersebut meng-
gunakan Mahasiswa sebagai nama entitasnya.NULLpada data ke 1 dan data ke
4 merupakan karakter kosong. Berikut adalah sintaks dalam membuat entitasnya:
1CREATE
2 untuk
3NIM(10), ini
4NamaDepan(100), *ini */
5NamaBelakang(100));
Tabel 2.2: Mahasiswa
NIM NamaDepanNamaBelakang
1707065001Erlina
1707065003Nurul Rakhmawaty
1707065004Ghony Nurhuda
1707065010Ersin
1707065011Vika Novitasari
Sangat memungkinkan jika suatu atribut dapat mengaitkan dua atau lebih
tabel entitas. Misalnya, ketika ingin mengaitkan atribut yang sama dari dua entitas
berbeda. Tabel-tabel yang menjadi sumber Query harus memiliki keterhubungan
(relasi). EkspresiEntitas1.AtributAmenunjukkan bahwaAtributAberasal dari
tabel entitasEntitas1. Sebagai contoh, entitasmhsyang terdiri dari atributnim,
nama, danalamat; dan entitasnilaiyang terdiri dari atributnim,tugas,utsdan
uas. Jika ingin menampilkan nama mahasiswa beserta nilai tugasnya, maka sintaks
dalam SQL adalah sebagai berikut
1SELECT
2mhs.nama,
Sistem Basis Data 27 07065349

3nilai.tugas
4FROM
5WHERE
Ekspresi SQL ini merupakan bentuk terapan dari ekspresi formal dalam bahasa
Query formal berikut
Q
nama;tugas
(mhs:nim=nilai:nim(mhsnilai)).
KlausaWHERE dan kriteria seleksi lainnya akan dijelaskan lebih lanjut pada Sub-
bab 2.6.
2.2 Mende nisikan Tipe Data
Tipe data harus dide nisikan untuk setiap atribut dalam entitas. Tipe data yang
mendukung adalah tipe bilangan, tipe tanggal dan waktu, tipe karakter, tipeBLOB
danarray. Lebih lanjut mengenai tipe data, dapat dilihat pada Lampiran 2.
2.3 Mengkalkulasi Atribut
Perhatikan Tabel (2.3), lalu ikuti sintaks berikut.
1SELECT
2Namanya:,
3NamaDepan
4FROM
Selanjutnya bandingkan dengan sintaks berikut.
1SELECT
25,
3NamaDepan
4FROM
Sistem Basis Data 28 07065349

Tabel 2.3: Data Mahasiswa dengan Kolom Numerik
NIM NamaDepanNamaBelakangKegemaranNilaiUTSNilaiUAS
1707065001Erlina Olahraga 77 86
1707065003Nurul Rakhmawaty Musik 78 85
1707065004Ghony Nurhuda Olahraga 79 84
1707065010Ersin Tari 80 83
1707065011Vika Novitasari Vlog 81 82
Pemprograman SQL juga dapat melakukan perhitungan aritmatik (+,,,
dan=) pada satu atau lebih atribut dalam suatu entitas. Perhatikan sintaks berikut:
1SELECT
2NIM,
3NilaiUTS,
4NilaiUAS,
50.4*NilaiUTS + 0.6*NilaiUAS
6FROM
Untuk merangkai (concatenate) beberapastring, gunakan operatork("double-pipe").
Perhatikan sintaks berikut.
1SELECT
2NIM,
3NamaDepanj j j jKegemaran
4FROM
Bandingkan sintaks berikut:
1SELECT
2NIM,
3NamaDepanj j j jKegemaran
4FROM
Sistem Basis Data 29 07065349

2.4 Menggunakan Variabel dan Fungsi
Ada beberapa variabel yang dapat digunakan untuk mengetahui tanggal/waktu.
Perhatikan sintaks berikut:
1select timestamp
2select time
3select date
4selecttoday
5selectTODAY
6selectNow
7selectnow
8selectNOW
9selectTomorrow
10selectTOMORROW
11selectYesterday
12selectYESTERDAY
Sintaks tersebut menggunakanrdb$databaseyang dapat menyimpan informasi
dasar tentangdatabase.rdb$databaseadalah entitas sistem yang selalu ada dalam
setiapdatabaseFirebird dan dijamin hasilnya berupa 1 baris. Entitas ini sering
menjadi latihan standar oleh para programer Firebird.
Fungsi yang dipelajari adalah fungsi kalimat, fungsi matematik, dan fungsi
konversi (cast). Fungsi kalimat terdiri dariCHARLENGTH atauCHARAC-
TERLENGTH,LEFT,LOWER,RIGHT,TRIM, danUPPER. Perhatikan
sintaks berikut:
1Select
2CHARLENGTHSistem)
3CHARACTERLENGTHSistem)
4LEFT(Sistem,1)
5LOWER(Sistem)
6RIGHT(Sistem,2)
7TRIM()
8UPPER(Sistem)
9from
Sistem Basis Data 30 07065349

Fungsi numerik terdiri dariABS,ACOS,ASIN,ATAN,CEILatauCEILING,
COS,COSH,COT,EXP,FLOOR,LN,LOG10,MOD,PI,POWER,RAND,
ROUND,SIGN,SIN,SINH,SQRT,TAN, danTANH. Perhatikan sintaks
berikut:
1SELECT
2ABS(1),
3ACOS(0.5),
4ASIN(0.5),
5ATAN(1),
6CEIL(2.5),
7CEILING(2.5),
8FLOOR(2.5),
9MOD(8,3),
10PI(),
11POWER(25,0.5),
12RAND(),
13ROUND(PI(), 2),
14SIGN(8)
15from
Tabel 2.4: Beberapa Kemungkinan untuk PerintahCAST
Sumber Tujuan
Tipe numerik Tipe numerik,
[VAR]CHAR, BLOB
[VAR]CHAR, BLOB [VAR]CHAR, BLOB,
Tipe numerik, DATE,
TIME, TIMESTAMP
DATE, TIME [VAR]CHAR, BLOB,
TIMESTAMP
TIMESTAMP [VAR]CHAR, BLOB
DATE, TIME
Fungsi konversi digunakan untuk mengubah suatu tipe data menjadi tipe da-
ta yang diinginkan. Fungsi konversi menggunakan perintahCAST. Beberapa ke-
mungkinan yang dipakai untuk perintahCASTdapat dilihat pada Tabel (2.4).
Perhatikan sintaks berikut:
Sistem Basis Data 31 07065349

1selecttoday
2select 0630
3select30 j jJunej j2017
4select( 0630(20))from
5select30 j jJunej j2017)
6select(123.456789)
7select(9)
8select(9(2))
Selanjutnya perhatikan Tabel (2.5). Untuk menggantiNULLpada Tabel (2.5),
gunakan sintaks berikut:
1SELECT
2NilaiPaper,
3ISNULL(CAST(Presentasi),Unknown)
4FROM Presentasi;
Tabel 2.5: NilaiPresentasi
UrutanMajuNilaiPaperPresentasi
1 77
2 78 75
3 78 66
4 79 68
2.5 Mengurutkan Data
Ketika pernyataanSELECTdieksekusi, maka hasilnya sering tidak terurut. Yang
terjadi adalah baris-baris yang muncul diurutkan secara kronologi. Secara seder-
hananya, urutannya akan sama dengan urutan penggunaan pernyataanINSERT.
Untuk mengurutkan data berdasarkan alfabet, gunakan klausaORDER BY ke sta-
temenSELECT. Sebagai contoh, sintaks berikut menggunakan data pada Tabel
(2.2).
1 SELECT
2 NamaDepan,
Sistem Basis Data 32 07065349

3 NamaBelakang
4 FROM
5 ORDER
Silahkan coba sintaks berikut dan perhatikan hasilnya.
1SELECT
2NamaBelakang,
3NamaDepan
4FROM
5ORDER
Sintak tersebut juga sama dengan sintaks berikut:
1SELECT
2NamaBelakang,
3NamaDepan
4FROM
5ORDER;
Kata kunciASC(singkatan dariascending) bersifat opsional. Untuk urutan me-
nurun, gunakan kata kunciDESC(singkatan daridescending). Sebagai contoh:
1SELECT
2NamaDepan,
3NamaBelakang
4FROM
5ORDER;
Untuk mengurutkan secaraMultiple Columns, perhatikan contoh berikut:
1SELECT
2NamaDepan,
3NamaBelakang
4FROM
5ORDER
Sistem Basis Data 33 07065349

Untuk mengurutkan atribut yang dikalkulasi, perhatikan sintaks berikut:
1SELECT
2NamaBelakang j j, j jNamaDepan
3FROM
4ORDER
2.6 Kriteria Seleksi
Penyeleksian dalam SQL dimulai dengan klausaFIRST, yang digunakan untuk
membatasi banyaknya baris dari himpunan berurut. Perhatikan kembali Tabel (2.3).
Misalkan hanya dua baris pertama dari data yang akan ditampilkan, gunakan sintaks
berikut:
1SELECT
2FIRST
3NamaDepan Mahasiswa,
4NilaiUAS yangdiperoleh
5FROM
Selanjutnya, klausaSKIPdigunakan untuk menyembunyikan beberapa baris perta-
ma. Misalkan menampilkan data ke tiga sampai terakhir, gunakan sintaks berikut:
1SELECT
2SKIP 2
3NamaDepan Mahasiswa,
4NilaiUAS yangdiperoleh
5FROM
Jika hanya ingin menampilkan dua baris terakhir dari data, gunakan sintaks berikut:
1SELECT
2SKIP ((select( *)2
3NamaDepan Mahasiswa,
Sistem Basis Data 34 07065349

4NilaiUAS yangdiperoleh
5FROM
KlausaFIRSTdanSKIPdapat digunakan bersamaan. Misalkan ingin menam-
pilkan baris ke tiga sampai ke lima dari Tabel (2.3), gunakan sintaks berikut:
1SELECT
2FIRST
3NamaDepan Mahasiswa,
4NilaiUAS yangdiperoleh
5FROM
Klausa penyeleksian berikutnya adalahWHERE. Klausa ini menyeleksi sub-
himpunan baris. Misalkan ingin melihat Mahasiswa yang memiliki kegemaran olah-
raga pada Tabel (2.3), gunakan sintaks berikut:
1SELECT
2NamaDepan,
3NamaBelakang,
4Kegemaran
5FROM
6WHEREOlahraga;
Selanjutnya, operator-operator perbandingan untuk klausaWHERE yang dapat
digunakan adalah operator-operator =,<>, ! =,=,
^
=,<,<=,>,>=, !<,<,
^
<, !>,>dan
^
>. Operator<>, ! =,=, dan
^
= menyatakan perbandingan
tidak sama. Operator !<,<, dan
^
<menyatakan perbandingan tidak lebih kecil.
Sedangkan Operator !>,>dan
^
>menyatakan perbandingan tidak lebih besar.
Perhatikan sintaks berikut:
1SELECT
2NamaDepan,
3NamaBelakang,
4NilaiUTS
5FROM
6WHERE <80;
Sistem Basis Data 35 07065349

Meskipun jarang digunakan, operator<juga dapat digunakan pada kolom teks.
1SELECT
2NamaDepan,
3NamaBelakang,
4Kegemaran
5FROM
6WHERE <N;
KlausaWHERE berasosiasi dengan operasi seleksi dalam bahasa Query for-
mal. Oleh karena itu, sintaks berikut
1SELECT*
2FROM
3WHERE001;
ekivalen dengan operasi seleksinim=
0
001
0(mhs).
Selain operator-operator perbandingan, klausaWHERE juga dapat meng-
gunakan predikat-predikat perbandingan yang meliputiLIKE,STARTING WITH ,
CONTAINING ,BETWEEN ,IS [NOT] NULL IS [NOT] DISTINCT FROM ,
danSIMILAR TO. Operator predikatSTARTING WITH digunakan mencari
data bertipestringataustring-likeyang diawali dengan karakter tertentu. Operator
predikatCONTAINING digunakan mencari data bertipestringataustring-like
yang mengandung rangkaian karekter tertentu. OperatorCONTAINING tidak
bersifatcase-sensitive. Operator predikatBETWEEN digunakan untuk mencari
data yang memiliki nilai yang terletak di antara interval tertentu. Operator predikat
SIMILAR TO membandingkan suatustringdengan suatu pola ekspresi reguler
SQL. Operator predikatSIMILAR TO menghasilkanoutputyaituTRUEatau
FALSE. Perhatikan sintaks berikut:
1Select
2AppleApple, true
3ApplesApple, false
4Birne rne, true
5Birne ne, false
Sistem Basis Data 36 07065349

6BirneB%ne, true
7BirneBir%ne%, true
8CitroenCit[arju]oen, true
9CitroenCi[tr]oen, false
10CitroenCi[tr][tr]oen, true
11DatteDat[q u]e, true
12DatteDat[abq uy]e, true
13DatteDat[bcg kmpwz]e false
14from
Tabel 2.6: Movies
MovieIDMovieTitle Rating
1 Love Actually Rating
2 North by Northwest Not Rated
3 Love and Death PG
4 The Truman Show PG
5 Everyone Says I Love YouRating
6 Down with Love PG-13
7 Finding Nemo G
Operator predikatLIKEmembandingkan ekspresi bertipe karakter dengan
pola yang dide nisikan dalam ekspresi tertentu. Operator predikat ini bersifatcase-
sensitive. Misalkan untuk mencocokkan pola data pada Tabel (2.6), gunakan ope-
ratorLIKE. Perhatikan sintaks berikut:
1SELECT
2MovieTitle
3FROM
4WHERE%LOVE%;
Bandingkan dengan sintaks berikut:
1SELECT
2MovieTitle
3FROM
4WHERELOVE%;
atau
Sistem Basis Data 37 07065349

1SELECT
2MovieTitle
3FROM
4WHERE%LOVE;
atau
1SELECT
2MovieTitle
3FROM
4WHERE%;
Tabel 2.7: Actors
ActorIDFirstNameLastName
1 Cary Grant
2 Mary Steenburgen
3 Jon Voight
4 Dustin Ho man
5 John Wayne
6 Gary Cooper
Tanda persen (%) merupakanwildcardyang sering digunakan. Namun dalam
praktiknya, ada beberapa kemungkinan yang muncul. Untuk menyeleksi dapat juga
menggunakanwildcardberupa garis bawah (), karakter dalam kurung siku, dan
karakter dalam kurung siku ditambah simbolcaret(
^
). Perhatikan Tabel (2.7) lalu
ikuti sintaks berikut:
1SELECT
2FirstName,
3LastName
4FROM
5WHERE ARY;
Bandingkan dengan sintaks berikut:
1SELECT
Sistem Basis Data 38 07065349

2FirstName,
3LastName
4FROM
5WHERE N;
Untuk penggunaan karakter dalam kurung siku, perhatikan sintaks berikut:
1SELECT
2FirstName,
3LastName
4FROM
5WHERE[CM]ARY;
Bandingkan dengan sintaks berikut:
1SELECT
2FirstName,
3LastName
4FROM
5WHERE[ˆCM]ARY;
Untuk mencari data yang menggunakan karakterunderscore, dapat memanfaatkan
karakter "#" yang dispesi kasi sebagai karakterescape. Perhatikan sintaks berikut:
1SELECT
2RDB$RELATIONNAME
3FROM
4WHERE NAME%# %#
2.7 LogikaBoolean
Subbab ini merupakan kelanjutan dari materi klausaWHERE yang telah dijelas-
kan sebelumnya. LogikaBooleanyang akan dipelajari adalahAND,OR,NOT,
BETWEEN ,IN, danIS NULL.
Sistem Basis Data 39 07065349

Perhatikan Tabel(2.3). Berikut adalah contoh penggunaan sintaks dengan
logikaAND:
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
5WHERE >78
6AND <80;
Berikut adalah contoh untuk logikaOR:
1SELECT
2NamaDepan,
3NilaiUTS,
4NilaiUAS
5FROM
6WHERE >79
7OR <85;
Perhatikan sintaks berikut:
1SELECT
2NamaDepan,
3Kegemaran,
4NilaiUAS
5FROM
6WHEREOlahraga
7ORMembaca
8AND 78;
Lalu bandingkan dengan sintaks berikut:
1SELECT
2NamaDepan,
3Kegemaran,
4NilaiUAS
Sistem Basis Data 40 07065349

5FROM
6WHEREOlahraga
7ORMembaca)
8AND 78;
Berikut adalah contoh sintaks untuk logikaNOT:
1SELECT
2NamaDepan,
3Kegemaran,
4NilaiUAS
5FROM
6WHEREMembaca; *WHERE <>Membaca */
Perhatikan sintaks berikut:
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
5WHERE 79
6AND 81;
Lalu bandingkan dengan sintaks berikut:
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
5WHERE
dan sintaks berikut:
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
Sistem Basis Data 41 07065349

5WHERE
Sintaks berikut ini
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
5WHERE
6AND
ekivalen dengan sintaks berikut:
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
5WHERE(79,80);
Bandingkan dengan sintaks berikut:
1SELECT
2NamaDepan,
3NilaiUTS
4FROM
5WHERE(79,80);
2.8 Logika Kondisi
Perhatikan Tabel (2.8). Kategori F menyatakan buah (fruit), S menyatakan bumbu
(spice), V menyatakan sayur (vegetable), dan B menyatakan minuman (beverage).
1SELECT
2CASE
Sistem Basis Data 42 07065349

3WHENFFruit
4WHENVVegetable
5ELSEOther
6END
7Description
8FROM
Bandingkan dengan sintaks berikut:
1SELECT
2CASE
3WHENFFruit
4WHENVVegetable
5ELSEOther
6END
7Description
8FROM
Tabel 2.8: BahanMakanan
GroceryIDCategoryCodeDescription
1 F Apple
2 F Orange
3 S Mustard
4 V Carrot
5 B Water
Tabel 2.9: Amerika
CityIDCountryStateProvinceCity
1 US VT Burlington
2 CA QU Montreal
3 US CO Denver
4 US CO Boulder
5 CA AB Edmonton
Perhatikan Tabel (2.9). Misalkan ingin mengurutkan data berdasarkan atribut
Country, lalu atribut yang menyatakanStateatauProvince, dan terakhir berdasar-
kanCity. Berikut adalah sintaksnya:
Sistem Basis Data 43 07065349

1SELECT*
2FROM
3ORDER
4Country,
5CASE
6WHENUS
7WHENCA
8ELSE
9END,
10City;
Tabel 2.10: Penghasilan
IDKaryawanJenisKelaminUsiaPendapatan
1 L 5580000
2 P 2565000
3 L 3540000
4 P 4290000
5 P 2725000
Perhatikan Tabel (2.10). Misalkan ingin melihat data karyawan yang tidak
sesuai UMR. Jika pria dan minimal 50 tahun, maka penghasilan minimalnya adalah
75000. Jika wanita dan minimal 35 tahun, maka penghasilan minimalnya adalah
60000. Semua orang di regional tersebut harus berpenghasilan minimal 50000.
1SELECT*
2FROM
3WHERE <
4CASE
5WHEN Kelamin =L 50
6WHEN Kelamin =P 35
7ELSE
8END;
Sistem Basis Data 44 07065349

2.9 Ringkasan Data
Perhatikan Tabel (2.11). Untuk mengeliminasi duplikat, dapat menggunakan kata
kunciDISTINCT.
1SELECT
2DISTINCT
3Artis
4FROM
5ORDER
Tabel 2.11: JudulLagu
IDlaguArtis Album Judul
1 The Beatles Revolver Yellow Submarine
2 The Beatles Revolver Eleanor Rigby
3 The Beatles Abbey Road Here Comes the Sun
4 The Rolling StonesBeggars BanquetSympathy for the Devil
5 The Rolling StonesLet It Bleed Gimme Shelter
6 Paul McCartney Ram Too Many People
Kata kunciDISTINCThanya menampilkan nilai yang unik dalam atribut. Namun
Kata kunciDISTINCTdapat diikuti dengan atribut lainnya.
1SELECT
2DISTINCT
3Artist,
4Album
5FROM
6ORDER
Fungsi agregat yang sering dipakai adalahCOUNT,SUM,AVG,MIN, dan
MAX. Perhatikan kembali Tabel (2.3) dan gunakan sintaks berikut:
1SELECT
2MIN(NilaiUTS) Olahraga,
3MAX(NilaiUTS) Olahraga,
4SUM(NilaiUTS) Olahraga,
Sistem Basis Data 45 07065349

5AVG(NilaiUTS) rataOlahraga
6FROM
7WHEREOlahraga;
FungsiCOUNTdigunakan untuk menghitung banyaknya data (baris). Perhatikan
sintaks berikut:
1SELECT
2COUNT(*) AS Banyakdata
3FROM
4WHEREMembaca;
Bandingkan dengan sintaks berikut:
1SELECT
2COUNT(NilaiUTS) data
3FROM
4WHEREMembaca;
FungsiGROUP digunakan untuk memisahkan data menjadi beberapa ke-
lompok. Misalkan ingin mengetahui rata-rata nilai UTS berdasarkan kegemaran.
Perhatikan sintaks berikut:
1SELECT
2Kegemaran Kegemaran,
3AVG(NilaiUTS) rataUTS
4FROM
5GROUP
6ORDER
Secara umum, sintaks untuk memisahkan beberapa kolom adalah sebagai berikut:
1SELECT
2Atribut1, *atribut */
3Atribut2,
4...,
Sistem Basis Data 46 07065349

5Atributn
6FROM
7GROUP A, AtributB, ...
8ORDER A, AtributB, ... *boleh
dengan */
Sistem Basis Data 47 07065349

BAB 3
Implementasi Lazarus
Softwareyang digunakan dalam Bab 3 ini adalah Lazarus.Softwareini adalah salah
satuopen-source softwareyang dapat menghubungkanserverFirebird ke dalam
pembuatan aplikasi. Lazarus dapat diunduh di http://www.lazarus-ide.org. Perlu
diingat bahwa untuk mengaksesdatabaseFirebird dalam Lazarus,serverFirebird
harus dikoneksikan terlebih dahulu.
Ada beberapa tahapan dalam menggunakan duasoftwaretersebut. Pertama,
buat aplikasi Lazarus dan persiapkandatabaseFirebird yang akan diolah. Kemu-
dian taruhdatabasetersebut ke dalamfolderyang sama dengan aplikasi Lazarus.
Lalu pilih komponenSQLdbuntuk aplikasi Lazarus. Perhatikan Gambar (3.1),
bahwadatabaseyang dapat digunakan selain Firebird adalah Microsoft SQL Server,
MySQL, PostgreSQL, Oracle, SQLite, Sybase ASE dan database lain yang meng-
gunakan ODBC.
Gambar 3.1: Komponen-komponenSQLdb
Databaseyang digunakan dalam materi ini adalah Firebird, sehingga kompo-
nen yang dipilih adalahIBConnection. Letakkan komponen tersebut padaform,
dan tambahkanButton(dari komponenStandard) sehingga tampilanformseperti
pada Gambar (3.2). Pada komponenButton, tambahkanOnClickeventlalu beri
sintaks berikut:
48

1IBConnection1.DatabaseName:=mydatabase.FDB;
2IBConnection1.Connected:=True;
3ShowMessage(Selamat!.);
Jangan lupa, atur properti untuk komponenIBConnectionsebagai berikut:
1.Hostname=localhost
2.UserName=SYSDBA
3.Password=masterkey.
Gambar 3.2: KomponenIBConnectionpadaform
3.1 Komponen DBGrid
KomponenSQLTransactiondanSQLQuerydapat digunakan untuk semuadata-
baseyang didukung olehSQLdb. Untuk menampilkandatabase, dapat mengguna-
kan komponenDBGridyang tersedia dalamData Controls. Lalu untuk meng-
hubungkan komponenDBGrid, diperlukan komponenDatasourceyang tersedia
dalamData Access.
Selanjutnya adalah menghubungkan komponenDBConnection,SQLTran-
saction,SQLQuery,DBGrid, danDatasource. Pada propertiIBConnec-
tion, ubahTransactionmenjadi 'SQLTransaction1'. Lalu ubah propertiData-
basepadaSQLQuerymenjadi 'IBConnection1' dan propertiTransactionmenjadi
Sistem Basis Data 49 07065349

'SQLTransaction1'. Kemudian ubah pula propertiDatasetpadaDatasourcemen-
jadi 'SQLQuery1'. Terakhir, propertiDatasourcepadaDBGriddiubah menjadi
'DataSource1'.
Setelah komponen-komponen terhubung, lalu buat 1 buahButtondan atur
seperti Gambar (3.3). Selanjutnya tambahkanOnClickEventpadaButtonde-
ngan sintaks berikut:
1SQLQuery1.Close;
2SQLQuery1.SQL.Text:=select *from;
3IBConnection1.Connected:=;
4SQLTransaction1.Active:=;
5SQLQuery1.Open;
6DBGrid1.AutoFillColumns:=True; //opsional
Gambar 3.3: Komponen-komponen yang terhubung keDBGridGambar 3.4: Jendela "EditingSQL"
Untuk mengetahui bagaimana komponenSQLQuerybekerja, tekan edit pada
propertiSQLdalamSQLQuery. Maka akan muncul jendela "EditingSQL", lalu
tambahkan sintaks seperti pada Gambar (3.4). Untuk mengetahui hasilnya, tekan
tanda segitiga hijau (RunSQLcode).
Sistem Basis Data 50 07065349

3.2 Komponen DBNavigator dan DBEdit
SelainDBGrid, untuk menampilkandatabasejuga dapat menggunakan komponen
DBNavigatordanDBEdit. Kedua komponen ini juga dapat dipadukan dengan
komponenDBGrid. KomponenDBNavigatordanDBEdittersedia dalamDa-
ta Controls.
Gambar 3.5: KomponenDBNavigator
DBNavigatordigunakan untuk menavigasi melaluidatasetdalam meres-
ponqueryyang dikirim kedatabase. Perhatikan Gambar (3.5), bahwa komponen
DBNavigatorterdiri dari beberapa tombol yakniFirst,Prior,Next,Last,
Insert,Delete,Edit,Post,Cancel, danRefresh. Namun pada saat mende-
sain, tombol-tombol tersebut dapat ditampilkan atau disembunyikan dengan me-
nyesuaikan propertiVisibleButtons. Untuk menghubungkan komponenDBNavi-
gatordenganDBGrid, maka pada propertiDatasetpadaDatasourcemenjadi
'SQLQuery1' dan propertiDatasourcepadaDBNavigatordiubah menjadi 'Data-
Source1'. Selanjutnya adalah menyesuaikan komponen-komponen tersebut seperti
pada Gambar (3.6).
Gambar 3.6: Contoh desainform
Yang menarik dari pembahasanDBNavigatorini adalah perhitungan ba-
nyaknya data. Untuk menghitung banyaknya data dalamdataset, gunakan fasilitas
RecordCountyang disediakan olehSQLQuery. Nilai yang dihasilkan olehReco-
rdCountmenunjukkan banyaknya data yang dimuat dariserver. Untuk alasan per-
forma, komponenSQLdbtidak membaca semua data ketika membukaSQLQuery.
Sistem Basis Data 51 07065349

Dalam hal ini, hanya 10 data saja yang tersedia. Sehingga untuk mengetahui ba-
nyaknya data dalamserver, gunakan navigasiLastlalu panggilRecordCount.
Gambar 3.7: Contoh desainform
Untuk lebih jelasnya, ganti komponenDBNavigatordengan 4 buahButton
denganCaptionmasing-masingFirst,Prior,Next, danLast. Lalu tambahkan 1
Labeldan 1Buttontambahan (yang digunakan untuk menghitung banyak data).
Kemudian tambahkan beberapaprocedureberikut.
1procedure
2begin
3SQLQuery1.First;
4end;
5
6procedure
7begin
8SQLQuery1.Prior;
9end;
10
11procedure
12begin
13SQLQuery1.Next;
14end;
15
16procedure
17begin
18SQLQuery1.Last;
19end;
20
21procedure
22varinteger;
Sistem Basis Data 52 07065349

23begin
24n:=SQLQuery1.RecordCount;
25Label1.Caption:=Banyaknya+IntToStr(n);
26end;
Selanjutnya sesuaikan komponen-komponen tersebut dengan mengikuti Gambar (3.7),
lalu perhatikan hasiloutput-nya.
Komponen selanjutnya adalahDBEdit. KomponenDBEditmenunjukkan
satu entridatabasedalam kotakedit. Oleh karena itu, komponen ini cocok sekali
ketika dipadukan dengan komponenDBNavigator. Untuk lebih jelasnya, isikan
propertiSQLpada komponenSQLQuerydengan sintaks berikut.
1select*from entitas;
Lalu tambahkan 3DBEdit. Kemudian ubah propertiDatasourcepada masing-
masingDBEditmenjadi 'DataSource1'. Selanjutnya pilihDataFieldsesuai atribut
yang ingin ditampilkan. Terakhir, atur komponen-komponen tersebut seperti pada
Gambar (3.8).
Gambar 3.8: Contoh desainform
3.3 MemanipulasiDatabase
Perintah yang termasuk dalam memanipulasi data meliputi menambah, menghapus,
dan memperbaharui. Berikut adalah contoh sintaks untuk menambahkan data.
Sistem Basis Data 53 07065349

1SQLQuery1.SQL.Text:=insertteks,1234);
Cara lain untuk menambah data adalah menggunakan parameter dalamquery.
1SQLQuery1.SQL.Text:=inserta,:b);
2SQLQuery1.Params.ParamByName(a).AsString:=teks;
3SQLQuery1.Params.ParamByName(b).AsInteger:=1234;
Hal ini sangat berguna ketika ingin menambahkan data yang berasal dari komponen
Lazarus yang lain. Perhatikan sintaks berikut.
1SQLQuery1.SQL.Text:=inserta,:b);
2SQLQuery1.Params.ParamByName(a).AsString:=Edit1.Text;
3SQLQuery1.Params.ParamByName(b).AsInteger:=StrToInt(Edit2.Text);
Seperti penjelasan pada materi sebelumnya, bahwa jika ingin memanipula-
si data (menambah, menghapus, dan memperbaharui) maka dalam bahasa SQL
menggunakan perintahCOMMIT. Jika ingin melakukan perintah ini dalam Laza-
rus, maka gunakan sintaks berikut setelah data dimanipulasi.
1SQLQuery1.ExecSQL;
2SQLTransaction1.Commit;
3.4 Memanfaatkan StringGrid
Berbeda denganDBGrid, komponenStringGridmerupakan komponen yang da-
pat digunakan untuk menyajikan (memodi kasi)databasesecara langsung sesuai
keinginan Pengguna. Beberapa properti yang sering digunakan adalahColCount,
RowCount, danCells[kolom, baris]. Materi ini menggunakandatabaseyang dise-
diakan oleh Firebird, yaitu "employee.fdb". Koneksikandatabasetersebut dengan
Lazarus. Lalu tambahkan 1Buttondengan sintaks berikut:
1procedure
Sistem Basis Data 54 07065349

2var
3 i,m,n:integer;
4 gl,gb:Double;
5begin
6 SQLQuery1.Close;
7 SQLQuery1.SQL.Text:=select salary lama
newsalary baru history;
8 SQLQuery1.Open;
9 SQLQuery1.Last;
10
11 m:=SQLQuery1.FieldCount;
12 n:=SQLQuery1.RecordCount;
13 StringGrid1.ColCount:=m+1;
14 StringGrid1.RowCount:=n+1;
15 StringGrid1.AutoFillColumns:=True;
16
17 StringGrid1.Cells[0,0]:=No.;
18 StringGrid1.Cells[1,0]:=Gaji;
19 StringGrid1.Cells[2,0]:=Gaji;
20
21 SQLQuery1.First;
22
23 for
24 begin
25 gl:=SQLQuery1.FieldByName( lama).AsFloat;
26 gb:=SQLQuery1.FieldByName( baru).AsFloat;
27
28 StringGrid1.Cells[0,i] := IntToStr(i);
29 StringGrid1.Cells[1,i] := FloatToStr(gl);
30 StringGrid1.Cells[2,i] := FloatToStr(gb);
31 SQLQuery1.Next;
32 end;
33end;
3.5 Menggunakan LazReport
KomponenLazReportdapat melihat dan mencetak data yang disusun dengan
baik. Namun komponen ini biasanya belum terinstall, sehingga harus diinstall ter-
lebih dahulu. Dari menuPackage, klik submenuInstall/Uninstall Packages. Lalu
Sistem Basis Data 55 07065349

pada editorAvailable for installation, ketik lazreportdan klikInstall selection. Jika
berhasil, maka komponenLazReportakan muncul dalam beberapa menit.
Komponen utama yang akan digunakan adalahfrDBDataSet,frReport
danfrDesigner. Letakkan ketiga komponen tersebut padaform, lalu tambahkan
beberapa komponen pendukung sehinggaformakan tampak seperti pada Gambar
(3.9). Materi ini menggunakandatabaseyang disediakan oleh Firebird, yaitu "em-
ployee.fdb". Koneksikandatabasetersebut dengan Lazarus. Lalu pada komponen
SQLQuery, tambahkan sintaks berikut untuk propertiSQL:
1select*from employee;
Kemudian propertiDatasourcepadafrDBDataSetdiubah menjadi 'DataSource1'.
Gambar 3.9: Contoh desainformGambar 3.10:Report designer
Sistem Basis Data 56 07065349

Gambar 3.11:Variables editorGambar 3.12:Variables list
Selanjutnya adalah membuat tampilanreport.Double-clickpada komponen
frReport(atau klik kanan, lalu pilihDesign Report) sehingga munculreport desig-
nerseperti pada Gambar (3.10). Selanjutnya adalah menghubungkan nama-nama
variabel kedatabase eldsatau nilai-nilai sistem. Dari menuFile, klikvariables list
sehingga akan tampak seperti pada Gambar (3.11). Klik tombolVariablesuntuk
mende nisikan beberapa variabel. Tulis beberapa variabel seperti pada Gambar
(3.12). "Variabel baru" menyatakan suatu kategori, sedangkan entri-entri yang ber-
ada dibawahnya menyatakan variabel. Pende nisian variabel diawali dengan 1 spasi.
Selanjutnya, setiap variabel harus dihubungkan dengan suatu eld. Pilih variabel,
lalu pilih eldyang sesuai, maka akan tampak seperti pada Gambar (3.13). Lakukan
hal yang sama untuk semua variabel.
Sistem Basis Data 57 07065349

Gambar 3.13: Contoh pencocokan variabel dan eldGambar 3.14: Tipe-tipeband
Selanjutnya adalah menggunakan objek-objek yang ada padaobject bar. Posisi
object barterletak pada sisi kiri darireport designer. Objek-objek tersebut terdiri
daripointer,rectangle object,band,picture object,subreport,draw lines,
TlrCrossViewdanbarcode object. Klik objekband, lalu klik juga padareport
surface. Setelah itu muncul beberapa tipebandseperti pada Gambar (3.14).
Sistem Basis Data 58 07065349

Gambar 3.15: Cara memilih tanggal sekarangGambar 3.16: Jendelavariables formattingGambar 3.17: Contoh desaintext editor
Sistem Basis Data 59 07065349

Gambar 3.18: Pemilihandata sourceuntukmaster data bandGambar 3.19: Menambahkan ekspresi padatext editor
Tipebandpertama yang akan dipelajari adalahreport title. Pilih tipe band
ini, lalu letakkanrectangle objectdi atasnya. Setelah itu, akan muncultext edi-
tor. Untuk menambahkan tanggal saat ini, pilihvariablelalu pilih kategoriother
kemudianDateseperti pada Gambar (3.15). Untuk mengatur hasil tampilan, pilih
formatpadatext editor. Misalkan ingin mengatur tampilan tanggal seperti pada
Gambar (3.16). Selanjutnya adalah menyesuaikan dengan Gambar (3.17).
Tipebandselanjutnya adalahmaster data. PilihfrDBDataSetsebagaidata
sourceseperti pada Gambar (3.18). Tipebandini akan mengulang setiaprecord
dalamdata source. Untuk menambahkan beberapa eld, tambahkanrectangle
objectdi atasnya. Tambahkan beberapa variabel dengan kategori "Variabel baru".
Untuk perhitungan numerik, dapat menggunakanfunctionseperti pada Gambar
(3.19).
Sistem Basis Data 60 07065349

Setelah membuat desain dasar untukreport, saatnya mengetahui hasil tam-
pilan. Dari menuFile, pilihpreview(tahan Ctrl+P darikeyboard). Contoh hasil
tampilanreportdapat dilihat pada Gambar (3.20). Tutup dan simpan desainreport
dengan nama "latihanlazreport.lrf". Langkah selanjutnya adalah menambahkan be-
berapa sintaks berikut padaform.
1procedure
2begin
3frReport1.LoadFromFile(latihanlazreport.lrf);
4frReport1.DesignReport;
5end;
6
7procedure
8begin
9frReport1.LoadFromFile(latihanlazreport.lrf);
10frReport1.ShowReport;
11end;
Gambar 3.20: Contoh tampilanreport
Reportyang telah dibuat dapat dicetak dengan menambahkan "Printer4Lazarus"
package. Tambahkan 1Buttondan 1PrintDialog. Pada komponenButton,
tambahkanOnClickeventlalu beri sintaks berikut:
Sistem Basis Data 61 07065349

1procedure
2var
3 FromPage, ToPage, NumberCopies:;
4 ind:;
5 Collap:;
6begin
7 // Load report definition from application directory
8 AppDirectory:=ExtractFilePath(ParamStr(0));
9 frReport1.LoadFromFile(latihanlazreport.lrf);
10 // Need
to
11 ind:= Printer.PrinterIndex;
12 // Prepare the report
continuing makes no sense
13 if
14 //
15 with
16 begin
17 Options:=[poPageNums ]; // allows selecting pages/page
18 Copies:=1;
19 Collate:=true; // ordened copies
20 FromPage:=1; // start
21 ToPage:=frReport1.EMFPages.Count; // last
22 MaxPage:=frReport1.EMFPages.Count; // maximum allowed number
of
23 if
feedback
24 begin
25 if <>ind ) // verify
printer has changed
26 or
reformat the report
27 or
//...
28 then
29 frReport1.PrepareReport //...
30 else
31 exit; // we could
32
33 if
page
Sistem Basis Data 62 07065349

34 begin
35 FromPage:=PrintDialog1.FromPage; // first
36 ToPage:=PrintDialog1.ToPage; // last
37 end;
38 NumberCopies:=PrintDialog1.Copies; // number
39 // Print the report using the supplied pages & copies
40 frReport1.PrintPreparedReport(
inttostr(FromPage)+ +inttostr(ToPage), NumberCopies);
41 end;
42 end;
43end;
Sistem Basis Data 63 07065349

Daftar Pustaka
[1] The Firebird Book: A Reference for Database Developers.
New York: Apress.
[2] Basis Data, Edisi Revisi. Bandung: Informatika.
[3]
kenoog, P., Yemanov, D. (2016).Firebird 2.5 Language Reference.
http://www. rebirdtest.com/
[4] The Language of SQL, Second Edition. New York: Addison-
Wesley.
[5] Database System Con-
cepts, Sixth Edition. New York: Mc Graw Hill.
[6]
64

Lampiran
65

Lampiran 1
66

Lampiran 2
Tipe Data dalam SQL
No.Nama Ukuran Batas & ketelitianKeterangan
1BIGINT 64bits Dari2
63
sampai
(2
63
1)
Tipe data untuk bilangan bu-
lat dengan rentang yang lebih
lebar dari INT
2BLOB BervariasiUkuran segmen
BLOB dibatasi
hingga 64K dan
ukuran maksimum
le BLOB adalah 4
GB
Suatu tipe data dalam ukuran
yang dinamik yang diguna-
kan untuk menyimpan data
yang cukup besar seperti gra-
k, teks, dan suara dalam ben-
tuk digital
3CHAR(n),
Character(n)
Karena
terdiri dari
nkarak-
ter, maka
ukuran
tipe data
ini tergan-
tung pada
banyaknya
bytesda-
lam setiap
karakter
dari 1 sampai 32767
bytes
Tipe data karakter yang pan-
jangnya tetap. Artinya jika te-
lah mendeklarasikan suatu va-
riabel bertipe Char(8), maka
alokasi ukuran penyimpanan
adalah sebesar lima karakter
4DATE 32bits Dari 01.01.0001
masehi sampai
31.12.9999 masehi
Variabel ini hanya mengenal
tanggal, tidak ada unsur wak-
tu
5DECIMAL
(precision,
scale)
Bervariasi
(16, 32
atau 64
bits)
Precision = dari 1
sampai 18, menya-
takan total digit
dari bilangan yang
akan disimpan;
scale = dari 0 sam-
pai 18, menyatakan
banyaknya digit
di belakang tanda
desimal
Suatu bilangan dengan bebe-
rapa digit setelah titik desimal.
Banyaknya scale harus kurang
dari atau sama dengan preci-
sion. Variabel dengan tipe DE-
CIMAL(10,3) akan mengikuti
format: ppppppp.sss, contoh-
nya 1234567.890
6DOUBLE
PRECISION
64bits Dari 2:22510
308
sampai 1:79710
308
Double-precision IEEE. Tipe
data ini disimpan dengan kete-
patan perkiraan 15 digit (ter-
gantung padaplatform)
67

Lampiran 2
Tipe Data dalam SQL (Lanjutan)
No.Nama Ukuran Batas & ketelitianKeterangan
7FLOAT 32bits Dari 1:17510
38
sampai 3:40210
38
Single-precision IEEE. Tipe
data ini memiliki perkiraan
presisi 7 digit setelah titik de-
simal
8INTEGER,
INT
32bits Dari -2147483648
sampai 2147483647
Tipe data untuk bilangan bu-
lat yang sering digunakan. Na-
ma pendek untuk tipe data ini
adalah INT
9NUMERIC
(precision,
scale)
Bervariasi
(16, 32
atau 64
bits)
Precision = dari 1
sampai 18, menya-
takan total digit
dari bilangan yang
akan disimpan;
scale = dari 0 sam-
pai 18, menyatakan
banyaknya digit
di belakang tanda
desimal.
Suatu bilangan dengan bebe-
rapa digit setelah titik desimal.
Banyaknya scale harus kurang
dari atau sama dengan pre-
cision. Variabel dengan tipe
NUMERIC(10,3) akan mengi-
kuti format: ppppppp.sss, con-
tohnya 1234567.890
10SMALLINT 16bits Dari -32768 sampai
32767
Tipe data untuk bilangan bu-
lat dengan rentang yang lebih
sempit dari INT
11TIME 32bits Dari 00:00:00.0000
sampai
23:59:59.9999
ISCTIME, yang menunjuk-
kan waktu. Tipe data ini
tidak dapat digunakan un-
tuk menyimpan interval
waktu. Dapat mengguna-
kan fungsiextract, seperti
EXTRACT (HOUR FROM
DATEFIELD), EXTRACT
(MINUTE FROM DA-
TEFIELD), EXTRACT (SE-
COND FROM DATE FIELD)
12TIMESTAMP 64bits Dari tanggal
01.01.0001 sampai
31.12.9999
Menghasilkan tanggal dan
waktu. Dapat juga mengguna-
kan fungsi EXTRACT
68

Lampiran 2
Tipe Data dalam SQL (Lanjutan)
No.Nama Ukuran Batas & ketelitianKeterangan
13VARCHAR(n),
Char Var-
ying, Charac-
ter Varying
Karena
terdiri dari
nkarak-
ter, maka
ukurannya
bergan-
tung pada
banyaknya
bytesda-
lam setiap
karakter
Dari 1 sampai
32765bytes
Variabel bertipe string.
Ukuran total karakter da-
lam byte tidak boleh lebih
besar dari (32KB-3), dengan
mempertimbangkanencoding.
Parameternwajib diisi
69