modul praktikum basis data - dewapurnama | just … ini membahas tentang cara membuat dan mengelola...

32
Modul Praktikum Basis Data Oleh: Bambang Purnomosidi D. P., S.E., Ak., S.Kom., MMSI SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AKAKOM YOGYAKARTA

Upload: tranbao

Post on 10-Mar-2018

268 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

Modul PraktikumBasis Data

Oleh:

Bambang Purnomosidi D. P., S.E., Ak., S.Kom., MMSI

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER

AKAKOM

YOGYAKARTA

Page 2: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL IPengenalan dan Lingkungan Kerja PostgreSQL

I.1 Maksud dan TujuanI.1.1 Maksud

Membahas tentang pengertian basis data secara umum, pemahamanumum tentang PostgreSQL, serta dasar-dasar pengoperasianPostgreSQL.

I.1.2 Tujuan1. Mahasiswa memahami pengertian basis data secara umum dan

peranannya.2. Mahasiswa memahami kegunaan software PostgreSQL serta

kemungkinan penggunaannya.3. Mahasiswa memahami cara menjalankan server basis data

PostgreSQL.4. Mahasiswa memahami berbagai software yang bisa digunakan untuk

mengakses database PostgreSQL.5. Mahasiswa memahami cara mengkonfigurasi server basis data

PostgreSQL.6. Mahasiswa memahami cara menggunakan perintah baris psql untuk

mengakses basis data serta mencari dan menggunakan berbagaiperintah SQL maupun non-SQL.

I.2 Dasar TeoriSuatu software basis data merupakan software yang digunakan untuk

menyimpan dan memungkinkan data yang telah disimpan untuk diakses denganperintah-perintah tertentu. Software basis data sering dikenal dengan sebutanDBMS (Database Management System). Perintah-perintah yang digunakanuntuk mengelola basis data mempunyai standar yang disebut dengan SQL(Structured Query Language). Standar ini dibuat oleh suatu badan yangberwenang (ANSI) sehingga sering disebut juga dengan istilah ANSI SQL. Saatini standar SQL yang diacu kebanyakan software adalah SQL92 dan SQL99.

Pada umumnya, data yang tersimpan merupakan data relasional (datayang saling terhubung). Proses untuk merancang suatu basis data disebutdengan istilah normalisasi. Pada dasarnya, suatu basis data terdiri atas berbagaitabel yang saling terhubung. Tabel itu sendiri terdiri atas data rinci untuk suatuentitas dan terdiri atas row dan column (pada software non-SQL dan softwarebasis data tertentu sering disebut record dan field). Berikut ini adalah gambaransecara singkat dari paparan tersebut:

Modul Praktikum Basis Data KA – hal 2 dari 32

Page 3: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

Tabel itu sendiri jika digambarkan merupakan suatu baris serta kolomsebagai berikut:

no_mhs nama lahir tgllahir alamat

002345 Zaky Yogyakarta 3­3­2000 Griya Purwa Asri H304

002346 Ahmad Jakarta 21­12­1978 Kenari II/37 Salemba

002347 Aditya Jakarta 25­08­1972 Gedongkuning JG IV/16

Tentang PostgreSQLPostgreSQL merupakan suatu software object-relational database

management system (ORDBMS) berbasis pada POSTGRES, versi 4.2 yangdikembangkan di University of California at Berkeley Computer ScienceDepartment. Software ini merupakan software yang banyak digunakandikalangan perusahaan, individu, sekolah, maupun organisasi-organisasilainnya. PostgreSQL mempunyai kompatibilitas dengan SQL92 dan SQL99 sertaberbagai fitur berikut ini:➢ complex queries➢ foreign keys➢ triggers

Modul Praktikum Basis Data KA – hal 3 dari 32

Relasi antar tabelTabel 1Tabel 2

Basis data

Page 4: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

➢ views➢ transactional integrity➢ multiversion concurrency control

PostgreSQL didistribusikan dalam dua kategori software yaitu server danclient. Server diperlukan untuk menyediakan layanan basis data sedangkanclient diperlukan untuk mengakses basis data. Untuk mengakses basis dataanda harus mengaktifkan terlebih dahulu server yang diperlukan.

Menjalankan server basis data PostgreSQLAda beberapa cara untuk menjalankan server basis data PostgreQL.

Sebelum menjalankan server ini, anda harus memeriksa proses di komputeranda untuk memastikan apakah server telah dijalankan atau belum. Untukmemeriksa, gunakan perintah ps aux dari shell. Jika terdapat baris-baris ini,berarti server PostgreSQL telah siap (angka pada kolom pertama mungkin laindari angka yang ada pada komputer anda):

......

...... 1698 ?    S   0:00 /usr/bin/postmaster ­p 5432 ­D /var/lib/pgsql/data 1702 ?    S   0:00 postgres: stats buffer process 1703 ?    S   0:00 postgres: stats collector process............

Untuk menjalankan server PostgreSQL, ada beberapa cara:1. Sebagai root, jalankan script inisialisasi sistem untuk PostgreSQL. Cara ini

biasanya merupakan emulasi perintah postmaster dan pg_ctl untukmemudahkan pengaktifan server.

[root@localhost ~]# /etc/init.d/postgresql startStarting postgresql service:                               [  OK  ][root@localhost ~]#

2. Menggunakan perintah postmaster:

nohup postmaster >logfile 2>&1 </dev/null &

3. Menggunakan pg_ctl:

pg_ctl start

Variasi untuk masing-masing perintah (postmaster dan pg_ctl) bisadiperoleh pada manual dengan cara memberikan perintah man postmaster atauman pg_ctl pada shell.

Modul Praktikum Basis Data KA – hal 4 dari 32

Page 5: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

Software Client PostgreSQL telah menyertakan software client untuk mengakses basis

data. Software tersebut bisa diakses melalui shell dan bukan merupakan suatulingkungan grafis (GUI). Software tersebut adalah psql. Software ini yang akandigunakan pada praktikum.

