postgres slide baru

106
123 4156729ABC9BA3DDE56FA59 123456728 9 5BCDE6C F5252 9 7FCE25F 3 F 1 C *+ ,-+ - .//

Upload: jumadifranciscosimangunsong

Post on 26-May-2017

230 views

Category:

Documents


0 download

TRANSCRIPT

� �

����������ABCBA��DDE��FA���

��������� A�BCDE�CF�����A A��FCE��F��A���

�����A����A�� !"� "!AF"#"$!�A%A&�!�#'

��(��!�$AC"( �(A) �*"+$�!�$A,"-"+�A���� -A• A./0/A

� �

������

�����������AB�CD�EF���

��������ABCDEBF�����B�����B�B������B��������B����������

� ���������� ������B���� ���B! "�#���B���� ���$B

%���&B'BA����B(���$B�#��)�$B*� ��� +�,��#�B(�,��������B��������-B

)����������B.������B��-� +�,��#�B/������-B)����������B

*������� ��������&������B�� ��B

)����������B������B���#�����B�A�A

� ����0�1����B2��������B.��#����

��������CD�EF���

!3��3����B(�2B.��)�����B)����������B+1�0%4*

��������B�C��A

+1�0%4*�� ���������B*�)#��B4� B���3��D� ���������B+#��&��B���B&�����B%4*D� %�������B��)&��B�&������B%4*D� ���� �����B,��)�����B+1�0%4*B��B

����)B&��"��D� �������&������B������B���B��-���B

+1�0%4*D

��������B�C��A

+1�0%4*�� �����)&��)���������B�����0/���0

����������D� ��) ���B,����BA����D� ��) ���B���3���B�����B5���-B���B

�&����B)���B������D� ��) ���B����B�����,�#�B�����B5���-B

���B�&����B)���B������D

���������B�C��A

+1�0%4*�� ��) ���B���3���B�����B

5���-B���B�&����B)��������D

� ��) ���B����B�����,�#�B�����B5���-B���B�&����B)��������D

���������B�C��A

+1�0%4*�� ��) ���B���3���B�����B

5���-B���B�&����B�����D� ��) ���B����B�����,�#�B

�����B5���-B���B�&����B�����D

� �

��AB��CDB�E���E��BFF��C����E

����������ABC�A�D

E��F��D��F�CB��������

�BB���A�AA������C��

����A��

�BB���A�AA����������

E��F��D��F�CB�������

�����������ABC�A�D

E��F��D��F�CB��������

�BB���A�AA����������

���������AB��C�B��C�����DEEFA��BA��

� �

����E�B�E�B���B������B�E����C���E

������F��F�A�D�

�������

�����D��

�F�C�������D��

�F�C�������D��

�������� ��C ���C � ���D!���D! ��DC�AB��DC�AB

"F�B����������

�D�#�D���$�%�!�D�F����&�'�(C���#�����AD�A���)�A!�&*�+,��A��&�-�./0012&�#CC�CD��34$

� �

���B����B��B���BFF��C����E

��F��F�A�D�

"C ����������5-

"C �������D���5-

��F��F�A�D�

"C ����������5/

"C �������D���5/

��F��F�A�D�

"C ����������5D

"C �������D���5D

�����������AB��CDBEA���F�����C�DE����B���C������EC�

��F��F�A�D�

6%�������5D

6%������5/

6%�������5/

6%������5-

6%�������5-

"C ������5-

"C �������5-

�������C����EC����EA���EAD��������B���F���B��C����������

C��AD��EAE����

6%������5D

� �

��B���������

����������ABCDEF�

� ���BF�B�A�B���C�B�����C�A���FEE����A�B�E���EB�BE��������BAF�E��

� ����E����C����F��BBC���EB�BE����A�FA�A�B��FCB����AB����C�F� �EA�A��B����FDDE��FA����

� �EE����B�BE�DBC��A�����BACFAB���A�B�FDDE��FA��!��CB"��CB BA��F���� BBA����BF�E�B��

��������B���D�����B��������������B���

7�D�#�D���$�%�!�D�F����&�'�(C���#�����AD�A���)�A!�&*�+,��A��&�-�./0012&�#CC�CD��89�:�49$

� �

��B���������A��E��F�B������DB !�"��#$

��� ���� ���"#���!A1+�#"23+(A$" ��+�

4�3 -A5"*"�36#" !AC�#"7A*$A48�$!3#"+A9� A 3!A2��!7

�!� "#$#���ABCDEF���!A#"#���!A�3���A5���3-A&3:

�%� �&�'$����ABCDE;�*�$9+�6!A�33$"A5�!�AC<6"A8="9(� -A>AC+�9(<A��?"9!A�+�" !"�A�+3-+�##� -B��@;F�,A5�!�A�:9=� -"AF�A"A#"#�" -(�(

�(� �&�')�*���ABCDE���A;�*�A�+3-+�##� -8��" !D$��"A��1�$9�!"�A;�*�$9+�6!F"+*"+D$��"A;�*�AF"+*�"!��8A 3A#3+"AB��@;F�,A�3!!�"D "9(

� �

��B���������

+,�

�A�D��A�D�

��E���������E�������

%���%���

�������

�����D��

;��AD���<� AB

;��AD���<� AB

����������

=�F>CF!

E���

�C�

����FD���F>CF!

E�!C��

��*� 9"�@��+-"+A�66��9�!�3 $A ""�$A B��F�������AB A!3A(""6A<3�+A� #FAF�$��BEA+"6+"$" !$A!="A��!�A$"!A� �A�$A+"$63 $���"A13+

� �BA����A!="A��!�A!=�!A�$A ""�"�A13+A*�"2� -A� � �A13+A�C�A��A��9(A� <A9=� -"$

� %�AC�EEBC�&����A5"1� "$A!="A��<A!="A)$"+A� !"+1�9"A�"�9!$A!3A)$"+A� 6�!� '�B��(���BA�AF9+"" A�+"$" !�!�3

���AE����FEE����BDB�BA�

?C��AD�;CDB#�����!CD�@CF�������F�A�!&�'�AA�)E��"F� FC��AD �>A�#�B��C&*�"F�D�AB��%C�&�-�./0042&�#CC�CD��/-9$

� �

-D���B./�"��� ��B�.B�B

����������

&��C��C��B��B���������B���DB !�"��#B'B#��C��B'B&�������(�

�&�')�*�����0�B���1DC�B

�A�D��A�D�

��E���������E�������

%���%���

)FA!)FA!

���F����F�

��B�F!��B�F!

@�!��C�C@�!��C�C

<�C!�F<�C!�F �"��"F���

�"��"F���

����FD

�C��������

�����D��

*DA�����B �.B�B

?C�C��F���

?C�C��F���

���F�!"F�B�!�F�

���F�!"F�B�!�F�

��C�A�DC�C���

�������

�����D��

E���

� �

�����������ABCBA��DDE��FA���

���������ABCDEF�F�F��A�����F�����

�����A�F����A������A�����F��A F!F���"F

#���$A%F��A&����$���A������FA'A(F�F�)

*F��$�F�A������A+��,�����F�A-�����A�F�F��A• A./0/A

