0% menganggap dokumen ini bermanfaat (0 suara)
427 tayangan

Modul PostgreSQL

Buku panduan ini membahas tentang PostgreSQL mulai dari pengertian database, instalasi PostgreSQL, perintah dasar seperti membuat database dan tabel, hingga penggunaan bahasa pemrograman seperti PL/pgSQL."

Diunggah oleh

Dewi
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
427 tayangan

Modul PostgreSQL

Buku panduan ini membahas tentang PostgreSQL mulai dari pengertian database, instalasi PostgreSQL, perintah dasar seperti membuat database dan tabel, hingga penggunaan bahasa pemrograman seperti PL/pgSQL."

Diunggah oleh

Dewi
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 76

DAFTAR ISI

BAB I PENGENALAN DAN INSTALASI............................................................................................2


BAB II PEMBUATAN DAN MANAJEMEN TABEL............................................................................ 14
BAB III PERINTAH DASAR SQL ..................................................................................................... 17
BAB IV PENGENALAN OPERATOR DASAR ..................................................................................... 23
BAB V NORMALISASI ................................................................................................................. 33
BAB VI AGREGASI SQL DAN VIEW ................................................................................................ 41
BAB VII SUB QUERY DAN INDEKS ................................................................................................. 47
BAB VIII FUNGSI dan PL/PGSQL ..................................................................................................... 53
BAB IX KONEKSI POSTGRESQL PADA JAVA (Netbeans) ................................................................. 58
BAB X PEMBUATAN LAPORAN DENGAN IREPORT ....................................................................... 68

1
BAB I
PENGENALAN DAN INSTALASI

I.1 Bahasan dan Tujuan


I.1.1 Bahasan
Membahas tentang pengertian basis data secara umum, pemahaman umum tentang
PostgreSQL, serta dasar-dasar pengoperasian database di PostgreSQL.
I.1.2 Tujuan
1. Mahasiswa memahami pengertian basis data secara umum dan peranannya.
2. Mahasiswa memahami kegunaan software PostgreSQL serta kemungkinan
penggunaannya.
3. Mahasiswa memahami berbagai software yang bisa digunakan untuk mengakses
database PostgreSQL.
4. Mahasiswa memahami cara mengkonfigurasi basis data PostgreSQL.
5. Mahasiswa memahami cara membuat dan memanajemen database baik dengan query
maupun GUI.
I.2 Dasar Teori
Database merupakan proses penyimpanan beragam informasi untuk diolah
sedemikian rupa agar mudah untuk dipergunakan kembali. Suatu software basis data
merupakan software yang digunakan untuk menyimpan dan memungkinkan data yang telah
disimpan untuk diakses dengan perintah-perintah tertentu. Software basis data sering dikenal
dengan sebutan DBMS (Database Management System). Perintah-perintah yang digunakan
untuk mengelola basis data mempunyai standar yang disebut dengan SQL (Structured Query
Language). Standar ini dibuat oleh suatu badan yang berwenang (ANSI) sehingga sering
disebut juga dengan istilah ANSI SQL. Saat ini standar SQL yang diacu kebanyakan
software adalah SQL92 dan SQL99. Pada umumnya, data yang tersimpan merupakan data
relasional (data yang saling terhubung). Proses untuk merancang suatu basis data disebut
dengan istilah normalisasi. Pada dasarnya, suatu basis data terdiri atas berbagai tabel yang
saling terhubung.

2
Tabel merupakan tempat data disimpan. Tabel itu sendiri terdiri atas data rinci untuk
suatu entitas dan terdiri atas row dan column (pada software non-SQL dan software basis
data tertentu sering disebut record dan field).
Tabel itu sendiri jika digambarkan merupakan suatu baris serta kolom sebagai berikut:
mhs_no mhs_nama mhs_tgllahir mhs_alamat
002345 Zaky Yogyakarta, 3-3-2000 Griya Purwa Asri H304
002346 Ahmad Jakarta, 21-12-1978 Kenari II/37 Salemba
002347 Aditya Jakarta, 25-08-1972 Gedongkuning JG IV/16

1.3 Tentang PostgreSQL


PostgreSQL merupakan Sebuah Obyek-Relasional Data Base Management System
(ORDBMS) yang dikembangkan oleh Berkeley Computer Science Department. PostgreSQL
juga menawarkan tambahan-tambahan yang cukup signifikan yaitu class, inheritance, type,
dan function. Tambahan keistimewaan lain yang tidak dimiliki database management
system yang lain berupa constraint, triggers, rule, dan transaction integrity, dengan adanya
keistimewaan tersebut maka para pemakai dapat dengan mudah mengimplementasikan dan
menyampaikan sistem ini. Pada tahun 2012 PostgreSQL mendapatkan gelar Linux New
Media Award untuk kategori Database Open source terbaik.
1.4 Panduan Instalasi
1. Download PostgreSQL release terbaru di https://www.enterprisedb.com/software-
downloads-postgres
2. Khusus di linux, Simpan hasil file PostgreSQL hasil download pada folder/direktori
Documents.

Untuk menjalankannya bukalah Terminal : Accessories>Terminal. Masuklah


dengan user root lalu masuk ke direktori tempat menyimpan file PostgreSQL dalam hal
ini adalah direktori Documents. Ketikakan perintah seperti di bawah ini.

3
#cd Documents
Lihat isi direktori Documents dengan mengetikkan perintah ls.
#ls

Instal PostgreSQL dengan mengetikkan perintah seperti di bawah ini.

# ./postgresql-8.4.6-1-linux.bin

3. Berikut ini merupakan tampilan awal ketika installer dijalankan, lalu klik ‘Next >’.

4. Pilih lokasi instalasi, defaultnya adalah C:\Program Files\PostgreSQL\8.4, lalu klik


‘Next >’.

4
5. Pilih lokasi penyimpanan data, defaultnya adalah C:\Program
Files\PostgreSQL\8.4\data, lalu klik ‘Next >’.

6. Isikan password, lalu klik ‘Next >’. Catatan : kata kunci ini harus diingat oleh
pengguna.

7. Password tersebut wajib diisi, jika tidak akan muncul pesan kesalahan berikut.

8. Isikan nomor port yang digunakan untuk komunikasi dengan server, defaultnya adalah
port 5432, lalu klik ‘Next >’.

5
9. Pilih locale sesuai defaultnya, centang pl/pgsql untuk menginstal prosedural language
(procedure, function, dan trigger), lalu klik ‘Next >’.

10. Klik ‘Next >’ untuk memulai proses instalasi.

11. Tunggu hingga proses instalasi selesai.

6
12. Hilangkan tanda centang pada ‘Launch Stack Builder’ karena belum diperlukan, lalu
klik ‘Finish’ untuk mengakhiri instalasi.

1.5 Perintah Dasar Database

Secara umum PostgreSQL menyediakan dua interface, yaitu pgAdmin III sebagai Graphical
User Interface (GUI) dan SQL Shell (psql) sebagai Command Line Interface (CLI). Untuk
menggunakan perintah dasar database kita bisa menggunakan keduanya, seperti membuat atau
menghapus database dan query buffer. Untuk lebih jelasnya sebagai berikut :
1.5.1 Membuat database
- Apabila melalui promt psql sebelumnya kita perlu login terlebih dahulu :
1. Berikut ini tampilan awal psql. Tekan ‘Enter’ jika servernya adalah ‘localhost’.

7
2. Isikan nama database, ‘template1’ (default database), lalu tekan ‘Enter’.

3. Tekan ‘Enter’ jika nomor port-nya 5432 lalu tekan ‘Enter’ atau langsung tekan ‘Enter’.

4. Tekan ‘Enter’ isi username-nya ‘postgres’ lalu tekan ‘Enter’ atau langsung tekan
‘Enter’.

5. Isikan password seperti yang telah diisikan pada saat instalasi, lalu tekan ‘Enter’.

Berikut query untuk membuat database baru :


CREATE DATABASE DB_AKADEMIK;
Jika berhasil maka akan keluar : CREATE DATABASE
*Cttn : Gunakan \c nama database untuk koneksi ke database :
\c DB_AKADEMIK
DB_AKADEMIK=#
- Untuk di pgAdmin III :

8
Kemudian masukkan parameter yang diperlukan seperti nama database, pemilik / username
maupun privileges.

1.5.2 Menghapus Database


Catatan : untuk menghapus database, user anda harus sebagai postgres superuser, dan untuk melihat
daftar database yang telah terbentuk ketikkan perintah backclash-I (\I) pada prompt psql.
Untuk hapus database gunakan perintah beriku :
DROP DATABASE NAMADATABASE;
DROP DATABASE
1.5.3 Membuat User
PostgreSQL secara default telah memberikan user postgres yang juga sekaligus
administrator dan mempunyai level tertinggi dalam PostgreSQL. Dalam operasional database
biasanya user postgres tidak digunakan dengan alasan keamanan, namun apabila kita ingin
membuat user untuk yang pertama kali harus dilakukan oleh user postgres (user default).
Membuat user baru, sebagai contoh menggunakan nama rofiq :

CREATE USER rofiq with createdb password ‘rofiq’;


CREATE USER

*Cttn: Untuk melihat daftar user ketikan \du

1.5.4 Query Waktu

9
Bila ingin mengetahui waktu maka kita menggunakan perintah select
current_timestamp; maka tanggal beserta jam akan ditampilkan secara bersamaan. Berikut
untuk lebih lengkapnya :
select current_timestamp;
timestamp
--------------------------------
2005-12-16 14:07:16.099+07
(1 row)
Berikut query untuk menampilkan tanggal.
select current_date;
date
------------
2005-12-16
(1 row)
Query untuk menampilkan waktu.
select current_time;
time
----------
14:07:18
(1 row)

1.5.5 Query Buffer

Mengetik pada query buffer sebenarnya mirip saat kita menlis perintah pada Dos
promt di sistem operasi Windows. Namun dalam psql terdapat (;) untuk mengakhiri
eksekusi, (\p) untuk menampilkan query buffer dan (\r) untuk menghapus query buffer.
Sebagai contoh kita akan menuliskan perintah pembagian, penambahan, pengurangan atau
perkalian. Sebagai berikut :

db_personal=> SELECT
db_personal-> 2+9
db_personal-> ;
?column?
----------
11
(1 row)

*Cttn : untuk melakukan reset query sebelum kita eksekusi atau sebelum mengetikkan
tanda “;” dapat mengetikkan perintah \r

Selain menggunakan SQL Shell, psql ini juga bisa dijalankan menggunakan
Command Promt apabila menggunakan Sistem Operasi Windows. Untuk langkah –
langkahnya sebagai berikut :