Jika ingin menggunakan GUI, bisa digunakan software-software berikutini:1. pgAdmin (http://www.pgadmin.org)2. PgAccess (http://www.pgaccess.org)

Konfigurasi Server Konfigurasi server PostgreSQL terletak pada direktori /var/lib/pgsql/data

(pada sistem Fedora), jika anda menggunakan distribusi Linux lain atau varianUNIX lain, kemungkinan lokasinya berbeda. Meskipun demikian, isi dari direktoritersebut biasanya adalah sebagai berikut:

[root@localhost data]# pwd/var/lib/pgsql/data[root@localhost data]# ls ­latotal 52drwx­­­­­­  6 postgres postgres 4096 Sep  5 16:35 .drwx­­­­­­  4 postgres postgres 4096 Jul 20 16:14 ..drwx­­­­­­  8 postgres postgres 4096 Sep  5 15:11 basedrwx­­­­­­  2 postgres postgres 4096 Sep  5 16:35 globaldrwx­­­­­­  2 postgres postgres 4096 Jul 12 15:51 pg_clog­rw­­­­­­­  1 postgres postgres 3487 Jul 21 10:21 pg_hba.conf­rw­­­­­­­  1 postgres postgres 1441 Jul 12 15:51 pg_ident.conf­rw­­­­­­­  1 postgres postgres    4 Jul 12 15:51 PG_VERSIONdrwx­­­­­­  2 postgres postgres 4096 Sep  2 10:44 pg_xlog­rw­­­­­­­  1 postgres postgres 7819 Jul 21 10:19 postgresql.conf­rw­­­­­­­  1 postgres postgres   59 Sep  5 16:35 postmaster.opts­rw­­­­­­­  1 postgres postgres   45 Sep  5 16:35 postmaster.pid[root@localhost data]#

Konfigurasi terdapat pada file-file dengan ekstensi .conf. Berikut ini adalahpenjelasan fungsi masing-masing:1. pg_hba.conf: mengatur autentikasi client. Agar client bisa mengakses suatu

basis data PostgreSQL, konfigurasi ini yang harus diatur.2. pg_identd.conf: mengatur autentikasi client dengan metode ident.3. postgresql.conf: mengatur konfigurasi software PostgreSQL.

Pengenalan psqlpsql merupakan software yang dijalankan dari shell untuk mengakses

basis data PostgreSQL. Jika belum memahami cara menggunakannya, andabisa menggunakan parameter –help berikut ini:

Modul Praktikum Basis Data KA – hal 5 dari 32

Page 6: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

[bpdp@localhost pics]$ psql ­­helpThis is psql 7.4.3, the PostgreSQL interactive terminal. Usage:  psql [OPTIONS]... [DBNAME [USERNAME]] General options:  ­d DBNAME       specify database name to connect to (default: "bpdp")  ­c COMMAND      run only single command (SQL or internal) and exit  ­f FILENAME     execute commands from file, then exit  ­l              list available databases, then exit  ­v NAME=VALUE   set psql variable NAME to VALUE  ­X              do not read startup file (~/.psqlrc)  ­­help          show this help, then exit  ­­version       output version information, then exit Input and output options:  ­a              echo all input from script  ­e              echo commands sent to server  ­E              display queries that internal commands generate  ­q              run quietly (no messages, only query output)  ­o FILENAME     send query results to file (or |pipe)  ­n              disable enhanced command line editing (readline)  ­s              single­step mode (confirm each query)  ­S              single­line mode (end of line terminates SQL command) Output format options:  ­A              unaligned table output mode (­P format=unaligned)  ­H              HTML table output mode (­P format=html)  ­t              print rows only (­P tuples_only)   ­T TEXT         set HTML table tag attributes (width, border) (­Ptableattr=)  ­x              turn on expanded table output (­P expanded)  ­P VAR[=ARG]    set printing option VAR to ARG (see \pset command)  ­F STRING       set field separator (default: "|") (­P fieldsep=)   ­R   STRING               set   record   separator   (default:   newline)   (­Precordsep=) Connection options:   ­h HOSTNAME     database server host or socket directory (default:"local sock et")  ­p PORT         database server port (default: "5432")  ­U NAME         database user name (default: "bpdp")  ­W              prompt for password (should happen automatically) For more information, type "\?" (for internal commands) or "\help"(for SQL commands) from within psql, or consult the psql section inthe PostgreSQL documentation. Report bugs to <pgsql­[email protected]>.[bpdp@localhost pics]$

Modul Praktikum Basis Data KA – hal 6 dari 32

Page 7: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

Secara singkat, psql bisa dijalankan untuk mengakses basis data dengancara berikut ini:

[bpdp@localhost ~]$ psql mahasiswaPassword:Welcome to psql 7.4.3, the PostgreSQL interactive terminal. Type:  \copyright for distribution terms       \h for help with SQL commands       \? for help on internal slash commands       \g or terminate with semicolon to execute query       \q to quit mahasiswa=#

Keterangan:mahasiswa adalah nama basis data yang akan diakses.

I.3 Praktik

1. Periksalah apakah proses untuk sever basis data PostgreSQL telah berjalanatau belum.

2. Jika belum, jalankan server PostgreSQL. Jika sudah berjalan, matikan prosestersebut kemudian jalankan lagi.

3. Masuklah sebagai root kemudian dari user root, ganti user menjadi postgres.Setelah menjadi user postgres, masuklah ke basis data template1. Berikut iniadalah cara-caranya:

[bpdp@localhost ~]$ su ­Password:[root@localhost ~]# su ­ postgres­bash­3.00$ psql template1Welcome to psql 7.4.3, the PostgreSQL interactive terminal. Type:  \copyright for distribution terms       \h for help with SQL commands       \? for help on internal slash commands       \g or terminate with semicolon to execute query       \q to quit template1=#

Dari posisi tersebut, gunakan perintah backslash (“\”) untuk mencaripertolongan tentang bagaimana cara melihat basis data apa saja yang adapada sistem.

4. Edit file pg_hba.conf pada lokasi yang telah dijelaskan di depan, gantilah barisdengan isi:

Modul Praktikum Basis Data KA – hal 7 dari 32

Page 8: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

local  all    all             ident   sameuser

Menjadi:

local    all         all         passwordhost    all     all     127.0.0.1       255.255.255.255 password

Setelah itu, restart proses server PostgreSQL kemudian cobalah menjalankanperintah pada nomor 3 diatas. Apa yang terjadi? apa kesimpulan anda?

5. Kembalikan isi dari file pg_hba ke kondisi semula.

Modul Praktikum Basis Data KA – hal 8 dari 32

Page 9: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL IIMembuat dan Mengelola Basis Data

II.1 Maksud dan TujuanII.1.1 Maksud

Modul ini membahas tentang cara membuat dan mengelola suatu basisdata PostgreSQL.

II.1.2 Tujuan1. Mahasiswa memahami bagaimana cara membuat suatu basis data.2. Mahasiswa memahami berbagai perintah yang berkaitan dengan

pengelolaan basis data di PostgreSQL.

II.2 Dasar TeoriMembuat Basis Data

Basis data bisa dibuat melalui psql atau melaui shell secara langsung.Untuk membuat suatu basis data, user yang bersangkutan harus mempunyaihak akses untuk membuat basis data. Pembahasan tentang user akan diberikanpada modul tersendiri.

Membuat basis data melalui psql bisa dilakukan dengan memberikanperintah berikut ini:

CREATE DATABASE name    [ [ WITH ] [ OWNER [=] dbowner ]           [ LOCATION [=] 'dbpath' ]           [ TEMPLATE [=] template ]           [ ENCODING [=] encoding ] ]

Untuk membuat basis data langsung melalui shell diperlukan script yangtelah disertakan pada distribusi PostgreSQL. Perintah yang harus diberikanadalah:

­bash­3.00$ createdb ­­helpcreatedb creates a PostgreSQL database. Usage:  createdb [OPTION]... [DBNAME] [DESCRIPTION] Options:  ­D, ­­location=PATH       alternative place to store the database  ­E, ­­encoding=ENCODING   encoding for the database  ­O, ­­owner=OWNER         database user to own the new database  ­T, ­­template=TEMPLATE   template database to copy  ­e, ­­echo                show the commands being sent to the server  ­q, ­­quiet               don't write any messages

Modul Praktikum Basis Data KA – hal 9 dari 32

Page 10: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

  ­­help                    show this help, then exit  ­­version                 output version information, then exit Connection options:  ­h, ­­host=HOSTNAME       database server host or socket directory  ­p, ­­port=PORT           database server port  ­U, ­­username=USERNAME   user name to connect as  ­W, ­­password            prompt for password By   default,   a   database   with   the   same   name   as   the   current   user   iscreated. Report bugs to <pgsql­[email protected]>.­bash­3.00$

Menghapus Basis DataMenghapus basis data juga bisa dilakukan melalui psql atau langsung

melalui shell. Untuk menghapus dari psql, perintahnya adalah sebagai beriku:

DROP DATABASE name

Untuk menghapus basis data dari shell, perintah yang digunakan adalah:

­bash­3.00$ dropdb ­­helpdropdb removes a PostgreSQL database. Usage:  dropdb [OPTION]... DBNAME Options:  ­e, ­­echo                show the commands being sent to the server  ­i, ­­interactive         prompt before deleting anything  ­q, ­­quiet               don't write any messages  ­h, ­­host=HOSTNAME       database server host or socket directory  ­p, ­­port=PORT           database server port  ­U, ­­username=USERNAME   user name to connect as  ­W, ­­password            prompt for password  ­­help                    show this help, then exit  ­­version                 output version information, then exit Report bugs to <pgsql­[email protected]>.­bash­3.00$

Pemeliharaan Basis DataPengelolaan terhadap suatu basis data meliputi berbagai aktivitas yang

digunakan untuk memastikan bahwa suatu basis data berada pada kondisi yangbaik. Ada beberapa aktivitas yang bisa dilakukan oleh DBA (DatabaseAdministrator) berikut ini.1. VACUUM. Perintah ini digunakan untuk me-recover tempat di media

Modul Praktikum Basis Data KA – hal 10 dari 32

Page 11: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

penyimpan yang ditempati oleh baris tabel yang telah dihapus,memperbaharui data statistik, serta menghindari kemungkinan kehilangandata.

2. REINDEX. Perintah ini digunakan untuk mengindeks ulang basis data atautabel tertentu agar pengaksesan bisa dilakukan dengan lebih cepat.

3. pg_dump, merupakan perintah dari shell untuk membuat backup berupa fileteks yang berisi perintah SQL pada PostgreSQL untuk membuat danmengisikan basis data.

4. psql bisa digunakan untuk me-restore perintah SQL yang telah dihasilkan daripg_dump.

II.3 Praktik1. Sebagai user postgres, buatlah basis data bernama akademik dengan

perintah berikut ini:

­bash­3.00$ createdb akademikCREATE DATABASE­bash­3.00$

2. Hapus kembali basis data tersebut dengan perintah:

­bash­3.00$ dropdb akademikDROP DATABASE­bash­3.00$

3. Dari psql, buatlah basis data akademik.4. Dari psql, hapuslah basis data akademik.5. Buat lagi basis data akademik dengan salah satu cara diatas.6. Gunakan perintah pg_dump dari shell untuk mengambil isi dari basis data

akademik. Perintah yang digunakan adalah:

­bash­3.00$ pg_dump akademik­­­­ PostgreSQL database dump­­ SET client_encoding = 'SQL_ASCII';SET check_function_bodies = false; SET SESSION AUTHORIZATION 'postgres'; ­­­­ TOC entry 4 (OID 2200)­­ Name: public; Type: ACL; Schema: ­; Owner: postgres­­ 

Modul Praktikum Basis Data KA – hal 11 dari 32

Page 12: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

REVOKE ALL ON SCHEMA public FROM PUBLIC;GRANT ALL ON SCHEMA public TO PUBLIC;  ­­­­ TOC entry 3 (OID 2200)­­ Name: SCHEMA public; Type: COMMENT; Schema: ­; Owner: postgres­­ COMMENT ON SCHEMA public IS 'Standard public schema';  ­bash­3.00$

7. Simpanlah hasil di atas pada suatu file teks dengan perintah berikut ini:

­bash­3.00$ pg_dump akademik > sql­akademik­bash­3.00$­bash­3.00$ cat sql­akademik­­­­ PostgreSQL database dump­­ SET client_encoding = 'SQL_ASCII';SET check_function_bodies = false; SET SESSION AUTHORIZATION 'postgres'; ­­­­ TOC entry 4 (OID 2200)­­ Name: public; Type: ACL; Schema: ­; Owner: postgres­­ REVOKE ALL ON SCHEMA public FROM PUBLIC;GRANT ALL ON SCHEMA public TO PUBLIC;  ­­­­ TOC entry 3 (OID 2200)­­ Name: SCHEMA public; Type: COMMENT; Schema: ­; Owner: postgres­­ COMMENT ON SCHEMA public IS 'Standard public schema';  ­bash­3.00$

8. Buatlah basis data baru bernama 'mahasiswa' kemudian isikan hasil daripg_dump di atas ke basis data mahasiswa dengan perintah berikut ini:

­bash­3.00$ psql mahasiswa < sql­akademikSET

Modul Praktikum Basis Data KA – hal 12 dari 32

Page 13: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

SETSETREVOKEGRANTCOMMENT­bash­3.00$

Modul Praktikum Basis Data KA – hal 13 dari 32

Page 14: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL IIITabel, Query, View, dan Join

III.1 Maksud dan TujuanIII.1.1 Maksud

Modul ini membahas tentang cara membuat tabel yang merupakanbagian inti untuk menyimpan data pada suatu basis data. Selain itu,modul ini juga membahas tentang Query untuk mengambil data dari (satuatau lebih) tabel, view untuk mempermudah pengaksesan tabel untuksesi berikutnya, serta join untuk mengambil data dari berbagai tabelsekaligus.

III.1.2 Tujuan1. Mahasiswa memahami pengertian dari tabel, query, view, serta join.2. Mahasiswa memahami cara membuat tabel serta tipe-tipe data yang

bisa ditampung pada suatu tabel.3. Mahasiswa memahami cara mengisikan data ke suatu tabel.4. Mahasiswa memahami cara membuat query untuk mengambil data

dari tabel.5. Mahasiswa memahami cara membuat view.6. Mahasiswa memahami cara melakukan join untuk lebih dari satu tabel.

III.2 Dasar TeoriTabel

Tabel merupakan bagian dari basis data dan digunakan untuk menyimpandata dalam bentuk kolom (column / field) dan baris (row/record). Tabel ini bisadibuat pada basis data langsung, atau bisa juga menempati suatu schema.Schema merupakan suatu pengelompokan logis dari tabel-tabel pada suatubasis data.

Perintah SQL untuk membuat tabel:

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name (   { column_name data_type [ DEFAULT default_expr ] [ column_constraint[ ... ] ]    | table_constraint    | LIKE parent_table [ { INCLUDING | EXCLUDING } DEFAULTS ] } [, ...])[ INHERITS ( parent_table [, ... ] ) ][ WITH OIDS | WITHOUT OIDS ][ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]where column_constraint is:[ CONSTRAINT constraint_name ]{ NOT NULL | NULL | UNIQUE | PRIMARY KEY |  CHECK (expression) |

Modul Praktikum Basis Data KA – hal 14 dari 32

Page 15: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

  REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL |MATCH SIMPLE     [ ON DELETE action ] [ ON UPDATE action ] }[   DEFERRABLE   |   NOT   DEFERRABLE   ]   [   INITIALLY   DEFERRED   |   INITIALLYIMMEDIATE ]and table_constraint is:[ CONSTRAINT constraint_name ]{ UNIQUE ( column_name [, ... ] ) |  PRIMARY KEY ( column_name [, ... ] ) |  CHECK ( expression ) |   FOREIGN   KEY   (   column_name   [,   ...   ]   )   REFERENCES   reftable[ ( refcolumn [, ... ] )     [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ][ ON UPDATE a[   DEFERRABLE   |   NOT   DEFERRABLE   ]   [   INITIALLY   DEFERRED   |   INITIALLYIMMEDIATE ]

Contoh:

CREATE TABLE films (    code        char(5) CONSTRAINT firstkey PRIMARY KEY,    title       varchar(40) NOT NULL,    did         integer NOT NULL,    date_prod   date,    kind        varchar(10),    len         interval hour to minute);

Keterangan:1. CONSTRAINT merupakan bagian dari sintaks yang digunakan untuk

mendefinsikan batasan dari kolom yang bersangkutan.2. PRIMARY KEY merupakan perintah untuk menetapkan kolom yang

bersangkutan sebagai kunci primer.3. NOT NULL merupakan salah satu CONSTRAINT yang digunakan

untuk membuat isi dari kolom yang bersangkutan tidak bolehnol/kosong.

4. Tipe data yang bisa digunakan untuk kolom adalah:

Tipe data Alias Keteterangan

bigint int8 signed eight-byte integer

bigserial serial8 autoincrementing eight-byte

bit fixed-length bit string

bit varying(n) varbit(n) variable-length bit string

boolean bool logical Boolean (true/false)

Modul Praktikum Basis Data KA – hal 15 dari 32

Page 16: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

box rectangular box in the plane

bytea binary data

character varying(n) varchar(n) variable-length character string

character(n) char(n) fixed-length character string

cidr IPv4 or IPv6 network address

circle circle in the plane

date calendar date (year, month,day)

double precision float8 double precision floating-pointnumber

inet IPv4 or IPv6 host address

integer int, int4 signed four-byte integer

interval(p) time span

line infinite line in the plane (not fullyimplemented)

lseg line segment in the plane

macaddr MAC addressmacaddr

money currency amount

numeric [ (p, s) ] decimal [ (p, s) ] exact numeric with selectableprecision

path open and closed geometric pathin the plane

point geometric point in the plane

polygon closed geometric path in theplane

real float4 single precision floating-pointnumber

smallint int2 signed two-byte integer

serial serial4 autoincrementing four-byteinteger

text variable-length character string

Modul Praktikum Basis Data KA – hal 16 dari 32

Page 17: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

time [ (p) ] [ withouttime zone ]

time of day

time [ (p) ] with timezone

timetz time of day, including time zone

timestamp [ (p) ] withouttime zone

timestamp date and time

timestamp [ (p) ] [ withtime zone ]

timestamptz date and time, including timezone

Mengisikan Data (INSERT)

Perintah INSERT digunakan untuk mengisikan data ke dalam suatu tabelpada suatu basis data. Perintah yang digunakan adalah sebagai berikut:

INSERT INTO table [ ( column [, ...] ) ]    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) |query }

QueryQuery merupakan kategori perintah yang digunakan untuk meminta

layanan dari server basis data. Perintah yang akan kita pelajari sekarang adalahSELECT untuk mengambil data dari basis data. Bentuk perintah SELECT adalahsebagai berikut:

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]    * | expression [ AS output_name ] [, ...]    [ FROM from_item [, ...] ]    [ WHERE condition ]    [ GROUP BY expression [, ...] ]    [ HAVING condition [, ...] ]    [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ]    [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ]    [ LIMIT { count | ALL } ]    [ OFFSET start ]    [ FOR UPDATE [ OF table_name [, ...] ] ]

ViewView digunakan menyimpan hasil suatu query ke dalam suatu nama

tertentu. Biasanya hal ini diperlukan jika kita ingin menyimpan suatu query yang(cukup) kompleks. Untuk mengakses suatu view, kita cukup memanggil viewtersebut dengan perintah SELECT. Perintah untuk membuat view adalahsebagai berikut:

CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query

Modul Praktikum Basis Data KA – hal 17 dari 32

Page 18: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

Untuk menghapus view, gunakan perintah DROP VIEW namaview

JoinJoin adalah suatu bagian dari perintah SELECT yang digunakan untuk

menggabungkan lebih dari satu tabel ke dalam suatu hasil query. Ada beberapajenis join yang bisa digunakan, antara lain:

1. [ INNER ] JOIN2. LEFT [ OUTER ] JOIN3. RIGHT [ OUTER ] JOIN4. FULL [ OUTER ] JOIN5. CROSS JOIN

III.3 Praktik1. Buatlah basis data praktikum dan buatlah dua tabel berikut ini pada basis

data tersebut:

CREATE TABLE films (    code        char(5) CONSTRAINT firstkey PRIMARY KEY,    title       varchar(40) NOT NULL,    did         integer NOT NULL,    date_prod   date,    kind        varchar(10),    len         interval hour to minute);CREATE TABLE distributors (     did    integer PRIMARY KEY DEFAULT nextval('serial'),     name   varchar(40) NOT NULL CHECK (name <> ''));

2, Isikan data berikut ini:

INSERT INTO films VALUES    ('UA502', 'Bananas', 105, '1971­07­13', 'Comedy', '82 minutes');INSERT INTO films (code, title, did, date_prod, kind, len)       VALUES ('T_601', 'Yojimbo', 106, '1961­06­16', 'Drama', '100minutes');

3. Isikan data untuk distributor, sesuai dengan isi data di atas. Nama distributorterserah anda. Isikan sebanyak 5 data distributor.

4. Buatlah query untuk menampilkan data film yang jenisnya hanya 'Comedy'saja!.

5. Buatlah hasil nomor 4 tersebut menjadi suatu view kemudian tampilkanhasilnya.

Modul Praktikum Basis Data KA – hal 18 dari 32

Page 19: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

6. Buatlah query untuk mengambil data distributor, diurutkan menurut namadistributor.

7. Tampilkan 3 data pertama dari distributor!8. Kerjakan perintah SQL berikut dan jelaskan artinya: SELECT kind, sum(len)

AS total FROM films GROUP BY kind;

9. Kerjakan perintah SQL untuk join berikut ini dan jelaskan artinya: SELECTf.title, f.did, d.name, f.date_prod, f.kind FROM distributors d INNERJOIN films f ON f.did = d.did

10. Kerjakan perintah SQL berikut ini dan jelaskan artinya: SELECT * FROM filmsWHERE films.title LIKE 'Y%';

Modul Praktikum Basis Data KA – hal 19 dari 32

Page 20: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL IVMengelola User

IV.1 Maksud dan TujuanIV.1.1 Maksud

Membahas tentang bagaimana PostgreSQL sebagai suatu softwareserver basis data memungkinkan pemakaian oleh lebih dari satupemakai. Untuk keperluan tersebut, user perlu dikelola dengan baik.Modul ini membahas tentang bagaimana cara mengelola user padaPostgreSQL.

IV.1.2 Tujuan1. Mahasiswa memahami pengertian user pada PostgreSQL dan dapat

membedakannya dengan user sistem operasi.2. Mahasiswa memahami cara membuat user.3. Mahasiswa memahami cara mengatur hak akses user

IV.2 Dasar TeoriSetiap obyek basis data (database object) selalu mempunyai user. User

pada basis data tidak sama dengan user sistem operasi sehingga meskipunanda mempunyai user sistem operasi, anda tidak otomatis mempunyai hakakses terhadap basis data di PostgreSQL. User ini bisa dibuat oleh user lainyang mempunyai kewenangan (secara software). Pada saat membuat user, bisasekaligus ditentukan apakah user yang akan dibuat tersebut mempunyaikewenangan untuk membuat user lain serta berbagai kewenangan lain(misalnya membuat basis data). Perintah untuk membuat user bisa dilakukandari shell maupun dari psql.

Membuat user dari shell PostgreSQL menyediakan perintah createuser untuk membuat user

langsung dari shell. Berikut ini adalah sintaksis dari perintah tersebut:

[bpdp@localhost postgresql]$ createuser ­­helpcreateuser creates a new PostgreSQL user. Usage:  createuser [OPTION]... [USERNAME] Options:  ­a, ­­adduser             user can add new users  ­A, ­­no­adduser          user cannot add new users  ­d, ­­createdb            user can create new databases  ­D, ­­no­createdb         user cannot create databases  ­P, ­­pwprompt            assign a password to new user

Modul Praktikum Basis Data KA – hal 20 dari 32

Page 21: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

  ­E, ­­encrypted           encrypt stored password  ­N, ­­unencrypted         do no encrypt stored password  ­i, ­­sysid=SYSID         select sysid for new user  ­e, ­­echo                show the commands being sent to the server  ­q, ­­quiet               don't write any messages  ­­help                    show this help, then exit  ­­version                 output version information, then exit Connection options:  ­h, ­­host=HOSTNAME       database server host or socket directory  ­p, ­­port=PORT           database server port   ­U, ­­username=USERNAME     user name to connect as (not the one tocreate)  ­W, ­­password            prompt for password to connect If one of ­a, ­A, ­d, ­D, and USERNAME is not specified, you willbe prompted interactively. Report bugs to <pgsql­[email protected]>.[bpdp@localhost postgresql]$

Berikut ini adalah contohnya:

[bpdp@localhost postgresql]$ createuserEnter name of user to add: isikannimShall the new user be allowed to create databases? (y/n) nShall the new user be allowed to create more new users? (y/n) nPassword:CREATE USER[bpdp@localhost postgresql]$

Membuat user dari psql Dari psql, user bisa dibuat dengan menggunakan perintah SQL CREATE

USER. Berikut ini adalah cara penggunaan perintah tersebut:

praktikum=# \help CREATE USERCommand:     CREATE USERDescription: define a new database user accountSyntax:CREATE USER name [ [ WITH ] option [ ... ] ] where option can be:           SYSID uid    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'    | CREATEDB | NOCREATEDB    | CREATEUSER | NOCREATEUSER    | IN GROUP groupname [, ...]    | VALID UNTIL 'abstime' praktikum=#

Modul Praktikum Basis Data KA – hal 21 dari 32

Page 22: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

Menghapus user Untuk menghapus user, bisa digunakan perintah dropuser (dari shell) atau

DROP USER dari psql.

Mengatur hak aksesAda dua perintah SQL untuk mengatur hak akses user:

1. GRANT. Digunakan untuk memberikan hak akses ke user. Sintaksis lengkapdari perintah ini adalah:

praktikum=# \help GRANTCommand:     GRANTDescription: define access privilegesSyntax:GRANT { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES |TRIGGER }    [,...] | ALL [ PRIVILEGES ] }    ON [ TABLE ] tablename [, ...]    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITHGRANT OPTION ] GRANT { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ]}    ON DATABASE dbname [, ...]    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITHGRANT OPTION ] GRANT { EXECUTE | ALL [ PRIVILEGES ] }    ON FUNCTION funcname ([type, ...]) [, ...]    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITHGRANT OPTION ] GRANT { USAGE | ALL [ PRIVILEGES ] }    ON LANGUAGE langname [, ...]    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITHGRANT OPTION ] GRANT { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }    ON SCHEMA schemaname [, ...]    TO { username | GROUP groupname | PUBLIC } [, ...] [ WITHGRANT OPTION ] praktikum=#

2. REVOKE. Digunakan untuk mencabut hak akses user. Sintaksis lengkapnyaadalah sebagai berikut:

praktikum=# \help REVOKECommand:     REVOKEDescription: remove access privilegesSyntax:

Modul Praktikum Basis Data KA – hal 22 dari 32

Page 23: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

REVOKE [ GRANT OPTION FOR ]    { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES |TRIGGER }    [,...] | ALL [ PRIVILEGES ] }    ON [ TABLE ] tablename [, ...]    FROM { username | GROUP groupname | PUBLIC } [, ...]    [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ]    { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] }    ON DATABASE dbname [, ...]    FROM { username | GROUP groupname | PUBLIC } [, ...]    [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ]    { EXECUTE | ALL [ PRIVILEGES ] }    ON FUNCTION funcname ([type, ...]) [, ...]    FROM { username | GROUP groupname | PUBLIC } [, ...]    [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ]    { USAGE | ALL [ PRIVILEGES ] }    ON LANGUAGE langname [, ...]    FROM { username | GROUP groupname | PUBLIC } [, ...]    [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ]    { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] }    ON SCHEMA schemaname [, ...]    FROM { username | GROUP groupname | PUBLIC } [, ...]    [ CASCADE | RESTRICT ] praktikum=#