� �

������

� ����������A��BCDEF�� �D������������D� ����D�D�����

� �

������

�B������A������������A�B��CD�CE��F����E������F�A�B�E�

� E�"�$�F�A1F���A����F$F��A�F��A!��1�22"""C1�������3$C���� F���F�A����F$F��A����F�A������A�1��F��C� #���A���4����F��A�F$F�A4�$�A�B������A��A�F�A�A��BCD�����A��CA

�����A�BC�DE�D

F����A�

F�A���A�

�A��BCD�����A��������E������

����E�DE�����A

� �������DEAE��������D��F�AD��D��A�� �D������AE�������A��A���A�F�� �������DEA��������E������E�A��������E��� ������F�A�B�E�E�A�����������EE�

� ��!"���FF��EE�E�D�������A���E�������E�AD���EA��#D���D��A�DE�#�D������A��������A�DE�

� ����D�A�A���E��������EA�E�D�� $��F�ED�D����

����A��� ���������� �D����� ����D�D�����

� �

���D��������DC�D���CA��DC

�!��EDC!�D�

�������D

��������ABACA��D�EAFA�

���A��������A�A�D�F���B

"D��EDC!DC�#�������D�EDC!DC

D����F����

D��A�CB��E����

���B��C�DEF���BC���� ���������� �D����� ����D�D�����

� �

�AB���$A�D�%F�A�B�E���E��E�

����EA���F��E����B���D#�����%������D��&

�AB���$A�D�%F�A�B�E���E��E�

����EA���F��E����B���D#����&�DC���D��&

�FAF�F�B���D

���B�F����A

������ ���������� �D����� ����D�D�����

'���D�����������

�F

��

���

'���D�������(&����

�F

CDF�

��B��

ECE

'���D�������

�F

����E�E��

��A�'C�����

����

(

(

)��*

)��*

E�ACD%�CA�D%&CD+� ������ "E��A� ,�F�A�� -���A�

)CA&��$A�D�����&�DC� .��F�F�A�

)CA&��$A�D������%���� .��F�F�A��%�����A�F�

#�D�����&�DC&� �DF�#��F�A��%"E��A/�

,�F�A�/�-���A�&

����%��������F�B����&�DC��F��������

�AB���$A�D�0A����

D�E�����E��F�A�B�E���E��E

������������F���F����B�A�������B��AEE����BAC������F�EB��

�����

����

�����!FA�B���"��F�#A���$�E�B��DB�F���%F�E���F��

� �

�����������F�D�FFA�D�B�����D���� ���������� �D����� ����D�D�����

� �

�B������D������D��B������F�� ���������� �D����� ����D�D�����

&���A'BAF�A����F��F�

�ABACA���A�AF��A�AB���(

)A�A���)������A�A��

����)��

� �

�����B�����

�B������D������D�������DC��� ���������� �D����� ����D�D�����

� �

�B������D������D��FC�D�FA�D���C��� ���������� �D����� ����D�D�����

�����B�����

� �

�B������D������D��FC�D�FA�D��������� ���������� �D����� ����D�D�����

�����B�����

%���A��A�����&�DC�AF����B�&�)C�F����&�)C�F� A�AF�����%����)��*A���

)�)C�F����&�DC��A��)���(����F�B��F��������(��A

� �

�B������D������D�� ���D��� ���������� �D����� ����D�D�����

�����B�����

� �

�����������ABCBA��DDE��FA���

���������ABCDEF�F�F��A�����F�����

�F����A�F�F����F

�� !�A"F �A#$�������A������FA%A&F�F�'

(F)!��F�A��)��)A*��+�����F�A,�����A�F F��A• A-./.A

� �

������������ ���������� ������ �AB�A�����

�����������

� �

�������AB�CD� ���������� ������ �AB�A�����

���������

���������

��������AA

C����DEFE������� ��� ��� �AA

B��CD�EAF�B�����A��������D��F�A�����A�������������A�DA�����������F���D����A�

��������������A��D���� C��A����F��D���!���C�����A�����������������FA�A�������A����A��� ��F���F����"��������

� �

�������E�BF�������� ���������� ������ �AB�A�����

����E���A���E��

"���#�����A���B�F��$�%

� �

����������A�B�C�D�E�C�F

���������B�������D���B��

� ���������� ������ �AB�A�����

����E ���!E�"���������E#�$E����%E�"��E�����

"���#���A��A���B�F��$�%

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��&%E�"���������E#�$E����%E�"��E%"�"��

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��&%E�"���������E#�A�E����%E�"��E%"�"��

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��&%E�"���������E#�$E�����E�"��E���!E%���

� �

�����������B��� ���������� ������ �AB�A�����

�����

����ABCDE

FDE�������E��B

NIM 1234abc 1234ABC

������

�""��CA��

NIM 1234ABC 1234ABC E�����A�����A���E�A�������"AC��

NAMA ABDUL YADI Abdul YadiB��&�����#��'�������������'��AC#�(��������""��CA���A����#������������(��CA��

NAMA abdul yadi Abdul Yadi

NAMA AbDUl yADi Abdul Yadi

NAMA Abdul Yadi Abdul Yadi E�����A�����A���E�A�������"AC��

NAMA Abdul Yadi Abdul Yadi )��&���%��A��"AC��F��(����(����

� �

���������B!!��"� �����������B��� ���������� ������ �AB�A�����

��������AB����B�C�DEE�FB��'()E*���"� B��A���

E����������C����

E�������'��C�����(����F���%�C�����$*�+)*�,-�*)E������./E*����AF������A��������

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

0��ADA������*����������D��D��D��������C�A���F���D�������

���������ABC����DA�E���F��D���A�������E�BC

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1234','Abdul Yadi') RETURNING *;

�����

�����BFF�E�

id | nim | nama ----+------+------------ 1 | 1234 | Abdul Yadi

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1235','Linus Torvalds') RETURNING *;

�����

�����BFF�E�

id | nim | nama ----+------+--------------- 2 | 1235 | Linus Torvalds

-���� ���������F������A��� �����A������F����A�����D�����A�

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A��BF�A�E���B������E

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1236','Steve Jobs') RETURNING *;

�����

�����BFF�E�

id | nim | nama ----+------+------------ 3 | 1236 | Steve Jobs

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1236','Bill Gates') RETURNING *;

�����

�����BFF�E�

ERROR: duplicate key value violates unique constraint "mahasiswa: NIM tidak boleh ganda"

-���� ���!���B�����A���������ADA������D����A���D����DA���A�A

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A��BF�E����F��A�E���B�����B�B��

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('','Bill Gates') RETURNING *;

�����

�����BFF�E��F���������A��

ERROR: new row for relation "mahasiswa" violates check constraint "mahasiswa: NIM tidak boleh kosong"

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1237','') RETURNING *;

�����

�����BFF�E���F���������A���

ERROR: new row for relation "mahasiswa" violates check constraint "mahasiswa: nama tidak boleh kosong"

-���� B#�CD�B�����A���������ADA������D����A����A�A��A��#��D������A��A������A#������A"DA�

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A��BF������B�����A���A

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('123 7','Bill Gates') RETURNING *;