1. Pindah ke direktori ‘bin’ pada lokasi instalasi PostgreSQL.

10
2. Jalankan perintah ‘psql –U postgres namadatabase’, huruf ‘U’ harus kapital karena psql itu
case sensitive, lalu isikan password.

Jika ingin menjalankan psql melalui Command Prompt pada OS Windows pada
direktori manapun (tidak harus pindah dulu ke C:\Program Files\PostgreSQL\8.4\bin),
maka ikuti langkah-langkah berikut :
1. Klik kanan pada ‘My Computer’ lalu klik ‘Properties’ atau tekan
‘WinKey+PauseBreak’ pada keyboard, kemudian pilih tab ‘Advanced’.

2. Klik ‘Environment Variables...’


11
3. Edit ‘Path’ pada bagian ‘System Variables’, lalu tambahkan pada akhir ‘Variable
value’ dengan tulisan berikut: ‘;C:\Program Files\PostgreSQL\8.4\bin’, kemudian klik
‘OK’ hingga selesai.

4. Buka lagi Command Prompt, lalu jalankan perintah ‘psql –U postgres sia’ pada direktori
manapun.

12
13
BAB II
PEMBUATAN DAN MANAJEMEN TABEL

2.1 Bahasan dan Sasaran


2.1.1 Bahasan
- Pembuatan tabel
- Pengelolaan tabel
2.1.1 Sasaran
1. Mahasiswa memahami cara pembuatan maupun penghapusan tabel.
2. Mahasiswa memahami cara mengedit struktur dari tabel.
3. Mahasiswa mampu memanipulasi tabel sesuai dengan kebutuhan.
2.2 Materi
Sebuah tabel terdiri dari baris (row) dan kolom (column), dimana jumlah dan
nama kolom harus didefinisikan terlabih dahulu di awal. Sedangkan baris merupakan
sebuah variabel yang dapat dihapus dan diisi kapanpun, sehingga jumlahnya selalu
berubah sesuai dengan jumlah data didalamnya. Setiap kolom dalam tabel mempunyai
tipe data, tipe data digunakan untuk membatasi jenis data yang bisa dimasukkan,
sehingga akan mempermudah dalam menggunakannya dan melakukan pengelolaan
selanjutnya. Sangat disarankan pada saat akan membuat tabel, sebaiknya membuat
sebuah aturan khusus dalam penentuan tabel-tabel yang akan dibuat dan memberikan
nama kolom maupun tipe datanya.
2.2.1 Membuat Tabel
Catatan :
 Tabel harus memiliki primary key, artinya dalam pembuatan tabel haruslah terdapat
sekelompok kolom (field) yang menyebabkan setiap baris (record) dalam tabel
tersebut tidak sama dan juga digunakan untuk mempercepat dalam pencarian.
 Deklarasi primary key tidak boleh kosong (null), jadi kita harus mendeklarasikan
sebagai not null. Namun secara default PostgreSQL menganggapnya sebagai nullable
(boleh kosong), jika waktu pengisian tidak menyebutkan null atau not null.

14
Struktur query yang digunakan membuat tabel dengan dua kolom:
create table namatabel (namakolom tipedata keterangan, namakolom tipedata
keterangan);
*Cttn : Untuk melihat struktur tabel yang telah dibuat ketikkan perintah \d dan melihat
semua tabel menggunakan \z.
Struktur query yang digunakan menghapus tabel :
drop table namatabel;
2.2.2 Manipulasi Tabel
Dalam pembuatan tabel sebaiknya direncanakan field dan tipe datanya untuk
meminimalisir kesalahan saat tabel telah berisi data. Namun meskipun begitu bukan
berarti tabel tidak bisa diubah dan dihapus. PostgreSQL telah menyediakan utilitas untuk
manipulasi ini dan perlu diingat hal ini bukan manipulasi data melainkan manipulasi
struktur tabelnya.
Struktur query yang digunakan untuk menghapus kolom :
alter table namatabel drop column “namakolom”;
Struktur query yang digunakan untuk menambah kolom:
alter table namatabel add column “namakolom” tipe data;
Struktur query yang digunakan untuk mengubah nama tabel :
alter table namatabelasal rename to namatabelbaru;
Struktur query yang digunakan untuk mengubah nama kolom :
alter table namatable rename column “namakolom asal” to namakolombaru;
Struktur query yang digunakan untuk menambahkan primary key pada tabel :
alter table namatabel add primary key (namakolom);
2.2.3 Temporary Tabel
Temporary tabel sifatnya hanya sementara artinya akan aktif hanya ketika kita
sedang berada atau login ke database namun ketika kita logout dari psql database maka
secara otomatis temporary tabel akan terhapus.
Struktur query yang digunakan membuat tabel dengan dua kolom:
create temporary table namatabel (namakolom tipedata keterangan ,
namakolom tipedata keterangan);
2.2.4 GRANT dan REVOKE
15
Pada saat membuat tabel pada user tertentu maka hanya user tersebut dan user
postgres yang dapat mengakses tabel itu. Namun jika kita ingin agar tabel yang telah
dibuat pada user kita dapat diakses oleh user tertentu atau semua user yang berada pada
PostgreSQL, maka semua itu dapat dilakukan dengan perintah GRANT. Jika ingin
mencabut hak akses kita bisa menggunakan perintah REVOKE.
Berikut struktur penggunaan GRANT untuk semua hak akses :
grant all on table namatabel to namauser;
Berikut struktur penggunaan REVOKE untuk semua hak akses :
revoke all on table namatabel from namauser;
Struktur query untuk menghapus salah satu hak akses, misalnya UPDATE :
revoke update on tabel namatabel from namauser;
Struktur query untuk memberi salah satu hak akses, misalnya DELETE :
grant delete on tabel namatabel to namauser;
2.2.5 Turunan (Inheritance)
INHERITANCE dipergunakan jika ingin membuat sebuah tabel baru yang
berhubungan dengan tabel yang ada, dengan kata lain turunan tabel pertama.
Struktur penggunaan query INHERITANCE :
create temporary table namatabel (namakolom tipedata keterangan ,
namakolom tipedata keterangan) inherits (namatabelinduk);
Contoh :
Terdapat tabel kabupaten, kemudian dibuatlah turunan dari tabel kabupaten untuk
membuat tabel wisata querynya sebagai berikut :
Create table pariwisata (wisata character varying(20)) inherits (kabupaten) ;
Id_kab Nama_kab Desa_kab
1. Madiun Kebonsari

Id_kab Nama_kab Desa_kab Wisata

16
BAB III
PERINTAH DASAR SQL

3.1 Bahasan dan Sasaran


3.1.1 Bahasan
- Perintah-perintah dasar dalam standar query sql
- Query untuk menampilkan, menambah, menghapus dan memanipulasi data dalam tabel.
3.1.1 Sasaran
1. Mahasiswa memahami perintah dasar dalam standar query sql.
2. Mahasiswa memahami cara menambah, menampilkan, manghapus dan memanipulasi
data.
3.2 Materi
3.2.1 Hubungan Antar Tabel (Reference)
Dalam hal hubungan antar tabel, ada beberapa syarat yang harus terpenuhi seperti,
antara tabel yang ingin dihubungkan harus memiliki sebuah field atau kolom dengan tipe
data yang sama. Dengan kata lain ada tabel yang memiliki primary key sebagai kunci
untuk menghubungkan ke tabel yang lain dimana terdapat field yang mempunyai tipe data
yang sama dengan kata lain yang disebut foreign key. Misalnya, terdapat tabel barang dan
macam_barang. Berikut query kedua tabel tersebut :
 create table macam_barang (id_mac integer not null, nama_mac
varchar(15), guna_mac varchar(40), primary key (id_mac));
 create table barang (id_bar integer not null, nama_bar varchar(15), id_mac
integer not null references macam_barang, primary key (id_bar, id_mac));

Atau ketika kita lupa memberikan references pada tabel macam barang kita dapat
memberikan query sebagai berikut :

 alter table barang add constraint relasi_barang foreign key (id_mac)


references macam_barang (id_mac) on update no action on delete no
action;

17
Barang
Id_bar Primary key
nama_bar
id_mac Foreign key

Macam_barang
id_mac Primary key
Nama_mac
Keterangan_mac

3.2.1 Memasukkan Data


Sebuah data dapat dimasukkan ke dalam tabel menggunakan perintah INSERT.
Namun hal yang perlu diperhatikan yaitu struktur tabel yang akan digunakan untuk
memasukkan data. Sebagai contoh memasukkan data ke dalam tabel dengan nama
identitas :
IDENTITAS
id_idn
Nama_idn
Ttl_idn
Menikah_idn
Keahlian_idn

insert into identitas values (1, ’wahyu’ , ’1992-07-23’ , false , ’programer’);


Berikut penjelasan :
- Kolom pertama berisikan (1), karena tipe datanya adalah integer maka tanda petik
tidak digunakan.
- Kolom kedua (‘wahyu’) dan kelima (‘programer’), karena tipe datanya varchar maka
tanda petik diperlukan, bila tanpa ada tanda petik maka dianggap salah.
- Kolom ketiga (’1992-07-23’), tipe data Date dianggap sebagai sebuah string
sehingga harus menggunakan tanda petik.
- Kolom keempat (false), tipe data kolom ini Boolean yang hanya mengijinkan inputan
true atau false dan tidak perlu tanda petik.
18
3.2.2 Menampilkan data
Dalam database, perintah SQL untuk menampilkan data sebuah tabel bisa
menggunakan SELECT. Berikut struktur SQL untuk penampilan data berdasarkan kolom
tertentu :
Select nama_kolom from nama_tabel;
Contoh :

Jika ingin menampilkan keseluruhan kolom dan keseluruhan baris suatu tabel bisa
mengganti nama_kolom menggunakan tanda asterisk (*).
Contoh :

Kemudian, bila ingin menampilkan berdasarkan baris tertentu bisa menggunakan


perintah WHERE yang diletakkan dibelakang nama tabel dan isikan nama kolom beserta
kata kunci sebagai dasar atau syarat dari pencarian baris. Untuk lebih jelasnya berikut
struktur perintah SQL nya :
select nama_kolom from nama_tabel where nama_kolom = kata kunci;
Contoh :

Atau

19
Apabila ingin menampilkan data dari lebih dari satu tabel, struktur SQL nya
terdapat sedikit perbedaan. Misalnya memakai tabel yang telah dibuat pada praktikum ke-
2 yaitu mahasiswa dan fakultas (Dengan syarat adanya relasi antara kedua tabel
tersebut). Berikut Struktur SQL nya :
select nama_kolom, nama_kolom, nama_kolom, nama_kolom from
nama_tabel_1, nama_tabel_2 where nama_tabel_1.nama_kolom =
nama_tabel_2.nama_kolom;
Contoh :