IV.3 Praktik

1. Sebagai user (sistem operasi) postgres, buatlah user bernama 'linuxoke'dengan akses untuk membuat basis data atau membuat user serta sertakanjuga opsi untuk menetapkan password untuk user tersebut.

2. Buatlah hak akses penuh terhadap basis data praktikum untuk user 'linuxoke'.3. Lihat kembali modul I, kerjakan perintah untuk mengubah autentikasi client

pada praktik 4. Setelah itu restart PostgreSQL.4. Buat user 'payah' tanpa hak akses untuk membuat basis data dan membuat

user. Buat juga password untuk 'payah'.5. Bagaimana caranya agar hak akses user 'payah' terhadap basis data

praktikum hanya untuk melihat isi tabel distributors? Buktikan!

Modul Praktikum Basis Data KA – hal 23 dari 32

Page 24: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL VUpdate dan Delete

V.1 Maksud dan TujuanV.1.1 Maksud

Modul ini membahas tentang bagaimana cara memperbaharui /mengupdate data serta menghapus data pada suatu tabel.

V.1.2 Tujuan1. Mahasiswa memahami cara memperbaharui data pada suatu tabel.2. Mahasiswa memahami cara menghapus data pada suatu tabel.

V.2 Dasar TeoriSQL (dan PostgreSQL) menyediakan perintah untuk memperbaharui data