�����

�����BFF�E�

ERROR: new row for relation "mahasiswa" violates check constraint "mahasiswa: NIM harus satu kata"

-���� B#�CD�B�����A���������ADA������D����A����A�A��A��#��D������A��A������A#������A"DA�

� �

#��!�$B� �����������B��� ���������� ������ �AB�A�����

���������BF�������� �D����E��A� ���E���!"D������� ���

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1237abc','Bill Gates') RETURNING *;

�����

�����BFF�E��������� �D�����

id | nim | nama ----+---------+------------ 8 | 1237ABC | Bill Gates

INSERT INTO ft.mahasiswa (nim,nama) VALUES (' 1238 ','James Gosling') RETURNING *;

�����

�����BFF�E���A� ���E���!AD������� �����

id | nim | nama ----+------+--------------- 9 | 1238 | James Gosling

-���� /��� C����C���������A�������A�A�E),00*)��$�'��A�,������

� �

#��!�$B� �����������B��� ���������� ������ �AB�A�����

���������AB��BDD��A�B����A�������E���F�

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1239',' Sutan Syahrir ') RETURNING *;

�����

�����BFF�E��A� ���E���!AD������� �����

id | nim | nama ----+------+--------------- 10 | 1239 | Sutan Syahrir

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1240','Tan Malaka') RETURNING *;

�����

�����BFF�E���A� ��#AD�� ���E���AD��A��

id | nim | nama ----+------+------------ 11 | 1240 | Tan Malaka

-���� /��� C����C���������A�������A�A�E),00*)��$�'��A�,������

� �

#��!�$B� �����������B��� ���������� ������ �AB�A�����

���������AB��BDD��A�B����A�������E���F�

INSERT INTO ft.mahasiswa (nim,nama) VALUES ('1241','CHaIRIL aNWaR') RETURNING *;

�����

�����BFF�E����D��� �DAF���A� ��A�� �D���$������������B%�D�����

id | nim | nama ----+------+--------------- 12 | 1241 | Chairil Anwar

-���� /��� C����C���������A�������A�A�E),00*)��$�'��A�,������

� �

�������'����C�E����C����������(����� ���������� ������ �AB�A�����

0��ADA������*����������D��D��D��������C�A���F���D�������

CREATE OR REPLACE FUNCTION ft.mahasiswa_query(OUT i_id integer, OUT s_nim text, OUT s_nama text)

RETURNS SETOF record AS$BODY$BEGIN

RETURN QUERYSELECT ft.mahasiswa.id, ft.mahasiswa.nim, ft.mahasiswa.namaFROM ft.mahasiswaORDER BY LOWER(ft.mahasiswa.nim);

RETURN;END;$BODY$ LANGUAGE 'plpgsql' STABLE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_query() TO ft_user;REVOKE ALL ON FUNCTION ft.mahasiswa_query() FROM public;

-���� ���C���������#A��A��A"A���� �%�C�������#�������A�A�����"����!��EA�A�E�����A��

� �

#��!�$B�'����C�E����C����������(����� ���������� ������ �AB�A�����

SELECT * FROM ft.mahasiswa_query();

�����

�����BFF�E�

i_id | s_nim | s_nama ------+---------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 8 | 1237ABC | Bill Gates 9 | 1238 | James Gosling 10 | 1239 | Sutan Syahrir 11 | 1240 | Tan Malaka 12 | 1241 | Chairil Anwar

� �

�������'����C�E����C����������)*'+,�-�E& �+

� ���������� ������ �AB�A�����

0��ADA������*����������D��D��D��������C�A���F���D�������CREATE OR REPLACE FUNCTION ft.mahasiswa_update(

INOUT i_id integer, INOUT s_nim text, INOUT s_nama text)

RETURNS SETOF record AS$BODY$DECLARE

_insert boolean:=TRUE;BEGIN

IF COALESCE(i_id,0)<>0 THENUPDATE ft.mahasiswa SET nim=s_nim, nama=s_nama WHERE id=i_idRETURNING id, nim, nama INTO i_id, s_nim, s_nama;_insert:=NOT FOUND;

END IF;IF _insert THEN

INSERT INTO ft.mahasiswa (nim, nama) VALUES (s_nim, s_nama)RETURNING id, nim, nama INTO i_id, s_nim, s_nama;

END IF;RETURN NEXT;RETURN;

END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_update(integer, text, text) TO ft_admin;REVOKE ALL ON FUNCTION ft.mahasiswa_update(integer, text, text) FROM public;

-���� ���C���������#A��A��A"A���� �%�C�������#�������A�A�����"������A��

� �

#��!�$B�'����C�E����C����������)*'+,�-�E& �+

� ���������� ������ �AB�A�����

SELECT * FROM ft.mahasiswa_update(NULL,'1241abC',' John LENNON ');

�����

�����BFF�E�

i_id | s_nim | s_nama ------+---------+------------- 13 | 1241ABC | John Lennon

SELECT * FROM ft.mahasiswa_update(13,'1242',' TANtowi Yahya');

�����

�����BFF�E�

i_id | s_nim | s_nama ------+-------+--------------- 13 | 1242 | Tantowi Yahya

� �

�������'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����

0��ADA������*����������D��D��D��������C�A���F���D�������

CREATE OR REPLACE FUNCTION ft.mahasiswa_delete(IN i_id integer[]) RETURNS void AS$BODY$BEGIN

DELETE FROM ft.mahasiswa WHERE id=ANY(i_id);RETURN;

END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_delete(integer[]) TO ft_admin;REVOKE ALL ON FUNCTION ft.mahasiswa_delete(integer[]) FROM public;

-���� ���C���������#A��A��A"A���� �%�C�������#�������A�A�����"������A��

� �

#��!�$B�'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����

SELECT * FROM ft.mahasiswa_query();

�����

�����BFF�E��&��D��D��BDE�������F�E���A���

i_id | s_nim | s_nama ------+---------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 8 | 1237ABC | Bill Gates 9 | 1238 | James Gosling 10 | 1239 | Sutan Syahrir 11 | 1240 | Tan Malaka 12 | 1241 | Chairil Anwar 13 | 1242 | Tantowi Yahya

SELECT ft.mahasiswa_delete(ARRAY[8,10,11]);�����BFF�E��E���A���E��'$�()�E��((��

SELECT * FROM ft.mahasiswa_query();

�����

�����BFF�E��&��D��D��BDE���A����E���A���

i_id | s_nim | s_nama ------+-------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 9 | 1238 | James Gosling 12 | 1241 | Chairil Anwar 13 | 1242 | Tantowi Yahya

� �

�����������ABCBA��DDE��FA���

���������ABCDEF�F�F��A�����F�����

�F����A�F�FA����F�

�!��A"F!�A#$�������A������FA%A&F�F�'

(F)���F�A��)��)A*��+�����F�A,�����A�F!F��A• A-./.A

� �

������������ ���������� ������ �AB�A�����

�����������

� �

�������AB�CD� ���������� ������ �AB�A�����

���������

���������� ��������AB��

C����DEFE������� ��� ���� �AB��� C�C

