Anda di halaman 1dari 43

Cara Bikin Cursor di Visual Foxpro :

CREATE CURSOR Temp2 (No int(10), ItemCode c(20), NamaItem c(80), Satuan c(10), QtyBeli n(10,2),;
Harga n(16,2), Persen n(10,2), Jumlah n(16,2), Expired D(8), QtyShp n(10,2),;
stnbeli c(10), keterangan c(100), qtyord n(10,2), QtyBb n(10,2), QtyBo n(10,2))
Taraaa.. udah jadi
sekarang tinggal kita pakai aja tabel itu layaknya tabel lokal.
gunakan saja :
SELE Temp2
atau
USE Temp2

Kali ini saya akan memberi contoh membuat sebuah Trigger Sederhana menggunakan PostgreSQL
Pertama kita akan buat tabel terlebih dahulu, kita akan buat tabel stokbarang, dan pembelian.
Membuat tabel stokbarang
CREATE TABLE stokbarang(
kode_barang character varying(20) NOT NULL,
nama_barang character varying(30),
stok_ketersediaan integer,
CONSTRAINT stokbarang_pkey PRIMARY KEY (kode_barang)
)WITH (
OIDS=FALSE
);
ALTER TABLE stokbarang OWNER TO postgres;
Membuat table pembelian
CREATE TABLE pembelian(
kode_barang character varying(20),
jumlah_beli integer,
CONSTRAINT pembelian_kode_barang_fkey FOREIGN KEY (kode_barang)
REFERENCES stokbarang (kode_barang) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)WITH (
OIDS=FALSE
);
ALTER TABLE pembelian OWNER TO postgres;
pada 2 tabel diatas sudah di relasikan, kemudian kita buat functionnya.

CREATE OR REPLACE FUNCTION update_stok()


RETURNS trigger AS
$BODY$
begin
update
stokbarang
set
stok_ketersediaan=stok_ketersediaan-new.jumlah_beli
kode_barang=new.kode_barang;
return new;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION update_stok() OWNER TO postgres;
akan saya jelaskan sedikit, isi function diatas .
update
stokbarang
set
stok_ketersediaan=stok_ketersediaan-new.jumlah_beli
kode_barang=new.kode_barang;
return new;

where

where

mengupdate tabel stokbarang pada kolom stok_ketersediaan=( stok_ketersediaan dikurangi


jumlah_beli ) nilai jumlah beli diambil saat mengimputkan jumlah _beli pada table pembelian, karena
trigger ini dipanggil setelah mengisi data pada tabel pembelian.
Kemudian kita masukkan data stokbarang.
insert into stokbarang values('10023','sikat gigi',50)
insert into stokbarang values('10024','sabun mandi',50)
Membuat trigger dengan nama update_stok
CREATE TRIGGER update_stok
AFTER INSERT ON pembelian
FOR EACH ROW
EXECUTE PROCEDURE update_stok();
maksud dari query diatas, membuat trigger namanya update_stok dan akan dijalankan setelah
proses pemasukan/insert di tabel pembelian, isi dari trigger ini adalah memanggil function
update_stok(); yang sudah kita buat tadi.
Untuk lebih jelasnya lihat contoh proses berikut ini.

Terlihat stok barang yang telah kita masukkan tadi, dengan kode_barang, nama_barang, dan
stok_barang. kedua barang mempunyai stok yang masih utuh ( 50 ).
Selanjutnya masukkan data ke tabel pembelian, kita misalkan ada pembelian membeli barang yang
( kode_barangnya 10023 dan jumlah barang yang dibeli 5 ) , setelah proses insert berhasil maka
trigger akan otomatis berjalan ( memanggil function yang telah dibuat tadi ) , cara kerja function
( mengurangi stok ) dapat dilihat pada penjelasan diatas.

Setelah itu kita lihat apakah trigger kita berhasil memanggil function untuk mengpdate stokbarang
dengan cara ketik SELECT * from stokbarang .

Kita lihat stok_ketersediaan pada kode_barang =10023 berubah menjadi 45 ( hasil dari 50 -5 )
trigger berhasil..

Materi Trigger
Membuat tabel log
rb1=# create table log (process varchar(10), date date);
CREATE TABLE
rb1=# \d log

Table "public.log"
Column |

Type

| Modifiers

---------+-----------------------+----------process | character varying(10) |


date

a.

| date

Trigger insert data di table product


Pertama buka text editor gedit
Kemudian ketikan sintak sql di dalamnya, sintaknya adalah sebagai berikut :
create or replace function ins_product() returns trigger as $$
begin insert into log values('insert',now());
return new;
end $$
language plpgsql;
create trigger ins_data after insert on product for each row execute procedure
ins_product();

Kemdian simpan dengan nama ins_product.sql


Kemudian jalankan fungsi triggernya dengan langkah masuk ke dalam postgresql dan ketikan
perintah :
\i /home/administrator/Desktop/namafolder/ins_product.sql
CREATE FUNCTION
CREATE TRIGGER

b. Trigger update data di table product


Langkah seperti sebelumnya
Kemudian ketik :
create or replace function up_product() returns trigger as $$
begin
insert into log values ('update',now());
return new;
end $$
language plpgsql;

create trigger up_data after update on product for each row execute procedure
up_product();

Kemudian simpan dengan nama up_product.sql


Kemudian jalankan fungsi triggernya dengan langkah masuk ke dalam postgresql dan ketikan
perintah :
\i /home/administrator/Desktop/namafolder/up_product.sql
CREATE FUNCTION
CREATE TRIGGER

c.

Trigger delete data di table product


Langkah seperti sebelumnya
Kemudian ketik :
create or replace function del_product() returns trigger as $$
begin
insert into log values('delete',now());
return new;
end $$
language plpgsql;
create trigger del_data after delete on product for each row execute procedure
del_product();

Kemudian simpan dengan nama del_product.sql


Kemudian jalankan fungsi triggernya dengan langkah masuk ke dalam postgresql dan ketikan
perintah :
\i /home/administrator/Desktop/namafolder/del_product.sql
CREATE FUNCTION
CREATE TRIGGER

kemudian jalankan perintah insert,update atau delete;


insert into product values ('001','samsung galaxy pocket');
INSERT 0 1

lihat tabel log;

rb1=# select*from log;


process |

date

---------+-----------insert | 2013-10-23
(1 row)

CREATE TABLE emp (


empname text,
salary integer,
last_date timestamp,
last_user text
);
CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
BEGIN
-- Check that empname and salary are given
IF NEW.empname IS NULL THEN
RAISE EXCEPTION 'empname cannot be null';
END IF;
IF NEW.salary IS NULL THEN
RAISE EXCEPTION '% cannot have null salary', NEW.empname;
END IF;

-- Who works for us when she must pay for it?


IF NEW.salary < 0 THEN
RAISE EXCEPTION '% cannot have a negative salary', NEW.empname;
END IF;

-- Remember who changed the payroll when


NEW.last_date := current_timestamp;
NEW.last_user := current_user;
RETURN NEW;
END;
$emp_stamp$ LANGUAGE plpgsql;

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp


FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

penerapan fungsi agregat pada postgressql


A. Rangkuman Materi
a.

Join
rb1=> select product.product_name,price_product.price from product left join
price_product on product.product_id=price_product.product_id;
product_name

| price

-------------------------+-------monitor acer 14 inch

| 450000

monitor acer 14 inch

| 460000

monitor acer 14 inch

| 475000

monitor acer 20 inch

| 655000

monitor acer 20 inch

| 555000

monitor acer 20 inch

| 575000

monitor samsung 21 inch | 335000


monitor samsung 21 inch | 350000
monitor samsung 21 inch | 360000
modem sierra 101

| 450000

modem sierra 101

| 420000

modem sierra 101

| 120000

modem sierra 102

| 120000

modem sierra 102

| 150000

modem sierra 102

| 170000

modem huawei AC123

| 170000

modem huawei AC123

| 180000

printer canon mp999

| 180000

printer canon mp999

| 190000

printer canon mp278

| 110000

printer canon mp278

| 120000

modem sierra 103

(22 rows)

B. fungsi string
a.

left
rb1=> select product_name ,left(product_name,5) as hasilpotongkiri from product;
product_name

| hasilpotongkiri

-------------------------+----------------monitor acer 14 inch

| monit

monitor acer 20 inch

| monit

modem sierra 101

| modem

modem sierra 102

| modem

modem sierra 103

| modem

modem huawei AC123


printer canon mp278

| modem
| print

monitor samsung 21 inch | monit


printer canon mp999

| print

(9 rows)

b. right
rb1=> select product_name ,right(product_name,4) as hasilpotongkanan from product;
product_name

| hasilpotongkanan

-------------------------+-----------------monitor acer 14 inch

| inch

monitor acer 20 inch

| inch

modem sierra 101

| 101

modem sierra 102

| 102

modem sierra 103

| 103

modem huawei AC123


printer canon mp278

| C123
| p278

monitor samsung 21 inch | inch


printer canon mp999

| p999

(9 rows)

c.

lower
rb1=> select product_name ,lower(product_name) as hasillower from product;
product_name

hasillower

-------------------------+------------------------monitor acer 14 inch

| monitor acer 14 inch

monitor acer 20 inch

| monitor acer 20 inch

modem sierra 101

| modem sierra 101

modem sierra 102

| modem sierra 102

modem sierra 103

| modem sierra 103

modem huawei AC123


printer canon mp278

| modem huawei ac123


| printer canon mp278

monitor samsung 21 inch | monitor samsung 21 inch


printer canon mp999

| printer canon mp999

(9 rows)

d. upper
rb1=> select product_name ,upper(product_name) as hasilupper from product;
product_name

hasilupper

-------------------------+------------------------monitor acer 14 inch

| MONITOR ACER 14 INCH

monitor acer 20 inch

| MONITOR ACER 20 INCH

modem sierra 101

| MODEM SIERRA 101

modem sierra 102

| MODEM SIERRA 102

modem sierra 103

| MODEM SIERRA 103

modem huawei AC123


printer canon mp278

| MODEM HUAWEI AC123


| PRINTER CANON MP278

monitor samsung 21 inch | MONITOR SAMSUNG 21 INCH


printer canon mp999

| PRINTER CANON MP999

(9 rows)

e.

substring
rb1=> select product_name ,substring(product_name,10) as hasilsubstring from
product;
product_name

| hasilsubstring

-------------------------+---------------monitor acer 14 inch

| cer 14 inch

monitor acer 20 inch

| cer 20 inch

modem sierra 101

| rra 101

modem sierra 102

| rra 102

modem sierra 103

| rra 103

modem huawei AC123


printer canon mp278

| wei AC123
| anon mp278

monitor samsung 21 inch | amsung 21 inch


printer canon mp999

| anon mp999

(9 rows)
rb1=> select product_name ,substring(product_name,2,5) as hasilsubstring from
product;
product_name

| hasilsubstring

-------------------------+---------------monitor acer 14 inch

| onito

monitor acer 20 inch

| onito

modem sierra 101

| odem

modem sierra 102

| odem

modem sierra 103

| odem

modem huawei AC123


printer canon mp278

| odem
| rinte

monitor samsung 21 inch | onito


printer canon mp999

| rinte

(9 rows)

f.

ascii
rb1=> select product_name ,substring(product_name,0,2) as
hasilsubstring,ascii(substring(product_name,0,2)) as hasilascii from product;
product_name

| hasilsubstring | hasilascii

-------------------------+----------------+-----------monitor acer 14 inch

|m

109

monitor acer 20 inch

|m

109

modem sierra 101

|m

109

modem sierra 102

|m

109

modem sierra 103

|m

109

modem huawei AC123


printer canon mp278

|m
|p

|
|

monitor samsung 21 inch | m


printer canon mp999

|p

112
|

109
109
112

(9 rows)

g. concat
rb1=> select product_id,concat(stock)from price_product where product_id='pr1';
product_id | concat
------------+-------pr1

| 40

pr1

| 60

pr1

| 60

(3 rows)

h. group concat array

rb1=> select product_id,array_to_string (array(select price from price_product where


product_id='pr1'order by date),',')as groupconcat from price_product where
product_id='pr1'order by date),',')as groupconcat from price_product where
product_id='pr1' group by product_id;
product_id |

groupconcat

------------+---------------------pr1

| 450000,460000,475000

(1 row)

C. fungsi date
a.

current date
rb1=> select
current_date;
date
-----------2013-10-09
(1 row)

b. current Time
rb1=> select current_time;
timetz
-------------------15:56:45.025454+07
(1 row)

c.

current times tamp


rb1=> select current_timestamp;

now
------------------------------2013-10-09 15:58:04.497006+07
(1 row)
d. now
rb1=> select now();
now
------------------------------2013-10-09 15:58:14.453479+07
(1 row)

Latihan .
1. tampilkan semua data product(product_id,product_name,price)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id;
product_id |

product_name

| price

------------+-------------------------+--------

pr1

| monitor acer 14 inch

| 450000

pr1

| monitor acer 14 inch

| 460000

pr1

| monitor acer 14 inch

| 475000

pr2

| monitor acer 20 inch

| 655000

pr2

| monitor acer 20 inch

| 555000

pr2

| monitor acer 20 inch

| 575000

pr3

| monitor samsung 21 inch | 335000

pr3

| monitor samsung 21 inch | 350000

pr3

| monitor samsung 21 inch | 360000

pr4

| modem sierra 101

| 450000

pr4

| modem sierra 101

| 420000

pr4

| modem sierra 101

| 120000

pr5

| modem sierra 102

| 120000

pr5

| modem sierra 102

| 150000

pr5

| modem sierra 102

| 170000

pr7

| modem huawei AC123

| 170000

pr7

| modem huawei AC123

| 180000

pr8

| printer canon mp999

| 180000

pr8

| printer canon mp999

| 190000

pr9

| printer canon mp278

| 110000

pr9

| printer canon mp278

| 120000