pada suatu tabel serta perintah untuk menghapus data pada suatu tabel (semuaatau berdasarkan kondisi tertentu). Perintah-perintah tersebut adalah UPDATEdan DELETE.

UPDATEPerintah UPDATE digunakan untuk memperbaharui data pada tabel.

Berikut adalah sintaksis lengkapnya:

praktikum=# \help UPDATECommand:     UPDATEDescription: update rows of a tableSyntax:UPDATE [ ONLY ] table SET column = { expression | DEFAULT } [, ...]    [ FROM fromlist ]    [ WHERE condition ] praktikum=#

DELETEPerintah DELETE digunakan untuk menghapus data pada tabel. Berikut

ini adalah sintaksis lengkapnya:

praktikum=# \help DELETECommand:     DELETEDescription: delete rows of a tableSyntax:DELETE FROM [ ONLY ] table [ WHERE condition ] praktikum=#

Modul Praktikum Basis Data KA – hal 24 dari 32

Page 25: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

V.3 Praktik1. Buat cadangan dari database praktikum dengan perintah pg_dump. Simpan

ke dalam suatu file.2. Gantilah isi kolom len pada tabel films untuk film 'Yojimbo' menjadi 1 jam 35

menit.3. Isikan data film 'Comedy” sebanyak 5 data lagi.4. Isikan data film 'Drama' sebanyak 5 data lagi.5. Hapus semua data film 'Drama'.6. Kosongkan tabel films.7. Kosongkan tabel distributors.8. Hapus tabel films 9. Hapus tabel distributors.10. Keluar dari psql kemudian restore data pada basis data praktikum dengan