D��E��FAB�D�C��A���C���������B�A������A�������������AC�A�����C�����B��������A�

�C����������A�������� E��A���B����C�!���E�����A�����������������C�BA�A�������A���A�� ���B���B����"��������

�������C�C

� �

�������E�BF�������� ���������� ������ �AB�A�����

����E���A���E �

"���#�����A���D�B�$%

� �

����������A�B�C�D�E�C�F

���������B�������D���B��

� ���������� ������ �AB�A�����

����E!����E�"���������E "�E�����E�"��E�����

"���#��"���A���D�B�$%

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��#�E�"���������E "�E�����E�"��E�"�"��

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��#�E�"���������E$���E�����E�"��E�"�"��

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��#�E�"���������E "�E�����E�"��E����E����

� �

����������A�B�C�D�E�C�F

����������������D���B�������

� ���������� ������ �AB�A�����

����E��#�E�"���������E% %E�����E�"��E������

� �

�����������B��� ���������� ������ �AB�A�����

�����

����ABCDE

FDE�������E��B

Kode mk0001 MK0001

������

�""��EAC�

Kode MK0001 MK0001 F������A�����A���F�A�������"AE�C

Label ILMU BAHAN Ilmu BahanD�&�����#��'��C���������'��AE#�(������""��EAC��A����#����C�����(��EAC�

Label Ilmu bahan Ilmu Bahan

Label IlMU bAHan Ilmu Bahan

Label Ilmu Bahan Ilmu Bahan F������A�����A���F�A�������"AE�C

Label Ilmu Bahan Ilmu Bahan )��&���%��A�C"AE��B��(����(��C

� �

���������B!!��"� �����������B��� ���������� ������ �AB�A�����

�����������ABCDEF���D����������C�����E����B���FC��D�C�C�

CREATE OR REPLACE FUNCTION ft.trig_mata_kuliah() RETURNS trigger AS$BODY$BEGIN--------auto correction for kode:

NEW.kode:=UPPER(NEW.kode); ----uppercaseNEW.kode:=TRIM(NEW.kode); ----trim leading and trailing spaces

--------auto correction for label:NEW.label:=TRIM(NEW.label); ----trim leading and trailing spaces NEW.label:=REGEXP_REPLACE(NEW.label,' +',' ','g'); ----remove extra space between words----convert the first letter of each word to uppercase----and the rest to lowercaseNEW.label=INITCAP(NEW.label); RETURN NEW;

END;$BODY$ LANGUAGE 'plpgsql' VOLATILE;

D��A���F����������E����

F�������'��E����(����B���%�E�����$*�+)*�,-�*)F�����./F*����AB������A�����������CREATE TRIGGER trig_mata_kuliah BEFORE INSERT OR UPDATE ON ft.mata_kuliah FOR EACH ROW EXECUTE PROCEDURE ft.trig_mata_kuliah();

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

0��A�A������*�������������C���C������E��A���B�����������

���������ABC����DA�E���F��D���A�������E�BC

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0001','Ilmu Bahan',2) RETURNING *;

�����

�����BFF�E�

id | kode | label | sks ----+--------+------------+----- 1 | MK0001 | Ilmu Bahan | 2

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0002','Fisika Nuklir',4) RETURNING *;

�����

�����BFF�E�

id | kode | label | sks ----+--------+---------------+----- 2 | MK0002 | Fisika Nuklir | 4

-��� ���������B���C��A�� �����A�������B����A���C�����C�A�

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A���C��A�E���B������E

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0003','Biologi',3) RETURNING *;

�����

�����BFF�E�

id | kode | label | sks ----+--------+---------+----- 3 | MK0003 | Biologi | 3

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0003','Matematika',3) RETURNING *;

�����

�����BFF�E�

ERROR: duplicate key value violates unique constraint "mata_kuliah: kode harus unik"

-��� ���!���D�C��A���������A�A������������A����������A���A�A

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A���C��E������A�E���B�����B�B��

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('','Matematika',3) RETURNING *;

�����

�����BFF�E��F��������"���

ERROR: new row for relation "mata_kuliah" violates check constraint "mata_kuliah: kode tidak boleh kosong"

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0004','',3) RETURNING *;

�����

�����BFF�E���F�������������

new row for relation "mata_kuliah" violates check constraint "mata_kuliah: label tidak boleh kosong"

-��� D#�E��D�C��A���������A�A������������A�����A�A����A��#���������A��A������A#������A"�A�

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A���C�������B�����A���A

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK 0004','Matematika',3) RETURNING *;

�����

�����BFF�E�

ERROR: new row for relation "mata_kuliah" violates check constraint "mata_kuliah: kode harus satu kata"

-��� D#�E��D�C��A���������A�A������������A�����A�A����A��#���������A��A������A#������A"�A�

� �

#��!�$B�%�BC�DB�&���� ���������� ������ �AB�A�����

���������B��AD��A�D�D�A�E���B�������A��

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0004','Matematika',-1) RETURNING *;

�����

�����BFF�E�

ERROR: new row for relation "mata_kuliah" violates check constraint "mata_kuliah: sks tidak boleh negatif"

-��� D#�E��D�C��A���������A�A������������A�����A�A����A��#���������A��A������A#������A"�A�

� �

#��!�$B� �����������B��� ���������� ������ �AB�A�����

����������C��������� �D����E��A� ���E���!"D������� ���

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('mk0004','Matematika',3) RETURNING *;

�����

�����BFF�E��������� �D�����

id | kode | label | sks ----+--------+------------+----- 9 | MK0004 | Matematika | 3

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES (' MK0005 ','Kimia',4) RETURNING *;

�����

�����BFF�E���A� ���E���!AD������� �����

id | kode | label | sks ----+--------+-------+----- 11 | MK0005 | Kimia | 4

-��� /�� E���E��������A�������A�A��F),00*)��$�'�A�,�C����

� �

#��!�$B� �����������B��� ���������� ������ �AB�A�����

���������AB��BDD��A�B����A�������E����

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0006',' Komputer ',4) RETURNING *;

�����

�����BFF�E��A� ���E���!AD������� �����

id | kode | label | sks ----+--------+----------+----- 12 | MK0006 | Komputer | 4

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0007','Enkripsi Data',4) RETURNING *;

�����

�����BFF�E���A� ��#AD�� ���E���AD��A��

id | kode | label | sks ----+--------+---------------+----- 13 | MK0007 | Enkripsi Data | 4

-��� /�� E���E��������A�������A�A��F),00*)��$�'�A�,�C����

� �

#��!�$B� �����������B��� ���������� ������ �AB�A�����

���������AB��BDD��A�B����A�������E���F�

INSERT INTO ft.mata_kuliah (kode,label,sks) VALUES ('MK0008','PSikologi PENdiDIKan',4) RETURNING *;

�����

�����BFF�E����D��� �DAF���A� ��A�� �D���$������������B%�D�����

id | kode | label | sks ----+--------+----------------------+----- 14 | MK0008 | Psikologi Pendidikan | 4

-��� /�� E���E��������A�������A�A��F),00*)��$�'�A�,�C����

� �

�������'����C�E����C����������(����� ���������� ������ �AB�A�����

0��A�A������*�������������C���C������E��A���B�����������CREATE OR REPLACE FUNCTION ft.mata_kuliah_query(

OUT i_id integer, OUT s_kode text, OUT s_label text,OUT i_sks smallint)

RETURNS SETOF record AS$BODY$BEGIN

RETURN QUERYSELECT ft.mata_kuliah.id, ft.mata_kuliah.kode,

ft.mata_kuliah.label, ft.mata_kuliah.sksFROM ft.mata_kuliahORDER BY LOWER(ft.mata_kuliah.kode);

RETURN;END;$BODY$ LANGUAGE 'plpgsql' STABLE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mata_kuliah_query() TO ft_user;REVOKE ALL ON FUNCTION ft.mata_kuliah_query() FROM public;

-��� ���E��������#A��A��A"A���� �%�E������#��C����A�A�����"�������EA�A�E�����A��

� �

#��!�$B�'����C�E����C����������(����� ���������� ������ �AB�A�����

SELECT * FROM ft.mata_kuliah_query();

�����

�����BFF�E�

i_id | s_kode | s_label | i_sks ------+--------+----------------------+------- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 3 | MK0003 | Biologi | 3 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 12 | MK0006 | Komputer | 4 13 | MK0007 | Enkripsi Data | 4 14 | MK0008 | Psikologi Pendidikan | 4

� �

�������'����C�E����C����������)*'+,�-�E& �+

� ���������� ������ �AB�A�����

0��A�A������*�������������C���C������E��A���B�����������CREATE OR REPLACE FUNCTION ft.mata_kuliah_update(

INOUT i_id integer, INOUT s_kode text, INOUT s_label text, INOUT i_sks smallint)

RETURNS SETOF record AS$BODY$DECLARE

_insert boolean:=TRUE;BEGIN

IF COALESCE(i_id,0)<>0 THENUPDATE ft.mata_kuliah SET kode=s_kode, label=s_label, sks=i_sks WHERE id=i_idRETURNING id, kode, label, sks INTO i_id, s_kode, s_label, i_sks;_insert:=NOT FOUND;

END IF;IF _insert THEN

INSERT INTO ft.mata_kuliah (kode, label, sks) VALUES (s_kode, s_label, i_sks)RETURNING id, kode, label, sks INTO i_id, s_kode, s_label, i_sks;

END IF;RETURN NEXT;RETURN;

END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mata_kuliah_update(integer, text, text, smallint) TO ft_admin;REVOKE ALL ON FUNCTION ft.mata_kuliah_update(integer, text, text, smallint) FROM public;

-��� ���E��������#A��A��A"A���� �%�E������#��C����A�A�����"������A��

� �

#��!�$B�'����C�E����C����������)*'+,�-�E& �+

� ���������� ������ �AB�A�����

SELECT * FROM ft.mata_kuliah_update(NULL,' mk0009 ',' Statistik Dasar ',3::smallint);

�����

�����BFF�E�

i_id | s_kode | s_label | i_sks ------+--------+-----------------+------- 15 | MK0009 | Statistik Dasar | 3

SELECT * FROM ft.mata_kuliah_update(15,'MK0009','Statistik Dasar',2::smallint);

�����

�����BFF�E�

i_id | s_kode | s_label | i_sks ------+--------+-----------------+------- 15 | MK0009 | Statistik Dasar | 2

� �

�������'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����

0��A�A������*�������������C���C������E��A���B�����������

CREATE OR REPLACE FUNCTION ft.mahasiswa_delete(IN i_id integer[]) RETURNS void AS$BODY$BEGIN

DELETE FROM ft.mahasiswa WHERE id=ANY(i_id);RETURN;

END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.mahasiswa_delete(integer[]) TO ft_admin;REVOKE ALL ON FUNCTION ft.mahasiswa_delete(integer[]) FROM public;

-��� ���E��������#A��A��A"A���� �%�E������#��C����A�A�����"������A��

� �

#��!�$B�'����C�E����C����������&+.+�+� ���������� ������ �AB�A�����

SELECT * FROM ft.mata_kuliah_query();

�����

�����BFF�E��&��D��D��BDE�������F�E���A���

i_id | s_kode | s_label | i_sks ------+--------+----------------------+------- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 3 | MK0003 | Biologi | 3 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 12 | MK0006 | Komputer | 4 13 | MK0007 | Enkripsi Data | 4 14 | MK0008 | Psikologi Pendidikan | 4 15 | MK0009 | Statistik Dasar | 2

SELECT ft.mata_kuliah_delete(ARRAY[3,12,14]);

�����BFF�E��E���A���E��'$�()�E��((��

SELECT * FROM ft.mahasiswa_query();

�����

�����BFF�E��&��D��D��BDE���A����E���A���

i_id | s_kode | s_label | i_sks ------+--------+-----------------+------- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 13 | MK0007 | Enkripsi Data | 4 15 | MK0009 | Statistik Dasar | 2

� �

�����������ABCBA��DDE��FA���

���������ABCDEF�F�F��A�����F�����

�F����A���F�

�����A F��A!"�������A������FA#A$F�F�%

&F'���F�A��'��'A(��)�����F�A������A�F�F��A• A*+,+A

� �

������������ ���������� ������ �AB�A�����

�����������

� �

�������AB�CD� ���������� ������ �AB�A�����

���������

��������AB�BC ��������DEF���A

C����DEFE������� ��� F���� ����� BFB

����F�������BD���DB��D�F������D������������������BF�����B���������F�D���

��BD��� !"��D��D�F�����#���D������F�B�$���������������������B����������D����D�#����������D�%��������

�����������

����A�&�""

� �

�������E�BF�������� ���������� ������ �AB�A�����

����E���A���E��

%���A��������������'�(

� �

����������A�B�C�D�E�C�F

�������A���B����������D���B��

� ���������� ������ �AB�A�����

����E������E��E�����������E�� ����!�EC��"�E#�������

� %���A�A� ����!������������'�(�$�%��E%��"A�

� %���A��������������'�(�&���%���

%���A���)����B��D�������A� ����!�

� %���A��'(�'�)���D�F�FD������*�E+B���

� %���A�&)(#&��#���D�F�FD������*�E���

� �

����������A�B�C�D�E�C�F

�������A���B����������D���B��

� ���������� ������ �AB�A�����

����E������E��E�����������E����E�"��� EC��"�E#�������

%���A���)����B��D�������A����,"���

� %���A�A����,"��� �����������'�(�$�%��E%��"A�

� %���A��������������'�(�&���%���

� %���A��'(�'�)���D�F�FD������*�E+B���

� %���A�&)(#&��#���D�F�FD������*�E���

� �

����������A�B�C�D�E�C�F

���������B�������D���B��

� ���������� ������ �AB�A�����

����E+���"E�����������E�� ����!�E���E-���E�"��� E����,E��� E�����

*���A� ����!�E���A����,"���

� �

����������A�B�C�D�E�C�F

����������������D���B��

� ���������� ������ �AB�A�����

����E� %,E�����������E-����E ����E��� E'D.D�D�D)D.$

� �

������������B��� ���������� ������ �AB�A�����

�����

����ABCDE

FDE�������E��B

Nilai a A

������

�%%���B�

Nilai A A �����"����������������� %��B

� �

���������B������������������B��� ���������� ������ �AB�A�����

�����������ABCDEF���D����������C�����E����B���FC��D�C�C�

CREATE OR REPLACE FUNCTION ft.trig_nilai() RETURNS trigger AS$BODY$BEGIN--------auto correction for nilai:

NEW.nilai:=UPPER(NEW.nilai); ----uppercaseNEW.nilai:=TRIM(NEW.nilai); ----trim leading and trailing spaces

RETURN NEW;END;$BODY$ LANGUAGE 'plpgsql' VOLATILE;

���D��������������D����

��������)���D����C��������(���D���'+�,-+�.& +-�������/*�+����D�������������CREATE TRIGGER trig_nilai BEFORE INSERT OR UPDATE ON ft.nilai FOR EACH ROW EXECUTE PROCEDURE ft.trig_nilai();

� �

������B���BC�DB� ���� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

���������A�B�B�CADE�FA��F�EA�E��A��������F��������A�A��EA����!�"F���DBD#�

SELECT * FROM ft.mahasiswa;

�AD���

��������A��

id | nim | nama ----+------+--------------- 1 | 1234 | Abdul Yadi 2 | 1235 | Bill Gates 3 | 1236 | Steve Jobs 9 | 1238 | James Gosling 12 | 1241 | Chairil Anwar 13 | 1242 | Tantowi Yahya

&�D�� 1����)D��������������%D���#%%�����D�F�)�����A� ����!������D������������

� �

������B���BC�DB� ���� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

���������A�B�B�CADE�FA��F�EA�E��A��������F��������A�A��EA����!�"F���$��B��

SELECT * FROM ft.mata_kuliah;

�AD���

��������A��

id | kode | label | sks ----+--------+-----------------+----- 1 | MK0001 | Ilmu Bahan | 2 2 | MK0002 | Fisika Nuklir | 4 9 | MK0004 | Matematika | 3 11 | MK0005 | Kimia | 4 13 | MK0007 | Enkripsi Data | 4 15 | MK0009 | Statistik Dasar | 2

&�D�� 1����)D��������������%D���#%%�����D�F�)�����A����,"��� �����D������������

� �

������B���BC�DB� ���� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

����B���ABE�������AE���B�����B�EBF������BC

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,1,NULL) RETURNING *;

�AD���

��������A��

id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 1 | 1 | 1 |

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,2,'A') RETURNING *;

�AD���

��������A��

id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 2 | 1 | 2 | A

&�D�� �������������B���D�#�����D��������������B�F���B��

� �

������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����

����B������DE�A��E���������F�����A�AD�D�A��A�BD�E��A�EA�

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (999,2,'A') RETURNING *;

�AD���

��������A��

ERROR: insert or update on table "nilai" violates foreign key constraint "nilai: mahasiswa harus terdaftar"DETAIL: Key (mahasiswa)=(999) is not present in table "mahasiswa".

&�D�� ���������������BD���D����BD�F��-�)����D���.�D����D�

� �

������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����

����B������DE�A��E���������F�����A�AD�D�A��A�BD�E��A�EA�

A�A���DA���EA�������AEAFA�������D����������F���

...CONSTRAINT "nilai: mahasiswa harus terdaftar" FOREIGN KEY (mahasiswa) REFERENCES ft.mahasiswa (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT...

� !"�#$ %�&�'%�'% &����FA������BC�A�A��EA����!�"F���DBD#���B�A���AFA������F���DBD#��A�A��EA����!�"�B�B��E��AE�F������DBA�FA�����(

� !"� &�&�&�)&��)*'���E�AF�ACAE������ACBD�������A�A��EA����!�"F���DBD#����FA�E��A���A�EA�FA��F��A�A��EA����!�"�B�B(

� �

������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����

����B������DE�A��E���������F�����AEA�FB��A���A�BD�E��A�EA�

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,999,'A') RETURNING *;

�AD���

��������A��

ERROR: insert or update on table "nilai" violates foreign key constraint "nilai: mata kuliah harus terdaftar"DETAIL: Key (mata_kuliah)=(999) is not present in table "mata_kuliah".

&�D�� ���������������BD���D����BD�F��-�)����D���.�D����D�

� �

������B�%�!�����B��&�����B��� ���������� ������ �AB�A�����

����B������DE�A��E���������F�����AEA�FB��A���A�BD�E��A�EA�

...CONSTRAINT "nilai: mata kuliah harus terdaftar" FOREIGN KEY (mata_kuliah) REFERENCES ft.mata_kuliah (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE RESTRICT...

� !"�#$ %�&�'%�'% &����FA������BC�A�A��EA����!�"F���$��B����B�A���AFA������F���$��B���A�A��EA����!�"�B�B��E��AE�F������DBA�FA�����(

� !"� &�&�&�)&��)*'���E�AF�ACAE������ACBD�������A�A��EA����!�"F���$��B�����FA�E��A���A�EA�FA��F��A�A��EA����!�"�B�B(

A�A���DA���EA�������AEAFA�������D����������F���

� �

������B���BC�DB� ���� ���������� ������ �AB�A�����

����B���B��+B�����DE�A��E���A�AD�D�A�A���AEA,FB��A��E�AF��������A�A

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,9,'A') RETURNING *;

�AD���

��������A��

id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 7 | 1 | 9 | A

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,9,'A') RETURNING *;

�AD���

��������A��

ERROR: duplicate key value violates unique constraint "nilai:mahasiswa, mata kuliah tidak boleh ganda"

&�D�� ���$������BD���D������F����D�F���������F����F���D

� �

������B���BC�DB� ���� ���������� ������ �AB�A�����

����B�������F����DE�A��E�����A���A��A�������%-.-'- -&-.�

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,11,'F') RETURNING *;

�AD���

��������A��

ERROR: new row for relation "nilai" violates check constraint "nilai: hanya boleh A,B,C,D,E,BL"

&�D�� �A��F����BD���D������F����D�F����������D����D�A��F��D��������D��A���D�D%F�

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,11,NULL) RETURNING *;

�AD���

��������A��

id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 10 | 1 | 11 |

�������E����BCC�C�����F����� ���C�C�C��C��B�����������E���������

� �������DCB���BC��FC����E�����������E��DF�C�D

� �

������B�������������B��� ���������� ������ �AB�A�����

����B����B�B�D��A�B�#CC���AD��A��EA�CA���A���/��A�������CA��D

INSERT INTO ft.nilai (mahasiswa,mata_kuliah,nilai) VALUES (1,13,' c ') RETURNING *;

�AD���

��������A��

id | mahasiswa | mata_kuliah | nilai ----+-----------+-------------+------- 11 | 1 | 13 | C

&�D�� *�D�#������D����D��������������-.00+-��'�)���.�B��D�

� �

�������A����B������������'��DB�(B�B� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

CREATE OR REPLACE FUNCTION ft.nilai_convert(IN s_nilai text) RETURNS smallint AS$BODY$BEGIN