Perintah SQL diatas akan menampilkan nim mahasiswa, nama mahasiswa, nomor
fakultas, dan nama fakultas. Pada perintah setelah WHERE terdapat 2 nama kolom id_fk,
hal tersebut dimaksudkan penyamaan antara primary key milik dari tabel fakultas dengan
foreign key milik dari tabel mahasiswa.
3.2.3 Menghapus Data
Pada database PostgreSQL, DELETE digunakan untuk menghapus data pada
sebuah tabel. Berikut Struktur yang digunakan :
delete from namatabel ;

20
Arti dari struktur diatas yaitu menghapus semua baris data dari nama tabel yang
tertulis. Namun bisa juga digunakan penghapusan berdasarkan spesifikasi baris atau baris
tertentu saja. Berikut Strukturnya :
delete from nama tabel where namakolom = katakunci;
contoh :

3.2.4 Modifikasi Data


Dalam memodifikasi database bisa menggunakan perintah UPDATE. Berikut
contoh struktur SQL untuk memodifikasi data pada kolom tertentu berdasarkan baris
tertentu :
update namatabel set namakolom = isidata where namakolom = katakunci;
Contoh :

21
3.2.5 Pengurutan Data
Maksud dari pengurutan data dengan perintah ORDER BY adalah jika data
sebuah tabel diurutkan dengan perintah tersebut, maka data tadi akan diurutkan dari atas
ke bawah berdasarkan abjad. Hal ini juga berlaku jika data yang ada dalam bentuk angka.
Berikut struktur perintah SQL untuk pengurutan berdasarkan kolom :
select * from nama_tabel order by nama_kolom;
Contoh : data fakultas diurutkan berdasarkan kolom nama fakultas secara ascending.

Berikut struktur perintah SQL untuk pengurutan berdasarkan kolom secara descending:
select * from nama_tabel order by nama_kolom desc;
Berikut struktur perintah SQL untuk pengurutan berdasarkan beberapa kolom :
select * from nama_tabel order by nama_kolom asc, nama_kolom desc;
Berikut struktur perintah SQL untuk pengurutan berdasarkan nomor kolom :
select * from nama_tabel order by nomor_kolom desc;
*catatan : nomor_kolom dimulai dari kiri, misal terdapat kolom nim, nama. Maka jika ingin
mengurutkan berdasarkan nama kita perlu mengganti nomor_kolom menjadi 2.

22
BAB IV
PENGENALAN OPERATOR DASAR

4.1 Bahasan dan Sasaran


4.1.1 Bahasan
- Operator dasar dalam standar query sql
- Operator dasar yang berhubungan dengan manipulasi data.
4.1.1 Sasaran
1. Mahasiswa memahami operator dasar dalam standar query sql.
2. Mahasiswa memahami cara penggunaan operator dasar dalam hal manipulasi data.
4.2 Materi
4.2.1 AS
AS biasa digunakan untuk menampilkan label kolom dengan nama lain sehingga
yang akan muncul dalam hasil query bukan nama asli kolom, tetapi nama yang mungkin
lebih sesuai dan mudah dimengerti. AS digunakan setelah nama kolom yang akan diganti
yang kemudian diikuti dengan nama penggantinya. Berikut struktur querynya :
select namakolom as namakolompengganti from namatabel;
Contoh :

4.2.2 AND dan OR


Pada bagian sebelumnya kita menggunakan anak kalimat atau sintaks WHERE
hanya pada konteks yang sederhana. Berikut ini kita akan mencoba menggunakan
WHERE untuk konteks yang lebih kompleks lagi, anak kalimat where yang kompleks

23
akan bekerja dengan baik dengan menggunakan kata AND dan OR. SQL menggunakan
standar logika boolean three-valued seperti pada tabel berikut ;
Kondisi A Kondisi B A AND B A OR B
True True True True
True False False True
True Null Null True
False False False False
False Null False Null
Null Null Null Null

A NOT A
True False
False True
Null Null
Berikut struktur SQL untuk penampilan data :
select * from namatabel where namakolom = ‘pencarian 1’ and namakolom
= ‘pencarian 2’;
Atau
select * from namatabel where namakolom = ‘pencarian 1’ or namakolom =
‘pencarian 2’;
Contoh :

24
4.2.3 BETWEEN
BETWEEN digunakan untuk menentukan lebar nilai dari nilai terendah dan nilai
tertinggi. Pada BETWEEN menggunakan operator pembanding seperti pada tabel berikut;
Operator Penjelasan
< Kurang dari
> Lebih dari
<= Kurang dari atau sama dengan
>= Lebih dari atau sama dengan
= Sama dengan
< > atau != Tidak sama dengan
Logika operator BETWEEN sebagai berikut :
 Nilai a dalam formula “a BETWEEN x AND y” indentik dengan “a >= x AND a <= y“
 “a NOT BETWEEN x AND y “ identik dengan “a < x OR a > y”
Berikut Struktur yang digunakan :
select * from nama_tabel where nama_kolom between ‘nilai_awal’ and
‘nilai_akhir’;

25
Contoh : Memunculkan data pegawai dimana tanggal lahirnya antara tanggal 9-9-1999
sampai 1-1-2001.

4.2.4 IN dan NOT IN


Operator IN berguna melakukan pencocokan dengan salah satu yang ada pada
suatu daftar nilai. Berikut Struktur yang digunakan
Select * from nama_tabel where nama_kolom in (kata_kunci1, kata_kunci2,
kata_kunci13, kata_kunci14);
Contoh : menampilkan data pegawai yang memiliki ip 1,2, dan 3

4.2.5 LIKE

26
LIKE digunakan ketika kita ingin mencari sebuah data yang hanya diwakili oleh
salah satu atau lebih hurufnya saja. Misalkan kita ingin mencari nama yang huruf
awalnya R, maka kita harus menggunakan LIKE. Berikut adalah tabel contoh kasus
penggunaan LIKE :
Kasus Operator
Diawali dengan huruf A LIKE ‘A%’
Diakhiri dengan huruf A LIKE ‘%D’
Huruf A pada posisi ke dua LIKE ‘_A%’
Diawali dengan huruf A dan mengandung LIKE ‘A%I%’
huruf I
Tidak diawali dengan huruf A NOT LIKE ‘A%’

Berikut struktur SQL untuk pencarian data menggunakan LIKE :


select * from nama_tabel where nama_kolom like ‘operator’;
Contoh : Mencari data pegawai yang mempunyai nama dengan huruf awalan r.

4.2.6 REGEXP
Regular Expression atau Regex, merupakan sebuah teknik atau cara untuk
mencari persamaan - presamaan string atau data dan memanipulasinya. Biasanya lebih
sering digunakan untuk string. Didalam PostgreSQL disimbolkan dengan “~”. Berikut
tabel daftar simbol pada reguler expression :
Pola Penjelasan
[] Ekspresi kurung. cocok dengan satu karakter yang
berada dalam kurung, misal: pattern "a[bcd]i" cocok
dengan string "abi", "aci", dan "adi". Penggunaan range
27
huruf dalam kurung diperbolehkan, misal : pattern "[a-
z]" cocok dengan salah satu karakter diantara string "a"
sampai "z". pattern [0-9] cocok dengan salah satu angka.
jika ingin mencari karakter "-" juga, karakter tersebut
harus diletakkan di depan atau di belakang kelompok,
misal: "[abc-]".
[^ ] Cocok dengan sebuah karakter yang tidak ada dalam
kurung, berlawanan dengan yang diatas. misal: pattern
"[^abc]" cocok dengan satu karakter apa saja kecuali
"a", "b", "c".
? Cocok dengan nol atau satu karakter sebelumnya. misal:
pattern "died?" cocok dengan string "die" dan "died".
+ Cocok dengan satu atau lebih karakter sebelumnya.
misal: "yu+k" cocok dengan "yuk", "yuuk", "yuuuk",
dan seterusnya.
* Cocok dengan nol atau lebih karakter sebelumnya.
misal: pattern "hu*p" cocok dengan string "hp", "hup",
"huup" dan seterusnya.
{x} Cocok dengan karakter sebelumnya sejumlah x karakter.
misal: pattern "[0-9]{3}" cocok dengan bilangan berapa
saja yang berukuran 3 digit.
{x,y} Cocok dengan karakter sebelumnya sejumlah x hingga y
karakter. misal: pattern "[a-z]{3,5}" cocok dengan
semua susunan huruf kecil yang terdiri dari 3 sampai 5
huruf.
! Jika diletakkan di depan pattern, maka berarti "bukan".
misal pattern "!a.u" cocok dengan string apa saja kecuali
string "alu", "anu", "abu", "asu", "aiu", dan seterusnya .
^ Jika diletakkan di depan pattern, akan cocok dengan
awal sebuah string.
() Gruping. digunakan untuk mengelompokkan karakter -
karakter menjadi single unit. string yang cocok dalan
pattern yang berada dalam tanda kurung dapat
digunakan pada operasi berikutnya. semacam variable.
$ Jika diletakkan di belakang pattern, akan cocok dengan
akhir sebuah string.

Berikut struktur SQL untuk pencarian data menggunakan REGEXP :


select * from nama_tabel where nama_kolom ~ ‘operator_regexp dan
patern’;
Contoh :

28
4.2.7 DISTINCT
DISTINCT sering kali diperlukan untuk mengembalikan hasil dari sebuah query
dengan tidak terdapat duplikasi, artinya pada hasil outputnya tidak terjadi kesamaan data
meskipun pada data sesungguhnya sangat mungkin banyak duplikasi.. Hal ini juga
berlaku jika data yang ada dalam bentuk angka. Berikut struktur perintah dasar SQL :
select distinct nama_kolom from nama_tabel;
Contoh :

29
4.2.7 LIMIT
LIMIT dan OFFSET digunakan untuk membatasi jumlah output dari query
berdasarkan jumlah row bukan karena kondisi seperti WHERE. Bisa dikatakan LIMIT
adalah untuk menentukan jumlah baris yang akan ditampilkan yang dihitung dari baris
pertama, sedangkan OFFSET digunakan untuk menghilangkan baris sesuai dengan
jumlah yang diberikan pada OFFSET. Berikut struktur perintah dasar SQL :
select * from nama_tabel limit 2;
Atau
select * from nama_tabel offset 2;
Contoh :