data hasil pg_dump pada praktik no 1 di atas.

Modul Praktikum Basis Data KA – hal 25 dari 32

Page 26: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL VITransactions

VI.1 Maksud dan TujuanVI.1.1 Maksud

Modul ini membahas tentang transactions yang memungkinkan suatuoperasi terhadap basis data dibatalkan atau dilaksanakan, tergantungpada suatu kondisi.

VI.1.2 Tujuan1. Mahasiswa memahami pengertian transactions.2. Mahasiswa memahami cara menggunakan transactions serta

aplikasinya.

VI.2 Dasar TeoriTransactions merupakan suatu mekanisme yang umum terdapat pada

basis data SQL untuk menyimpan kondisi tertentu dari suatu basis data sebelummelakukan operasi-operasi terhadap basis data tersebut. Dengan demikian,pada suatu titik setelah itu, bisa dilakukan penulisan ke basis data ataupembatalan perintah-perintah yang dikerjakan setelah penyimpanan kondisitersebut.

Pada dasarnya, transactions ini digunakan pada saat kondisi masih belumpasti sehingga memungkinkan terjadinya atau tidak terjadinya suatu perubahanterhadap basis data berdasarkan kondisi yang akan datang. Perintah untukmenandai kondisi saat ini adalah BEGIN TRANSACTION, sdangkan perintahuntuk membatalkan operasi adalah ROLLBACK dan perintah untukmelaksanakan operasi adalah COMMIT.