RETURN CASE WHEN s_nilai='A' THEN 4WHEN s_nilai='B' THEN 3WHEN s_nilai='C' THEN 2WHEN s_nilai='D' THEN 1WHEN s_nilai='E' THEN 0ELSE NULL END;

END;$BODY$ LANGUAGE 'plpgsql' IMMUTABLE;

2�����������D����

SELECT ft.nilai_convert('A');

1B���

!"��������

nilai_convert --------------- 4

� �

�������)����C�E����C����������*����� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

CREATE OR REPLACE FUNCTION ft.nilai_query(OUT i_id integer, OUT i_mahasiswa integer, OUT s_mahasiswa_nama text,OUT i_mata_kuliah integer, OUT s_mata_kuliah_kode text, OUT s_mata_kuliah_label text,OUT i_sks smallint, OUT s_nilai text, OUT i_sks_nilai smallint)

RETURNS SETOF record AS$BODY$BEGIN

RETURN QUERYSELECT ft.nilai.id, ft.nilai.mahasiswa, ft.mahasiswa.nama,

ft.nilai.mata_kuliah, ft.mata_kuliah.kode, ft.mata_kuliah.label,ft.mata_kuliah.sks, ft.nilai.nilai, (ft.nilai_convert(ft.nilai.nilai)*ft.mata_kuliah.sks)::smallint

FROM ft.nilai INNER JOIN ft.mahasiswa ON ft.nilai.mahasiswa=ft.mahasiswa.idINNER JOIN ft.mata_kuliah ON ft.nilai.mata_kuliah=ft.mata_kuliah.id

ORDER BY ft.nilai.id;

RETURN;END;$BODY$ LANGUAGE 'plpgsql' STABLE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.nilai_query() TO ft_user;REVOKE ALL ON FUNCTION ft.nilai_query() FROM public;

&�D�� ����D��������A����%D���#�(���D�����A��B�����������%����"��ED�E�����A��

� �

������B�)����C�E����C����������*����� ���������� ������ �AB�A�����

SELECT * FROM ft.mata_kuliah_query();

�AD���

��������A��

i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 1 | 1 | Abdul Yadi | 1 | MK0001 | Ilmu Bahan | 2 | | 2 | 1 | Abdul Yadi | 2 | MK0002 | Fisika Nuklir | 4 | A | 16 7 | 1 | Abdul Yadi | 9 | MK0004 | Matematika | 3 | A | 12 10 | 1 | Abdul Yadi | 11 | MK0005 | Kimia | 4 | | 11 | 1 | Abdul Yadi | 13 | MK0007 | Enkripsi Data | 4 | C | 8

� �

�������)����C�E����C����������&()+%�,�E ��+

� ���������� ������ �AB�A�����

CREATE OR REPLACE FUNCTION ft.nilai_update(INOUT i_id integer, INOUT i_mahasiswa integer, OUT s_mahasiswa_nama text,INOUT i_mata_kuliah integer, OUT s_mata_kuliah_kode text, OUT s_mata_kuliah_label text,OUT i_sks smallint, INOUT s_nilai text, OUT i_sks_nilai smallint)

RETURNS SETOF record AS$BODY$DECLARE

_insert boolean:=TRUE;BEGIN

IF COALESCE(i_id,0)<>0 THENUPDATE ft.nilai SET mahasiswa=i_mahasiswa, mata_kuliah=i_mata_kuliah, nilai=s_nilai WHERE id=i_idRETURNING id, mahasiswa, mata_kuliah, nilai INTO i_id, i_mahasiswa, i_mata_kuliah, s_nilai;_insert:=NOT FOUND;

END IF;IF _insert THEN

INSERT INTO ft.nilai (mahasiswa, mata_kuliah, nilai) VALUES (i_mahasiswa, i_mata_kuliah, s_nilai)RETURNING id, mahasiswa, mata_kuliah, nilai INTO i_id, i_mahasiswa, i_mata_kuliah, s_nilai;

END IF;SELECT ft.mahasiswa.nama INTO s_mahasiswa_nama FROM ft.mahasiswa WHERE ft.mahasiswa.id=i_mahasiswa;SELECT ft.mata_kuliah.kode, ft.mata_kuliah.label, ft.mata_kuliah.sks

INTO s_mata_kuliah_kode, s_mata_kuliah_label, i_sksFROM ft.mata_kuliah WHERE ft.mata_kuliah.id=i_mata_kuliah;

i_sks_nilai:=ft.nilai_convert(s_nilai)*i_sks;RETURN NEXT;

RETURN;END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.nilai_update(integer, integer, integer, text) TO ft_admin;REVOKE ALL ON FUNCTION ft.nilai_update(integer, integer, integer, text) FROM public;

&�D�� ����D��������A����%D���#�(���D�����A��B�����������%������A��

� �

������B�)����C�E����C����������&()+%�,�E ��+

� ���������� ������ �AB�A�����

SELECT * FROM ft.nilai_update(NULL,1,15,'D');

�AD���

��������A��

SELECT * FROM ft.nilai_update(12,1,15,'c');

�AD���

��������A��

i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | D | 2

i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | C | 4

� �

�������)����C�E����C���������� +-+�+� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

CREATE OR REPLACE FUNCTION ft.nilai_delete(IN i_id integer[]) RETURNS void AS$BODY$BEGIN

DELETE FROM ft.nilai WHERE id=ANY(i_id);RETURN;

END;$BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER;GRANT EXECUTE ON FUNCTION ft.nilai_delete(integer[]) TO ft_admin;REVOKE ALL ON FUNCTION ft.nilai_delete(integer[]) FROM public;

&�D�� ����D��������A����%D���#�(���D�����A��B�����������%������A��

� �

������B�)����C�E����C���������� +-+�+� ���������� ������ �AB�A�����

SELECT * FROM ft.nilai_query();

�AD���

��������A��0+B����������D����B�����E�1�

SELECT ft.nilai_delete(ARRAY[2,10,11]);��������A��0���E�����2-�34�A��331�

SELECT * FROM ft.nilai_query();

�AD���

��������A��0+B����������D�E��A�����E�1�

i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 1 | 1 | Abdul Yadi | 1 | MK0001 | Ilmu Bahan | 2 | | 2 | 1 | Abdul Yadi | 2 | MK0002 | Fisika Nuklir | 4 | A | 16 7 | 1 | Abdul Yadi | 9 | MK0004 | Matematika | 3 | A | 12 10 | 1 | Abdul Yadi | 11 | MK0005 | Kimia | 4 | | 11 | 1 | Abdul Yadi | 13 | MK0007 | Enkripsi Data | 4 | C | 8 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | C | 4

i_id | i_mahasiswa | s_mahasiswa_nama | i_mata_kuliah | s_mata_kuliah_kode | s_mata_kuliah_label | i_sks | s_nilai | i_sks_nilai ------+-------------+------------------+---------------+--------------------+---------------------+-------+---------+------------- 1 | 1 | Abdul Yadi | 1 | MK0001 | Ilmu Bahan | 2 | | 7 | 1 | Abdul Yadi | 9 | MK0004 | Matematika | 3 | A | 12 12 | 1 | Abdul Yadi | 15 | MK0009 | Statistik Dasar | 2 | C | 4

