• Tidak ada hasil yang ditemukan

MODUL 2 DDL, DML, OPERATOR DAN FUNCTION

N/A
N/A
Protected

Academic year: 2021

Membagikan "MODUL 2 DDL, DML, OPERATOR DAN FUNCTION"

Copied!
24
0
0

Teks penuh

(1)

Modul 1 : Perancangan Basis Data - Sistem Basis Data - DBMS

- Model Data - Normalisasi

- Metodologi Perancangan Basis Data - ERD

- Kardinalitas Relasi

Modul 2 : DDL, DML, Operator n Function Modul 3 : Union Join

Modul 4: Views

Modul 5: Store Procedure n Trigger Modul 6: PHP MySQL

(2)

MODUL 2

DDL, DML, OPERATOR DAN FUNCTION

1. Materi

1.1 Data Definition Language (DDL)

Dalam DDL berisi perintah yang digunakan untuk membuat atau menghapus struktur basisdata secara keseluruhan. Perintah ini meliputi:

- CREATE untuk membuat basisdata dan tabel - DROP untuk menghapus basisdata dan tabel - ALTER untuk mengubah struktur table

CREATE DATABASE

Sintaks : CREATE DATABASE nama_database Contoh :

CREATE DATABASE PERUSAHAAN

CREATE TABLE Sintaks:

CREATE TABLE tbl_name (

column_name data_type [DEFAULT expr] [column _constraint] , …

[table_constraint] ); Contoh:

CREATE TABLE PEKERJA

(NIP CHAR(9) NOT NULL, NAMA CHAR(15) NOT NULL, TGL_LHR DATE,

ALAMAT CHAR(30), KOTA CHAR(10), SEX CHAR(1),

(3)

ALTER TABLE Sintaks

ALTER TABLE tbl_name

alter_specification [, alter_specification];

Untuk mengubah struktur dalam tabel, terdapat tiga macam spesifikasi perubahan (alter specification) yang dapat dilakukan, yaitu:

a. Menambah (Add):

Sintaks SQL untuk menambah kolom:

ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]; Atau :

ADD [COLUMN] (col_name column_definition,...);

b. Mengubah (Change atau Modify): Sintaks SQL untuk mengubah kolom:

CHANGE [COLUMN] old_col_name new_col_name column_definition

[FIRST|AFTER col_name];

MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name];

c. Menghapus (Drop):

Sintaks SQL untuk menghapus kolom: DROP [COLUMN] col_name; DROP PRIMARY KEY;

DROP FOREIGN KEY fk_symbol ;

Contoh kasus:

Tambahkan kolom KERJA pada tabel PEKERJA dengan tipe karakter, panjang karakter = 12. Perintah:

(4)

DROP DATABASE Sintaks:

DROP DATABASE nama_database; Contoh: Menghapus basisdata PERUSAHAAN

DROP DATABASE PERUSAHAAN;

DROP TABLE Sintaks:

DROP TABLE nama_table; Contoh: Menghapus tabel KERJA

DROP TABLE KERJA;

1.2 Data Manipulation Language (DML)

DML berisi perintah SQL yang digunakan untuk memanipulasi data dan pengambilan data pada suatu basisdata. Manipulasi data dapat berupa:

- Penyisipan/penambahan data baru ke suatu basisdata (INSERT) - Pemanggilan/menampilkan data yang ada dalam basisdata (SELECT) - Pengubahan data di suatu basis data (UPDATE)

- Penghapusan data dari suatu basisdata (DELETE)

Pada level fisik, kita harus mendefinisikan algoritma yang memungkinkan pengaksesan yang efisien terhadap data. Pada level yang lebih tinggi, yang dipentingkan bukan hanya efisiensi akses, tetapi juga efisiensi interaksi manusia (pemakai) dengan sistem (kemudahan permintaan akses)

PERINTAH INSERT

Sintaks perintah INSERT langsung:

INSERT INTO <table specification> [<column list>]

VALUES (<expression> [{,<expression>}. . . ]);

Sintaks perintah INSERT dengan menggunakan SELECT : INSERT INTO <table specification>

(5)

<select clause> <from clause> [ <where clause> ] [ <group by clause> ] [ <having clause> ]; Contoh:

Masukkan data pada tabel PEKERJA dengan isian NIP: 198007082005042002, Nama: Sugeng Adiguna, Tanggal lahir: 1980-07-08, Alamat: Telang Raya Bangkalan, Sex: L.