Berikut ini adalah mekanisme dari transactions:

BEGIN TRANSACTION;

.......

.......

.......

.......

.......

.......

.......

.......

....... operasi terhadap basis data = hapus, insert, tampilkan, update

.......

Modul Praktikum Basis Data KA – hal 26 dari 32

Page 27: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

.......

.......

.......

.......

COMMIT atau ROLLBACK;

VI.3 Praktik1. Kerjakan praktik pada modul V tanpa praktik nomor 1 dan nomor 10. Praktik

nomor 1 diganti dengan BEGIN TRANSACTION, sedangkan praktik nomor 10diganti dengan ROLLBACK.

2. Apa yang terjadi jika keluar dari psql tanpa perintah ROLLBACK atauCOMMIT? Jelaskan!

Modul Praktikum Basis Data KA – hal 27 dari 32

Page 28: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

MODUL VIIStored Procedure dan Trigger

Menggunakan PL/pgSQL

(2 sesi praktikum)

VII.1 Maksud dan TujuanVII.1.1 Maksud

Modul ini membahas tentang suatu bahasa prosedural SQL(PL/pgSQL) untuk keperluan pengaksesan data lebih lanjut.Penggunaan bahasa ini memungkinkan untuk melakukan operasitertentu terhadap basis data sehingga kondisi pengaksesan datayang kompleks bisa ditangani. Selain itu, trigger juga bisadigunakan untuk mengaktifkan suatu function yang dibuat denganPL/pgSQL sebelum atau sesudah UPDATE, DELETE, danINSERT.