� �

�����������������A����B��� ���������� ������ �AB�A�����

�AFAB

�FE�B

��A�FE��AFAB

�CF��A����AFAB

��FE��AFAB

�CF��A��

���A��

��FE

���A��

�B��C��

� �

�����������������A����B��������������B�����&E���F���B!�./01

� ���������� ������ �AB�A�����

0��F�� !"�+��D�����D�F��FB�F�B�� !"������������F�D�����

CREATE TYPE ft.ip_accum AS (sks integer, accum integer);�B���/�)�������%����D�F� DD��3���B�

CREATE OR REPLACE FUNCTION ft.ipk_accum(acc ft.ip_accum, s_nilai text, i_sks smallint) RETURNS ft.ip_accum AS$BODY$DECLARE

_nilai numeric;BEGIN

_nilai:=ft.nilai_convert(s_nilai)*i_sks;IF (_nilai IS NOT NULL) THEN

acc.sks:=acc.sks+i_sks;acc.accum:=acc.accum+_nilai;

END IF;RETURN acc;

END;$BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;

DD�����B�D��������D����

���������D���� CREATE OR REPLACE FUNCTION ft.ipk_calc(acc ft.ip_accum) RETURNS numeric AS$BODY$BEGIN

RETURN CASE WHEN acc.sks>0 THEN acc.accum::numeric/acc.sks::numericELSE NULL END;

END;$BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT;

� �

�����������������A����B��������������B�����&E���F���B!�./21

� ���������� ������ �AB�A�����

CREATE AGGREGATE ft.ipk(text, smallint)( sfunc = ft.ipk_accum, stype = ft.ip_accum, finalfunc = ft.ipk_calc, initcond = '(0,0)');

���D��*�����D������D����

2������� SELECT ft.nilai.mahasiswa, ft.ipk(ft.nilai.nilai, ft.mata_kuliah.sks) FROM ft.nilai inner join ft.mata_kuliah on ft.nilai.mata_kuliah=ft.mata_kuliah.idGROUP BY ft.nilai.mahasiswa;

1B��� mahasiswa | ipk -----------+-------------------- 1 | 3.2000000000000000

� �

�����������ABCBA��DDE��FA���

���������A�BCDECF����E�������F�����������BC��F����F�F����F

����F�F��

�A���� F���!�����������F�"�#F�F�$

%F����F��������&��'C���F��(EC��BF�F�E�• �)*+*�

� �

������

� ����������� ABC��DEDF��D������� �C������ �FD��AA���DF��DAA������ �����A�B���D�A��D�� ���D �� �D!�A"���� �#�$�F

� ��������D�FD��B���D��A%�C�� �#�$�FD��A%�C�

� �

����FA����� ������������ �����A�BCDAEFD���� �F��A��F��A�� �����

����A��BCDEF��B�B���B������� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�

���E�F���F��F�B��FC��http://tomcat.apache.org/download-60.cgi

��AFEF�������FA����B�F�F����������BC ��B�� �D�F���E��E����ED��A�E���F��C�DCE��� �F��EE��� ���F���AC�F��FD�A���E�EA��EA���!F�"�����F����EA�� BC��ED��FD�� DA ��FD�AEE�F"

service.bat install

� �

����A��B�FA���� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�

!�E�D�B����� #DA���EA�������C���DA�$D�F�CD��DA�!C��%E�E�&�C��E��FD��� $D�ED�����FA��' �FD����#DA�F��D���(��C�AFD��)CC�*'#()+�� (��C���D�������,CC���!C��,CC�������)CC�FA�&�C��E��FD��� �����

���E�F���F��F�B��FC��http://www.eclipse.org/downloads/

��AFEF���!�E�D�B�� �D�F���E��E����ED��A�E���F��C�DCE��� )�� �ED�E�F�E�F����DE�E��C�������ED��E�EA�ED�� D���F����� �F�

&FF���E��E��"��C�����D���D&A�D'���D���D(��A��D�����A����

� �

����A��B��CB��DD�A�B���BCDDA����B��� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�

"������� -���A�C!�����C���DA�ACC�.���C��E��FD�� AFFAF��.�ED���F���A��AC����EA���F���#DA��D�A�E��F�EAFCD��

� �����

��AFEF���#E�B�� -�AF!�ED�$�F����� /F����D �)���D*D�������D+�"D�A&�"����� -���-�EFE����C!�AE����FA��"�,����--��.�AA���.CAB-�C�����-�� ���-/.E�� �ED0 A�ED���� EF�FD�A� ��F�$�F����

� �

����A��B��CB��DD�A�B���BCDDA����B��� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�

��AFEF���#$$E�B�

� �C�DCE���E��E����"�$0.1./.2��D�E�F�,����--CA��.�AA���.CAB-"���AA����-�A"��A��.,�B��

� �D�F���E��E����F�� EA ��F���AC�F�� �C�DCE���E��E���,����--��.�AA���.CAB-�C�����-�� ���-/.E-2���-���$�/E$������.2���

� �D�F���E��E���A����� A��ED�A���EA�ED�����EE��� ���F���AC�F���A������EE���A� �A ���F���AC�F��C������

� �E D���$�F���.��ED�,�)�� �E��CAC�EAF��A��FDA���E�F�����EE���C������� �EE��$�F���.���A�&��!���D���� DA ����D�E!AE��ED�,�)�1�2�3����E�EF�����)CC�FA�

� �

����A��B����AD�E���B�D �B!A"���B"��"�B#�D$��

� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�

��AFEF���#E�B�%A%��&�'�EEF�(�CB$�)��� �E D���4C�FE��F��!C5�� 6F�FA��(�"�,�����--��.�AA���.CAB-��-�"�-�� ����-&���&A#-�"�$���$�� ���.#���

�B BE�D�BA�&��B��E%���� 4�� �E��ED���D� 0F��C����F�DA��F���,�)����E�E���F�����EA����� ���F�C��FE�F�

��AFEF���#$$E�B�%A%��&�'�EEF�(�CB$�)��� �E D���4C�FE��F��!C5�� ��E�����ED��C�DCE��!F���"�$���$�� ���.#���� �EE����D �4C�FE��F��!C5.��F��3���D*D4���D3�����ED�E�E��ED� DA ������ �E�!F��#����ED��A�E���F��C�DCE��A����� A�

� �

����A��B�%�&��C� ���������� �FD��B���D��A%�C�� �#�$�FD��A%�C�

!)A*"������� -D��5A�D�FCD�AC�,CC�������)CC�FA�� -����E���EA��C!��DA����F�����E���FDA��E�AF����F���A�.�E�C A�.�ED��A���EA���E����.�E��C���A���EAE��C���ED���E��FD���AC��.�ED��E��C����F����CDA�C���*46B+�E��F�EAFCD�!�E���C���

��AFEF����� �C�DCE���E��E����#�$0.5.5$�"�0.2����E�F�,����--""".���C,�.CAB-��A� C��-�"�-�A"��A��.�,��

� �D�F���E��E����ED��ED�E�E�ED��F���AE�ED�����EE����C0����FE�EDE��F��� �ED