| modem sierra 103

(22 rows)
2. tampilkan harga product dengan merek modem sierra
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id
where product_name='modem sierra 101';
product_id | product_name | price
------------+------------------+-------pr4

| modem sierra 101 | 450000

pr4

| modem sierra 101 | 420000

pr4

| modem sierra 101 | 120000

(3 rows)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id
where product_name='modem sierra 102;
product_id | product_name | price
------------+------------------+-------pr5

| modem sierra 102 | 120000

pr5

| modem sierra 102 | 150000

pr5

| modem sierra 102 | 170000

(3 rows)

3.tampilkan nama product ,stok, harga dan tanggal >150000


rb1=> select product.product_name,price_product.stock,price_product.price,price_product.date
from product left join price_product on product.product_id=price_product.
price_product.product_id where price>150000;
product_name

| stock | price |

date

-------------------------+-------+--------+-----------monitor acer 14 inch

| 40 | 450000 | 2012-04-04

monitor acer 14 inch

| 60 | 460000 | 2012-05-14

monitor acer 14 inch

| 60 | 475000 | 2012-05-20

monitor acer 20 inch

| 20 | 655000 | 2012-04-05

monitor acer 20 inch

| 80 | 555000 | 2012-05-05

monitor acer 20 inch

| 30 | 575000 | 2012-05-24

monitor samsung 21 inch | 110 | 335000 | 2012-04-24


monitor samsung 21 inch | 110 | 350000 | 2012-05-03
monitor samsung 21 inch | 110 | 360000 | 2012-06-04
modem sierra 101

| 10 | 450000 | 2012-04-01

modem sierra 101

| 40 | 420000 | 2012-06-01

modem sierra 102

| 10 | 170000 | 2012-07-14

modem huawei AC123

| 10 | 170000 | 2012-07-14

modem huawei AC123

5 | 180000 | 2012-08-24

printer canon mp999

15 | 180000 | 2012-07-17

printer canon mp999

55 | 190000 | 2012-08-17

(16 rows)
4. tampilkan semua nama barang yang mempunyai harga <400000
rb1=> select product.product_name,price_product.price from product left join price_product on
product.product_id=price_product.product_id where price<400000;
product_name

| price

-------------------------+-------monitor samsung 21 inch | 335000


monitor samsung 21 inch | 350000
monitor samsung 21 inch | 360000
modem sierra 101

| 120000

modem sierra 102

| 120000

modem sierra 102

| 150000

modem sierra 102

| 170000

modem huawei AC123

| 170000

modem huawei AC123

| 180000

printer canon mp999

| 180000

printer canon mp999

| 190000

printer canon mp278

| 110000

printer canon mp278

| 120000

(13 rows)

Latihan..
1.
rb1=> select product_id,date,stock from price_product where
product_id='pr1';
product_id |

date | stock

------------+------------+------pr1

| 2012-04-04 |

40

pr1

| 2012-05-14 |

60

pr1

| 2012-05-20 |

60

(3 rows)
2.
rb1=> select product.product_name,price_product.date,price_product.stock from product left
join price_product on product.product_id=price_product.product_id where
product_name='monitor acer 14 inch';
product_name

| date

| stock

----------------------+------------+------monitor acer 14 inch | 2012-04-04 |

40

monitor acer 14 inch | 2012-05-14 |

60

monitor acer 14 inch | 2012-05-20 |

60

(3 rows)
3.
rb1=> select product_name,array_to_string (array(select price from price_product where
product_id='pr1'order by date),',')as stok from product where product_name='monitor acer 14
inch' group by product_id;
product_name

stok

----------------------+---------------------monitor acer 14 inch | 450000,460000,475000


(1 row)

4.
rb1=> select product_name,array_to_string(array(select date from price_product where
product_id='pr8' order by date),',')as tanggal,array_to_string (array(select price from
price_product where product_id='pr8'order by date),',')as stok from product where
product_name='printer canon mp999' group by product_id;
product_name

tanggal

stok

---------------------+-----------------------+--------------printer canon mp999 | 2012-07-17,2012-08-17 | 180000,190000

(1 row)

postgres=# \c rb1;
You are now connected to database "rb1" as user "postgres".
rb1=# create schema data;
CREATE SCHEMA
rb1=# alter schema data owner to dani;
ALTER SCHEMA
rb1=# \q
administrator@administrator-desktop:~$ psql rb1 dani
psql.bin (9.2.4)
Type "help" for help.
rb1=> show search_path ;
search_path
---------------"$user",public
(1 row)
rb1=> set search_path to data;
SET
rb1=> show search_path ;
search_path
------------data
(1 row)
rb1=> create table data.product (product_id char(3),product_name varchar(50));
CREATE TABLE
rb1=> \d public.product;
Table "public.product"
Column |
Type
| Modifiers
--------------+-----------------------+----------product_id | character(3)
| not null
product_name | character varying(30) | not null
Indexes:
"product_pkey" PRIMARY KEY, btree (product_id)
Referenced by:
TABLE "public.price_product" CONSTRAINT "price_product_product_id_fkey" FOREIGN KEY
(product_id) REFERENCES public.product(product_id)
Triggers:
del_data AFTER DELETE ON public.product FOR EACH ROW EXECUTE PROCEDURE
public.del_product()
ins_data AFTER INSERT ON public.product FOR EACH ROW EXECUTE PROCEDURE
public.ins_product()
up_data AFTER UPDATE ON public.product FOR EACH ROW EXECUTE PROCEDURE

public.up_product()
rb1=> \d data.product;
Table "data.product"
Column |
Type
| Modifiers
--------------+-----------------------+----------product_id | character(3)
|
product_name | character varying(50) |
rb1=> insert into data.product values ('002','mouse 111');
INSERT 0 1
rb1=> select *from data.product;
product_id | product_name
------------+-------------002
| mouse 111
(1 row)

latihan
administrator@administrator-desktop:~$ psql
psql.bin (9.2.4)
Type "help" for help.
postgres=# \c rb1
You are now connected to database "rb1" as user "postgres".
rb1=# create schema mydata;
CREATE SCHEMA
rb1=# alter schema mydata owner to dani;
ALTER SCHEMA
rb1=# show search_path ;
search_path
---------------"$user",public
(1 row)
rb1=# set search_path to mydata;
SET
rb1=# show search_path ;
search_path
------------mydata
(1 row)
rb1=# create table mydata.price_product(product_id char(3),price int,stock int,date date);
CREATE TABLE