VII.1.2 Tujuan1. Mahasiswa memahami pengertian Stored Procedure2. Mahasiswa memahami arti serta fungsi dari PL/pgSQL.3. Mahasiswa memahami cara membuat fungsi PL/pgSQL dan

menjalankan fungsi tersebut.4. Mahasiswa memahami perintah-perintah dasar PL/pgSQL.5. Mahasiswa memahami pengertian trigger6. Mahasiswa memahami bagaimana cara membuat trigger serta

menghubungkannya dengan fungsi yang telah dibuat denganmenggunakan PL/pgSQL.

VII.2 Dasar TeoriStored Procedure adalah bahasa pemrograman yang bisa disimpan pada

suatu basis data sehingga memungkinkan pengolahan terdapat basis datatersebut secara langsung untuk operasi-operasi yang lebih kompleks. PadaPostgreSQL, bahasa tersebut dikenal dengan nama PL/pgSQL. PL/pgSQLmerupakan bahasa prosedural pada PostgreSQL yang dibuat untuk tujuan:1. Untuk membuat fungsi (function) dan trigger procedure.2. Menambahkan kendali pengendalian ke bahasa SQL.3. Bisa digunakan untuk perhitungan kompleks.4. Mewarisi semua type yang didefinisikan user, function dan operator.5. Dapat dipercaya (trusted) oleh server (beberapa bahasa tertentu, misalnya

PL/Python merupakan bahasa yang untrusted).

Modul Praktikum Basis Data KA – hal 28 dari 32

Page 29: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

6. Mudah untuk digunakankan.Secara default, PostgreSQL dan berbagai software DBMS lainnya

menggunakan perintah SQL untuk definisi maupun pengolahan data. Meskipunbersifat lintas platform tetapi masalah muncul karena SQL hanya bisa dilakukansecara individual, akibatnya proses untuk akses dan pengolahan basis datasering dilakukan oleh bahasa lainnya. Hal ini menyebabkan turunnya kinerjakarena memerlukan waktu dan sumber daya untuk pemrosesan antara compileratau interpreter suatu bahasa pemrograman dengan server basis data. Untukkeperluan itulah, biasanya dibuat suatu bahasa. Pada PostgeSQL dikenaldengan PL/pgSQL. DBMS lainnya seperti Oracle juga mempunyai fasilitasseperti itu yaitu Oracle PL/SQL.

Definisi dari PL/pgSQL pada PostgreSQL adalah sebagai berikut (bisadisimpan pada suatu file teks, atau langsung dituliskan pada psql):

