Anda di halaman 1dari 20

LAPORAN PRAKTIKUM 3

Trigger PostgreSQL

Disusun untuk Memenuhi Matakuliah Praktikum Basis Data I


Yang Dibimbing oleh Annisa Puspa Kirana, S.Kom., M.Kom.

Disusun Oleh:
Jeanny Indra Rifani

(150535602565)

Indy Fungsihan

(150535602331)

S1 TI 2015 OFF B

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
SEPTEMBER 2016

MODUL 3
Trigger PostgreSQL
1.

Tujuan
A. Memahami perintah-perintah dalam SQL.
B. Mengenal operasi-operasi DDL dan DML.
C. Mampu mengaplikasikan trigger dalam postgreSQL.

2.

Dasar Teori
PostgreSQL adalah Sistem Manajemen Basis Data (SMBD atau DBMS
(dalam bhs.Inggris)).
Basisdata adalah Sebuah basisdata merupakan kumpulan data yang
terorganisir untuk satu atau lebih kegunaan, pada umumnya dalam bentuk
digital. - Wikipedia
Sebuah sistem manajemen basisdata (DBMS) terdiri dari perangkat lunak
yang mengoperasikan basisdata, menyediakan penyimpanan, akses,
keamanan, cadangan (backup) dan fasilitas lainnya. Wikipedia
SQL terdiri dari beberapa komponen, dua di antaranya yang sangat
fundamental adalah DDL (Data Definition Language) dan DML (Data
Manipulation Language).
A. DDL (Data Definition Language)
DDL menyediakan perintah-perintah yang berhubungan dengan operasi
operasi dasar seperti mendefinisikan, memodifikasi dan menghapus
skema relasi misalnya tabel, view, prosedur dan fungsi. Contoh
perintah DDL adalah CREATE, ALTER dan DROP.
B. DML (Data Manipulation Language)

DML menyediakan perintah-perintah untuk menambah, memodifikasi,


menghapus dan mengambil data di dalam basis data. Contoh perintah
3.

DML adalah: INSERT, UPDATE, DELETE dan SELECT


Tugas Praktikum 1
A. Membuat Database
1. Untuk membuat database baru, pada halaman utama setalah
memasukkan kata sandi, klik kanan pada Database

2. Masukkan judul data base, lalu OK

3. Jika berhasil dibuat, maka nama database baru akan ditampilkan,


serta sintaknya.

B. CREATE TABLE
1. Untuk melanjutkan operasi dalam database, maka diperluka sebuah
atau beberapa tabel. Tujuan tabel adalah menampung inputan data
kita, sehingga kita bisa melakukan modifikasi data (seperti: Alter,
drop, Create table, update, dst) serta melakukan perhitungan data
(seperti: count, sum, min, max, avg, dst).
2. Disini tabel yang digunakan adalah tabel bernama mahasiswa,
matakuliah, dan ambil_mk. Dimana, tabel-tabel tersebut saling
berelasi. Berikut querynya:
**Membuat Tabel
CREATE TABLE mahasiswa
(nim int, nama varchar(6), jk varchar(1), alamat varchar(20));
CREATE TABLE matakuliah
(kode_mk varchar(6), nama_mk varchar(30), sks int, semester int);
CREATE TABLE ambil_mk
(nim int, kode_mk varchar(6));
**Cek tabel
\d mahasiswa
\d matakuliah
\d ambil_mk
\dp

3. Saat berhasil membuat tabel, akan muncu komentar Create


Table.

4. Hasil:

Cek tabel:
5. Analisa:
- Create table merupakan salah satu perintah yang berhubungan

dengan SQL Command. Create table berarti membuat tabel baru.