rb1=# \d public.price_product;
Table "public.price_product"
Column | Type | Modifiers
------------+--------------+----------product_id | character(3) |
price
| integer
|
stock
| integer
|
date
| date
|
Foreign-key constraints:
"price_product_product_id_fkey" FOREIGN KEY (product_id) REFERENCES
public.product(product_id)
Triggers:
delete_data AFTER INSERT ON public.price_product FOR EACH ROW EXECUTE
PROCEDURE public.delete_price()
insert_data AFTER INSERT ON public.price_product FOR EACH ROW EXECUTE PROCEDURE
public.insert_price()
update_data AFTER INSERT ON public.price_product FOR EACH ROW EXECUTE
PROCEDURE public.update_price()
rb1=# \d mydata.price_product ;
Table "mydata.price_product"
Column | Type | Modifiers
------------+--------------+----------product_id | character(3) |
price
| integer
|
stock
| integer
|
date
| date
|
\d: extra argument ";" ignored
rb1=# insert into mydata.price_product values ('001',100000,50,'2012-09-21');
INSERT 0 1
rb1=# insert into mydata.price_product values ('002',200000,90,'2012-09-24');
INSERT 0 1
rb1=# insert into mydata.price_product values ('003',400000,40,'2012-12-24');
INSERT 0 1
rb1=# insert into mydata.price_product values ('004',300000,70,'2012-02-14');
INSERT 0 1
rb1=# insert into mydata.price_product values ('005',900000,10,'2012-05-24');
INSERT 0 1
rb1=# select * from mydata.price_product ;
product_id | price | stock | date
------------+--------+-------+-----------001
| 100000 | 50 | 2012-09-21
002
| 200000 | 90 | 2012-09-24

003
| 400000 | 40 | 2012-12-24
004
| 300000 | 70 | 2012-02-14
005
| 900000 | 10 | 2012-05-24
(5 rows)
-----------------------------------------------------------

1. Membuat database dengan Query analyzer


Bukalah query analyzer pada SQL Server 2000 pada menu Tools pilih SQL Query
Analyzer. Kemudian ketikan perintah berikut:
CREATE DATABASE DBTOKO
2. Membuat Tabel BARANG
Perintah untuk membuat table barang yaitu:
CREATE TABLE BARANG
(KODE_BRG NVARCHAR (15),
NAMA_BRG NVARCHAR (50),
JMLH_BRG NUMERIC (9),
SATUAN NVARCHAR (20)
PRIMARY KEY (KODE_BRG))
3. Memasukkan Data dengan store procedure dan menjalankannya di sql query analyzer
Untuk membuat store procedure memasukkan data yaitu klik kanan pada Store
Procedure kemudian klik New Store Procedure. Ketikkan perintah
CREATE PROCEDURE ENTRY @KODE NVARCHAR (15), @NAMA NVARCHAR
(50),@JMLH NUMERIC (9), @SAT NVARCHAR (20) AS
INSERT INTO BARANG (KODE_BRG, NAMA_BRG, JMLH_BRG, SATUAN) VALUES
(@KODE, @NAMA, @JMLH, @SAT)
GO
Untuk menjalankan store procedure masukkan perintah berikut ke new SQL Analyzer
EXEC ENTRY 'AN001','CITRA LOTION','80','BOTOL'.
Dimana ENTRY adalah nama Store Procedure.
4. Menampilkan Data
Buat store procedure TAMPIL dengan perintah seperti di bawah ini:
CREATE PROCEDURE TAMPIL @KODE NVARCHAR (20) AS
SELECT*FROM BARANG WHERE KODE_BRG=@KODE
GO
Jalankan perintah tersebut di SQL Query Analyzer dengan mengetikkan perintah:
EXEC TAMPIL 'AN001'
Dimana TAMPIL adalah nama Store Procedure

MENERAPKAN STORE PROCEDURE DI MICROSOFT VISUAL BASIC 6.0


1. Sebelum kita membuat form, Klik Project -> Reference -> Microsoft ActiveX Data
Objects 2.0 library. Buatlah tampilan form seperti dibawah ini:

Keterangan:
TextBox
Text1 untuk kode barang
Text2 untuk nama barang
Text3 untuk jumlah barang
Text4 untuk satuan
CommandButton
Command1 untuk menampilkan data
Command2 untuk menyimpan data
Command3 untuk keluar
Command4 untuk ulang

2. Setelah membuat form seperti di atas, kita masukkan koding yang ada di bawah ini:
Untuk mengkosongkan textbox
Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""

End Sub
Private Sub Form_Load()
KONEKSI.Open
"Provider=MSDASQL.1;Persist
Source=ODBARANG;Initial Catalog=DBTOKO"

Security

Info=False;Data

End Sub
Untuk menampilkan data
Private Sub Command1_Click()
Dim PARAMETER1 As New ADODB.PARAMETER
Dim COMAND1 As New ADODB.Command
Dim RS1 As New ADODB.Recordset
With COMAND1
.ActiveConnection = KONEKSI
.CommandType = adCmdStoredProc
.CommandText = "TAMPIL"
Set PARAMETER1 = .CreateParameter("KODE_BRG", adVarChar, adParamInput,
20, Text1.Text)
.Parameters.Append PARAMETER1
Set RS1 = .Execute
End With
Text2.Text = RS1.Fields("NAMA_BRG")
Text3.Text = RS1.Fields("JMLH_BRG")
Text4.Text = RS1.Fields("SATUAN")
End Sub
Untuk menginputkan/menyimpan data
Private Sub Command2_Click()
Dim PARAMETER As New ADODB.PARAMETER
Dim COMAND As New ADODB.Command
Dim RS As New ADODB.Recordset
With COMAND
.ActiveConnection = KONEKSI
.CommandType = adCmdStoredProc
.CommandText = "ENTRY"

Set PARAMETER = .CreateParameter("KODE_BRG", adVarChar, adParamInput, 20,


Text1.Text)
.Parameters.Append PARAMETER
KONEKSI.Execute "ENTRY '" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" &
Text4.Text & "'"
X = MsgBox("DATA TELAH TERSIMPAN", vbInformation, "INFORMASI")
End With
End Sub

Private Sub Command3_Click()


End
End Sub
3. Setelah selesai, kita coba untuk menjalankannya dengan memasukkan / menyimpan
data, misalkan seperti gambar di bawah ini:

4. Kita dapat melihat apakah data tersebut sudah tersimpan atau belum dengan membuka
database DBTOKO dengan table BARANG diSQL Server.

5. Menjalankan untuk menampilkan data, misalkan data yang dicari AN100.Setelah


diketikkan di Kode Barang, kemudian klik tombol MENAMPILKAN DATA. Maka akan
terlihat seperti di bawah ini:

Fungsi yang terdapat pada POSTGRESQL


ini adalah beberapa sintak yang terdapat pada database manajemen sistem POSTGRESQL yang saya
dapat pada praktikum ketika saya menempuh mata kuliah pemrograman SQL

A. Rangkuman Materi
a. Join
rb1=> select product.product_name,price_product.price from product left join
price_product on product.product_id=price_product.product_id;
product_name

| price

-------------------------+-------monitor acer 14 inch

| 450000

monitor acer 14 inch

| 460000

monitor acer 14 inch

| 475000

monitor acer 20 inch

| 655000

monitor acer 20 inch

| 555000

monitor acer 20 inch

| 575000

monitor samsung 21 inch | 335000


monitor samsung 21 inch | 350000
monitor samsung 21 inch | 360000
modem sierra 101

| 450000

modem sierra 101

| 420000

modem sierra 101

| 120000

modem sierra 102

| 120000