INSERT INTO PEKERJA (NIP,NAMA,TGL_LHR, ALAMAT, SEX)

VALUES („198007082005042002‟,‟SUGENG ADIGUNA‟,19800708,‟Telang Raya Bangkalan‟,‟L‟);

Atau

INSERT INTO PEKERJA

VALUES („198007082005042002‟,‟SUGENG ADIGUNA‟,19800708,‟L‟,‟Telang Raya Bangkalan‟);

PERINTAH SELECT SELECT satu tabel

SELECT field_name FROM table_name WHERE [kondisi];

SELECT lebih dari satu tabel

SELECT table_name1.field_name,table_name2.field_name FROM table_name1, table_name2

WHERE [kondisi]; Contoh: SELECT NAMA,ALAMAT FROM PEKERJA WHERE NIP=„198007082005042002‟; PERINTAH UPDATE Sintaks:

(6)

UPDATE <table specification> SET <column name = expression> [ WHERE <condition> ];

Contoh:

Rubah data Sugeng Adiguna untuk field alamat menjadi Telang Raya No.2 Bangkalan UPDATE PEKERJA

SET ALAMAT = „Telang Raya No.2 Bangkalan‟ WHERE NAMA=‟SUGENG ADIGUNA‟

PERINTAH DELETE Sintaks:

DELETE

FROM <table specification> [ WHERE <condition> ]

Contoh:

Hapus data Sugeng Adiguna pada tabel PEKERJA DELETE

FROM PEKERJA

WHERE NAMA=‟SUGENG ADIGUNA‟;

1.3 Operator dan Function

Function yang dimaksud adalah function yang telah disediakan oleh server basisdata atau dapat juga disebut sebagai Build-in-function, meski sebenarnya function dapat dibuat sendiri oleh pemrogram.

Operator IS [NOT] NULL

Operator IS NULL digunakan untuk memilih baris dalam kolom tertentu yang tidak memiliki nilai atau NULL.

Sintaks:

<predicate with null> ::=

<scalar expression> IS [ NOT ] NULL Contoh:

(7)

SELECT NAMA FROM PEKERJA

WHERE ALAMAT IS NOT NULL;

Operator BETWEEN

Operator BETWEEN digunakan untuk menentukan range nilai suatu ekspresi dalam perintah SQL. Sintaks:

<predicate with between> ::=

<scalar expression> [ NOT ] BETWEEN <scalar expression> AND <scalar expression>

Contoh:

Cari nama dan tanggal lahir pekerja antara tahun 1980 sampai 1983

SELECT NAMA,TGL_LHR

FROM PEKERJA

WHERE YEAR(TGL_LHR) BETWEEN 1980 AND 1983;

Operator LIKE

Operator LIKE digunakan untuk memilih nilai alfanumerik yang memiliki pola tertentu. Sintaks perintah SQL untuk operator LIKE adalah:

<predicate with like> ::=

<scalar expression> [ NOT ] LIKE <like pattern> [ ESCAPE <character> ]

<like pattern> ::= <scalar alphanumeric expression> Contoh:

Cari nama pekerja dari tabel PEKERJA yang huruf kedua terakhirnya adalah „a‟ tanpa melihat panjang charakter dalam namanya.

SELECT NAMA

FROM PEKERJA

WHERE NAMA LIKE „%a_‟;

Operator IN

Operator ini digunakan ketika data disajikan bentuk list/daftar yang dicek kondisinya. Operator IN dapat dibandingkan dengan operator OR.

(8)

<predicate with in> ::=

<scalar expression> [ NOT ] IN <scalar expression list> |

<row expression> [ NOT ] IN <row expression list> <row expression list> ::=

( <scalar expression list>

[ , <scalar expression list> ]... ) <scalar expression list> ::=

( <scalar expression> [ , <scalar expression> ]... ) Contoh:

Tampilkan nama dan kota dari pekerja pada tabel PEKERJA yang tinggal di kota Bangkalan, Malang, Surabaya dan Pasuruan

Perintah SQL dengan menggunakan operator OR: SELECT NAMA, KOTA

FROM PEKERJA

WHERE KOTA = „Bangkalan‟ OR KOTA = „Malang‟ OR KOTA = „Surabaya‟ OR KOTA = „Pasuruan‟;