30
4.2.8 UNION, EXCEPT dan INTERSECT
Hasil dari dua buah query dapat dikombinasikan dengan menggunakan UNION,
EXCEPT atau INTERSECT. UNION digunakan untuk menggabungkan hasil dua buah
query menjadi satu kolom. Berikut struktur query untuk UNION :
select nama_kolom from nama_tabel union select nama_kolom from
nama_tabel;
atau
select nama_kolom from nama_tabel union all select nama_kolom from
nama_tabel;
EXCEPT digunakan untuk menampilkan hanya query pertama saja, sedangkan
hasil query kedua dan yang sama dengan hasil query kedua tidak akan ditampilkan.
Berikut struktur query penggunaan EXCEPT :
select nama_kolom from nama_tabel except select nama_kolom from
nama_tabel;
Perintah INTERSECT hanya akan menampilkan seluruh isi dari data
yangmemiliki kesaman diantara hasil kedua query tersebut. Berikut struktur query
penggunaan INTERSECT :
select nama_kolom from nama_tabel except select nama_kolom from
nama_tabel;
Dari uraian materi tentang UNION, EXCEPT dan INTERSECT dapat
digambarkan sebagai berikut :

Gambar diatas menyatakan UNION yaitu gabungan dari kedua buah object.

31
Sedangan gambar kedua menyatakan EXCEPT dimana object yang diambil hanya
yang kuning. Sehingga object yang merah atau object kuning yang sama dengan object
merah tidak diambil.

Gambar ke tiga menyatakan INTERSECT yaitu mengambil object yang berwarna


hijau atau object memiliki kandungan dari object kuning dan merah.
Contoh :

32
BAB V
NORMALISASI

5.1 Bahasan dan Sasaran


5.1.1 Bahasan
- Normalisasi sebagai teknik analisis database
- Langkah – langkah dalam Normalisasi
5.1.1 Sasaran
1. Mahasiswa memahami pengertian dan tujuan dari Normalisasi.
2. Mahasiswa memahami Langkah – langkah dalam Normalisasi.
5.2 Materi
5.2.1 Memahami Normalisasi
Normalisasi merupakan suatu proses untuk mengubah suatu tabel yang memiliki
masalah tertentu ke dalam dua buah tabel atau lebih yang tidak lagi memiliki masalah
tersebut (Abdul Kadir, 2008). Ada juga yang berpendapat normalisasi adalah proses
penyusunan tabel – tabel yang tidak redundan (dobel), yang dapat menyebabkan anomali
yaitu proses basis data yang memberikan efek samping yang tidak diharapkan (Misalnya
menyebabkan data tidak konsisten atau membuat data hilang ketika data yang lain
dihapus).
Normalisasi digunakan sebagai teknik analisis data pada database, sehingga dapat
diketahui apakah pembuatan tabel – tabel yang terelasi dalam database itu sudah baik.
Kondisi sudah baik yaitu suatu kondisi pada saat proses insert, update, delete dan
modifikasi pada satu atau beberapa atribut suatu tabel tidak berpengaruh terhadap
integritas data yang lain dalam satu hubungan relasi database.
5.2.2 Langkah – langkah Normalisasi
Langkah – langkah Normalisasi terdiri dari :
1. Unnormalization Form
Bentuk yang tidak normal dimaksudkan suatu kumpulan data yang akan
diolah yang diperoleh dari format – format yang beraneka ragam, masih terdapat
duplikasi, bisa saja tidak sempurna atau tidak lengkap, dan sesuai fakta lapangan.

33
Bentuk ini didapat dari dokumen yang ada dilapangan atau manual dengan atribut
bukan nilai sederhana.
2. First Normal Form (1NF)
Suatu tabel dianggap normal ke satu (1NF) jika :
- Tidak terdapat baris yang bernilai ganda atau duplikat.
- Masing - masing baris bernilai tunggal dan tidak bernilai null.
Langkah – langkah :
- Isikan setiap data bernilai tunggal dan tidak null
- Membuang perulangan data dalam satu baris dengan baris yang lain.
3. Second Normal Form (2NF)
Bentuk normal kedua (2NF) terpenuhi jika :
- Harus telah berbentuk normal pertama (1NF).
- pada sebuah tabel semua atribut yang tidak termasuk dalam primary key memiliki
ketergantungan fungsional pada primary key secara utuh. Suatu atribut dikatakan
ketergantungan fungsional jika harga pada atribut tersebut menentukan harga dari
atribut yang lain. Misalnya, nim → mhs_nama.
Langkah – langkah :
- Jika terdapat atribut yang bergantung terhadap atribut bukan kunci utama dan
merupakan atribut kunci maka pecah menjadi table baru.
4. Third Normal Form (3NF)
Bentuk normal ketiga (3NF) terpenuhi jika :
- Harus telah berbentuk normal kedua (2NF).
- Tidak terdapat anomali – anomali hasil dari ketergantungan transitif.
ketergantungan transitif adalah ketergantungan fungsional antara 2 atau lebih
atribut bukan kunci.
Langkah – langkah :
- Pastikan semua atribut non kunci bergantung penuh terhadap atribut kunci.
- Pisahkan menjadi tabel baru jika menemukan ketergantungan transitif dalam tabel
tersebut.

5. Boyce Codd Normal Form (BCNF)


34
Secara praktis tujuan analisis database cukup sampai pada 3NF, Akan tetapi dalam
suatu kasus tertentu lebih baik bila dapat mencapat BCNF. Beberapa pemikir
menyamakan antara 3NF dengan BCNF. Bentuk normal BCNF terpenuhi jika :
- Masing-masing atribut utama bergantung fungsional penuh pada masing kunci
dimana kunci tersebut bukan bagiannya.
- Setiap determinan atribut-atribut relasi adalah kunci relasi atau kandidat kunci.
- BCNF dapat memiliki lebih dari satu kunci.
- BCNF hampir sama dengan 3NF atau bisa dibilang sama dengan 3NF.
Langkah – langkah :
- Hilangkan dependensi pada bukan kunci kandidat.
6. Fourth Normal Form (4NF)
Dilakukan jika terdapat anomali pada (3NF)
7. Fifth Normal Form (5NF)
Langkah ini untuk memecah relasi menjadi dua sehingga relasi tersebut tidak
digabungkan kembali manjadi satu dan jika terdapat anomali pada (5NF)
5.2.3 Contoh permasalahan dalam Normalisasi
Terdapat suatu hasil kartu studi yang bersifat manual dan akan kita anilisis
menggunakan teknik Normalisasi sebagai berikut :
KARTU HASIL STUDI
Nomor Induk : 055 Jurusan : Teknik Elektro
Nama : Fuad Fakultas : SAINTEK
No. Kode Nama Matakuliah Kode Dosen Ruang Nilai
1. 021 Pemrograman D01 B202 B
2. 022 Basis Data D02 B304 A

35
KARTU HASIL STUDI
Nomor Induk : 057 Jurusan : Teknik Informatika
Nama : Neneng Fakultas : SAINTEK
No. Kode Nama Matakuliah Kode Dosen Ruang Nilai
1. 021 Pemrograman D01 B201 A
2. 022 Basis Data D02 B305 C
3. 026 Prak. Digital D05 B307 B

Tahap anilisis dengan Normalisasi :


- Tahap Unnormalization Form

NIM Mah_nama Jurusan Fakultas Mat_kode Mat_nama Dos_kode Ruang Nilai

055 Fuad Sistem Informasi SAINTEK 021 Pemrograman D01 B202 B

022 Basis Data D02 B304 A

057 Neneng Teknik Informatika SAINTEK 021 Pemrograman D01 B201 A

022 Basis data D02 B305 C

026 Prak. Digital D05 B307 B

- Tahap First Normal Form (1NF)


NIM Nama_mhs Jurusan Fakultas Kode_mk Nama_mk Kode_dsn Ruang Nilai

055 Fuad Sistem Informasi SAINTEK 021 Pemrograman D01 B202 B

055 Fuad Sistem Informasi SAINTEK 022 Basis Data D02 B304 A

057 Neneng Teknik Informatika SAINTEK 021 Pemrograman D01 B201 A

057 Neneng Teknik Informatika SAINTEK 022 Basis data D02 B305 C

057 Neneng Teknik Informatika SAINTEK 026 Prak. Digital D05 B307 B

- Tahap Second Normal Form (2NF)


Tabel Mahasiswa

NIM* Nama_mhs Jurusan Fakultas

36
055 Fuad Sistem Informasi SAINTEK

057 Neneng Teknik Informatika SAINTEK

Tabel Matakuliah Tabel Nilai

Mat_kode* Mat_nama Dos_kode NIM (fk) Mat_kode (fk) Ruang Nilai

021 Pemrograman D01 055 021 B202 B

022 Basis Data D02 055 022 B304 A

026 Prak. Digital D05 057 021 B201 A

057 022 B305 C

057 026 B307 B

- Tahap Third Normal Form (3NF)


Tabel Matakuliah

Mat_kode* Mat_nama Dos_kode (fk)

021 Pemrograman D01

022 Basis Data D02

026 Prak. Digital D03

Tabel Dosen
Dos_kode* Dosen

D01 Rudi, M.Kom


D02 Pratikno, M.Kom

D03 Prabowo, M.T.

Biasanya ketika mencapai pada tahap Third Normal Form (3NF) sudah
memenuhi syarat untuk digunakan dalam pembuatan aplikasi database. Namun apabila
masih terdapat anomali maka bisa dilanjutkan ke tahap berikutnya sampai tidak terdapat
anomali.

- Hasil akhir dari Normalisasi sebagai berikut :


Tabel Mahasiswa

37
NIM* Mah_nama Jurusan Fakultas
055 Fuad Sistem Informasi SAINTEK
057 Neneng Teknik Informatika SAINTEK

Tabel Matakuliah Tabel Dosen


Mat_kode* Mat_nama Dos_kode (fk) Dos_kode* Dosen*
021 Pemrograman D01 D01 Rudi, M.Kom
022 Basis Data D02 D02 Pratikno, M.Kom
026 Prak. Digital D03 D05 Prabowo, M.T.

Tabel Nilai
NIM (fk) Mat_kode (fk) Ruang Nilai
055 021 B202 B
055 022 B304 A
057 021 B201 A
057 022 B305 C
057 026 B307 B

# Salah satu contoh lagi untuk sistem informasi jual beli barang

Dari nota diatas dibentuk menjadi Unnormalization Form