modem sierra 102

| 150000

modem sierra 102

| 170000

modem huawei AC123

| 170000

modem huawei AC123

| 180000

printer canon mp999

| 180000

printer canon mp999

| 190000

printer canon mp278

| 110000

printer canon mp278

| 120000

modem sierra 103

(22 rows)

B. fungsi string
a. left
rb1=> select product_name ,left(product_name,5) as hasilpotongkiri from product;
product_name

| hasilpotongkiri

-------------------------+----------------monitor acer 14 inch

| monit

monitor acer 20 inch

| monit

modem sierra 101

| modem

modem sierra 102

| modem

modem sierra 103

| modem

modem huawei AC123


printer canon mp278

| modem
| print

monitor samsung 21 inch | monit


printer canon mp999
(9 rows)

| print

b. right
rb1=> select product_name ,right(product_name,4) as hasilpotongkanan from product;
product_name

| hasilpotongkanan

-------------------------+-----------------monitor acer 14 inch

| inch

monitor acer 20 inch

| inch

modem sierra 101

| 101

modem sierra 102

| 102

modem sierra 103

| 103

modem huawei AC123


printer canon mp278

| C123
| p278

monitor samsung 21 inch | inch


printer canon mp999

| p999

(9 rows)

c.

lower
rb1=> select product_name ,lower(product_name) as hasillower from product;
product_name

hasillower

-------------------------+------------------------monitor acer 14 inch

| monitor acer 14 inch

monitor acer 20 inch

| monitor acer 20 inch

modem sierra 101

| modem sierra 101

modem sierra 102

| modem sierra 102

modem sierra 103

| modem sierra 103

modem huawei AC123


printer canon mp278

| modem huawei ac123


| printer canon mp278

monitor samsung 21 inch | monitor samsung 21 inch


printer canon mp999

| printer canon mp999

(9 rows)

d. upper
rb1=> select product_name ,upper(product_name) as hasilupper from product;
product_name

hasilupper

-------------------------+------------------------monitor acer 14 inch

| MONITOR ACER 14 INCH

monitor acer 20 inch

| MONITOR ACER 20 INCH

modem sierra 101

| MODEM SIERRA 101

modem sierra 102

| MODEM SIERRA 102

modem sierra 103

| MODEM SIERRA 103

modem huawei AC123


printer canon mp278

| MODEM HUAWEI AC123


| PRINTER CANON MP278

monitor samsung 21 inch | MONITOR SAMSUNG 21 INCH


printer canon mp999

| PRINTER CANON MP999

(9 rows)

e.

substring
rb1=> select product_name ,substring(product_name,10) as hasilsubstring from
product;
product_name

| hasilsubstring

-------------------------+---------------monitor acer 14 inch

| cer 14 inch

monitor acer 20 inch

| cer 20 inch

modem sierra 101

| rra 101

modem sierra 102

| rra 102

modem sierra 103

| rra 103

modem huawei AC123


printer canon mp278

| wei AC123
| anon mp278

monitor samsung 21 inch | amsung 21 inch


printer canon mp999

| anon mp999

(9 rows)
rb1=> select product_name ,substring(product_name,2,5) as hasilsubstring from
product;
product_name

| hasilsubstring

-------------------------+---------------monitor acer 14 inch

| onito

monitor acer 20 inch

| onito

modem sierra 101

| odem

modem sierra 102

| odem

modem sierra 103

| odem

modem huawei AC123


printer canon mp278

| odem
| rinte

monitor samsung 21 inch | onito


printer canon mp999

| rinte

(9 rows)

f.

ascii
rb1=> select product_name ,substring(product_name,0,2) as
hasilsubstring,ascii(substring(product_name,0,2)) as hasilascii from product;
product_name

| hasilsubstring | hasilascii

-------------------------+----------------+-----------monitor acer 14 inch

|m

109

monitor acer 20 inch

|m

109

modem sierra 101

|m

109

modem sierra 102

|m

109

modem sierra 103

|m

109

modem huawei AC123


printer canon mp278

|m
|p

|
|

monitor samsung 21 inch | m


printer canon mp999

|p

112
|

109
109
112

(9 rows)

g. concat
rb1=> select product_id,concat(stock)from price_product where product_id='pr1';
product_id | concat
------------+-------pr1

| 40

pr1

| 60

pr1

| 60

(3 rows)

h. group concat array


rb1=> select product_id,array_to_string (array(select price from price_product where
product_id='pr1'order by date),',')as groupconcat from price_product where
product_id='pr1'order by date),',')as groupconcat from price_product where
product_id='pr1' group by product_id;
product_id |

groupconcat

------------+----------------------

pr1

| 450000,460000,475000

(1 row)

C. fungsi date
a. current date
rb1=> select
current_date;
date
-----------2013-10-09
(1 row)

b. current Time
rb1=> select current_time;
timetz
-------------------15:56:45.025454+07
(1 row)

c.

current times tamp


rb1=> select current_timestamp;
now
------------------------------2013-10-09 15:58:04.497006+07
(1 row)

d. now
rb1=> select now();
now
------------------------------2013-10-09 15:58:14.453479+07
(1 row)

Latihan .
1. tampilkan semua data product(product_id,product_name,price)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id;
product_id |
product_name
| price
------------+-------------------------+-------pr1
| monitor acer 14 inch | 450000
pr1
| monitor acer 14 inch | 460000
pr1
| monitor acer 14 inch | 475000
pr2
| monitor acer 20 inch | 655000
pr2
| monitor acer 20 inch | 555000
pr2
| monitor acer 20 inch | 575000
pr3
| monitor samsung 21 inch | 335000
pr3
| monitor samsung 21 inch | 350000
pr3
| monitor samsung 21 inch | 360000
pr4
| modem sierra 101
| 450000
pr4
| modem sierra 101
| 420000
pr4
| modem sierra 101
| 120000
pr5
| modem sierra 102
| 120000
pr5
| modem sierra 102
| 150000

pr5
pr7
pr7
pr8
pr8
pr9
pr9

| modem sierra 102


| 170000
| modem huawei AC123
| 170000
| modem huawei AC123
| 180000
| printer canon mp999 | 180000
| printer canon mp999 | 190000
| printer canon mp278 | 110000
| printer canon mp278 | 120000
| modem sierra 103
|
(22 rows)
2. tampilkan harga product dengan merek modem sierra
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id
where product_name='modem sierra 101';
product_id | product_name | price
------------+------------------+-------pr4
| modem sierra 101 | 450000
pr4
| modem sierra 101 | 420000
pr4
| modem sierra 101 | 120000
(3 rows)
rb1=> select price_product.product_id,product.product_name,price_product.price from product
left join price_product on product.product_id=price_product.product_id
where product_name='modem sierra 102;
product_id | product_name | price
------------+------------------+-------pr5
| modem sierra 102 | 120000
pr5
| modem sierra 102 | 150000
pr5
| modem sierra 102 | 170000
(3 rows)

3.tampilkan nama product ,stok, harga dan tanggal >150000