Perintah SQL dengan menggunakan operator IN: SELECT NAMA, KOTA

FROM PEKERJA

WHERE KOTA IN („Bangkalan‟, „Malang‟, „Surabaya‟, „Pasuruan‟);

2. Soal Pre Test

1. Apa yang dimaksud dengan DDL, DML dan DCL?

2. Sebutkan masing-masing 2 perintah yang termasuk DDL, DML dan DCL, serta beri contoh sederhana penulisannya!

3. Praktikum

Untuk latihan modul 2, silahkan melanjutkan soal praktikum modul 1 untuk diimplementasikan pada DBMS MySQL :

1. Generate ERD yang sudah dibuat sebelumnya (Basisdata Kantin Bersama dan Basisdata Akademik ke DBMS My SQL melalui Software perancangan ERD yang telah digunakan sebelumnya.

(9)

2. Dengan semakin berkembangnya kantin bersama, bagi pelanggan yang sering melakukan transaksi dalam kantin tersebut, maka ujicoba untuk membuat tabel baru pada basisdata Kantin Bersama dengan nama:

a. Tabel „FAKULTAS‟ dengan atribut: KODE_FAKULTAS smallint, dan NAMA_FAK char(15)

b. Tabel „JURUSAN‟ dengan atribut KODE_JUR smallint, KODE_FAK smallint, NAMA_JUR char(20)

c. Tabel „PELANGGAN‟, dengan atribut: NO_ANGGOTA char(10), KODE_JUR smalint, NAMA char(20), ALAMAT char(20), AKTIF boolean null.

3. Tambahkan data baru untuk ketiga tabel tersebut dengan perintah SQL

4. Buat Tabel baru dengan nama TIDAK_AKTIF yang atributnya adalah NO_ANGGOTA dan NAMA yang berasal dari Tabel PELANGGAN tetapi statusnya TIDAK AKTIF 5. Tampilkan data dari tabel PELANGGAN untuk atribut NO_ANGGOTA, NAMA, dan

data dari Tabel Jurusan untuk NAMA_JUR

4. Pertanyaan dan Tugas

1. Cari Fungsi dan contoh sederhana untuk: o Operator EXISTS

o Operator ALL dan ANY o Fungsi DISTINCT o Fungsi COUNT o Fungsi MAX, MIN o Fungsi SUM o Fungsi AVG

2. Generate ERD yang sudah dibuat sesuai studi kasus yang diperoleh pada Modul 1 3. Analisa ulang untuk tabelnya, tambahkan tabel baru dan atribut pada tabel tersebut

dengan menggunakan perintah SQL

4. Isi data pada Basisdata tersebut dengan 10 isian pada masing-masing tabelnya dengan menggunakan perintah SQL (INSERT INTO dan INSERT INTO-SELECT)

5. Tampilkan beberapa atribut yang meliputi perintah: - SELECT satu tabel

- SELECT dua atau lebih tabel

- SELECT dengan menggunakan 1 operator dan 1 Function yang telah disebutkan diatas.

(10)

MODUL 3 UNION DAN JOIN

1. Materi

1.1 Operator UNION

Operator UNION digunakan untuk menggabungkan /mengkombinasikan hasil yang dikeluarkan oleh beberapa input tabel. Jika dua buah ekspresi tabel digabungkan dengan operator UNION, maka hasil akhirnya adalah setiap baris yang merupakan hasil dari salah satu ekspresi tabel atau keduanya.

Biasanya, permasalahan yang diselesaikan dengan menggunakan operator UNION juga dapat diselesaikan dengan operator OR. Ada kalanya suatu permasalahan yang rumit jika diselesaikan dengan operator UNION menjadi lebih ringkas jika diselesaikan dengan operator OR, dan demikian juga sebaliknya.

Sintaks:

SELECT nama_kolom FROM nama_tabel

WHERE ekspresi kondisi UNION

SELECT nama_kolom FROM nama_tabel

WHERE ekspresi kondisi; Contoh:

Dalam table pekerja, tampilkan nama dan alamat pekerja yang bertempat tinggal di Malang dan Surabaya. Dan urutksn berdasarkan huruf pertama nama pekerja.

SELECT NAMA, ALAMAT FROM PEKERJA

WHERE KOTA = „malang‟ UNION

SELECT NAMA, ALAMAT FROM PEKERJA

WHERE KOTA = „Surabaya‟ ORDER BY NAMA;

(11)

Analisa Hasil, jika table Pekerja terisi nilai berikut:

NIP NAMA TGL_LHR ALAMAT KOTA SEX

198704052006091000 Aris Zulkarnaen

05-04-87 Ketintang raya 78a Surabaya L 198608082008022000 Mahfud

Damnik

08-08-86 Mulyosari IX/9 Surabaya L 197607092010011000 Bunda Satifa

07-09-76 Gang Kelinci 41 Malang P 198304052006072000 Maria wati

04-05-83 Malabar 9b Bangkalan P Hasilnya adalah gabungan dari hasil SELECT pada blok pertama dan SELECT pada blok kedua

operator UNION akan menghilangkan duplikasi baris yang memiliki nilai yang sama dalam hasil akhir perintah SQL. Cara kerja operator UNION untuk menghapus duplikasi baris sama halnya dengan cara kerja operator DISTINCT.

Operator UNION ALL

Pada Operator UNION ALL, cara kerjanya tidak mengadopsi operator DISTINC. Jadi ketika hasil perintah SQL dengan JOIN ALL terdapat beberapa baris yang memiliki nilai sama, maka baris tersebut tidak dihapuskan dan tetap ada.

Sintaks:

SELECT nama_kolom FROM nama_tabel

WHERE ekspresi kondisi UNION ALL

SELECT nama_kolom FROM nama_tabel

WHERE ekspresi kondisi;

NAMA ALAMAT

Aris

Zulkarnaen Ketintang raya 78a Bunda Satifa Gang Kelinci 41

Mahfud

(12)

1.2 Operator JOIN

Operator Join digunakan untuk menghubungkan dua tabel atau lebih pada kolom yang bersesuaian. Klausa JOIN ada beberapa macam, diantaranya: CROSS JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN.

Sintaks perintah JOIN:

Sintaks perintah SQL untuk operator JOIN adalah: <from clause> ::=

FROM <table reference> [ , <table reference> ]... <table reference> ::=

table specification> [ [ AS ] <pseudonym> ] | <join specification> |

( <join specification> ) <join specification> ::=

<table reference> <join type> <table reference> [ <join condition> ]

<join condition> ::=

ON <condition> | USING <column list> <join type> ::=

[ INNER ] JOIN | LEFT [ OUTER ] JOIN | RIGHT [ OUTER ] JOIN |

NATURAL [ LEFT | RIGHT ] [ OUTER ] JOIN | CROSS JOIN

<column list> ::=

( <column name> [ , <column name> ]... ); CROSS JOIN

Jika ada dua tabel: tabel satu dan tabel dua, dianalisa dengan CROSS JOIN, maka Perintah SQL dengan operator CROSS JOIN, akan mengembalikan hasil dari setiap row yang ada pada tabel satu dan dikombinasi dengan nilai tabel yang ada pada tabel dua. HAsilnya seperti model Cartesian product. Semisal tabel satu memiliki sepuluh row, tabel dua memiliki sembilan row. Maka Hasil perintah SQL dengan CROSS join akan dihasilkan 10x9 row. Penggunaan CROSS JOIN perlu kehati-hatian, karena dapat saja memunculkan data-data yang tidak relevan.

Contoh:

SELECT A.kode produk, B.nama produk, A.harga jual, A.jumlah, A.total

(13)

FROM penjualan detail A CROSS JOIN produk B

INNER JOIN

Di dalam INNER JOIN, hasil akhir hanya akan menampilkan data yang ada di kedua tabel. Pada perintah tersebut akan dilakukan proses pencocokan atau penyamaan data berdasarkan kolom yang didefinisikan dengan menggunakan ON.

Contoh:

Jika dalam basisdata „PERUSAHAAN‟ memiliki table „PEKERJA‟(berisi biodata pekerja), dan table „KEGIATAN‟(berisi data pekerja yang melakukan kegiatan/menghadiri acara tertentu) dengan atribut: NIP, Tgl, Kegiatan, Jenis kegiatan. Dengan isi dari Tabel KEGIATAN:

NIP TGL KEGIATAN JENIS KEGIATAN

198704052006091000 15-12-12 PELATIHAN TOEFL TRAINING 197607092010011000 04-08-12 SEMINAR KEAMANAN KERJA SEMINAR Maka tampilkan atribut nip, nama dan jenis kegiatan yang pernah diikuti oleh pekerja.

SELECT A.NIP, A.NAMA, B.JENIS KEGIATAN FROM PEKERJA A INNER JOIN KEGIATAN B

ON (A.NIP = B.NIP); Hasilnya:

NIP NAMA JENIS KEGIATAN

198704052006091000 Aris Zulkarnaen TRAINING 197607092010011000 Bunda Satifa SEMINAR OUTER JOIN

Pada Outer Join, data pada tabel satu tetap diikutkan walaupun tidak memiliki hubungan apapun pada tabel dua. Macam OUTER JOIN adalah:

LEFT JOIN

Perintah dengan operator ini akan menghasilkan data pada tabel kiri (tabel satu) walaupun tidak memiliki relasi pada tabel kanan (tabel dua). Jika data yang terdapat di sebelah kiri tidak terdapat pada tabel sebelah kanan, maka SQL Engine akan tetap mengeluarkan nilai NULL.

(14)

SELECT A.NIP, A.NAMA, B.JENIS KEGIATAN FROM PEKERJA A LEFT JOIN KEGIATAN B

ON (A.NIP = B.NIP); Hasilnya:

NIP NAMA JENIS

KEGIATAN 198704052006091000 Aris Zulkarnaen TRAINING 198608082008022000 Mahfud Damnik NULL 197607092010011000 Bunda Satifa SEMINAR 198304052006072000 Maria wati NULL

RIGHT JOIN

Perintah dengan operator ini akan menghasilkan data pada tabel kanan (tabel dua) walaupun tidak memiliki relasi pada tabel kiri (tabel satu).

Contoh:

SELECT A.NIP, A.NAMA, B.JENIS KEGIATAN FROM PEKERJA A RIGHT JOIN KEGIATAN B

ON (A.NIP = B.NIP); HAsilnya:

NIP NAMA JENIS KEGIATAN

198704052006091000 Aris Zulkarnaen TRAINING 197607092010011000 Bunda Satifa SEMINAR 2. Soal Pre-test

1. Apa kegunaan dari operator UNION?

2. Apa beda INNER JOIN, LEFT JOIN dan RIGHT JOIN?

3. Beri contoh sederhana untuk menampilkan data atribut NAMA dosen, NAMA mhs dari tabel DOSEN dengan atribut: NIP, NAMA dosen, ALAMAT dosen

dan tabel MAHASISWA WALI dengan atribut NIP, NRP, Nama mhs, menggunakan perintah INNER JOIN

3. Praktikum

1. Gunakan operator UNION dan UNION ALL untuk Basisdata Kantin Bersama (pada modul 1), yang menggabungkan lebih dari satu tabel. Buatlah 3 model penggunaan perintah tersebut beserta tampilkan hasilnya.

(15)

2. Gunakan operator INNER JOIN untuk menggabungkan dua tabel dengan ekspresi kondisi tertentu, dan bandingkan hasilnya ketika kita mengubah perintah INNER JOIN menjadi LEFT JOIN dan RIGHT JOIN.

4. Pertanyaan dan Tugas

Analisa Basisdata yang telah dibuat sebelumnya dengan menggunakan operator;  UNION,

 INNER JOIN  LEFT JOIN  RIGT JOIN

Tuliskan perintah SQL dan tampilkan isi dari masing-masing tabel dan hasil dari perintah diatas.

(16)

MODUL 4 VIEWS

1. Materi

View merupakan 'derived tables' sehingga ia harus didefinisikan dalam perintah SQL pada tabel basis atau view yang lain. Tabel basis yang dimaksud di sini adalah tabel yang dimiliki oleh suatu basisdata.

Membuat View Sintaks:

CREATE VIEW view_name (column_name) AS [SELECT BLOCK]

Contoh:

Buatlah View untuk membuat daftar seluruh pekerja yang ada di tabel PEKERJA dengan nama view „LISTPEKERJA‟

Perintah SQL 1:

CREATE VIEW LISTPEKERJA (NIP,NAMA,KOTA,SEX) AS SELECT NIP, NAMA

FROM PEKERJA;

Perintah SQL 2:

CREATE VIEW LISTPEKERJA AS SELECT NIP, NAMA

FROM PEKERJA;

Jika selanjutnya ingin melihat isi view LISTPEKERJA, maka perintah SQL yang diperlukan: SELECT *

FROM LISTPEKERJA; Informasi:

- Isi View bisa berupa gabungan beberapa tabel

- didalam sintaks view bisa dimasukkan clausa yang sering digunakan dalam, seperti: - IS [NOT] NULL

(17)

- DISTINC - BETWEEN

- Operator AND, OR

- MIN, MX, AVG dan lain-lain

Perintah INSERT, UPDATE, atau DELETE dapat dilakukan terhadap data yang ada di dalam tabel basis melalui view tabel basis. Ketika perintah tersebut diberikan kepada view, maka isian data yang ada di tabel basis juga ikut berubah sesuai perintah yang diberikan.

Contoh:

Hapuslah data Pegawai yang ada dalam tabel pekerja yang NIP nya 198704052006091000

DELETE

FROM LISTPEKERJA

WHERE NIP = 198704052006091000 ;

Ketika sintak tersebut dijalankan maka data yang ada di dalam view LISTPEKERJA dan yang ada di tabel pekerja dengan NIP= 198704052006091000 akan dihapus.

Selain tabel basis yang menjadi referensi, view lainpun dapat digunakan sebagai referensi ketika kita membuat view yang baru

Contoh:

Buatlah view untuk membuat daftar seluruh pekerja yang bertempat tinggal di MALANG CREATE VIEW MLG AS

SELECT NIP, NAMA, KOTA FROM LISTPEKERJA

WHERE KOTA = ‘MALANG’ ;

Menghapus VIEW

View yang ada dalam basisdata dapat dihapus dengan menggunakan sintaks SQL berikut: DROP VIEW view_name;

(18)

Perintah SQL:

DROP VIEW LISTPEKERJA;

2. Soal Pre Test

1. Apa yang dimaksud dengan VIEW

2. Sebutkan apa saja kegunaan atau manfaat dari adanya VIEW

3. Praktikum

1. Dari Basis Data Kantin Bersama/Basis Data Akademik yang telah dibuat, buatlah view yang referensinya:

- Satu tabel basis (Nama View: ONE)

- Satu view sebelumnya yang telah dibuat (Nama view: ONE2) - Dua tabel basis dengan INNER JOIN (Nama view: TWO) - Tiga tabel basis dengan Join implisit (Nama view: THREE) 2. Lakukan perubahan data terhadap satu data di view ONE

3. Cek kembali data yang diubah di nomor 2 pada tabel basis untuk view ONE

4. Pertanyaan dan Tugas

Analisa Basisdata yang telah dibuat pada Tugas Modul 1 dengan menggunakan VIEW yang referensinya:

- Tabel basis

- View yang telah dibuat sebelumnya Cek hasilnya, dan buat laporan mengenai:

- Isi data dari tiap-tiap tabel dalam basis data - Kasus yang akan dibuat

- Sintaks SQL yang dibuat

- Hasil perintah SQL yang telah dijalankan

5. Daftar Pustaka

Noor Ifada, Bahan Ajar Basisdata2, Teknik Informatika, Universitas Trunojoyo Madura, 2012.

(19)

van der Lans, R. “Introduction to SQL, Mastering Relational Database Language”, (2nd

Edition), Addison-Wesley, 2007.

Hinz, S., DuBois, P., Stephens, J., Olson, P., and Russell, J.. “MySQL 5.0 Reference Manual”, URL: http://downloads.mysql.com/docs/refman-5.0-en.a4.pdf

(20)

MODUL 5

STORED PROCEDURE DAN TRIGGER

1. Teori

Stored procedure dan trigger sama-sama merupakan perintah yang dibuat dalam bentuk deklaratif dan prosedural. Perbedaannya adalah Stored procedure diaktifkan sebagai suatu perintah oleh editor SQL, program, atau oleh Stored Procedure atau Trigger lain. Sedangkan Trigger diaktifkan hanya oleh Sistem Manajemen Basisdata dalam suatu kondisi tertentu (ketika pernyataan INSERT, UPDATE, DELETE dilaksanakan) [1].

Stored Procedure

Sintaks deklarasi/membuat store procedure: <create procedure statement> ::=

CREATE PROCEDURE <procedure name> ([<parameter list>]) <routine body>

<parameter list> ::= <parameter specification> [ , <parameter specification> ]...

<parameter specification> ::= [IN|OUT|INOUT] <parameter> <data type>

<routine body> ::= <begin-end block> <begin-end block> ::=

[ <label> : ] BEGIN <statement list> END [ <label> ]

<statement list> ::= { <body statement> ; }... <statement in body> ::=

<declarative statement>| <procedural statement>

Sintaks untuk mengaktifkan atau memanggil stored procedure yang telah dibuat: <call statement> ::=

CALL [<database name>. ]<stored procedure name> ([<scalar expression>[,<scalar expression>]...]) Sedangkan penghapusan Stored Procedure dapat dilakukan dengan sintaks SQL:

<drop procedure statement> ::=

DROP PROCEDURE [ IF EXISTS ] [ <database name> . ] <procedure name>

(21)

Stored procedure dapat dibuat tanpa menggunakan parameter (bersifat statis) atau dengan menggunakan parameter yang bersifat dinamis karena pengguna dapat mengisikan nilai sesuai yang diinginkan ketika stored procedure diaktifkan. Parameter yang dapat digunakan terdiri dari tiga macam, yaitu parameter masukan (IN), parameter keluaran (OUT), dan parameter masukan-keluaran (INOUT).

Pembuatan stored procedure tanpa penggunaan parameter dicontohkan pada kasus “Hapus data pegawai dengan NIP 198704052006091000 jika terdapat lebih dari 1 orang pekerja yang bertempat tinggal di MALANG dan berjenis kelamin PEREMPUAN dengan menggunakan stored procedure"

CREATE PROCEDURE DELETE_PEGAWAI() BEGIN

DECLARE JUMLAH_KOTA INTEGER; SELECT COUNT(*)

INTO JUMLAH_KOTA FROM PEKERJA

WHERE KOTA =”Malang” and SEX = “P”; IF JUMLAH_KOTA > 1 THEN

DELETE FROM PEKERJA

WHERE NIP = “198704052006091000”; END IF;

END;

Penggunaan variabel dalam store procedure untuk kasus diatas adalah sebagai berikut: CREATE PROCEDURE DELETE_PEGAWAI

(IN P_KOTA CHAR, P_SEX CHAR, P_NIP CHAR) BEGIN

DECLARE JUMLAH_KOTA INTEGER; SELECT COUNT(*)

INTO JUMLAH_KOTA FROM PEKERJA

WHERE KOTA = P_KOTA and SEX = P.SEX; IF JUMLAH_KOTA > 1 THEN

DELETE FROM PEKERJA WHERE NIP = P_NIP; END IF;

END;

Pada contoh diatas bersifat dinamis, digunakan parameter masukan (IN) ketika mendeklarasikan stored procedure sebagai parameter formal agar pengguna dapat secara bebas memasukkan nilai P_KOTA, P_SEX, P_NIP sebagai parameter aktual ketika memanggil stored procedure tersebut.

(22)

Deklarasi variabel yang digunakan untuk menyimpan hasil ekspresi sebelumnya, dapat dibuat dengan perintah:

DECLARE NAMA_VARIABEL TYPE_DATA;

Penggunaan blok IF-THEN untuk menyeleksi kondisi, dapat digunakan didalam perintah stored procedure. Perintah yang digunakan yaitu:

IF kondisi_seleksi THEN

[Blok pernyataan bila kondisi terpenuhi]; END IF;

Perintah SQL untuk aktivasi/pemanggilan stored procedure: CALL nama_storedprocedure;

Perintah SQL untuk menghapus stored procedure:

DROP PROCEDURE nama_storedprocedure;

Trigger

Sintaks/deklarasi untuk membuat Trigger: <create trigger statement> ::= CREATE [ <definer option> ]

TRIGGER <trigger name> <trigger moment>

<trigger event> <trigger action> <definer option> ::=

DEFINER = { <user name> | CURRENT_USER } <trigger moment> ::= BEFORE | AFTER <trigger event> ::=

{ INSERT | DELETE | UPDATE } ON <table specification> FOR EACH ROW <trigger action> ::= <statement>

Sintaks SQL untuk menghapus Trigger: <drop trigger statement> ::=

(23)

DROP TRIGGER [ <table name> . ] <trigger name>

Untuk mempermudah pemahaman penggunaan trigger, maka dibuat tabel baru bernama TR_PEKERJA,

CREATE TABLE TR_PEKERJA

(USER CHAR(30) NOT NULL,

TR_TIME TIMESTAMP NOT NULL,

TR_NIP CHAR(12) NOT NULL

);

Tabel TR_PEKERJA ini akan digunakan untuk menyimpan perubahan data yang terjadi ketika trigger INSERT_PEKERJA berikut diaktifkan,

CREATE TRIGGER INSERT_PEKERJA AFTER

INSERT ON PEKERJA FOR EACH ROW BEGIN

INSERT INTO TR_PEKERJA (USER, TR_TIME, TR_NIP)

VALUES (USER, CURDATE(), NEW.NIP); END;

Dengan adanya trigger ini, ketika ada penambahan data baru di tabel PEKERJA, maka secara otomatis tabel TR_PEKERJA akan terisi sesuai perintah TRIGGER INSERT_PEKERJA. Selain itu penggunaan trigger juga dapat digunakan di dalam stored procedure.

2. Soal Pre Test

1. Apa yang dimaksud dengan stored procedure? 2. Apa yang dimaksud dengan trigger?

3. Jelaskan beda keduanya dari sisi fungsi dan sintaks yang digunakan dalam pengaktifannya!

3. Praktikum

1. Dari Basis Data Kantin Bersama/Basis Data Akademik yang telah dibuat, buatlah dua kasus:

- Kasus pertama adalah kasus dengan penggunaan stored procedure - Dan kasus kedua adalah kasus dengan penggunaan trigger

(24)

2. Buatlah coding programnya, dan cek hasilnya

4. Pertanyaan dan Tugas

1. Buat kasus baru pada Basisdata yang telah dibuat pada Tugas Modul 1 dan selesaikan dengan membuat STORED PROCEDURE

2. Buat kasus baru pada Basisdata yang telah dibuat pada Tugas Modul 1 dan selesaikan dengan membuat TRIGGER

3. Cek hasilnya, dan buat laporan mengenai:

- Isi data dari tiap-tiap tabel dalam basis data - Kasus yang akan dibuat

- Sintaks SQL yang dibuat

- Hasil perintah SQL yang telah dijalankan 5. Daftar Pustaka

Noor Ifada, Bahan Ajar Basisdata2, Teknik Informatika, Universitas Trunojoyo Madura, 2012.

van der Lans, R. “Introduction to SQL, Mastering Relational Database Language”, (2nd Edition), Addison-Wesley, 2007.

Hinz, S., DuBois, P., Stephens, J., Olson, P., and Russell, J.. “MySQL 5.0 Reference Manual”, URL: http://downloads.mysql.com/docs/refman-5.0-en.a4.pdf

Referensi

Dokumen terkait

Usaha penangkapan ikan dengan alat tangkap cantrang ini dapat digolongkan pada tahapan produksi yang kedua, karena dengan penambahan input masih mampu meningkatkan produksi

NO MAHASISWA TIM PENGUJI JUDUL TUGAS AKHIR WAKTU RUANG HARI/TGL Tanjung Winoko Pembimbing 1 : Kusumo Dradjad Sutjahjo, S.T., M.Si.. Pembimbing 2

Pameran bersama “MERTI BUMI”di kampong seni Lerep Ungaran Jawa Tengah Pameran seni rupa Ulang Tahun SMKN 3 ke 45 Di Taman Budaya Jogjakarta Pameran bersama dalam rangka Ulang

Hasil penelitian ini menunjukkan bahwa sebagian besar 27 (67,5%) responden mempunyai sikap yang tidak baik tentang pengaturan makan pada penderita DM tipe 2.. Sikap

Kenakalan Remaja merupakan tindakan melanggar peraturan atau hukum yang dilakukan oleh anak yang berada pada masa remaja.Perilaku yang ditampilkan dapat bermacam-macam, mulai

Menurut Mani dan Maybury (Mani and Maybury, 1999), ringkasan adalah mengambil isi yang paling penting dari sumber informasi yang kemudian menyajikan kembali dalam bentuk yang

dan sisa asset dalam proses likuidasi perusahaan. Pada dasarnya ada dua jenis keuntungan yang diperoleh investor dengan.. membeli saham, yaitu deviden dan Capital Gain

Kelompok I terdiri dari 2 varietas (Adira IV dan Adira I) dan 1 klon (BIC 369) berproduksi lebih tinggi dari klon lokal II baik pada lokasi Pleihari maupun KP Banjarbaru..