No_faktur Kode_supp Nama_supp Kota Kode_brg Nama_brg tanggal jml Satuan Sub_total Total
5 3 biti Malang 5 shampoo 07/09/2011 100 1000 100000 890000
6 Rinso 07/09/2011 200 2000 400000 890000
7 genteng 07/09/2011 130 3000 390000 890000
6 4 rodi nganjuk 9 Paku 09/10/2013 100 100 10000 10000

- Tahap First Normal Form (1NF)


No_faktur Kode_supp Nama_supp Kota Kode_brg Nama_brg tanggal jml Satuan Sub_total Total
5 3 biti Malang 5 shampoo 07/09/2011 100 1000 100000 890000

38
5 3 biti Malang 6 Rinso 07/09/2011 200 2000 400000 890000
5 3 biti Malang 7 genteng 07/09/2011 130 3000 390000 890000
6 4 rodi nganjuk 9 Paku 09/10/2013 100 100 10000 10000

Adapun kelemahan dari 1NF ini sebagai berikut :


1. Inserting (Memasukkan data)
Kita tidak dapat memasukkan kode dan nama supplier saja tanpa ada transaksi pembelian,
sehingga supplier baru dapat masuk bila ada transaksi pembelian.
2. Deleting (Menghapus data)
Bila satu baris data transaksi dihapus, maka akan berakibat menghapus pada data supplier.
Padahal data suplier masih diperlukan pada transaksi berikutnya. Misalkan transaksi di
hapus berdasarkan no_faktur =6, maka akan menghapus supplier=4(rodi).
3. Updating (Mengubah data)
Kode dan nama pada supplier terlihat tertulis berulang-ulang 3(biti). Jika kita ingin merubah
nama supplier tersebut maka harus mengganti disemua baris yang mengandung supplier
3(biti), jika ada yang terlewat data tidak konsisten lagi.
Karena masih terdapat kesalahan maka perlu dilakukan tahap berikutnya.
- Tahap Second Normal Form (2NF)
Pembentukan bentuk normal kedua ini dilakukan dengan mencari kunci-kunci field yang
dapat dipakai sebagai patokan dalam pencarian dan sifatnya unik. Berdasarkan kondisi di
atas dapat diambil kunci kandidat yaitu : No_faktur, Kode_supplier, dan kode_barang.
Supplier Barang
kode_supp* kode_brg*
nama_supp nama_brg
kota

Transaksi
No_faktur
Jatuh_tempo
Jml
Satuan
Total
kode_supp**
kode_brg**

- Tahap Third Normal Form (3NF)


Syarat :

39
Setiap atribut yang bukan kunci harus bergantung hanya pada atribut kunci (primary
key) secara menyeluruh. Hilangkan juga anomali – anomali yang masih mempunyai
ketergantungan fungsional. Pada tabel supplier terdapat kolom kota, perubahan kota milik
supplier dapat menyebabkan data tidak konsisten sekiranya hanya satu baris yang diubah
sementara seharusnya ada beberapa baris. Relasi tersebut juga terkena anomaly penyisipan
dan penghapusan.
Kota
Kode_kota*
Nama_kota

Supplier Barang
kode_supp* kode_brg*
nama_supp nama_brg
Kode_kota**
Transaksi
No_faktur
Jatuh_tempo
Jml
Satuan
Total
kode_supp**
kode_brg**

40
BAB VI
AGREGASI SQL DAN VIEW

6.1 Bahasan dan Sasaran


6.1.1 Bahasan
- Agregasi sql yang diperlukan dalam perhitungan data
- View yang merupakan tabel bayangan yang berisi query baik dari satu tabel atau
berbagai tabel
6.1.1 Sasaran
1. Mahasiswa memahami operator agregasi sql sehingga mempermudah dalam hal
perhitungan data.
2. Mahasiswa memahami cara penggunaan view.
6.2 Materi
6.2.1 AGREGATE OPERATOR
Fungsi aggregate atau disebut fungsi ringkasan digunakan untuk melakukan
penghitungan menjadi sebuah nilai dari beberapa nilai input. Aggregate dapat
digabungkan dengan sebuah parameter seperti WHERE untuk menghasilkan suatu hasil
yang lebih kompleks lagi. Adapun fungsi agregate yang disediakan oleh PostgreSQL
dapat dilihat pada tabel berikut :
Agregate Keterangan
COUNT(*) Menghitung jumlah baris
SUM(NAMA KOLOM) Menghitung penjumlahan data
MAX(NAMA_KOLOM) Mencari nilai terbesar
MIN(NAMA KOLOM) Mencari nilai terkecil
AVG(NAMA KOLOM) Mencari nilai rata-rata
Berikut contoh aggregate query dari suatu tabel pegawai :
Id_peg Nama_peg Alamat_peg Telp_peg Jabatan_peg
1 Hendro Solo 081223300 Teknisi
2 Tika Semarang 0897735357 Sekretaris
3 Wijaya Jogjakarta 0865433225 Kepala
4 Dodi Banyuwangi 076544677 Staf

41
Untuk pencarian banyaknya pegawai kita bisa menggunakan query berikut :
select count(*) from pegawai;
hasil : 4
untuk pencarian nilai terbesar berdasarkan ID :
select max(Id_peg) from pegawai;
hasi : 4
untuk pencarian nilai terkecil :
select min(Id_peg) from pegawai;
hasil : 1
untuk pencarian rata-rata :
select avg(Id_peg) from pegawai;
hasil : 2.5000
6.2.2 GROUP BY
Group By merupakan fungsi yang digunakan untuk melakukan pengelompokan
dari perintah SELECT. Group by seringkali diperlukan untuk menjalankan agregate
menjadi sebuah kelompok dari hasil Query. Berikut struktur SQL untuk penampilan data:
select nama_kolom from nama_tabel group by nama_kolom;
Contoh :
Kode_bu Judul_buk Pengarang_bu Penerbit_bu Tahun_bu Resensi_bu Harga_bu
k k k k k k
11 Harry Potter JK Rowling British 2002 Fiksi 50000
12 Sistem Basis Abdul Kadir Andi 2002 Teks 30000
Data
13 Pemrograma Abdul Kadir Andi 2004 Teks 60000
n
- Untuk menampilkan informasi nama pengarang :
Select pengarang_buk from buku group by pengarang_buk;
Hasil :
Pengarang
JK Rowling
Abdul Kadir

42
Pada hasil query terlihat pengarang muncul hanya sekali.
- Untuk menampilkan informasi nama pengarang beserta jumlah buku yang dikarang :
Select pengarang_buk, count(*) from buku group by pengarang_buk;
Hasil :
Pengarang Count(*)
JK Rowling 1
Abdul Kadir 2

- Untuk menampilkan informasi buku tiap tahunnya :


Select tahun_buk, count(*) from buku group by tahun_buk;
Hasil :
Tahun Count(*)
2004 1
2002 2

- Untu menampilkan informasi jumlah total uang tiap tahunnya :


Select tahun_buk, sum(harga_buk) as total from buku group by tahun_buk;
Hasil :
Tahun Total
2004 60000
2002 80000

6.2.3 HAVING
Pemakaian HAVING terkait dengan GROUP BY, kegunaanya adalah untuk
menentukan kondisi bagi GROUP BY, dimana kelompok yang memenuhi kondisi saja
yang akan di hasilkan.
Berikut Struktur yang digunakan :
Kita akan menggunakan tabel “pesanan”
No Tanggal Order Harga Order Pelanggan
1 2011/11/12 1000 Ratih

43
2 2011/10/23 1600 Anita
3 2011/09/02 700 Ratih
4 2011/09/03 300 Ratih
5 2011/08/30 2000 Teguh
6 2011/10/04 100 Anita
- Sekarang jika kita ingin mencari pelanggan yang memiliki total order kurang dari
2000.
Maka, kita dapat menggunakan statement :
select pelanggan, sum (hargaorder) from pesanan group by pelanggan having
sum (hargaorder) <2000;
Maka, hasilnya :
Pelanggan SUM(HargaOrder)
Anita 1700

6.2.4 CASE
Meskipun SQL bukan merupakan sebuah prosedur bahasa perograman, namun
dalam prosesnya dapat dengan bebas mengontrol data yang kembali dari query. Kata
WHERE menggunakan perbandingan untuk mengontrol pemilihan data, sedangkan CASE
perbandingan dalam bentuk output kolom. Jadi intinya penggunaan CASE akan
membentuk output tersendiri berupa sebuah kolom baru dengan data dari operasi yang di
dalamnya.Struktur didalam select seperti berikut :
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result] END
Berikut contoh query penggunaan case, penentuan umur jika umurnya dibawah
1986-01-01 dianggap dewasa dan lebih dari itu dianggap remaja :
select txt_namadepan, txt_namaakhir, dt_tgllahir, case when dt_tgllahir <
'1986-01-01' then 'dewasa' else 'balita' end as umur from pegawai ;
Hasil :
txt_NamaDepan txt_NamaAkhir dt_TglLahir Umur
Andhie Lala 1960-08-08 Dewasa
Ade Fajar 1986-11-01 Balita
Panuju Sasongko 1970-09-12 Dewasa

44
Dudy Rudianto 1973-12-11 Dewasa
Ana Hidayati 1988-10-01 Balita
6.2.5 VIEW
Views dapat juga disebut tabel bayangan tetapi bukan temporary table, bukan
juga merupakan sebuah tabel yang asli. Suatu view adalah suatu relasi virtual yang tidak
perlu ada database tetapi dapat diproduksi atas permintaan oleh pemakai tertentu, pada
ketika permintaan. Satu lagi kelebihan yang dimiliki oleh view yaitu dapat menyimpan
perintah query, dan dapat mewakili sebuah subset dari tabel asli dan memilih kolom atau
row tertentu dari tabel biasa.
create view nama_tabel_view as query;
Catatan : Query diatas merupakan query untuk menampilkan data menggunakan
query sql select.
Berikut adalah tabel contoh kasus penggunaan VIEW :
Kita akan menggunakan tabel “pesanan”
No Tanggal Order Harga Order Pelanggan
1 2011/11/12 1000 Ratih
2 2011/10/23 1600 Anita
3 2011/09/02 700 Ratih
4 2011/09/03 300 Ratih
5 2011/08/30 2000 Teguh
6 2011/10/04 100 Anita
- Kita akan membuat view dari tabel diatas dengan ketentuan harga dikumpulkan
berdasarkan nama pelanggannya. Sebagai berikut :
create view total_pelanggan as select pelanggan, sum (hargaorder) from pesanan
group by pelanggan;
Untuk melihat hasil kita bisa melakukan query select sebagai berikut :
Select * from total_pelanggan;
Hasil :
Pelanggan SUM(HargaOrder)
Anita 1700
Ratih 2000