rb1=> select product.product_name,price_product.stock,price_product.price,price_product.date
from product left join price_product on product.product_id=price_product.
price_product.product_id where price>150000;

product_name
| stock | price | date
-------------------------+-------+--------+-----------monitor acer 14 inch | 40 | 450000 | 2012-04-04
monitor acer 14 inch | 60 | 460000 | 2012-05-14
monitor acer 14 inch | 60 | 475000 | 2012-05-20
monitor acer 20 inch | 20 | 655000 | 2012-04-05
monitor acer 20 inch | 80 | 555000 | 2012-05-05
monitor acer 20 inch | 30 | 575000 | 2012-05-24
monitor samsung 21 inch | 110 | 335000 | 2012-04-24
monitor samsung 21 inch | 110 | 350000 | 2012-05-03
monitor samsung 21 inch | 110 | 360000 | 2012-06-04
modem sierra 101
| 10 | 450000 | 2012-04-01
modem sierra 101
| 40 | 420000 | 2012-06-01
modem sierra 102
| 10 | 170000 | 2012-07-14
modem huawei AC123
| 10 | 170000 | 2012-07-14
modem huawei AC123
| 5 | 180000 | 2012-08-24
printer canon mp999 | 15 | 180000 | 2012-07-17
printer canon mp999 | 55 | 190000 | 2012-08-17
(16 rows)
4. tampilkan semua nama barang yang mempunyai harga <400000
rb1=> select product.product_name,price_product.price from product left join price_product on
product.product_id=price_product.product_id where price<400000;
product_name
| price
-------------------------+-------monitor samsung 21 inch | 335000
monitor samsung 21 inch | 350000
monitor samsung 21 inch | 360000
modem sierra 101
| 120000
modem sierra 102
| 120000
modem sierra 102
| 150000
modem sierra 102
| 170000
modem huawei AC123
| 170000
modem huawei AC123
| 180000
printer canon mp999 | 180000
printer canon mp999 | 190000
printer canon mp278 | 110000

printer canon mp278


(13 rows)

| 120000

Latihan..
1.
rb1=> select product_id,date,stock from price_product where
product_id='pr1';
product_id | date | stock
------------+------------+------pr1
| 2012-04-04 | 40
pr1
| 2012-05-14 | 60
pr1
| 2012-05-20 | 60
(3 rows)
2.
rb1=> select product.product_name,price_product.date,price_product.stock from product left
join price_product on product.product_id=price_product.product_id where
product_name='monitor acer 14 inch';
product_name | date | stock
----------------------+------------+------monitor acer 14 inch | 2012-04-04 | 40
monitor acer 14 inch | 2012-05-14 | 60
monitor acer 14 inch | 2012-05-20 | 60
(3 rows)
3.
rb1=> select product_name,array_to_string (array(select price from price_product where
product_id='pr1'order by date),',')as stok from product where product_name='monitor acer 14
inch' group by product_id;
product_name |
stok
----------------------+---------------------monitor acer 14 inch | 450000,460000,475000
(1 row)

4.

rb1=> select product_name,array_to_string(array(select date from price_product where


product_id='pr8' order by date),',')as tanggal,array_to_string (array(select price from
price_product where product_id='pr8'order by date),',')as stok from product where
product_name='printer canon mp999' group by product_id;
product_name |
tanggal
| stok
---------------------+-----------------------+--------------printer canon mp999 | 2012-07-17,2012-08-17 | 180000,190000
(1 row)

procedure dan trigger mysql

PROCEDURE DAN TRIGGER MYSQL

BERKENALAN DENGAN STORE PROCEDURE DAN TRIGGER


Stored Procedures which allow us to automate or program our way out of many tasks on directly on the
server rather than having to write external scripts to do complex manipulation of data MYSQL
References
Prosedur merupakan program yang ditulis dan dieksekusi langsung dari Engine database. Beberapa
situasi dimana stored procedure sangat bermanfaat :

1.
Pada system yang didalamnya terdapat bermacam-macam platform bahasa
pemrograman, akan tetapi proses yang terjadi pada database harus tetap memiliki
standard yang sama.
2.
Sistem dikerjakan pada lingkungan yang berbeda-beda dengan prioritas
keamanan yang berbeda sehingga diperlukan pembatasan terhadap hak-hak
penggunaan terhadap tabel-tabel tertentu.
3.
Dengan adanya multi koneksi , maka dengan store procedure akan
memberikan performa yang lebih baik karena proses interkoneksi dari luar server
menjadi lebih sedikit.
4.
Programmer gak perlu pusing melihat bertumpuk-tumpuk tabel karena hanya
memakai prosedur yang sudah ada.
Sedangkan trigger merupakan store procedure yang digunakan untuk memicu perubahan pada suatu
tabel sesuai dengan event yang terjadi (insert, delete, update). Trigger dapat digunakan untuk memicu
proses terhadap tabel lain maupun tabel itu sendiri.
Manfaat dari trigger :

1. Pada pemanfaatan program aplikasi multi platform, proses bisnis dari sistem
dapat dibuat langsung dilakukan didatabase sehingga perbedaan interpretasi di
program aplikasi menjadi lebih diminimalisisr
2.

Proses lebih cepat

3. Programmer tinggal ongkang-ongkang kaki karena yang pusing DBAnya