Setiap field dalam tabel, diharuskan untuk diberikan tipe data
yang sesuai. Boleh diberi length, agar bisa menghemat memori.
Contoh nama varchar(6). Percobaan kami adalah memberi length
pada int, misalkan (nim int(3), nama varchar(6)); maka hasilnya
akan error. Sehingga, dalam tiper data int, tidak diberi length.
- \d, \dp merupakan salah satu perintah SQL Command yang
bersifat Informational. \d untuk menampilkan deskripsi dari
tabel, index, sequence, atau view). Sedangkan \dp untuk
menampilkan daftar tabel, view, dan sequence (Access
Privileges).
C. CREATE TABLE dosen
1. View membutuhkan minimal 3 tabel, sehingga disini dibuat tabel
baru. Karena selanjutnya ada perintah drop. Sehingga 3 tabel awal
yang dibuat tidak terganggu.
2. Query:
**Membuat Tabel
CREATE TABLE dosen
(kode_dos int, nama_dos varchar(10), jk varchar(1), alamat_dos
varchar(20));
**Cek tabel
\d dosen
\dp

3. Hasil:

4. Analisa:
Membuat tabel dosen dengan perintah CREATE TABLE. Detail
isis tabel adalah kode_dos (kode dosen) bertipe data integer.
nama_dos (nama dosen) bertipe data varchar dengan panjang 10.
alamat_dos (alamat dosen) bertipe data varchar dengan panjang 20.
Menggunakan perintah \d untuk menampilkan deskripsi tabel
dosen saja. Menggunakan perintah \dp untuk menampilkan daftar
tabel-tabel dalam database.
D. DROP TABLE
1. Dalam modifikasi database, kita juga dapat melakukan drop table
(hapus tabel).
2. Query
DROP TABLE dosen;
**cek list
\dp

3. Hasil:

4. Analisa:
Drop tabel adalah perintah untuk menghapus tabel. Perbedaan
DROP dan DELETE adalah DROP untuk menghapus objek dalam
database, jadi semua data dalam tabel yang dimaksud akan hilang.
Contohnya seperti query yang diatas. Sedangkan DELETE adalah
menghapus semua atau beberapa record pada tabel. Jika kondisinya
diberi WHERE maka perintah Delete akan menghapus data sesuai
kondisi yang diberikan. Setelah proses penghapusan berhasil, maka
ketika kita melihat daftar tabel dalam database kita, maka tabel
dosen sudah tidak ditemukan.
E. ALTER TABLE
1. Alter table adalah perintah untuk merubah struktur table. Seperti
merubah nama table / nama kolom, merubah tipe data, dst.
2. Query:
ALTER TABLE mahasiswa
RENAME nama to nama_mhs;
**cek deskripsi tabel mahasiswa:
\d mahasiswa

3. Hasil:

4. Analisa:
Jika ingin mengganti field bernama nama, maka kita
menggunakan ALTER TABLE. Setelah itu menggunakan perintah
RENAME. Menggunakan penghubung TO untuk parameter OLD

(lama) dan NEW (baru). Hasilnya bisa dicek menggunakan


perintah \d.
F. CREATE VIEW
1. View adalah perintah query yang disimpan pada database dengan
suatu nama tertentu, sehingga bisa digunakan setiap saat untuk
melihat data tanpa menulis ulang query tersebut.
2. Disini, view yang dibuat adalah view dari relasi antara tabel
mahasiswa, matakuliah, dan ambil_mk, dengan nama view
matkul.
3. Query:
CREATE VIEW matkul AS
(SELECT a.nim, a.kode_mk, h.nama_mhs, t.nama_mk
FROM mahasiswa h, matakuliah t, ambil_mk a
WHERE h.nim = a.nim and t.kode_mk = a.kode_mk);
**cek view
\d matkul

4. Hasil:

5. Analisa:
Membuat view dari relasi 3 tabel; yaitu tabel mahasiswa,
matakuliah, dan ambil_mk. Tiga tabel ini saling berelasi. Karena
nim pada tabel mahasiswa berhubungan dengan nim pada tabel
ambil_mk. Kode_mk pada tabel matakuliah berelasi pada tabel
kode_mk pada tabel ambil_mk. Sehingga dapat dibuat relasi h.nim
= a.nim and t.kode_mk = a.kode_mk. h merupakan inisialisasi dari
tabel mahasiswa, t dari tabel matakuliah, a dari tabel ambil_mk.
G. SELECT
1. SELECT merupakan perintah seleksi data yang ingin ditampilkan.

2. Query:
SELECT kode_mk, sks FROM matakuliah;

3. Hasil:

4. Analisa:
Disini yang diseleksi adalah field kode_mk dan sks yang diambil
dari tabel matakuliah. Karena belum di entry data, maka row
bernilai 0.
H. CONDITIONAL SELECT
1. Condiitional SELECT adalah melakukan seleksi dengan suatu
kondisi tertentu. Contohnya menggunakan CASE dan WHEN.
2. Query:
SELECT nama_mhs, CASE jk
WHEN L THEN Laki-laki
WHEN P THEN Perempuan
END
FROM mahasiswa;

3. Analisa:
Disini yang diseleksi adalah nama_mhs dengan CASE/label jk
(jenis kelamin). Dimana jk yang ditampilkan bernilai L dan P.
Seleksi ini dilakukan pada tabel mahasiswa.
I. INSERT
1. INSERT INTO adalah perintah untuk memasukkan data dalam
tabel.
2. Query:
**tabel mahasiswa
INSERT INTO mahasiswa VALUES
(101, Jeanny, P, Jl.Kauman),
(102, Indy, P, Jl.Surabaya),
(103, Adam, L, Jl.Kenanga),
(104, David, L, Jl.Jombang),
(105, Tara, P, Jl.Bandung);
**tabel matakuliah
INSERT INTO matakuliah VALUES
(PTI426, Praktikum Visual, 2, 4),
(PTI447, Praktikum database, 1, 2),
(PTI448, Praktikum Pemrograman Komputer, 1, 1),
(TIK132, Arsitektur Komputer, 2, 2),
(TIK254, Grafika Komputer, 2, 4),
**tabel ambil_mk
INSERT INTO ambil_mk VALUES
(101, PTI447),
(103, TIK255),
(104, PTI426),
(104, TIK254),

3.
4.
5.

3.Hasil:

4. Analisa
Entry data pada tabel mahasiswa sebanyak 5, pada tabel
matakuliah sebanyak 5, pada tabel ambil_mk sebanyak 4. Untuk
data bertipe varchar, maka saat entry data, data yang dimasukkan
harus diberi petik. Jika tipe data integer, tidak perlu juga tidak

masalah. Hasil bisa dilihat menggunakan query SELECT*FROM


nama_tabel.
J. UPDATE
1. Update adalah perintah untuk perbarui data. Jadi kita tidak perlu
insert ulang saat terdapat kesalahan penulisan/entry.
2. Update diberi kondisi penulisan yang baru (menggunakan SET)
dan diberi WHERE.
3. Query:
UPDATE ambil_mk
SET kode_mk = TIK132
WHERE nim = 103;
**Cek
SELECT*FROM ambil_mk

4. Hasil:

5. Analisa:
Perintah UPDATE dilakukan pada tabel ambil_mk. Dimana field
yang ingin dirubah berada di kode_mk dengan label nim 103. Jadi,
nim yang bernilai 103, kode_mk TIK255 akan dirubah menjadi
TIK132.

K. DELETE
1. DELETE adalah perintah menghapus, namun jika diberi kondisi
maka yang terhapus adalah data yang sudah ditandai. (seperti yang
sudah dijelaskan pada point C)
2. Query:

DELETE FROM matakuliah


WHERE kode_mk = PTI448;
**Cek
SELECT*FROM matakuliah;

3. Hasil:

4. Analisa:
Penghapusan dilakukan pada tabel matakuliah, dengan kondisi
kode_mk yaitu PTI448 yang dihapus. Setelah dicek, maka 5 row
tadi akan berkurang satu, sehingga menjadi 4).
L. AVG (Average Rata-rata)
1. AVG adalah perintah untuk melakukan rata-rata.
2. Query:
SELECT AVG(sks) AS rata_sks FROM matakuliah;

3. Hasil:

4. Analisa:
Melakukan penghitungan rata-rata pada field sks dalam tabel
matakuliah. Selanjutnya, seperti membuat temporary baru dengan
nama rata_sks, (karena sementara, jadi hanya aktif saat perintah ini
dieksekusi).
M. COUNT
1. Fungsi COUNT adalah menjumlahkan data.
2. Query:
SELECT COUNT(*) AS sks FROM matakuliah;

3. Hasil:

4. Analisa:
Menghitung jumlah data sks pada tabel matakuliah.
N. MAX
1. MAX adalah fungsi mencari nilai tertinggi.
2. Query:
SELECT MAX(semester) AS semester_terbesar FROM matakuliah;

3. Hasil:

4. Analisa:
Mencari nilai terbesar menggunakan MAX. Kondisinya bisa
disesuaikan. Contoh disini adalah menyeleksi nilai maksimal pada
field semester dengan temporary bernama semester_terbesar dari
tabel matakuliah. Sehingga jawabannya 4.
O. MIN
1. MIN adalah fungsi mencari nilai terkecil.
2. Query:
SELECT MIN(semester) AS semester_terkecil FROM matakuliah;

3. Hasil:

4.Analisa:
Mencari nilai terkecil menggunakan MIN. Kondisinya bisa
disesuaikan. Contoh disini adalah menyeleksi nilai minimal pada
field semester dengan temporary bernama semester_terkecil dari
tabel matakuliah. Sehingga jawabannya 2.
P. SUM
1. SUM adalah menjumlahkan total data
2. Query:
SELECT SUM(sks) AS total_sks FROM matakuliah;

3.Hasil:

4. Analisa:
Menjumlahkan total data pada field sks, lalu disimpan dalam
4.

temporary total_sks pada tabel kuliah. Sehingga hasilnya 7.


Tugas Praktikum 2 Trigger
Studi Kasus menggunakan tabel pegawai (emp_table)
A. Membuat tabel emp_table dan backup table
1. Query:
CREATE TABLE emp_table (empid int, empname name, salary int);
CREATE TABLE backup_tbl (empid int, empname name, salary int,
operation varchar(25));

2. Hasil:

3. Analisa:
Membuat tabel emp_table dengan field empid bertipe data integer,
empname bertipe data name, salary bertipe data integer. Membuat
tabel backup_tbl dengan field empid bertipe data integer, empname
bertipe data name, salary bertipe data integer, operation bertipe
data varchar dengan panjang 25.
B. Membuat Function, dan Membuat Bahasa (Language)
1. Teknisnya, trigger memanggil function. Function akan di eksekusi
sebelum operasi proses insert, delete, atau update.
2. Query:

CREATE FUNCTION ins_function() RETURNS trigger AS '


BEGIN
IF tg_op = ''DELETE'' THEN
INSERT INTO backup_tbl(
empid, empname, salary, operation)
VALUES
(old.empid, old.empname, old.salary, tg_op);
RETURN old;
END IF;
IF tg_op = ''INSERT'' THEN
INSERT INTO backup_tbl(
empid, empname, salary, operation)
VALUES
(new.empid, new.empname, new.salary, tg_op);
RETURN new;
END IF;
IF tg_op = ''UPDATE'' THEN
INSERT INTO backup_tbl(
empid, empname, salary, operation)
VALUES
(old.empid, old.empname, old.salary, tg_op);
RETURN new;
END IF;
END '
language plpgsql;

3. Hasil:

4. Analisa:
Detailnya: Sebelum operasi delete, akan terjadi proses insert data
yang lama masuk ke backup_tbl. Sebelum operasi update, akan
terjadi proses insert data yang lama masuk ke backup_tbl. Sebelum
operasi insert, akan terjadi proses insert data yang baru masuk ke
backup_tbl. Dipercobaan awal, saat language ditempatkan diatas
create function, program menjadi error. Oleh karena itu, create
language diletakkan dibawah setelah pembuatan function.
C. Membuat Trigger
1. Trigger inilah yang akan mengeksekusi ins_function setelah
terjadi operasi proses insert, update, atau delete.
2. Query:

CREATE TRIGGER audit_ins AFTER INSERT OR DELETE OR UPDATE


ON emp_table FOR each ROW
EXECUTE PROCEDURE ins_function();

3. Hasil:

4. Analisa:
Trigger ini berfungsi setelah insert / delete / update pada tabel
emp_table untuk setiap row-nya. Setelah itu eksekusi prosedur
pada ins_function.
D. Insert Data
1. Query:
INSERT INTO emp_table (empid, empname, salary)
VALUES (101, 'sathiya', '3000');

2. Hasil:

3. Cek perubahan dengan SELECT*FROM backup_tbl;


4. Hasil:
5.

Analisa:

Inilah proses entry data pada tabel emp_table dengan masukan


sesuai field yang ada yaitu: empid = 101, empname = sathiya,
salary = 3000. Data yang di entry akan muncul ke bagian Insert.
E. Update Data
1. Query:
UPDATE emp_table SET salary = '2500'
WHERE empid = '101';
**Cek
SELECT*FROM backup_tbl;

2. Hasil:

3. Analisa:
Setelah di update, insert dan update juga akan terisi juga.
F. Delete Data
1. Query:
DELETE FROM emp_table WHERE empid = '101';
**Cek
SELECT*FROM backup_tbl;

2. Hasil:

3. Analisa:
Data yang didelete akan dimasukkan dalam backup_tbl bagian
delete.
G. Yang terjadi setelah melakukan delete data adalah data yang didelete
5.

tidak hilang, melainkan dimasukkan ke backup_tbl bagian DELETE.


Kesimpulan
SQL terdiri dari beberapa komponen, dua di antaranya yang sangat
fundamental adalah DDL (Data Definition Language) dan DML (Data
Manipulation Language)..
Field & Record adalah kolom dan baris pada tabel. Tabel adalah himpunan
elemen-elemen data yang diorganisasikan menggunakan model kolom vertical
dan baris horizontal. Basis data (database) merupakan kumpulan dari data
yang saling berhubungan satu dengan yang lainnya, tersimpan dalam
perangkat keras computer dan menggunakan perangkat lunak untuk
memanipulasinya.
Database Management System (DBMS) adalah perangkat lunak yang
khusus untuk pengelolaan basis data. Structured Query Language atau lebih
dikenal dengan singkatan SQL merupakan bahasa yang digunakan untuk
mengakses data di dalam basis data.
Trigger merupakan suatu proses yang otomatis dan efisien. Analoginya,
jika dalam penjualan barang, suatu barang telah terjual 1 buah, maka stok
barang akan otomatis berkurang 1.

6.
DAFTAR PUSTAKA
Kirana, Annisa Puspa. 2016. Modul 3 Trigger PostgreSQL. Malang:
Universitas Negeri Malang.
Anonymous. Online: http://nazipzihni.blogspot.com/p/1.html (diakses pada
18 September 2016, pukul 23:50)
Naura. 2014. Online: http://naura-lab.blogspot.co.id/2014/12/perintah-altertable-di-database-mysql.html (diakses pada 18 September 2016, pukul
24:19)
Anonymous. Online: http://mysql.phi-integration.com/sql/membuat-viewpada-mysql.html (diakses pada 18 September 2016, pukul 01:30)

Anda mungkin juga menyukai