[ <<label>> ][ DECLAREdeclarations ]BEGIN     statementsEND;

Untuk lebih mempermudah, biasanya bahasa ini dituliskan pada suatu file tekskemudian pada psql dipanggil dan dijalankan dengan cara:

\i filename.sql

Agar PL/pgSQL ini bisa dijalankan pada suatu basis data PostgreSQL, makabahasa tersebut harus diinstall ke dalam basis data. Perintah yang digunakanuntuk menginstall tersebut adalah createlang dan dijalankan dari shell. Berikutini adalah sintaksis lengkapnya:

[bpdp@localhost postgresql]$ createlang ­­helpcreatelang installs a procedural language into a PostgreSQL database. Usage:  createlang [OPTION]... LANGNAME [DBNAME] Options:  ­d, ­­dbname=DBNAME       database to install language in  ­e, ­­echo                show the commands being sent to the server  ­l, ­­list                show a list of currently installed languages  ­L, ­­pglib=DIRECTORY     find language interpreter file in DIRECTORY  ­h, ­­host=HOSTNAME       database server host or socket directory  ­p, ­­port=PORT           database server port  ­U, ­­username=USERNAME   user name to connect as  ­W, ­­password            prompt for password

Modul Praktikum Basis Data KA – hal 29 dari 32

Page 30: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

  ­­help                    show this help, then exit  ­­version                 output version information, then exit Report bugs to <pgsql­[email protected]>.[bpdp@localhost postgresql]$ 

Setelah menuliskan perintah PL/pgSQL. kita bisa menjalankan perintahtersebut menggunakan SELECT.

Perintah-perintah dasar PL/pgSQL1. Deklarasi variabel:

name   [   CONSTANT   ]   type   [   NOT   NULL   ]   [   {   DEFAULT   |   :=   }expression ];

2. ALIAS, bisa ditetapkan pada DECLARE untuk membuat nama lain dari suatuparameter. Contoh bisa dilihat pada praktik.

3. Seleksi kondisi:

IF ... THENIF ... THEN ... ELSEIF ... THEN ... ELSE IFIF ... THEN ... ELSIF ... THEN ... ELSE

4. Loop: digunakan untuk perulangan. Sintaksis lengkapnya adalah sebagaiberikut:

[<<label>>]LOOP     statementsEND LOOP;

Pembahasan tentang PL/pgSQL merupakan pembahasan yang cukupkompleks, terutama berkaitan dengan sintaksis dari bahasa tersebut. Sintaksislengkap bisa diperoleh pada manual PostgreSQL.

TriggerTrigger digunakan untuk menangani suatu kejadian pada basis data,

meliputi kejadian sebelum maupun sesudah INSERT, UPDATE, atau DELETE.Fasilitas ini merupakan standar dari SQL yang berfungsi untuk mempermudahpemeriksaan menjelang dilakukan INSERT, UPDATE, atau DELETE sertamenentukan tindakan apa yang akan dilakukan berdasarkan hasil pemeriksaantertentu. Sebagai contoh, kita bisa mendefinisikan trigger untuk memeriksa isisuatu data sebelum diisikan.

Perintah untuk membuat trigger ini adalah CREATE TRIGGER. Sintaksis

Modul Praktikum Basis Data KA – hal 30 dari 32

Page 31: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

lengkapnya adalah sebagai berikut:

praktikum=# \help CREATE TRIGGERCommand:     CREATE TRIGGERDescription: define a new triggerSyntax:CREATE TRIGGER name { BEFORE | AFTER } { event [ OR ... ] }    ON table [ FOR [ EACH ] { ROW | STATEMENT } ]    EXECUTE PROCEDURE funcname ( arguments ) praktikum=#

VII.3 Praktik

1. Install PL/pgSQL pada basis data praktikum. Perintah yang digunakan adalah:createlang   ­U   linuxoke   plpgsql   praktikum. Ingat, anda harusmenggunakan user 'linuxoke'.

2. Buatlah function untuk menjumlahkan tiga angka berikut ini:

[bpdp@localhost postgresql]$ psql praktikumPassword:Welcome to psql 7.4.2, the PostgreSQL interactive terminal. Type:  \copyright for distribution terms       \h for help with SQL commands       \? for help on internal slash commands       \g or terminate with semicolon to execute query       \q to quit praktikum=# CREATE FUNCTION add_three_values(anyelement,anyelement, anyelement)praktikum­# RETURNS anyelement AS 'praktikum'# DECLAREpraktikum'#      result ALIAS FOR $0;praktikum'#      first ALIAS FOR $1;praktikum'#      second ALIAS FOR $2;praktikum'#      third ALIAS FOR $3;praktikum'# BEGINpraktikum'#      result := first + second + third;praktikum'#      RETURN result;praktikum'# END;praktikum'# ' LANGUAGE plpgsql;CREATE FUNCTIONpraktikum=#

2. Jalankan function tersebut dengan cara:

praktikum=# SELECT * from add_three_values(1,2,3);add_three_values6

Modul Praktikum Basis Data KA – hal 31 dari 32

Page 32: Modul Praktikum Basis Data - dewapurnama | Just … ini membahas tentang cara membuat dan mengelola suatu basis data PostgreSQL. II.1.2 Tujuan 1. Mahasiswa memahami bagaimana cara

(1 row)praktikum=#

3. Buatlah tabel berikut ini pada basis data praktikum:

CREATE TABLE emp (    empname text,    salary integer,    last_date timestamp,    last_user text);

4. Buatlah function berikut ini pada basis data praktikum:

CREATE FUNCTION emp_stamp() RETURNS trigger AS '    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 := "now";         NEW.last_user := current_user;         RETURN NEW;    END;' LANGUAGE plpgsql;

5. Buatlah trigger berikut ini:

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp    FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

6. Cobalah bereksperimen dengan tabel emp tersebut, isikan sembarang data,data dengan nilai salary negatif, data dengan nilai empname kosong, dan lain-lain. Apa kesimpulan anda?

7. Jelaskan maksud dari function emp_stamp diatas!

Modul Praktikum Basis Data KA – hal 32 dari 32