45
Teguh 2000

46
BAB VII
SUB QUERY DAN INDEKS

7.1 Bahasan dan Sasaran


7.1.1 Bahasan
- Pada bab kali ini akan membahas tentang sub query dan indeks
- Selain hal itu akan dibahas juga mengenai cluster, kolom unik dan trim
7.1.2 Sasaran
1. Mahasiswa memahami dan menggunakan sub query dan indeks dalam pengelolaan
database.
2. Mahasiswa memahami cara penggunaan cluster, kolom unik dan trim.
7.2 Materi
7.2.1 SUB QUERY
Subquery atau query Nested merupakan bentuk query yang terdapat dalam query
yang lain. Subquery dapat ditempatkan dalam klausa where, having, from bersama
dengan operator perbandingan seperti = untuk baris tunggal dan untuk baris berganda
menggunakan in, not in atau <>, < any, >, >=,<=. Penggunaan sub query dapat
diterapkan pada pernyataan SELECT, UPDATE, DELETE, dan INSERT. Bentuk
penggunaannya sebagai berikut :
Select nama_kolom from nama_tabel where nama_kolom operator
(subquery);
Berikut contoh dari subquery menggunakan data pegawai :
Id_peg Nama_peg Alamat_peg Telp_peg Jabatan_peg Gaji_peg
1 Hendro Solo 081223300 Teknisi 900000
2 Tika Semarang 0897735357 Sekretaris 2000000
3 Wijaya Jogjakarta 0865433225 Kepala 3000000
4 Dodi Banyuwangi 076544677 Teknisi 1000000
- Mencari nama pegawai yang memiliki jabatan yang sama dengan pak hendro bisa
menggunakan query sebagai berikut :
Select nama_peg,jabatan_peg from pegawai where jabatan_peg in (select
jabatan_peg from pegawai where nama_peg=’Hendro’);

47
Hasil :
NAMA JABATAN
Hendro Teknisi
Dodi Teknisi
- Mencari nama pegawai yang gajinya lebih besar dari pegawai dengan nama Dodi bisa
menggunakan query sebagai berikut :
select nama_peg,gaji_peg from pegawai where gaji_peg > any (select gaji_peg
from pegawai where nama_peg =’Dodi’);
Hasil :
NAMA Gaji
Tika 2000000
Wijaya 3000000
- Mencari nama pegawai yang gajinya lebih besar dari 950000 dan jabatannya bukan
seperti jabatan pak hendro bisa menggunakan query sebagai berikut :
select nama_peg, jabatan_peg, gaji_peg from pegawai where gaji_peg >= 950000
and jabatan_peg <> (select jabatan_peg from pegawai where
nama_peg=’Hendro’);
Hasil :
NAMA JABATAN Gaji
Tika Sekretaris 2000000
Wijaya Kepala 3000000

7.2.2 INDEKS
Indeks disini berguna dalam suatu pencarian nilai atau data dalam database.
Dalam suatu kasus ketika mengakses sebuah tabel biasanya DBMS akan membaca
seluruh tabel baris perbaris hingga selesai. Ketika baris sangat banyak dan hasil dari
query hanya sedikit, maka hal ini sangat tidak efisien. Seperti halnya ketika kita membaca
sebuah buku dan ingin mencari kata atau istilah tertentu dalam buku maka biasanya akan
di cari dengan membuka setiap halaman dari awal sampai akhir. Dengan adanya indeks
buku maka kita cukup dengan membuka indeks, sehingga akan cepat dalam pencarian
kata tersebut. PostgreSQL tidak bisa membuat indeks dengan otomatis, sehingga user

48
dapat membuat indeks tersebut untuk sering kali digunakan kolom, biasanya dalam
clause WHERE. Berikut struktur SQL :
CREATE INDEX nama_index ON nama_tabel (nama kolom);
Contoh :
- Pada tabel pegawai kita berikan index pada kolom gaji untuk query sebagai berikut :
Create index gaji_index on pegawai(gaji_peg);
Hasil :

indeks sebaiknya jangan digunakan pada tabel atau kolom yang sangat jarang atau
tidak pernah diakses. Selain untuk perintah SELECT Indeks juga bermanfaat untuk
UPDATE dan DELETE yang menggunakan kondisi pencarian. Sedangkan Unique index
mirip dengan indeks tetapi lebih digunakan untuk mencegah duplikasi nilai yang terdapat
dalam tabel. Jadi dengan adanya unique index berarti pembaca tidak dapat meng-insert
nilai yang sama dalam sebuah tabel. Berikut struktur SQL nya :
CREATE UNIQUE INDEX nama_index ON nama_tabel (nama kolom);
Untuk menghapus index berikut strukturnya :
DROP INDEX Nama_index;
Contoh :
- Pada tabel pegawai kita berikan index yang bersifat unik pada kolom nama, untuk query
sebagai berikut :
Create unique index unama_index on pegawai(nama_peg);
Hasil :

49
Apabila kita memasukkan dengan nama yang sudah terdapat pada data terdahulu
akan terdapat error.
7.2.3 KOLOM UNIK
Unique berfungsi untuk menjaga agar tidak terjadinya duplikasi nilai (kesamaan
data) dalam sebuah kolom, hal ini dapat ditangani dengan membuat sebuah indeks unik
atau fungsi unik sendiri pada kolom yang dimaksud. Unique ini sering digunakan dalam
pembuatan bukan primary key namun membutuhkan cek dupikasi agar tidak ada yang
sama, karena dalam primary key sudah otomatis mempunyai sifat unik. Berikut Struktur
SQL saat pembuatan tabel baru :
CREATE TABLE nama_tabel (nama_kolom tipe_data unique);
Ketika tabel sudah ada kita bisa menggunakan cara seperti pada BAB. 2 berikut
struktur SQL nya :
ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom);
Untuk menghapus unique berikut caranya :
ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN

50
Contoh :