hehehehe..
Contoh tabel dan sampel data untuk coba-coba trigger dan procedure
CREATE TABLE jurusan (
id CHAR(3),
nama VARCHAR(50) NOT NULL,
Constraint pk_jur primary key(id));
CREATE TABLE Mahasiswa (
Nim CHAR(7),
Nama VARCHAR(50) NOT NULL,
Tgl_lahir DATE,
Jn_Kelamin ENUM(L,'P),
jalan VARCHAR(50),
Kota VARCHAR(20),
jurusan varchar(3),
constraint pk_mhs primary key(nim),
constraint fk_mhs_jur foreign key(jurusan) references jurusan(id));
CREATE TABLE Dosen (
Nip CHAR(5),
Nama VARCHAR(50) NOT NULL,
Tgl_lahir DATE,
Jn_Kelamin ENUM(L,'P),
jalan VARCHAR(50),
Kota VARCHAR(20),
jurusan varchar(3),
constraint pk_dsn primary key(nip),
constraint fk_dsn_jur foreign key(jurusan) references jurusan(id));
CREATE TABLE MataKuliah (
Kode_mka CHAR(10) NOT NULL,
Nama VARCHAR(50) NOT NULL,
Semester CHAR(5) NoT NULL,
sks TINYINT NOT NULL,
jenis ENUM(P,W),
dosen char(5),
constraint pk_mka primary key(kode_mka),
constraint fk_mka_dsn foreign key(dosen) references dosen(nip));

CREATE TABLE Prasyarat(


ID_prasyarat int auto_increment,
Kode_prasyarat char(10),
Kode_mka char(10),
Nilai varchar(1),
constraint pk_pra primary key(id_prasyarat),
constraint fk_pra_mka foreign key(kode_mka) references matakuliah(kode_mka),
constraint fk_pra_pra foreign key(kode_prasyarat) references matakuliah(kode_mka));
CREATE TABLEkuliah (
id int(11) NOT NULL auto_increment,
nilai_angka tinyint(4)NULL,
nilai_huruf char(1)NULL,
bobot tinyint(4)NULL,
Th_akademik char(5) NOT NULL,
nim char(7)NULL,
mka char(10)NULL,
constraint pk_klh primary key(id),
constraint fk_klh_mhs foreign key(nim) references mahasiswa(nim),
constraint fk_klh_mka foreign key(nim) references matakuliah(kode_mka));
INSERT INTO jurusan (Id, Nama) VALUES
(J01, Ilmu Komputer),
(J02, Teknologi Informasi),
(J03, Manajemen Informatika);
INSERT INTO Mahasiswa (Nim, Nama, Tgl_lahir, Jn_Kelamin, jalan, Kota, jurusan) VALUES
(0110001, Angga Ramadhan, 1986-05-05, L, Jl. Brigjen Katamso 50, Yogyakarta, J01),
(0110002, Amir syarifudin, 1985-06-20, L, Jl. Ahmad Yani 47, Sleman, J01),
(0110003, Dian Arum Ndalu, 1979-03-14, P, Jl. Kapten Tendean 23, Bantul, J01),
(0110004, Imam Bagus, 1980-05-13, L, Jl. Karangwaru I/3, Magelang, J01),
(0110005, Marlina Zein, 1982-02-01, P, Jl. Batang 108, Yogyakarta, J01),
(0110006, Rahendra Putra, 1986-04-12, L, Jl. Kenari 2A, Sleman, J01), (0110007, Yasinta Priska
Nadia, 1978-04-29, P, Jl. Kertosono 87, Bandung, J01),
(0210001, Vivi Pratami, 1987-03-13, P, Jl. Gambiran 23, Yogyakarta, J02),
(0210002, Yuanita Tiara Reni, 1985-06-21, P, Jl. Mahameru 46, Jakarta, J02),
(0210003, Yusuf Nizar, 1978-09-23, L, Jl. Colombo, Yogyakarta, J02),
(0210004, Imelda Nurinda, 1984-08-12, P, Jl. Antasari 55, Medan, J02),
(0210005, Khomaruzaman, 1982-10-26, L, Jl. Wachid Hasyim 47, Makasar, J02),
(0210006, Danis Mariaman, 1979-12-18, L, Jl. Warungboto 05, Yogyakarta, J02),
(0210007, Ardhi Nugroho, 1986-09-16, L, Jl. Wonosari 63, Bantul, J02),
(0310001, Rima Nurasmi, 1987-03-03, P, Jl. Panggang Indah 108, Gunung Kidul, J03),
(0310002, Reza Fitriawati, 1985-07-10, P, Jl. Samas 2A, Bantul, J03),
(0310003, Haris Prasetya, 1980-06-28, L, Jl. Maga 23, Semarang, J03),
(0310004, Binti Nur Fitriani, 1986-09-14, P, Jl. Randu Belang 23, Yogyakarta, J03),
(0310005, Evi Munandari, 1988-01-21, P, Jl. Kebon Agung 40, Surakarta, J03),
(0310006, Nur Yusman Aqim, 1979-02-28, L, Jl. Kamboja 12, Magelang, J03);

INSERT INTO dosen (Nip, Nama, Tgl_lahir, Jn_Kelamin, jalan, Kota, jurusan) VALUES
(03002, Diana Ginting,S.Pd.,M.Cs., 1959-06-21, , Jl. Gatot Subroto 89, Jakarta, J03),
(03001, Septian Dwiyanto,S.T.,M.Cs., 1964-03-13, P, Jl. Bulukan 03, Lampung, J03),
(02003, Wahyu Nirba Habibah,S.T., 1963-04-29, , Jl. Mayoret, Bandung, J02),
(02002, Jamalludin,S.T.,M.Kom., 1965-04-12, P, Jl. Jend. Sudirman, Sleman, J02),
(02001, Mahmudin,S.Ag.,M.Kom., 1956-02-01, P, Jl. Disvus 20, Yogyakarta, J02),
(01003, Kitri Sri Rahayu,S.T., 1958-03-14, P, Jl. Mrican 23, Yogyakarta, J01),
(01004, Eko Aribowo,S.T.,M.Kom., 1961-05-13, P, Jl. Mawar 56, Magelang, J01),
(01002, Imana Kusuma,S.T.,M.Kom., 1960-06-20, L, Jl. KOl. Sugiono, Sleman, J01),
(01001, Wahyu Pujiono,S.T.,M.Kom., 1957-09-03, L, Jl. Ambassador, Jakarta, J01),
(03003, Yohanes Surya,S.T., 1960-09-23, P, Jl. Tamantirto, Bantul, J03);
INSERT INTO matakuliah (Kode_mka, Nama, Semester, sks, jenis, dosen) VALUES
(MI01002, Operating System, 1, 2, W, 03004),
(MI01001, Konsep Basis Data, 1, 2, W, 03004),
(IK02004, Basis Data, 2, 3, P, 01001),
(IK02003, Arsitektur Komputer, 2, 2, P, 01004),
(IK02002, Dasar Pemrograman II, 2, 3, W, 01002),
(IK02001, Algoritma Pemrograman, 2, 2, W, 01003),
(IK01004, E-Commerce, 1, 2, P, 01001),
(IK01003, Organisasi Komputer, 1, 2, P, 01004),
(IK01002, Dasar Pemrograman, 1, 3, W, 01003),
(IK01001, Statistika & Probabilitas, 1, 2, W, 01002),
(TI02004, Bahasa Rakitan, 1, 2, P, 02001),
(TI02003, Kalkulus 2, 2, 3, W, 02003),
(TI02002, Sistem Operasi, 2, 2, W, 02002),
(TI02001, Algoritma Dan Pemrograman I, 2, 3, W, 02002),
(TI01004, Matematika Diskrit, 1, 2, W, 02002),
(TI01003, Kalkulus 1, 1, 3, W, 02003),
(TI01002, Aljabar Linear, 1, 3, W, 02001),
(TI01001, Statistik Dasar, 1, 2, W, 02001),
(MI01003, Aljabar Elementer, 1, 2, W, 03003),
(MI01004, Fuzzy Logic, 1, 2, P, 03001),
(MI02001, Teknologi Basis Data, 2, 2, W, 03002),
(MI02002, Sistem Operasi, 2, 2, W, 03001),
(MI02003, Pemrograman Terstruktur, 3, 2, W, 03001),
(MI02004, Web Programming, 2, 3, P, 03003);
INSERT INTO prasyarat (ID_prasyarat, Kode_prasyarat, Kode_mka, Nilai) VALUES
(1, IK02002, IK01002, C),
(2, IK02003, IK01003, C),
(3, MI02004, MI01001, C),
(4, MI02004, MI01002, C);
INSERT INTO kuliah (nilai_angka, nilai_huruf, bobot, Th_akademik, nim, mka) VALUES
(66, B, 3, 20101, 0210003, TI01001),
(50, C, 2, 20101, 0210002, TI01004),
(90, A, 4, 20101, 0210003, TI01003),

(70, B, 3, 20101, 0210001, TI01001),


(80, B, 3, 20101, 0110002, IK01004),
(95, A, 4, 20101, 0110001, IK01004),
(70, B, 3, 20101, 0110001, IK01003),
(80, B, 3, 20101, 0110001, IK01001),
(NULL, NULL, NULL, 20102, 0110001, IK02001),
(NULL, NULL, NULL, 20102, 0110001, IK02003),
(NULL, NULL, NULL, 20102, 0110001, IK02004),
(95, A, 4, 20102, 0110002, IK02004),
(NULL, NULL, NULL, 20102, 0210001, TI02001),
(NULL, NULL, NULL, 20102, 0210003, TI02003),
(NULL, NULL, NULL, 20102, 0210002, TI02004),
(NULL, NULL, NULL, 20102, 0210003, TI02001),
(NULL, NULL, NULL, 20102, 0110002, IK02001);
A. TRIGGER
Contoh Trigger yang digunakan untuk memicu perubahan pada tabel kuliah, pada tabel kuliah proses
insert diasumsikan hanya dilakukan pada kolom nilai_angka saja sedangkan nilai huruf dan bobot akan
terisi secara otomatis (dg mekanisme trigger) dilakukan jika nilai_angka terisi dengan kriteria tertentu.
Trigger disini dilakukan ketika terjadi 2 event yaitu insert (Before Insert) pada nilai_angka atau update
(before update) pada nilai_angka.
Kalo di oracle bisa dibuat satu saja tapi kok di mysql aku coba gak bisa
trigger.
DELIMITER &&
CREATE TRIGGER updatebobot before update on kuliah
for each row
begin
if new.nilai_angka < 20 then
set new.bobot = 0;
set new.nilai_huruf=E;
else if new.nilai_angka >= 20 and new.nilai_angka <=40 then
set new.bobot = 1;
set new.nilai_huruf=D;
else if new.nilai_angka >= 41 and new.nilai_angka <=60 then
set new.bobot = 2;
set new.nilai_huruf=C;
else if new.nilai_angka >= 61 and new.nilai_angka <=80 then
set new.bobot = 3;
set new.nilai_huruf=B;
else if new.nilai_angka >= 81 and new.nilai_angka <=100 then
set new.bobot = 4;
set new.nilai_huruf=A;
end if;

, terpaksa bikin 2

end if;
end if;
end if;
end if;
end &&
DELIMITER ;
DELIMITER &&
CREATE TRIGGER insertbobot before insert on kuliah
for each row
begin
if new.nilai_angka < 20 then
set new.bobot = 0;
set new.nilai_huruf=E;
else if new.nilai_angka >= 20 and new.nilai_angka <=40 then
set new.bobot = 1;
set new.nilai_huruf=D;
else if new.nilai_angka >= 41 and new.nilai_angka <=60 then
set new.bobot = 2;
set new.nilai_huruf=C;
else if new.nilai_angka >= 61 and new.nilai_angka <=80 then
set new.bobot = 3;
set new.nilai_huruf=B;
else if new.nilai_angka >= 81 and new.nilai_angka <=100 then
set new.bobot = 4;
set new.nilai_huruf=A;
end if;
end if;
end if;
end if;
end if;
end &&
DELIMITER ;
Untuk mencoba trigger :
UPDATE KULIAH set nilai_angka =60 where nim =0110001 and mka =IK02001 and
th_akademik=20102;
INSERT INTO kuliah (nilai_angka, Th_akademik, nim, mka) VALUES (66, 20102, 010004, TI01004);
B. PROCEDURE
Contoh procedure untuk melakukan cetak KRS, cetak KHS dan melakukan Proses KRS (input KRS) dan
juga Input Nilai.
a) Procedure cetak KRS
DELIMITER &&
CREATE PROCEDURE CetakKRS(nim char(7), ta char(7))

BEGIN
SELECT distinct concat(m.nim ,, m.nama , | TA : , k.th_akademik) as Data Mahasiswa from
mahasiswa m
inner join kuliah k on m.nim = k.nim
where k.nim =nim and k.Th_akademik =ta;
SELECT concat(k.mka , | , mk.nama, ) as Mata Kuliah, d.nama as Dosen, mk.sks as SKS from
kuliah k
inner join matakuliah mk on k.mka = mk.kode_mka
inner join mahasiswa mhs on k.nim = mhs.nim
inner join dosen d on d.nip = mk.dosen
where k.nim = nim and k.Th_akademik = ta;
SELECT Concat(Jumlah SKS = , sum(mk.sks)) as Keterangan from kuliah k
inner join mahasiswa m on k.nim = m.nim
inner join matakuliah mk on k.mka = mk.kode_mka
where k.nim = nim and k.Th_akademik = ta
group by m.nim ;
END &&
DELIMITER ;
b) Procedure cetak KHS
DELIMITER &&
CREATE PROCEDURE CetakKHS(nim char(7), ta char(7))
BEGIN
SELECT distinct concat(m.nim , , m.nama , | TA : , k.th_akademik) as Data Mahasiswa from
mahasiswa m
inner join kuliah k on m.nim = k.nim
where k.nim =nim and k.Th_akademik =ta;
SELECT k.mka, mk.nama, mk.sks, k.nilai_huruf as Nilai, k.bobot, (k.bobot * mk.sks) as bobot (bobot x
sks) from kuliah k
inner join matakuliah mk on k.mka = mk.kode_mka
inner join mahasiswa mhs on k.nim = mhs.nim
where k.nim = nim and k.Th_akademik = ta;
SELECT Concat(Jumlah SKS = , sum(mk.sks)) as Keterangan , (sum(k.bobot * mk.sks)) as Total
Bobot, (sum(k.bobot * mk.sks)/ sum(mk.sks)) as IP
Sementara from kuliah k
inner join mahasiswa m on k.nim = m.nim
inner join matakuliah mk on k.mka = mk.kode_mka
where k.nim = nim and k.Th_akademik = ta
group by m.nim ;
END &&
DELIMITER ;
c) Proses insert dan update tabel kuliah pada trigger diatas dapat juga dijadikan procedure
DELIMITER &&
CREATE PROCEDURE InputKRS(nr char(7), mk char(10), ta char(5))

BEGIN
Insert into kuliah(nim , mka, th_akademik)
values (nr, mk, ta);
END &&
DELIMITER ;
DELIMITER &&
CREATE PROCEDURE InputNilai(nr char(7), mk char(10), ta char(5), nl tinyint)
BEGIN
Update kuliah set nilai_angka = nl
where kuliah.nim =nr and kuliah.mka = mk and kuliah.th_akademik = ta;
END &&
DELIMITER ;
Melihat status dari procedure yang aktif
SHOW PROCEDURE STATUS;
Memanggil Procedure yang sudah dibuat
CALL CETAKKRS(0110001,20102);
CALL CETAKKHS(0110001,20101);

Anda mungkin juga menyukai