7.2.4 Check
Check berfungsi untuk melakukan pembatasan nilai masukan dalam sebuah
kolom, sebagai contoh misalkan kita ingin agar kolom gender yang terdiri dari satu
karakter hanya memiliki dua pilihan karakter yaitu M (male) atau F (Fimale) ini dapat
kita seting dengan menggunakan CHECK. Dengan menggunakan CHECK maka sebuah
kolom hanya bisa diisi dengan data yang memenuhi kriteria dalam CHECK. Berikut
query contoh pengunaan check :
db_contoh=> CREATE TABLE pelanggan (
db_contoh(> nama varchar(35),

51
db_contoh(> kode_area CHAR(10) CHECK
(length(trim(kode_area)) = 2),
db_contoh(> umur INTEGER CHECK (umur >= 0),
db_contoh(> gender CHAR(1) CHECK (gender IN ('L', 'P')),
db_contoh(> ttl DATE CHECK (ttl BETWEEN '1998-01-01' AND
CURRENT_DATE),
db_contoh(> CHECK (upper(trim(nama)) != 'nita' OR
db_contoh(> upper(trim(nama)) != 'jeki')
db_contoh(> );
CREATE
7.2.5 Penggunaan TRIM
Suatu ketika pasti akan memiliki data yang di dalamnya terdapat spasi kosong
yang tidak diperlukan, misalnya spasi ganda. Jika ada masalah seperti ini, kita dapat
membersihkan spasi-spasi kosong yang tidak diperlukan menggunakan fungsi TRIM,
RTRIM, dan LTRIM. Ketiga fungsi ini memiliki bentuk penggunaan sebagai berikut :
- RTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kanan
(Right) String.
- LTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri (Left)
String.
- TRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri, kanan,
maupun tengah String
Berikut Struktur SQL nya :
Select trim(nama_kolom) from nama_tabel;
Dalam penggunaannya, fungsi TRIM memiliki tiga opsi. Ketiga opsi ini dapat
digunakan untuk menentukan karakter apa yang akan dihapus dari suatu String. Jadi,
fungsi TRIM juga dapat menghilangkan karakter tertentu (bukan spasi kosong saja) dari
suatu string. Opsinya sebagai berikut :
- LEADING : merupakan opsi untuk menghilangkan karakter terpilih yang ada di
sebelah kiri. Parameter Leading diartikan sebagai sufik dari karakter yang ada.
- TRAILING : merupakan opsi untuk menghilangkan karakter terpilih yang ada di
sebelah kanan String. Parameter Trailing diartikan sebagai sufik dari karakter yang
ada.
- BOTH : merupakan opsi yang dapat menangani parameter Leading maupun Trailing.
Berikut Struktur SQL nya :
Select trim(LEADING ‘karakter, misal : -’ from nama_kolom) from nama_tabel;
52
BAB VIII
FUNGSI dan PL/PGSQL

8.1 Bahasan dan Sasaran


8.1.1 Bahasan
- Pada bab kali ini akan membahas tentang fungsi
- Selain hal itu akan dibahas juga mengenai pl/pgsql
8.1.2 Sasaran
- Mahasiswa memahami dan menggunakan fungsi dalam database PostgreSQL
- Mahasiswa memahami dasar penggunaan PL/PGSQL
8.2 Materi
8.2.1 Pendukung Fungsi
PostgreSQL memiliki fungsi yang dapat mengubah suatu nilai dalam suatu kolom
atau barismenjadi huruf besar. Fungsi tersebut bernama upper(nama_kolom), berfungsi
memanggilfungsi upper dengan nama_kolom sebagai argumen sehingga menghasilkan
nilai padakolom dalam huruf besar. Berikut Struktur SQL untuk menampilkan data dalam
huruf besar semua :
select upper (nama_kolom) from nama_tabel;
Berikut struktur SQL untuk menampilkan data dimana huruf pertama saja yang besar :
select initcap (nama_kolom) from nama_tabel;

8.2.2 Fungsi
Fungsi SQL adalah sebuah kumpulan query, biasanya query yang detail dan
panjang yang dibungkus menjadi satu dan disimpan dalam database dan kemudian
apabila diperlukan hanya tinggal mengaksesnya tanpa mengetikan query detail.
Ada beberapa konsep yang menarik dari fungsi antara lain:
• Bahasa yang dipakai dapat didefenisikan sendiri dengan tersedianya parameter
LANGUAGE, tanpa harus mengkompilasi ulang PostgreSQL.
• Kita dapat membuat dua buah fungsi dengan nama yang sama namun
parametermasukkannya yang berbeda, baik tipe data maupun jumlahnya.

53
Ada beberapa faktor yang perlu diperhatikan dalam membuat fungsi antara lain:
• Nama Fungsi
• Nomor dari fungsi argument
• Tipe data dari setiap argument
• Tipe dari hasil fungsi
• Fungsi action
• Bahasa yang digunakan oleh fungsi action.
Berikut contoh sederhana pembuatan fungsi SQL untuk perkalian dari tiga inputan :
db_personal=> CREATE FUNCTION perkalian (FLOAT, FLOAT, FLOAT)
db_personal-> RETURNS FLOAT
db_personal-> AS 'SELECT ($1 + $2) * $3;'
db_personal-> LANGUAGE 'sql';
CREATE

db_personal=> SELECT perkalian (10,10,10);


perkalian
-----------
200
(1 row)
Contoh yang lain dalam pembuatan fungsi SQL untuk mencari jumlah pegawai dari tabel
pegawai berikut :
ID NAMA ALAMAT NO.TELP JABATAN Gaji
1 Hendro Solo 081223300 Teknisi 900000
2 Tika Semarang 0897735357 Sekretaris 2000000
3 Wijaya Jogjakarta 0865433225 Kepala 3000000
4 Dodi Banyuwangi 076544677 Teknisi 1000000
Berikut kode SQL nya :
Create function jumlah_pegawai()
Returns bigint
As ‘select count(*) as jumlah_pegawai from pegawai;’
Language ‘sql’;
Maka hasilnya sebagai berikut :
Select jumlah_pegawai();
Jumlah_pegawai
----------------------
4
(1 row)
8.2.3 Fungsi PL/PGSQL
54
PL/PGSQL merupakan bahasa yang lain untuk membuat sebuah fungsi, biasanya
bahasa ini digunakan untuk menangani fungsi yang lebih kompleks. Pl/pgsql sudah
terdapat dalam instalasi PostgreSQL.
Keuntungan penggunaan Fungsi PL/PGSQL :
1. Meningkatkan kinerja karena mengurangi pengiriman kode dari klien ke server.
2. Meningkatkan keamanan karena pengaksesan data tertentu ditangani dalam server.
3. Meningkatkan konsistensi data saat sejumlah aplikasi memanggil prosedur yang
sama;
Sebaliknya kelemahannya yaitu server akan lebih terbebani karena banyak proses
yang harus ditangani. Sedangkan query PL/PGSQL agar lebih mudah di pahami akan
dibagi menjadi 2 yaitu pembuatan fungsi dan pembuatan definisi
- Berikut Struktur pembuatan fungsi dalam pl/pgsql
1. Pembuatan fungsi :
CREATE [OR REPLACE] FUNCTION nama_fungsi ( argtype , ... ])
RETURNS tipe_data
AS ‘definisi’
LANGUAGE ‘plpgsql’;
2. Pembuatan definisi :
DECLARE nama_variable tipe_data /* deklarasi variabel, type */
BEGIN
/* prosedural dan SQL masuk disini seperti select, update dan sebagainya*/
Return nama_variable /* blok ini yang wajib */
END;
- Menghapus fungsi :
DROP FUNCTION nama_fungsi(paramater, parameter, parameter ... );
Contoh :
DROP FUNCTION pembagian(text);

55
Berikut ini implementasi dari contoh penggunaan fungsi dengan bahasa PL/PGSQL:
db_personal=> CREATE FUNCTION pl_caripegawai (integer)
db_personal-> RETURNS text
db_personal-> AS 'DECLARE hasil TEXT;
db_personal'> BEGIN
db_personal'> SELECT INTO hasil nama as nama_mahasiswa
db_personal'> FROM pegawai
db_personal'> WHERE id = $1;
db_personal'> RETURN hasil;
db_personal'> END;'
db_personal-> LANGUAGE 'plpgsql';
CREATE

db_personal=> SELECT pl_caripegawai (1);


pl_caripegawai
-----------------
Hendro
(1 row)
db_personal=> SELECT pl_caripegawai (2);
pl_caripegawai
--------------------
Tika
(1 row)
Contoh berikut menunjukkan query percabangan yang akan menampilkan nilai terkecil
dari dua buah parameter :
create function percabangan (x integer,y integer)
returns integer
as ‘declare nilai_terkecil integer;
begin
if x < y then
select into nilai_terkecil x;
else
select into nilai_terkecil y;
end if;
return nilai_terkecil;
end;’
language ‘plpgsql’;
Hasil sebagai berikut :
Select percabangan (300,250);
Percabangan
-----------------
250
(1 row)

56
Contoh berikut menunjukkan query perulangan yang akan menampilkan akumulasi dari
jumlah perulangan :
Create function perulangan (a integer,b integer)
Returns integer
As ‘ declare nilai_awal integer default a;
Hasil integer default 0;
Begin

Loop

If nilai_awal > b then


Exit;
End if;
Hasil := hasil+nilai_awal;
Nilai_awal := nilai_awal+1;

End loop;

Return hasil;
End;’
Language ‘plpgsql’;
Hasilnya sebagai berikut :
Select perulangan (1,5);
Perulangan
----------------
15
1 (row)

57
BAB IX
KONEKSI POSTGRESQL PADA JAVA (Netbeans)

9.1 Bahasan dan Sasaran


9.1.1 Bahasan
- Pada bab kali ini akan membahas tentang koneksi PostgreSQL dengan bahasa
pemrograman java.
- Selain hal itu akan dibahas juga mengenai kode pemrograman untuk manipulasi data.
9.1.2 Sasaran
- Mahasiswa memahami dalam penggunaan Database PostgreSQL dan Bahasa
pemrograman Java untuk membuat suatu program aplikasi.
9.2 Materi
9.2.1 Langkah-langkah Koneksi database
Terdapat beberapa langkah yang secara umum harus dilakukan sehingga aplikasi
yang berbasis Java dapat berinteraksi dengan database server. Langkah-langkah tersebut
sebagai berikut :
1. Impor package java.sql
2. Memanggil Driver JDBC
3. Membangun Koneksi
4. Membuat Statement
5. Melakukan Query
6. Menutup Koneksi

1. Impor package java.sql


Pertama-tama yang harus dilakukan sebelum Anda membuat program JDBC
adalah mengimpor package java.sql terbih dahulu, karena di dalam package java.sql
tersebut terdapat kelas-kelas yang akan digunakan dalam proses-proses berintekasi
dengan database server misalnya kelas DriverMaganer, Connection, dan ResultSet.
Hal ini sangat penting dilakukan karena bagi pemula seringkali lupa untuk
mengimpor package yang kelas-kelas yang akan digunakan terdapat di dalamnya,
sehingga mengakibatkan kegagalan dalam mengkompile program Java.

58
Adapun listing untuk mengimpor package java.sql adalah sebagai berikut :
Import java.sql.*;
Listing ini dituliskan sebelum Anda menulis kelas.

2. Memanggil Driver JDBC


Langkah pertama untuk melakukan koneksi dengan database server adalah
dengan memanggil JDBC Driver dari database server yang kita gunakan. Driver
adalah library yang digunakan untuk berkomunikasi dengan database server. Driver
dari setiap database server berbeda-beda, sehingga Anda harus menyesuaikan Driver
JDBC sesuai dengan database server yang Anda gunakan.
Berikut ini adalah listing program untuk memanggil driver JDBC.
Class.forName(namaDriver); atau Class.forName(namaDriver).newInstance();
Kedua cara di atas memiliki fungsi yang sama yaitu melakukan registrasi
class driver dan melakukan intansiasi. Apabila driver yang dimaksud tidak
ditemukan, maka program akan menghasilkan exception berupa
ClassNotFoundException. Untuk menghasilkan exception apabila driver tidak
ditemukan, maka diperlukan penambahan try-catch. Adapun cara menambahkan
try-catch untuk penanganan error apabila driver tidak ditemukan, sebagai berikut :
Try {
Class.forName(namaDriver);
} catch (ClassNotFoundException e) {
... Penanganan Error ClassNotFoundException
}
Contoh listing memanggil driver menggunakan MySQL adalah :
try {
Class.forName(“org.postgresql.Driver”);
} catch (ClassNotFoundException e) {
System.out.println(“Pesan Error : “ + e)
}

59
Berikut ini adalah daftar nama-nama driver dari beberapa database server yang sering
digunakan.
Database Server Nama Driver
JDBC-ODBC sun.jdbc.odbc.JdbcOdbcDriver
MySQL com.mysql.jdbc.Driver
PostgreSQL org.postgresql.Driver
Microsoft SQLServer com.microsoft.jdbc.sqlserver.SQLServerDriver
Oracle oracle.jdbc.driver.OracleDriver
IBM DB2 COM.ibm.db2.jdbc.app.DB2Driver

3. Membangun Koneksi
Setelah melakukan pemanggilan terhadap driver JDBC, langkah selanjutnya
adalah membangun koneksi dengan menggunakan interface Connection. Object
Connection yang dibuat untuk membangun koneksi dengan database server tidak
dengan cara membuat object baru dari interface Connection melainkan dari class
DriverManager dengan menggunakan methode getConnection().
Connection koneksi = DriverManager.getConnection(<argumen>);
Untuk menangani error yang mungkin terjadi pada proses melakukan koneksi
dengan database maka ditambahkan try-catch. Exception yang akan dihasilkan pada
proses ini adalah berupa SQLException. Adapun cara penulisan listingnya adalah
sebagai berikut :
try {
... koneksi database
} catch (SQLException sqle){
... penanganan error koneksi
}
Ada beberapa macam argumen yang berbeda dari methode getConnection() yang
dipanggil dari DriverManager, yaitu :
getConnection(String url)
Pada methode diatas hanya memerlukan argumen URL, sedangkan untuk
data user dan password sudah diikutkan secara langsung. Adapun penulisan nilai
sebagai berikut :

60
jdbc:<DBServer>://[Host][:Port]/<namaDB>?<user=User>&<password=Pa
sword>
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:3306/Dbase? User = adi & password
= pas”;
Connection koneksi = DriverManager.getConnection(url);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
getConnection(String url, Properties info)
Pada methode ini memerlukan URL dan sebuah object Properties.
Sebelum menggunakan methode ini, Anda harus melakukan import package
berupa java.util.*, ini dikarenakan object Properties terdapat pada package
tersebut. Object Properties berisikan spesifikasi dari setiap parameter database
misalnya user name, password, autocommit, dan sebagainya.
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:5432/praktikumdbd”;
Properties prop = new java.util.Properties(); // tidak mengimpor kelas
prop.put(“user”,”NamaUser”);
prop.put(“password”,”datapassword”);
Connection koneksi = DriverManager.getConnection(url, prop);
System.out.prinln(“Proses apabila koneksi sukses”);
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
getConnection(String url, String user, String password)
Pada methode ini memerlukan argumen berupa URL, user name, dan
password. Methode ini secara langsung mendefinisikan nilai URL, user name
dan password.
Berikut ini contoh penggunaan methode ini didalam program :
try {
String url = “jdbc: postgresql://localhost:5432/ praktikumdbd”;
String user = “adi”
String password “ternate”
Connection koneksi = DriverManager.getConnection(url, user, password);
System.out.prinln(“Proses apabila koneksi sukses”);
61
} catch (SQLException sqle) {
System.out.println(“Proses apabila koneksi gagal dilakukan”);
}
Berikut ini adalah daftar penulisan URL dari beberapa database server yang
sering digunakan.
Database Nama URL Contoh penggunaan
Server
JDBC-ODBC jdbc:odbc:<NamaDatabase> jdbc:odbc:Dbase
MySQL jdbc:mysql://<nmHost>:<port>/<n jdbc:mysql://localhost:3306/Dbase
mDB>
PostgreSQL jdbc:postgresql://<nmHost>:<port> jdbc:postgresql://localhost:5432/Dbas
/<nmDB> e
Microsoft jdbc:microsoft:sqlserver://<nmHost jdbc:microsoft:sqlserver://localhost:14
SQLServer >:<port>; 33; DatabaseName=Dbase
DatabaseName=<namaDatabase>
Oracle jdbc:oracle:thin:@<nmHost>:<port jdbc:oracle:thin:@localhost:1521:Dba
>:<nmDB> se
IBM DB2 jdbc:db2:<NamaDatabase> jdbc:db2:Dbase

4. Membuat Statement
JDBC API menyediakan interface yang berfungsi untuk melakukan proses
pengiriman statement SQL yang terdapat pada package java.sql. Statement yang ada
secara umum digunakan terdiri dari berikut :
Statement
Interface ini dibuat oleh methode Connection.createStatement(). Object
Statement digunakan untuk pengiriman statement SQL tanpa parameter serta
Setiap SQL statement yang dieksekusi dikirim secara utuh ke database.
Statement stat = Connection.createStatement();
PreparedStatement
Interface ini dibuat oleh methode Connection.prepareStatement().
Object PreparedStatement digunakan untuk pengiriman statement SQL dengan
atau tanpa parameter. Interface ini memiliki performa lebih baik dibandingkan
dengan interface Statement karena dapat menjalankan beberapa proses dalam
sekali pengiriman perintah SQL, pengiriman selanjutnya hanya parametered
querynta saja.
PreparedStatement stat = Connection.prepareStatement();

62
5. Melakukan Query
Setelah kita memiliki object statement, kita dapat menggunakannya untuk
melakukan pengiriman perintah SQL dan mengeksekusinya. Methode eksekusi yang
digunakan untuk perintah SQL terbagi menjadi dua bagian yaitu untuk perintah
SELECT methode eksekusi yang digunakan adalah executeQery() dengan nilai
kembaliannya adalah ResultSet, dan untuk perintah INSERT, UPDATE, DELETE
methode eksekusi yang digunakan adalah executeUpdate().
Berikut ini adalah contoh melakukan eksekusi perintah SQL dan mengambil
hasilnya (ResultSet) dengan menggunakan perintah SELECT :
String sql = “SELECT kode, nama, alamat, kelas FROM dataSiswa”;
ResultSet set = stat.executeQuery(sql);
while (set.next()) {
String kode = set.getString("kode");
String nama = set.getString("nama");
String alamat = set.getString("alamat");
String kelas = set.getString("kelas");
}
Berikut ini adalah contoh melakukan eksekusi perintah SQL dengan
menggunakan perintah DELETE.
String sql = "DELETE FROM data_siswa WHERE kode = “1234”;
PreparedStatement stat = konek.prepareStatement(sql);
stat.executeUpdate();

6. Menutup Koneksi
Penutupan terhadap koneksi database perlu dilakukan agar sumber daya yang
digunakan oleh object Connection dapat digunakan lagi oleh proses atau program
yang lain. Sebelum kita menutup koneksi database, kita perlu melepas object
Statement dengan kode sebagai berikut :
statement.close();
Untuk menutup koneksi dengan database server dapat kita lakukan dengan
kode sebagai berikut :
connection.close();

63
9.2.2 Praktek Langkah-langkah Koneksi database dengan java di Netbeans
Materi kali ini akan sedikit membubuhkan tutorial untuk pengkoneksian dan
penyampaian contohnya. Seperti berikut langkah-langkahnya :
1. buatlah project baru pada netbeans
2. pada project tersebut, klik kanan – properties
3. pilih Libraries pada list Properties
4. add Library
7. add JAR/Folder
8. browse file konektor PostgreSQL
9. ambil file konektor, semisal :postgresql-9.0-801.jdbc4.jar atau versi yang lain.
10. kemudian open
11. Klik OK
12. coba lihat diproject netbeans - Libraries seperti gambar dibawah ini:

15. disitu sudah tertanam driver Java DB dan jdbc.jar


Setelah selesai maka bisa dilanjutkan membuat kelas java untuk mengkoneksikan
database yang telah dibuat dengan java. Untuk mempermudah gambaran kode
programnya disini terdapat contoh listing sebagai berikut :
Contoh Listing Program

64
a. Koneksi
Berikut contoh kelas koneksi :

b. Insert Data
Berikut contoh kode program insert data pada tabel asisten yang berdiri sendiri :

65
c. Update Data
Berikut contoh kode program update data pada tabel asisten yang berdiri sendiri :

(bingung???.... Fokuskan pada listing bagian metode eksekusinya...^_^)


d. Hapus Data
Berikut contoh kode program delete data pada tabel asisten berdasarkan idnya yang
berdiri sendiri :

(sekali lagi Fokus pada bagian metode eksekusinya)

66
e. Memunculkan data (Select)
Untuk SQL insert, update, delete menggunakan statement.executeUpdate.
Tapi untuk SQL select menggunakan statement.executeQuery. hasil eksekusi dari
database sebenarnya disimpan perbaris oleh karena itu biasanya object result set di
looping menggunakan while berikut ini contoh penerapan object ResultSet :

67
BAB X
PEMBUATAN LAPORAN DENGAN IREPORT

10.1 Bahasan dan Sasaran


10.1.1 Bahasan
- Pada bab kali ini akan membahas tentang pembuatan laporan dengan ireport
menggunakan bahasa pemrograman java.
10.1.2 Sasaran
- Mahasiswa memahami dalampenggunaan Ireport dan Bahasa pemrograman Java
untuk membuat laporan.
10.2 Materi
10.2.1 Langkah Kerja Ireport
Materi kali ini akan membubuhkan tutorial untuk pembuatan laporan menggunakan
ireport 3.5.1. Seperti berikut langkah-langkahnya :
1. Pastikan didalam PostgreeSQL sudah ada database akademis dan tabel Mahasiswa
seperti pada pembahasan pada modul sebelumnya selain itu periksa plugin ireport
3.5.1. di netbeans apakah sudah terinstall.
2. Setelah itu,kita akan membuat report menggunakan Report Wizard seperti dibawah
ini:

68
3. Tahap Pertama silahkan pilih report wizard. Sebagai berikut :

4. Kemudian berikan nama file dan pilih dimana tempat file tersebut kita simpan.

69
5. Pada tahap ini kita akan mulai mengkoneksikan ireport dengan dbms PostgreeSQL.
Klik tombol view kemudian pilih ”Database JDBC Conection”.

6. Setting koneksi nama database,username dan password dari IReport ke


PostgreSQL,seperti gambar dibawah ini:

setelah diisi semuanya klik tombol Test untuk mengecek apakah setingan yang kita buat
berhasil,setelah berhasil klik tombol Save.
70
7. Setelah koneksi berhasil,jalankan Query dibawah ini untuk mencetak Field yang ingin
digunakan dalam pelaporan hasil pemeriksaan,setelah itu klik tombol Next :

8. Setelah itu muncul semua Field yang mau kita cetak,klik tombol ”>>” untuk
memindahkan Field yang mau kita cetak ke area kanan.

71
9. Field yang mau kita cetak, Setelah itu klik tombol Next :

10. Pada tahap ini kita pilih Field mana yang kita buat Group kemudian Klik tombol Next
untuk mengikuti tahap selanjutnya.

72
11. Pilih jenis report ”Tabular Layout ”untuk membuat report seperti Tabel,lalu klik
tombol Next :

12. Hasil Report secara kasarnya adalah seperti dibawah ini, rubah title menjadi seperti
dibawah ini :

73
13. Klik View untuk melihat hasilnyadan mengecek apakah ada kesalahan dalam
pembuatan report :

14. Ok. Maka pembuatan Ireport selesai.


10.2.2 Pemanggilan File JRXML di Java
Kali ini akan membahas bagaimana cara memanggil file ireport yang berextensi
.jrxml agar dapat dieksekusi dari program dan menampilkannya ke dalam sebuah
window, sehingga kita dapat melihat hasil dari laporan yang telah kita buat dengan
ireport.
sebelumnya, jangan lupa untuk mengimport beberapa library standar(Sesuaikan
dengan versi Ireport) berikut ini yang digunakan ketika menjalankan program ke dalam
project:
1. commons-beanutils-1.7.jar
2. commons-collections-2.1.jar
3. commons-digester-1.7.jar
4. commons-logging-1.0.jar
5. Jasperreport-3.5.1.jar
74
6. jasper-compiler-jdt.jar
Kemudian kita masukkan kedalam library project yang sudah dibuat seperti berikut :

Setelah selesai maka bisa dilanjutkan membuat kelas java untuk memanggil file
yang telah dibuat. Untuk mempermudah gambaran kode programnya disini terdapat
contoh listingdimana file ireport dipanggil berdasarkan tombol “print”sebagai berikut:

import javax.swing.JOptionPane;
import java.io.File;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

public class beranda extends javax.swing.JFrame {


koneksi_postgre con = new koneksi_postgre();
JasperReport JasRep;
JasperPrint JasPri;
Map param = new HashMap();
JasperDesign JasDes;
public beranda() {
initComponents();
}
@SuppressWarnings("unchecked")
Generate_code
private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
File reprt = new File("hasil_periksa.jrxml");
JasDes = JRXmlLoader.load(reprt);
param.clear();
JasRep = JasperCompileManager.compileReport(JasDes);
JasPri = JasperFillManager.fillReport(JasRep, param, con.conn);
JasperViewer.viewReport(JasPri, false);
// JasperPrintManager.printReport(JasPri, true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
} 75
}
Hasil yang didapat dari kode program diatas sebagai berikut :

76

Anda mungkin juga menyukai