versa data gupta sqlbase training material

114

Upload: vanmien

Post on 31-Dec-2016

241 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Versa Data Gupta SQLBASE Training Material
Page 2: Versa Data Gupta SQLBASE Training Material

SQLBASE TRAINING MATERIAL

Table of Contents

I . Pengenalan SQL 1.1. SejarahSQL 1.2. Kategori Perintah SQL 1.3. Objek-objek SQL 1.4. System Catalog 1 . 5 . Pemrosesan Perintah SQL 1.6. Optimizer

I1 Elemen-elemen SQL 2.1 . Penarnaan 2.2. Tipe Data 2.3. Constanta 2.4. System Keyword 2.5. Expressions 2.6. Search Conditiorl 2.7. Predicate 2.8. Function 2.9. Nilai DatelTime 2.10. Join 2.1 1. Subquery

! i 2.12. Bind Variable

111, Konsep Dasar Relational Database Management (RDBM) 3.1. Database Administrator (DBA) 3.2. Relational Database 3.3. Distributed Processing 3.4. Model Client-Server 3.5. File Server vs Database Server 3.6. Distributed Database

IV. Referential Integrity 4.1. Primary Key 4.2. Foreign Key 4.3. ParendChild Table 4.4. ParendChild Row 4.5. Self-Referencing Tablemow 4.6. Deleted-Comected Table

Page 3: Versa Data Gupta SQLBASE Training Material

4.7. Membuat Table Dengan Rl Constraint 4.8. System Catalog Table Untuk Informasi RI 4.9. Implikasi FU 4.10. Siklus Dari Dependent Table 4.1 I . SQLTalk dan RI

V. Procedure, Trigger dan Event 5.1. SQLBase Procedure 5.2. Format Dari Procedure 5.3. Tipe Data Parameter dan Local Variable 5.4. Perintah SAL Dalarn Stored Procedure 5.5. Break 5.6. Call 5.7. If, Else dan Else If 5.8. Loop 5.9. On <procedure sate> 5.10. Return 5.11. Set 5.1 2. Trace 5.13. When SQLError 5.14. While 5.1 5. Operator 5.16. Static vs Dinamic Procedure 5.17. Penggunaan Procedure 5.18. Fungsi SAL Dalarn SQLBase 5.1 9. Trigger 5.20. Timer Event

VI. Database 6.1. Penempatan Database Dalarn Directory 6.2. Database Cache 6.3. Transaction Log Files 6.4. Temporary File 6.5. Partition 6.6. MAIN Database

VII. SQLBase Server for Netware Interface 7.1. Server Status Display Screen (Fl) 7.2. Process Activity Display Screen (F2) 7.3. Sistem Activity Display Screen (F3)

VIII. Tarlggurlg Jawab Database Administrator 8.1. Memulai dan Mengakhiri SQLBase Server for Netware 8.2. Membuat dan Menghapus Database

Page 4: Versa Data Gupta SQLBASE Training Material

8.4. Load dan Unload Database 8.5. Membuat Read-Only Database 8.6. Membuat dan Mengatur Partitioned Datat 8.7. - Reorganize Database 8.8. Mengecek Database Integrity

Security dan Authorization 9.1. Database Authority (Otoritas Database) 9.2. Hak Atas Table dan View 9.3. Synonyms 9.4. Views 9.5. System Catalog

Back up dan Restore 1 0.1. Rencana Back up 10.2. Perintah-perintah Recovery 10.3. Database Backup 10.4. Database Restore 10.5. Snapshot 10.6. Backup dan Restore Database & Log File 10.7. Backup dan Restore Partitioned Database

Distributed Transaction 94 1 1.1. Mengatur Distributed Transaction 1 1.2. Two-phase Commit 11.3. Kinerja

rpis

.SQLBase System Catalog

Case Study

Page 5: Versa Data Gupta SQLBASE Training Material

I. Pengenalan SQL

SQL (Slructured Query Lmgunge) adalah sekumpulan perintah Icngkap y n n ~ dapat dimanfaatkan untuk mengakses relaiionnl database. SQL adalah bahasa standar bagi b,ul>.ak relational database dan memiliki penntah-penntah terstruktur untuk mendefinlsiknn ciar;~. incngakses data dan memanipulasi data. SQL digunakan bersma-sama dcngan bnhasa pemrograman, sehmgga SQL yang struldar tidak menuldu penntah rnieractrve screen d'inlugllt' SQL juga beroritentasi set (set oriented), artinya sebuah perintah SQL dapat niengakscs ba~h sebans maupun sekumpulan bans data.

SQL bersifat non-?rocedural. Ketika SQL digunakan, ha1 yang penting adalah data apa a n g diinbinkan, bukan bagaimana data tcrsebut dihasilkan. Untuk mengakses data, kit3 han!.n perlu memberikan nama table d m column. jndi kita tidak pcrlu memikirkan access tnt~rhoci Contolmya, sebuah p e ~ t a h ~cpdatr dapat mcrubah scjumlah bans data dalanl database, kitn tidak perlu membenkan lokasi baris, forillat penyunpanan dan fonnat pengaksesan data

Seiarah SOL

hwayat SQL dimulai dan sebu'ah rnakalah yyan ditulis oleh E.F. Codd pada tahun 1970. Codd adalah seorang ahli matematika ymg bcksrja di IBM Research Laboratory di Sari Josc. California. Dalam makalah yang bcrjudul "A Relational Model of Data for Large Sharcd Data Banks" (Communication of the ACM, Vol 13, No. 6, June 1970) h i , Codd n~en~forniulasikari prinsip-pnnsip dari sistem relational untuk nlengatur database dan ~nenjelaskan allabar relational untuk mengorganisir data kc dalam table-table.

Empat tahun kemudian, scbuah nlaktildi lain ditulis oleh D.D. Chanberlln d m R . F Bo!cc dengan judul "SEQUEL: A Structured English Query Language" (Proceedings of the 1974 ACM SIGMOD Workshop on Data Description, Access and Control. May 1974). Kcdua pengarang ini juga beke j a di IBM Siui Josc Research Laborator),. Makalah ini nlc~ldcfin~s~h~ui suatu bahasa yang dirancang untuk n~emenuhi kebutuhan aljabar relational dari Codd.

Dua tahun setelah itu, Chamberlain dan rckan-rekruinya merancang sebuah versi dari bahnsn terscbut yang diberi nama SEQUELl2, dan kemudirul IBM membangun suatu sistem protot!-pc yang dinamakan Syslem R yang mcngimplementas~kan bahasa ini. Sekitar tahun 1980, namanya kemudian drubah nlenjad~ SQL sampai hari ini. Amerrcnn Nrrrroncrl Sinndcrrd Insrirztre (ANSI) dan International Orgcrnrznrron /or Standarrzafion (ISO) men~b~mgun SQL sebagai interface standar untuk Nrlntron~ll Dntnbnse Management Syslem (RDBMS).

Fasilitas-fasilitas yang terdapat di SQL mcnlbuatnya menjadi bahasa bag1 database rclat~on;ll ANSI, I S 0 dan Departemen Pertallanan Anlurika mcndukung SQL. Selain mudah digunakan. SQL juga mernillki kemarnpuan sebagai bahasa untuk memanipulasi database. End t1.ct.r menggunakan SQL untuk melihat, nlernasukkan, rnerubah atau menghapus data. l'rogrc-ln~nl~r menulis aplikasi dengan SQL untuk nlengakses data dalam RDBMS. DBA (DOILI~U.SL, Adminisiraror) menggunakan SQL untuk nlendefinisikan database, menjamill keanlarian data (datn security) clan merubah data sesuai dengan kebutuhan.

SQLfirrse Trrrining Material Copyright 8 1995, by PT I,'ersadara Sysre~trrndo. Jokarru

Page 6: Versa Data Gupta SQLBASE Training Material

Kategori Perintah SOL

Dengan SQL, klta dapat 1 . Membuat table dalarn database 2. Menyimpan data 3 . Mengakses data 4. Merubah data dan struktur dari table 5 Menggabungkan dan menglutung data 6. Menjamin keamanan data

Seniua perintah SQL digolongkan atas bcberapa kategori: 1 . Data Defmition Language (DDL) 2. Data Manipulation Language (DML) 3 . Data Query Language (DQL) 4. Transaction Control Language (TCL) 5. Data AdmLnistration Language (DAL) 6. Data Control Language (DCL)

I Data Definition Language (DDL) mengandung perintah-perintah untuk membuat objek-objek database seperti table atau view seperti

ALTER TABLE CREATE EVENT CREATE INDEX CREATE TABLE CREATE TRIGGER CREATE VIEW DROP ERASE ,

Data Manipulation Language (DML) meliputi perintah-perintah untuk menambah, rnerubah atau menghapus data seperti:

DELETE rNSERT UPDATE

Data Query Language (DQL) mengakscs data dengan perintah SELECT. Q u e q ).arig kompleks pun dapat dilakukan dengan operator relational (seperti >, <, =, >=, atau <>). Selairl itu, query juga dapat menggunakan juin ultuk menggabungkan data dari berbagal table. Inpu t dari satu query dapat menjadi output bagi query laimya, ha1 ini disebut sebagai subselect.

Tr"ransacrron Control Longzrnge (DCL) r~lenlastikan integrltas data ketika data dlruball Penntah yang tergolong dalam kategor~ in1 adalah:

COMMIT ROLLBACK SAVEPOINT

Data Adminisrrahon Language (DAL) mernbantu DBA untuk rnenganalisa luncrja slstcnl d a ~ i operasi. Contoh p e ~ t a h n y a adalah.

AUDIT MESSAGE START AUDIT STOP AUDIT

SQLLJnse Training Material Copyright O 1995, by P1: Versada~a Systenrrndo, Jukorru

Page 7: Versa Data Gupta SQLBASE Training Material

Data Control Language (DCL) rnelakukan fungsi-fungsi berlkut ini: 1. Membuat dan mengatur database 2. Membuat dan mengatur partition 3 . Mengatur hak user atas database dan table Perintah-perintah SQL yang termasuk dalanl kategori ini adalah:

ALTER DATABASE DEINSTALL DATABASE ALTER DBAREA DROP DATAI3ASE ALTER PASSWORD DROP EVENT ALTER STOGROUP DROP INDEX CHECK DATABASE DROP STOGROUP CHECK INDEX DROP SYNONYM CHECK TABLE DROP TABLE CREATE DATABASE DROP TRIGGER CREATE DBAREA DROP VIEW CREATE EVENT GRANT CREATE INDEX INSTALL DATABASE CREATE STOGROUP LOCK DATABASE CREATE SYNONYM REVOKE CREATE TABLE SET DEFAULT STOGROUP CREATE TRIGGER UNLOCK DATABASE CREATE VIEW UPDATE STATISTICS

Obiek-obiek SOL

Objek-objek SQL meliputi: 1. Database 2. Table 3, lndex 4. View

Database adalah kumpulan dari objek-objek SQL. Mengumpulkan data ke dalani satu database akan mernudahkan luta untuk rnernulai d m mengakhlri akses dalarn satu opcrasl. Satu database terdiri dari satu atau lebh table. Setiap table mcmiliki nanla datl nlengandung sejumlah kolom (column) dan baris (row). Setiap kolom memilllu nama d m tipe data tertentu

Setiap table biasanya memiliki primary key. Primary key adalah kolom / kumpulan koloni yang nilainya secara unik rnembedakan tiap baris. Kolom yang bcrasal dari tablc lain dinamakan foreign key. Foreign key berisi nilai yang sarna dengan nilai primary key dari tablc yang pertarna. Ketentuan bahwa nilai dari jorergn key hams terdapat dalam table lain discbur re)renlial conslrainl.

I n k adalah sekumpulan pointer dalarn table. Index disimpan secara terpisah dari table. Setiap index didasarkan atas nilai dan satullebih kolorn dalam table. User yang niengakses table tidak perlu mengetahui apakah SQLBase menggunakan mdex atau tidak. SQLBasc sendiri akan menentukan apakah index harus digunakan dalam pengaksesal tablc. lndex memberlkan dua keuntungan: 1 . Memperbaiki kinerja (perjbrmancr) sehingga pengaksesan menjadi lebih cepat. 2. Menjarnin keunikan data schingga setiap table .ymg memiliki unique rndex tidak boleh

memiliki dua baris data yang bernilai sanla . SQLBase Tminl'ng Material

Copyr~ght O 1 9 Y j . by PT Versadata Syslerntndo. Jakarta

Page 8: Versa Data Gupta SQLBASE Training Material

M o v d~gunakan sebaga~ cara altemat~f untuk merepresentasrkan data dal'm satulleb~h tablc Sebuah vlew dapat mengandung semua/sebaglan kolom dan satulleb~h base table K ~ t a juga dapat membuat vlew yang d~dasarkan atas vlcw lam atau kombmas~ vlcw dcngan tablc lam V ~ e w dapat d~gunakan sepertl table Jlka tablc rncmllllu tempat penylmpanan data, vlew t l d d memiliklnya SQLBase tidak menympan data ke dalam view itu sendin, tetapl kc dalam brrsc table ybs View memungkinan user yang berlalnan untuk mengakses data yang sans dengnn cara yang berbeda-beda, sehlngga setlap user mendapatkan data yang sesual dengan kebutuhannya

System Catalog

Sysrrm cotulog (dura dictiunay) nlcnjrlmpan informasi table yang telah dibuat untuk sctlap database. Sysrem colalog berisi lnformasi tcntang table, view, column, index d m .seczrr/[J7 untuk database. Setiap kali terjadi pembuatan, perubahan dan penghapusan atas objck database, SQLBase merubah baris-baris dalam table system catalog. Sysrem calalug mengandung nama, ukuran, tipe clan nilai yang valid dari setiap kolom yarzg tcrslrnparl dalarn table. System catalog juga berisi inforl~iasi tentang table dan view yang terdapat dalam database. User dapat mengakses system catalog sama seperti ketlka mengakses table-tablt: lain.

Pemrosesan Perintah SOL

Terdapat 4 tahap dasar d a r ~ pemrosesan pcrlntah: 1 . Porse

Mengecek apakah p e ~ t a h telah ditul~skan secara benar Memecahkan perintah ke &lam koinponen-komponen untuk optimizer Mendapatkan nama table dan kolom dalam system catalog

2. Optimize Menggantikan nama kolom view d m nama table dengan nanla sesungguhn~,a Mendapatkan statistik atas data sruroge dari system catalog Mengidentifikas~kan uccrss path yang mungkin Menglutung "harga" dari setiap access path Memilih alternatif yang terbaik

3 . Membuat execution code Menghasilkan rencana untuk menjalankan perinrah

4. Melaksanakan perintah

Optimizer

Dalarn SQLBase, kita mengakses data yang dlinglnkan n~elalui perlntah SQL d m SQLBase akan menentukan bagairnana data tersebut dapat diakses dengan menggunakan opr~mizer SQLBase memilih access yoth bcrdasarkan index, carolog statrstic yarlg tcrscdia dan komposisi dari perintah SQL ybs.

Beberapa pilihan yang mungkm dapat dllakukan: 1. Mengakses index tanpa nlenibaca table data

SQLUuse Trliining Material Copyr~ght 8 1995. by Versudura Sysletnrndo. Jakurra

Page 9: Versa Data Gupta SQLBASE Training Material

Jika data yang diing~nkan adalah index, maka cara ini merupakan pengaksesan yang paling efisien.

2. Mengakses index dan membaca table data Dalam situasi ini, perintah SQL dicocokkan dengan index. Hanya data yang memenuhi syarat saja yang dibaca &ri table.

3. Table scan Semua page dan baris data hbaca.

Page 10: Versa Data Gupta SQLBASE Training Material

11. Elemen-Elemen SQL

Nama objek disebut sebagai identrfier dalam SQL. Nama table, nama column dan nanla index adalah contoh-contoh dari identrfier. Identvier sendiri dapat dibedakan atas ordinary rdentlfier dan delimited idenhfier: 1 . Ordinary Identifier

Dirnulai dengan huruf atau karakter khusus (#,@ atau $). Identifier ini dapat ben~pa huruf, angka dan garis bawah u. Hanya llama database saja yang dimulai dengan huruf dan hams mengandung karakter alphanumeric.

2 . Delimited ldent$er Dapat mengandung semua jenis karakter, termasuk karakter khusus seperti blank dan titik. Identifier ini dapat dimulai dengan angka. Sifat dari identrfier hi adalah case-sens~t~vz Delimited idenhjer hams dberi tanda kutip. Contoh: " 4 . ~ 7 identifier".

Nama dapat berupa long idenhfier maupun short idenhfier, atau identgier yang di-qual$ecl' oleh idenhfier yang lain. Panjang rnaksimum dari short identifier adalah 8 karakter, sedangkarl panjang maksimum dari long identrfier adalah 18 karakter.

Contoh-contoh nama yang dapat diberikrul: CHECKS AMOUNT-OF-$ :CHKNUM $500 "NAME & NO." #CUSTOMER : 3

Berikut ini merupakan daftar semua nama yang terdapat dalarn SQLBasc scrta panjang maksimum yang diij inkan:

Tipe Identifier Panjang Maksimum Authorization ID 8 Bind Variable 18

I Column 18 1 Command 18 Correlation 18

I Database I 8 I Event 18 Index 18 Password 8 Procedure 18 Synonym 18 Table 18 Trigger 18 ,

1 View 18

SQLUaue Troining Material Copyrrghr (D 199$, by P7: Versadara Sysremrndo. Jukorro

Page 11: Versa Data Gupta SQLBASE Training Material

T i ~ e Data (Data Type)

Secara umum, tipe data yang digunakan SQLBase dalam menyimpan data ialah: 1. Character 2. Numeric 3. Date and time

Tipe data menentukan: 1 . Nilai dan panjang data yang disln~pan dalant database 2. Format penarnpilan ketika data ditampilkan

Nilai null menandakan data tidak tersedia Semua tipe data dapat mengaldung nilai null NLIC~I null tidak sama dengan zero atau bll-mk. Nilai null tidak dapat lebih besar, lcbih kccil atau sama dengan nilai-nilai lain, termasuk nila~ null lain. Untuk mendapatkan kolom yang mcln~lik~ nilai null ini, predtkat NULL hams diberlkan. String yang kosong memiliki nilai nzlll.

Tipe data Character S t ~ g character terdri dari urutan huruf, digit atau karakter khusus. Tipe data ini dismpan secara case-sensitive. Yang termasuk dalam kategori ini adalah: I . CHAR (atau VARCHAR)

Panjang dari tipe data ini harus diberikan dan tidak boleh lebih dari 254 byte. 2. LONG VARCHAR (atau LONG)

Perbedaan LONG dengan CHAR adalah bahwa LONG dapat menyimpan stnng yang panjangnya leblh dari 254 byte. LONG dapat digunakan seperti BLOB (Binary Largc Object). Kita dapat menyimpan string, binary maupun bitmap dalam tipe data ini. Tipe data ini disimpan seperti linked-list dari page. Jlka tidak ada data yang disimpan, berart~ tidak ada page yang dialokasrkan. Tetapi bila ada data, jurnlah page yang dialokasikarl sesuai dengan besarnya data yang disimpan.

Tipe data Numeric Tipe data numerik yang terdapat dalanl SQLBase ~alah:

Tipe data Tipe data yang eku~valen DECIMAL (atau DEC) DOUBLE PRECISION INTEGER (atau INT) FLOAT NUMBER REAL SMALLINT

Precision dan scale datur secara internal oleh SQLBase: I . Precision merupakan jurnlah keseluruhan dari digit yang diijinkan 2. Scale merupakan jumlah digit desimal

Tipe data yang termasuk dalarn kategori in1 adalah 1. NUMBER

T ~ p e data mi merupakan superset d a r ~ semua tlpe data numerlk laltnya Tlpe dat,~ 1111

mendukung sampai 23 diglt prec~s~on NUMBER dgunakan dalarn situasi bila User tldak perlu mempedulikan prccrsron User mengrnglnkan SQLBase member~kan precrsron terbcsar secara otonlatls

2 DECIMAL (atau DEC)

SQLUase rain in^ Material Copyr~ght O 1995, by PT I'errudala Sysrernrndo. Jakurra

Page 12: Versa Data Gupta SQLBASE Training Material

Default precision & scale adalah 5 & 0, sedangkan hgi t maksm~um yang dapat dis~inpan ialah 15. Tipe data ini digunakan bila user ingin mengontrol preclsron dan scale, misalnya untuk keperluan nilai mata uang.

3. INTEGER (atau INT) Tipe data ini tidak memiliki scale. Panjnrlg rnaksimalnya adalah 10 digit.

4. SMALLINT SMALLINT juga tidak memiliki scale. Panjang maks~malrlya adalah 5 digit

5 . DOUBLE PRECISION Tipe data ini menyimpan nilai double-precision floating poitlr

6. FLOAT Tipe data ini menyimpan nilai d a r ~ scmua precrsion dan scale. User dapat member~kan precision dengan format: FLOAT(precision). J ~ k a precision-nya di antara 1 dan 21, formatnya adalah single-precision jloatrng pornt, tetapi bila berada antara 22 dan 5 3 . formatnya adalah double-precision fluatrng point. Jika precision tidak dibenkan, maka float ybs. akan diasumsikan sebagai double precision.

7. REAL Tipe data uu menyimpan nilai single-precrsrun floanngpolnt.

Perhltungan untuk tipe data DECIMAL. Misalkan nilai A memililu precision p 1 dan scale s 1, sedangkan nilai B p2 d m s2. 1 PertambahanPengurangan:

Precision = nilai minimum dari precision maksimum SQLBasc ( 15) max(p 1 -s 1 ,p2-s2) + inax(s 132) -t 1

Scale = nilai maksinium dan s 1 dan s2 2. Pembagian:

Precision = precision maks~nium dari SQLBase (15) Scale = maksimunl precision - precision nilai input perta~nn + scalc nilai input pertama - scale nilai input kedua

Contoh: D 1 DECIMAL(10,2), D2 DEClMAL( 10,2). Jika D 1 dibagi oleh D2, maka. precision = 15, scale = 15-10+2-2 = 5

Ada fungsi yang merubah precision maksimum. Misalnya SUM merubah prcclslon maksimum menjadl 15 selungga operasi SUM(D l)/SUM(D2) menghasilkan:

precision = 15, scale = 15-15+2-2 = 0 3 . Perkalian:

Precision = nilai minimum d a r ~ precision maksimum SQLBase ( 15) atau jumlah dari precision (p l+p2)

Scale = nilai minimum dari precision nlaksimum SQLBase (15) atau jumlah dari scale (s I t s2)

Contoh: D 1 DECIMAL( 10,2), D2 DECIMAL( 10,2). J ~ k a D 1 dikali dcngan D2, n~aka . precision = min(15,20) = 15, scale = rnin(15,4) = 4

Terdapat fungsi-fungsi yang mcrubah precision yang maksimum. Misal~iya SUM menggunakan rumus:

precision = min( 15, max(p 1 -s 1, p2-s2) -t n~ax(s 132) + 1) scale = max(s 1 ,s2)

Sehingga operasi SUM(D l)*SUM(D2) nicnghasilkan precision = min(l5, max(8,8) + 11iax(2,2) + 1) = mm(15,l l ) = 1 1

! scale = max(2,2) = 2 I I

L

SQLBase Training Material Copyr~ghr 8 1993, by i'T Versadofa Sysfern,ndo, Jakarfu

Page 13: Versa Data Gupta SQLBASE Training Material

Tipe data Date/Time SQLBase menyedlakan tipe data berikut in1 untuk data date dan time 1 . DATETIME (or TIMESTAMP)

Tipe data ini digunakan pada kolom yang mengandung data tanggal dan waktu 2. DATE

Tipe data ini menyimpan data tanggal. 3. TIME

Tipe data ini menyimpan nilai waktu.

Konversi Antar Tipe Data SQLBase memunglunkan konversi antar tipe data dlakukan. Konvers~ antar tlpe data dapat ditunjukkan sebagai berikut: Source Data Type Target Data Type Comment Character Numeric N~lai source data type hams dalam bentuk nurnerik ),an2

I I 1 valid 1 Numeric Character Tanda petik tunma1 tidak diperlukm Datemime Numeric Numeric Datf l ime Datflime Character Tanda petik tunggal tidak hperlukan Character Datemime Nilai source data type hams dalam bentuk dateltime

yang valid

Page 14: Versa Data Gupta SQLBASE Training Material

System Keyword

Sytem keyword yang terdapat dalam SQLBase adalah: 1. NULL 2. ROWID 3 . USER 4. SYSDATETIME 5. SYSDATE 6. SYSTIME 7. SYSTIMEZONE

Contoh penggunaan system keyword: SQL> SELECT NAME FROM EMP WHERE DEPTNO IS NULL; SQL> SELECT ROWID FROM EMP WHERE HIREDATE > 0 1 -JAN- 1994; SQL> CREATE VIEW MYTABLES AS SELECT * FROM SYSADM.SYSTABLES

WHERE CREATOR = USER;

Expressions

Expression adalah 1. Sebuah item yang menghasilkan nilai tertentu 2. Kombinasi item-item dan operator yang menghasilkan nilai tertentu

Item dapat berupa: 1. Nama kolom 2. Constant 3 . Bind varrable 4. Hasil &ri suatufitnction (fungsi) 5. System keyword 6. Expression lainnya

Untuk menghubungkan string dengan string digunakan operator 11 . Contoh SQL> SELECT 'Mr. ' ( 1 NAME FROM EMP;

Ketentuan yang berlaku dalam menghasilkan arithmetic expression: 1. Expression yang berada dalam tanda kurung didahulukan 2. Operator unary (+ clan -) dike jakan sebelum perkalian (*) dan pembagian(/) 3 . Perkalian dan pembagian dikerjakan sebelum penambahan dan pengurangan 4. Operator dalam level yang sama dikerjakan dari k in ke kanan

Contoh expression: AMOUNT * TAX column arithmetic (CHECKS.AMOUNT * 10) - PAST DUE Nested arithmetic dengan nama kolom HIREDATE + 90 Arithmetic column dan constant SAL = MAX(B0NUS) Function dengan column arithmetic SAL + : I Bind variable dengan column arithmetic SYSDATETIME + 4 . Dateltirne system keyword arithmetic

SQLBase raini in^ Material Copyrrghr O 199J, by PT. Versadara Sysremrndo. Jakorro

Page 15: Versa Data Gupta SQLBASE Training Material

Search Condition

Search condrtron (kondisi pencarian) yang din~ulai dengan WHERE menentukar~ batasan yzrt'r.,'

sesuai dengan kondisi tertentu. WHERE dapat digunakan untuk SELECT, DELETE. UPDATE. Search condtion rnengandung satutleblh predicate yang dihubungkan dengaii operator logical (boolean) seperti OR, AND dan NOT.

Ketentuan yang berlaku untuk kombinasi antara operator log~cal dan pred~cnre adaiah. 1 . Expression boolean dalam tanda kurung didahulukan 2. Operator NOT didahulukan daripada AND 3 . Operator AND didahulukan scbclurn OR 4 . Operator yang berada dalam level yang sama dike rjakan dari kiri kc kan~ul

Misalkan P dan Q adalah predicare Dua kolom pertarna meriunjukkarl kondisi d a r ~ setlap predicate. Jika salah satu item dalam expression dalam senrch condirion null, maka seorch

Contoh: 1 . Perintah ber~kut ini menghasilkarl karyawan dalarrl departemen 2500:

SQL> SELECT * FROM EMP WHERE DEPTNO = 2500; 2. Perintah berikut ini menghasilkan karyawan dalarn departemen 2500 d m n~ulal bekcrja

pada 1 Feb 1994, atau karyawan yang bekerja sebagai programmer: SQL> SELECT * FROM EMP WHERE (DEPTNO=2500 AND

HIREDATE='O 1 -FEB- 1994') OR JOB='Programrner', 3 . Dua perintah berikut ini akan menghasilkan hasil yang sama:

SQL> SELECT * FROM EMP WHERE NOT (JOB='Progranlmer' OK HIREDATE='O 1 -FEB-1994');

SQL> SELECT * FROM EMP WHERE JOB!='Prograrnmer' AND HIREDATE!zG0 1 -FEB- 1994';

Predicate

Pred~cate yang terdapat dalam WHERE atau HAVING menentukan apakah suatu search condtion true, false atau unknown darl menghasilkan sebaris/sejumlah baris dari table

h Predrcnte rnenggunakan operator, expre~sron dan constant untuk n~enentukan k o n d ~ s ~ ~ a r i g i t

diinginkan L

SQLUase Training Material Copyrrghr (9 1995, by PT. Versadofa Sysren~rndo. Jokarru

Page 16: Versa Data Gupta SQLBASE Training Material

Relational Predicate Ada dua macarn relational predicate yaitu: 1 . Comparison relational predicate 2. Quanhjed relational predicate

Comparison relational predicate membandingkan suatu nilai dengan nilai lain berdasarkan operator standar relational. Bentuk dasar dari comparison p r d c a t e ialah dua expression yang dihubungkan dengan relational operator, seperti: A > B COLl != COL2

Contoh dari comparison relational predicate: SQL> SELECT * FROM EMP WHER EMP='50642'; SQL> SELECT * FROM EMP WHERE HIREDATE <= ' 1-JAN-1994';

Quantified relational predicate membandingkan nilai expression pertanla dengan sekumpulan nilai yang dihasilkan dari perintah subselect. Perintah SELECT yang digunakan dalam predicate disebut sebagai subselect atau subquery. Subselecf~adalah per~ntall SELECT yang terdapat dalam WHERE &lam sebuah perintah SQL. Kita tidak dapat menggunakan ORDER BY dan LONG VARCHAR &lam subselect.

Contoh quantrfied relarional pred~cnte: 1 . SALARY tidak sama dengan ran-ram gaji.

SQL> SELECT * FROM EMPSAL WHERE SALARY != (SELECT AVG(SALARY) FROM EMPSAL);

SQL> SELECT * FROM EMPSAL WHERE SALARY <> (SELECT AVG(SALARY) FROM EMPSAL);

2. SALARY lebh besar dari rata-rata gaji: SQL> SELECT * FROM EMPSAL WHERE SALARY >

(SELECT AVG(SALARY) FROM EMPSAL); 3. SALARY lebih kecil dari rata-rata gaji:

SQL> SELECT * FROM EMPSAL WHERE SALARY < (SELECT AVG(SALARY) FROM EMPSAL);

4. SALARY lebih besar dan atau sama dengan gaji lainnya: SQL> SELECT * FROM EMPSAL WHERE SALARY >=

(SELECT SALARY FROM EMPSAL);

BETWEEN predicate Predicate ini membandingkan suatu nilai dengan nilai-nilai dalarn suatu batasan tertcntu Contoh: SQL> SELECT * FROM EMPSAL WHERE SALARY BETWEEN 2000 AND 6000,

NULL predicate, Predicate ini menghasilkan data yang memiliki nilai null. Contoh: SQL> SELECT * FROM EMP WHERE DEPTNO 1s NULL;

EXISTS predicate Predicate mi digunakan untuk mengetahul apakah bans-bans tertentut terdapat dalan suatu table.

i Contoh: SQLBase rain in^ Material

Copyr~ghf O 199.5 by PT Versadoro Sysre~nrndo. Jokarru

Page 17: Versa Data Gupta SQLBASE Training Material

SQL> SELECT FROM EMF WHERE EXISTS (SELECT * FROM EMPSAL WHERE SALARY=: 1)

LIKE predicate Predicate ini mencari string yang memenuhi pattern tertentu dan hanya bisa digunakan dengan tipe data CHAR atau VARCHAR. Pattern-matching character yang dapat dimanfaatkan adalah: I Underscore ( ) I memenuhi semua single character 1 I Percentage (%) I memenuhi zero atau lebih character

Backslash 0) merupakan escape character bagi &,- dan dirinya sendiri.

Contoh: 1. Perintah berikut menghasilkan data yang narnanya merniliki string 'son'

SQL> SELECT T* FROM EMP WHERE NAME LIKE '%on%', 2. Perintah berikut menghasilkan data yang dua character pertama dari job dimulai

dengan'M' : SQL> SELECT * FROM EMP WHERE JOB LIKE 'M-';

3. Perintah berikut menghasilkan data yang nilai kolom JOB adalah 'A24%' SQL> SELECT * FROM EMP WHERE JOB LIKE 'A24\%';

4. Perintah berikut menghasilkan data yang nilai kolom JOB dimulai dengan 'A24%'. SQL> SELECT * FROM EMP WHERE JOB LIKE 'A24\%%';

IN predicate Predicate ini membandlngkan suatu nilai dengan sekumpulan nilai. Kunlpulan nilai tcrscbut bisa terdapat dalam perintah SQL atau hasil dari subselect. Contoh: SQL> SELECT * FROM EMP WHERE DEPTNO IN (2500,2600,2700); SQL> SELECT FROM EMP WHERE EMPNO NOT IN

(SELECT EMPNO FROM EMPSAL WHERE SALARY < 40000); SQL> SELECT * FROM EMP WHERE @LEFTO\IAME, 1) IN ('J','M','D1); SQL> SELECT * FROM EMP WHERE NAME NOT IN (: 1,:2,'Jones')

\ Johnson, Smith /

Function

Function (fungsi) dalam SQLBase dapat digolongkan dalam beberapa katogori: 1. Aggregate finction

Menghasilkan satu nilai tertentu dari sekumpulan nilai. Contoh: AVG, COUNT, MAX, @MEDIAN, MIN, SUM, @SDV.

2. String finction Menghasilkan ~nfonnasi tentang tipe data character. Contoh: @CHAR, @CODE, @DECODE, @EXACT, @FIND, @LEFT, @LENGTH. @LOWER, @MID, @NULLVALUE, @PROPER, @REPEAT, @REPLACE, @RIGHT, @SCAN, @STRING, @SUBSTRING, @TRIM, @UPPER, @VALUE

SQLBrrsc Training Material Copynghr O 1995, by P7'. Versada~a Sysrerrrrndo. Jokorru

Page 18: Versa Data Gupta SQLBASE Training Material

3 . Date/time&nction Menghasilkan lnforrnasi tentang tipe data dateltime. Contoh: @DATE, @DATETOCHAR, @DATEVALUE, @DAY, @HOUR, (@MICROSECOND, @MINUTE, @MONTH, @MONTHBEG, @NOW, @QUARTER, @QUARTERBEG. @SECOND, @TIME, @TIMEVALUE, @WEEKBEG, @WEEKDAY, @YEAR. @YEARBEG, @YEARNO.

4 . Math finction Mengambil nilai numeric tertentu scbagai argumen dan menghasilkan has11 nurnerlc. Contoh: @ABS, @ACOS, @ASIN, @ATAN, @ATAN2, @COS, @EXP, IgFACTORIAL, @INT, @LN, @LOG, @MOD, @PI, @ROUND, @SIN, @SQRT, @TAN.

5 . Finance j filnction Argumen dapat dalam bentuk tipe data character jika nilai tersebut dalarn bentuk nila~ numeric yang valid (hanya digit dan character standar numeric). Contoh: @CTERM, @FV, @PMT, @PV, @RATE, @SLN, @SYD, @TERM.

6 . Logical finction Menghasilkan nilai sesuai dengan kondisi. Hasilnya selalu 1 (TRUE) atau 0 (FALSE). Contoh: @IF, @ISNA.

7 . Specialjfilncrion Menghasilkan fungsi-fungsl ymg khusus Contoh. @CHOOSE, @DECIMAL, @DECRYPI', @DECODE, @HEX, (9LICS

SUM Jurnlah keseluruhan item @ABS Nilai absolut Math BACOS Arcas inus Math

( @?SIN I Arc-sinus [ Math OATAN Arc-tangen dua kuadrant Math OATAN2 Arc-tangen empat kuadrant Math @,CHAR Karakter ASCII untuk desimal String @CHOOSE Menampilkan satu nilai dari daftar berdasarkan Special

correlation @,CODE Kode desimal ASCII karakter pertama dari string String @COS Cosinus Math - RCTERM Menggabun~kan pericde untuk menghasilkan nilai yad. Finance B,DATE Konversi ke date Dateltime @DATETOCHAR Mengedit nilai date Dateltime @DATEVALUE Edt nilai date Dateltime @.DAY Hari ke b e r a ~ a dari bulan tertentu Dateltinle

I @,DECIMAL I NiIai desimal dari string hexadecimal I Special

SQLBase Training Material Copyrighf (3 1995, by PT. Versadofo Sysfernindo. Jokorfa

Page 19: Versa Data Gupta SQLBASE Training Material

@EXP I Exponcnsial @,FACTORIAL 1 Factorial Math

@DECODE @DECRYPT @EXACT

@HEX String hexadecimal d n r ~ nllal dcs~mal Specla1 @HOUR Jam &lam h a r ~ Datcltln~c

Menghas~lkan stnIig darl espresslon yang d ~ b e n k m 1 Melakukan decn pt terhadap pass~vord ( Membandlngkan dua stnng

@FIND

@FV

@IF Mengecek nilai, nienghasi1ka.n 1 (TRCE) atau 0 Logical (FALSE) 1

String, Specinl specla1 String

Nlla~ integer Marh

Panjang darl string Str~ng Sort mengunahan hun~pulan karakter ~ntemas~onal Specla1 Algontma natural Math Loga rma Math Merubah huluf bcs'ir menjadl huruf kec~l String Nlla~ tengall darl sehu~npular~ ~ tcm &regarc

@MICROSECOND -- - N~lal mlcro dctlh -- Datclt~rnc Menghasllhan strlllg, nlula~ d,~rl p o s ~ s ~ karakter pnda Stnng

Menit &lam jam Datcltlnlu --

Bulan dalanl tihull tcrtcntu Han pertarna d a r ~ bulan tcncntu Tanggal dan ~3.111 sch'lrang (current date and tlmc) Datclt~rnc Menghasilkan str~ng/nurnbcr lang dltunjukkm olch 1 Strung j ~ k a x NULL Nllal PI (3 14 159265) blath Pembayaran pcr~odlh )ang dlbutuhkan untuk mcmba>ar Flnnncc

Konvers~ karahtcr pcrtdna d a r ~ sctlap kata dalan strlllg S t r~ng ke huruf bcsar d,ui rricnjdirnln sctlap karakter la111 dlll,lm huruf kccil Nllal sekarang (present value) darl sekurnpulan Finance pembayarm yang sama Nilal yang n ~ c ~ \ a l \ ~ l r cjuartzr (per~odc 3 bulannn) Datclt~rnc

@QUARTERBEG Han pertruncl d a r ~ quarter Date/t~mc

M e n g g a b u ~ ~ g k ~ n s u ~ t u s tr~ng dalarn dlr111qa s c ~ ~ d l r ~ i ~ ~ ~ t i l h S t r ~ ~ l g beberapa kall M e n ~ a n t ~ k a n karakter dalrurl strmg Urutan stnng d a r ~ scbcldl kanan Membulatkan nllai Math Mencar~ strlng berdasarkan pattern

SQLBase Trmining Mufericrl Copyr~ght O 1995 b) PT I'er~odoto Sj:)srutnrnJo Johurr.~

Posisi dalam strlng 1 yang terdapat dalam strlng7 - Nilai yad. dari sekumpulan pembavaran yang sama

String F~nxnce

Page 20: Versa Data Gupta SQLBASE Training Material

I I @SECOND I Detik dalam menit I D;lte/t~nic ,@SIN Sinus Math @SLN Straight-l~ne depreciation F~nancc

1 OSQRT I Akar I Math

I @STRING I Konversi nunibcr kc string 1 S t r i n ~ I OSUBSTRlNG I Menghasilkan scbngl;ul string 1 String --I

(qSY D Sum-of-the-Year's Dlglt Depreclat~on 1 F~nancc @TAN Tangen hlath Iri2TERM Jumlah ~e r lodc vc~nbavaran untuk suatu ~nvcs tas~ f-~nancc @TIME Menghasilkan n ~ l a ~ dateltlnie darl jam, menlt, de t~k Date/trmz t4TIMEVALUE Menghasllkan n ~ l a ~ datelt~nie dengan HH MM SS Datc/tlr~ic

[AM atau PM] mTRIM , Menghilangkan blanklspace yang terdapat dalam stnng Strlrlg @UPPER Meru bah huruf kec~l rncrljadl huruf besar Strlllg @VALUE Konversl stnng karnkter dengan dlglt ke number St1 lrlg '3WEEKBEG Harl Sen~n d a r ~ satu m111n~u Dateltlrnc @WEEKDAY Hari tertentu dari satu rninggu Date / t~~nc @YEAR Tahun ke berapa, dihitung dan 1900 Datelt~nie @YEARBEG Han ~ertarna dan satu tahun Dntcltimc

I @YEARNO ( Tahun kalender ( Datelt~riic I

Dateltime memiliki system keyword scncilr~. Hzrikut 1111 nierupakan tablc s!,stcni kcy\s~ord d a r ~

Keteransan SYSDATETIME Current date and tirnc CURRENT TIMESTAMP CURRENT DATETIME SYSDATE Current date CURRENT DATE

Current time CURRENT TIME SYSTIMEZONE Interval tunezone dalam hari CURRENT TIMEZONE Contoh: SYSTIMEZONE= 025 bcrarti 6 j~un

MICROSECOND[S] Wakhr dalarn microdetik Waktu dalam detik Waktu dalam menit Waktu dalarn jam Waktu dalam hari Waktu dalarn bulan Waktu dalam tahun

Operasi penanbahan maupun pengurcuigm dapat dilakuknn kepada Jore Hnsilnyn I . Date t Jun~lah (hari) adalah DA1'E'I.l hl IS 2 . Date - Jumlah (hari) adalah DATE'l'lhlE 3. Datc - Date adalah jumlah (hari)

SQLBuse Trc~ining hJc~terirrl Cop)~rrghr O 1995, byP7' I.'ersudura Syrrr~trindo, Jukurru

Page 21: Versa Data Gupta SQLBASE Training Material

Perhat~kanlah bahwa jika k ~ t a mcnruiit);lll, r~lcr~guramgkan nllal yang non-ck,lc' 1 1 1 1 1 ~ ~ J\cpad:~/C1:11 I

DATE, hasilnya ialah DATETIME. U n r u k mcngliasilk,m DATE, g u n k a n esprt).csrc1t7 sbb DATE + Junllah DAYS

Sebagal contoh, expressron berikut 1111 r~iulgliasilkiu~ ni la~ DATE'I'IME !.:ulg baru SYSDATETIME + 3 MINUTES

Jika interval tidak discbutk:~~, nlnka ll~lnl >;ulg diber~kan diasunlslkari scbagai 0:I)'S ( ' O I I I L ~ I I bcnkut In] mcncunbah 1 hari darl i.zirrc>rrr t i ~ ~ ( c '

SYSDATE + 1 SYSDATE + 1 DAY

Ketentuan untuk inten'al MON.1-H dan L'EAR. 1 lnterval MONTH dan YEAR tinn!.a dapat d l t a ~ ~ i b a h k a i atau dikurnrlgknrl dun luml;~li

DATE atau DATETTIME Benar. (SYSDATE -t 3 I I A J . 5 ) 7 - 1 \ 'EAR Salah: SYSDATE t. (3 DAYS . I YEAR)

2 . Pada saat MONTH ditambah. niln~ bulnrl (d in j ~ k a rnungkln nllal tahun) drtullbaliknrl JI ha h a r ~ yang dihasilkan melmpaul h a r ~ rcrakhlr dan bulan dan tahun tcrtcnlu, SQLUasc ah;ill menyesuaikannya secara otornatls

3. SQLBase akan mengabaiknn nllai t ics~~~lr l l dan MONTH d m YEAR Sebngal contoh, SQLBnsc akrm rn~hng)aba~ka~l nllar . 5 ciari MONTI I i r i l t i ~ l \ pcr~ntah bcr i h c ~ r In]. SQLB SELECT DISTINC'I' SYSI).-\'l'LTTIME. SYSDATETIME + I 5 "L1ON.I'HS FRO.Z1

SYSTABLES

DateRirne Express~on - - .. Rcsult 3 1-Jan-1993 + 1 MONTH 28-Feb-1993

- - . -- -- - -- 20-Jan- 1993 + 1 MONTH 20-Fcb- 1993 3 1-Jan- 1993 + 1 MONTH - I MONTH

Opcras~ jo in rncngambil data d m tablc !;111g bcrbcdri-bcda dim dcngan bar is !.an3 ri.~il;ll,;ir dalam semua table. Contoh berikut lnr illc~ldi.rnons~rasikan operas1 joirl

Table CUSTOMER

Tablc ORDERS ORDERYO ORDERDATF. i S.AIJl:S 12tt'

300 1 0 I -J U1,-94 Jill . -- - - --

3002 03-JUL-94 Jill

SL)I,JJII.\L~ lrri ining Iklrirericil Copyr~ghl @ 19%>, h\, I > / I ' t , r s [ ~ [ l < ~ / ( ~ . \ y ~ / e ~ r ~ ~ n d u , . I ( J K u ~ ~ ( I

CUSTNO -- Y .AhlE ADDRESS .- .. . . .- .

1 ABC INC 13 A St 2 S Y % [NC' 1 B St 3 A l IhC' 12 C St

Page 22: Versa Data Gupta SQLBASE Training Material

Untuk menemukan narna dan nomor ordcr >.ang dibuat oleh Tom, gun&an penntah sbb SQL> SELECT NAME, ORDERNO FROM CUSTOMER, ORDERS WHERE

CUSTOMER.CUSTNO=ORDERS.(~USTNO AND SALES-REP = 'Tonl'.

Hasilnya adalah: NAME ORDERNO ABC INC. 3003 X Y Z INC 3004

SQLBase mcndukung tipe-t1pc,/ort7 scbagai bcrikut: 1 Equ~join 2 Outer j o ~ n 3 Self jo~n 4 Non-cqu!join

Equijoin Query berikut ini menycsuaikar~ nallla customer dcngul nonior ordcr SQL> SELECT NAME, ORDERNO FROM CUSTOMER, ORDERS WHERE

CUSTOMER.CUSTNO=OKDEKS CUSTNO; Baris-baris dari table OKDERS d~hubungkan dcngan CUSTOMER rnclalu~ kolorn C:US'I.?-0 yang terdapat di kedua table T ~ p c .stli7rch condrnon yang rnenghu bunglian du;i tab l c berdasarkan persarnaan (equnlrr~t) seperti in1 discbut eyirrjoin.

Curresiun Product Corre.rlcrn product adalah kumpulan dari scniua bar~s pang mungk~n dihas~lkan d a r ~ , ; O I ~ I atas

lebih dari satu table. Lihat colltoh bcrlkut 1111

SQL> SELECT NAME, ORDERNO i:KOh'l CUSTOMER, ORDEKS. J ~ k a CUSTOMER memiliki 100 baris dan ORDERS 500 bans, n~aka L C I I . [ C ~ . S I I I ~ I ~ ! ~ . o L ~ I ~ L . I - I ~ \ ;I

adalah 50.000 baris. Tcntu s q n buhnn ti;1s11 scpcrti In1 yang di~nginkan Untuk mcnghindari cnrresrnn proilrlcl. maha rc/u~!oin diperlukai, schlriggn pcr~nt;ill dl :Ira> perlu dirubah menjadi: SQL> SELECT NAME, OKDEKNO f:KOM CUSI'OMER, ORDEKS \+'14F2R11

CUSTOMER.CUSTNO=OKDEIiS.C~USTNO;

Outer Join Bila customer belum membuat ordcr, r n ; h customer baru tersebut ti&& ALII d~t ; l~ i l l )~ lh ;~ l~ dengan perintah equijorn di atas. Otrter jorn akan menarnpilkan setiap bans d a r ~ satu tnt~lc dengan table lain yang kondisinya sesual atau nila~nva rlull. Hasilnya adalah scmun barls dal;lm satu table tanpa memperdulikan s p ~ k a h baris tersebut sesuai dengan bnris lam d a r ~ table In111 yang dihubungkarl. Perintah berikut menarnpilhan nmla custi~rncr. d m nomor ordcr, tcrmasuk customer ! ang t~il;lh n~enlilik~ order. S Q t 3 SELECT CUSTOMER.CUSTrU'0, NAME FROM CUS'TOMER. ORDERS U ' t 1f:lUI

CUSTOMER.CUSTNO=ORDEKS .C LISTNO(+);

Selfjoin S t y jorn mcnghubungkan su;ltil tablc dc~iga~l diri11>a s e n d ~ r ~ , scpert~ dua table > , ~ n g hCi bii1.1 Untuk melakukan ha1 mi, berlhut nanla ~orrc~iirrrotl untuk table y a i g akan d~-\clf-!c~l~i

I Contoh bcr~kut 1n1 menanlpllkan scmu,i tu1ggal yang r i ~ e n l ~ l ~ k ~ lcb~h d n r ~ sntu order ; 1 SQL> SELECT A ORDERNO, A ORDERDA'I'E FROM ORDERS A, ORDEfiS D U't i l 121

Page 23: Versa Data Gupta SQLBASE Training Material

A.ORDERDATE=B.ORDERDAACE AND A.ORDERDA'TE<>B.ORDERNO; Table ORDERS dianggap sebagai dun tablc dcrigan menggunakan n m a corrclotror7 A d m B Tanggal order diarnbil dari tablc correlcrrlot~ A, kemudian order date ini digunakan sebaga~ search condition untuk table B . Infonnas~ ynng sama juga dapat dihasilkan dengan . s ~ i h y ~ r e r ~ ~

Non-equijoin Opcras~ In1 n~cnghubungkan suatu tablc dcngln table laiiu~ya berdasarkan pcrb~1~I11lgu1, buha11 persanlaan Seniua operator relat~onal dapat digunakan seperti <, >, I=, BETWEEN, or LIKE) Contoh SQL> SELECT NAME, ORDERNO, ORDERDATE FROM CUSTOMER, ORDERS WHERE

CUSTOMER CUSTNO=ORI)EKS CUSTNO AND ORDERDATE BETWEEN 0 1-JUL-04 AND 30-SEP-94.

SQLBase memperbolehkan operas1 joln untuk 10 table dalam suatu perintah SELECT Nxnun ha1 ini akan mempengaruhi lunerja. Bila database dirancang dengan baik, kemungkinan sepcrt~ ini harnpir tidak pernah te rjadi.

SQL mcmungk~nkan fas~litas rectirslve Illput d a r ~ satu query dapat m c q a d ~ output bag1 qucrL la~nnya Suatu query dapat d~gabungkarl dcli~nn qucn lalnnya Nestcd quer: scpert~ 1111 dlsebut sebaga~ sltbq~tery/sztbselecr Suhy~rcry mcrupnhan per~ntah SELECT ) nng t e r d ~ r ~ dari bcbcrnpn level ORDER BY dan LONG VARCHAK t~d'lk drlpat d~gunakan dala1-n kasus 1111

Untuk ~txnarnpilkan sernua order yang lerjadl dalam tanggal sarnn dcngnn ordcr d a r ~ ilomor customer 2: SQL> SELECT ORDERNO, ORDERDATE FROM ORDERS WHERE

ORDERDATE=(SELECT ORDERDATE FROM ORDERS WHERE CUSTNO=2).

Pertanla sekal~, tanggal order ddri noirlor custonler 2 dlanlb~l dan nllal 1111 dlgurlakatl untuh menyelesa~kan search condrrron darl morrLozirer query Dalam contoh dl atas, subquer~ 1111

d~eksekus~ sekal~ untuk mendapatkan suatu nllal yang d~gunakan oleh main quety

Dalam perintah SELECT berikutnya, >,ru~g d~scbut sebagal correlated slibqziery, szihqlter!. 1111

dieksekusi sekali untuk setiap barls kandidat dalam nrarn query. Misalkan kita ingin menanrpilkan kanaivan yang gajinya lebih bcsar dnri ratii-ruta gall karyawan lam: SQL> SELECT * FROM EMPSAL WI-lEKE SALARY >

(SELECT AVG(SALARY) FROM EMPSAL):

Bind Variable

Bind variable menunjuk ke suatu nila~ data prig bcrhubungan dcngan perlntah SQL NrtrJ varrable dapat digunakan di:

WHERE clause VALUES clause dalani suatu penntah 1NSEK'I' SET clause dalarn perintah UPDATE

SQLU(ise Training Material Copyright Q 199s. by PT I'ersadalo Syslettrrndo. Jukurru

Page 24: Versa Data Gupta SQLBASE Training Material

Nama bind variable dmulai dengan tanda tit& dua (:) dan dapat berupa: 1. Narna variable 2. Nomor yang mengacu ke posisi data item yang berhubungan dengan perintah SQL (seperti

: 1,121

Page 25: Versa Data Gupta SQLBASE Training Material

111. Konsep Dasar IRDBM

Database Adnunstrator (DBA)

Dept. MIS (Management Informat~on System) terdir~ dari fungsi-fungs~ ber la~nm > , x ~ g saling melengkapi. Salah satu fungsi yang cukup penting ialah DBA (Database Administrator). DBA bertanggung-jawab untuk merancang, mcrcncanakan, mengadakan rnstalas~, konfiguras~. menjamin keamanan (security), dan mengopcrasikan DBMS (Database Managcrncnt System ) . Untuk melakukan semua ha1 tersebut dengan baik, DBA hams dapat memahani aplikasi apa yang terdapat dalam sebuah organisasr, slapa saja yang menjadi pengguna (user) aplikas~, data apa yang disimpan.dan diakses, dan jen~s transaksi yang terjadi sehari-hari.

Secara garis besar, tanggung-jawab seorang DBA meliputi: 1 . Memastlkan database server terus tip sepanjang jam kerja 2. Melakukan instalasi database server d m clicnt softwarc 3. Create database 4 . Melakukan backup (secara berkala) dan recovery (bila terjadi kerusakan terhadap data) 5 . Mengontrol security clan akses ke databasc dan objek-objek yaig tcrdapat dalam database 6. Memonitor dan melakukan yerjurmnnce cirnlng terhadap database & aplikasi ymg

mengakses database tersebut 7. Mengatur komunikasi antara database scrwr d m client workstation 8 Melakukan estimasi atas besarnya mcdi:~ pcnympanan yang dibutuhkan 9. Membantu developer dalarn melakukan akses dan nianipulasi atas objek-objek >.ang

terdapat dalam sebuah database m~salnya: table. lndex, v~ew, looding, convcrrlng, dnn unloading data

10. Menjamin data a~allablll ty, acclrrrrcy, cor/ipletenc.ss, lntegrlry, dan cons/stenq 1 I . Mernantau system catalog 12. Membantu user yang mengakscs databasc

Relational Database

Istilah relation pertama sekali digunakan oleh E .F . Codd dari IBM setelah mempelajal-I struktur data dengan rnenggunakan sct thcory. Set adalah kumpulan objck yang mcmilikl rule tertentu yang memungkinkan kita untuk mcngctahui apakah objek yang kita bcrikan tcnnasuk dalam kumpulan objek tersebut atau t ~ d a k Sebagai contoh, kumpulan kelinci pu t~h adal,ah bagian dari sernua kelinci yang rnernilik~ bulu bcrwarna putih.

Terminologi yang digunakan untuk n~en~.ebutkan objek-objek database bcrbcda Bcrrkut In1 merupakan tabel terminologi yang biasa digunakan:

Relational Database 1 Set Theory 1 Conventional Data Process~ng Table Relat~on File / Data Set Row Tuple Record

I Column [ Attr~butc / Domarn I Field 1

Relational database nlengurangl rcdundansr data Hal rnl &an mcmbcr~kan t ~ g a keuntungan

SQLUase Training Muterial Copyrlghr 8 199>, by 1'7' Versadocl(i~ Sys~e~ t~rndo . Jokorru

Page 26: Versa Data Gupta SQLBASE Training Material

1 . Data dapat disusun dan dikombinasikan rnenjadi relasi baru karena data tldah harus sclalu disimpan dalarn suatu cara tertentu ?,ang kaku

2. Data dapat dirubah (update) dengal mudah 3. Mengurangi besarnya tempat penyinipanan yang dibutuhkan

Codd mendefmslkan tiga operas1 pengaksesan data dalam relarronal algebrrr 1 Selection

Selechon a&lah proses untuk mendapatkan semua bans data dari table yang mcmenuhi kriteria tertentu

2 Projection Projectron adalah proses untuk mendapatkan satu atau lebh kolom dari scbu,dl table dalam urutan tertentu dan mengabalkan duplikasi bans

3 Joln Joln adalah proses untuk mendapatkan holorn-koloni dan table-table yang berbeda d~nia~l,i nilai d a r ~ satu / leb~h kolom dl dalan~ setlap table adalah sarna Operas1 jorn inilnli kang membedakan slstem relarional dengal alstcm yang non-reln~lonnl

Distributed Processing

Istilah disrribured processrng n~embenkan gambaran bahwa komputer dapat ditcnipatkaii dl mana saja (di laboratorium, di Dept. Akuntlng, sampal di ruang kerja para nlanajcr). Nctworh akan menghubungkan seniua kolnputcr tcrsebut setiingga pertukaran ~nforrnasi, pcrilnkalnn sumber daya secara bersama-sama aka11 tcwujud. Sistern ini tidak memperniasalahkan dl mana inforrnasi disirnpan karena infonnasl dapat diakses dari semua bagian dalnrn orga~llsasi

Perkernbangan PC (Personal Computer) dan LAN (Local Area Network) di tahun 108U-an membenkan pengertian yang baru atas dlsrrrbzrreu' prucrssing. Dengai PC, user rt1rcrfi7c.t~ menjadi rnenank dengan penampilan windows dan graflk yang membuat user dapnt rnenggunakan aplikasi dengan lebh ccpnt dari mudah. Dengar1 LAN, PC dapat sal~ng berkomunikasi dan menggunakan sumbcr daya secara bersama-sama.

Model Client-server

Teknologi client-server adalah suatu bcntuk darl d/strrbured processrng dimana aplikasl secnra hngsi dibagi rnenjadi dua 1 lebih prograni yang dijalankan oleh komputer berbeda yang saling berkomunikasi dalam network. Program clrcnr dijalankan di PC, sedangkan program .server dilakukan oleh kornputer yang lebih cang,gii. C'lienr lnenginmkan pcrmintaan kepada servcr. server memproses dan mengirirnkai t~asil pcmrosesan kernbali kepada clienr

SQLUase Training Moterial Copyrrghr 0 1993. by P7' i /~ .rsudu~u Syslrrrrrndo. Jukurru

Page 27: Versa Data Gupta SQLBASE Training Material

Client Cl~ent ~FJj

(-

/

Server / ;;;////- --4 7 Dl

LAN 4&2i

Y~ client

Clien

Data base Server

-- --

Clien

" - .-

Garnbar 3 1 Model Client-server

File Server vs Database Sewer

Database server berbeda dengan jife server tiilt. server berfungsi untuk rnenyimpan, bukan untuk memproses file-file yang berisi data. Pernrosesan aplikasi adalah tanggung-jawab client Bila client meminta data, maka Jlt. server akan m e n g i d a n seluruh database melalui network ke client. Jlka client yang nieniinta data banyak, maka perjurmance network rnenjadi turun.

Relational database system memiliki flcksibilitas yang lebih baik. Aplikasi client menggunakan perintah SQL untuk berkornunikasi dengan database server. Cljent bertanggung-jawab untuk menjalankan aplikasi dan mengirimkan perintah SQL ke databnsr server. Database server bertanggung-jawab untuk mengecek dan menjalankan perintah SQL yang dilurirnkan client dan menginmkarl hasilnya ke kembali ke client. Jadi, database server hanya mengirimkan sebagian dari database kembali ke client. Hal inilah yang lazim disebut sebagai cooperative processing.

Client Application Database Serve + Network (Multi-user)

Communication Library

Front-en Back-en

Ganlbar 3.2 Cooperative Processing

SQLUase Truining Material Copyrrghr @ 1995, by PT ~ersadoto Syrte,~lndo. Jokarru

Page 28: Versa Data Gupta SQLBASE Training Material

D~stributed Database

Sof iare darabase term mengalam1 evolus~. Pertarna sekali, sofiwnre dambnsr bersrfat monolithic dan terdapat d~ komputer besar yang d~hubungkan ke dumb termlnnl. Kemudian, sofrware database menjadi lebih c a n a h dan membagi fungsi yang dkerjakan oleh database menjadi dua komponen: client (,/kont-end) dan server (back-end). Pada masa ini, bark komponen client maupun server masih tetap terdapat di mainframe atau mini computer yang sama.

Mainframe] Minicomputer

Mainframe] Minicomputer

7- -- I

(Client) 1 I I

1 Dumb Termina Dumb Termina 1 I

L -- ..p--.--pp~~d.

Gambar 3 . 3 P e m ~ u l ~ a n Evolusi Software Databasc

Evolusi ini terus berlangsung dm pada saat mi, komponen clienr dari software dclrahclsr dipindahkan ke PC clan LAN, sedangkan lio~llponcn server tetap berada di dotobase sewer.

- --

Client j !

Gambar 3.4 Databasc scrver dm client dalam LAN

Keuntungan dari distributed databasc adalnh 1 . Location Independence

Lokasi dari aplikasi client tidak tergmtung kepada lokasi dan data i 2. Locaf~ on Transparency

SQLBase Training Material Copyrrghr cD 1995, by PT Versadara Sysrernrndo. Jakarta

Page 29: Versa Data Gupta SQLBASE Training Material

User dapat mengakses database tanpa pcrlu mengetahui lokasl data, selaln ~ t u , database dapat dipindahkan tanpa mernpengaruh~ user 1 aplikasl

3. Incremental application growth Aplikasi dapat di-upgrade dengan mel~arnballkan client-client lain atau dcngnn rncmbcl~ database server baru yang leb~h carlggih

4. Sire autonomy Setiap database dapat di-maintain secara terpisah satu dengan lainnya

5 . Data dapat didistribusikan d m diproteksi urltuk mernenuhl kebutuhru~ tiap dcpartcrncr~ secara spesifik

6 . Hardware and Sofrware Independen~.r Perangkat keras dan perangkat lunak yculg dipaka1 dapat berasal darl vendor yang berbeda dan dapat dsesuaikan sesual dengan kcbutuhan aplikasi.

7 . Distributed processing Proses dan media penyimpanan data dapat didistribusikan ke beberapa komputcr

8. Meningkatkan ava i lab i l~~y dan rel~abrlr(~r Bila database server-nya down, hmya client prig connect ke database tersebut terpengaruh, namun PC lainnya tetap amm

SQLHnse Training Mnteriul Copyrtghf 0 1995, by PT Yersudutu Sy~fonrtndo. J u k ~ ~ r r u

Page 30: Versa Data Gupta SQLBASE Training Material

IV. Referential Integrity

Referentrnl Integrlly (RI) menjarmn bahiva scmua referensi dan satu table ke table lain valid. artinya semua perubahan yang tejadi di satu table akan berakibat kepada table lain yang saling berhubungan.

Misalkan kita memiliki table ENGINEERS tcmpat hta menyimpa~ inforrnasi karyanan Kemudian kita ingin memindahkan karyawan kc kantor baru. SQL> INSERT INTO ENGINEEKS (EMPL-NUM,NAME,REP-OFFlCE,TlTLE, HIRE-DATE)

VALUES (400,'LIENA',50,'Engl~ieer', lO/l/93,NULL);

Perintah di atas dapat dilaksanakan dengan balk, tetapi dapat juga gagal. Setlap data kantor yang terdapat di table ENGINEERS harus merupakan data yang sudah terdapat dalam tablt: OFFICE sebelumnya. Peraturan ~11lld-1 yang dinamakan sebagai RI costrainr. Rl tidak rnengoreksi data yang salah ditempatkari Misalkan, seharusnya karyawan LlENA rnasuk kc office 50, ternyata operator salah key-in sehinga masuk ke office 40. RI &an menerima transaksi insert tersebut bila office 40 merupakan data yang valid. R 1 hmya rncnjarnln bah\z,a data ofice 40 terdapat di table OFFICE siija.

Untuk mempermudah pembahasan topik 1111, kita rnemerlukan suatu databasc yang mern11ik.l struktur dan data sbb:

Table OFFICES OFFICE CITY REGION MGR MAJ ACCOUNT

2 0 San Frans~sco il.'cstern 103 1050 40 New York Eastern 108 2500 10 Los Angelcs Western 100 -3000 30 Chicago M~dwest 106 100 1

Table ENGINEERS I EMP-NUM I NAME 1 REP- I TITLE HIRE I MANAGER 1

OFFICE DATE 100 Paul Atkins 10 Manager 1988-02-12 104 Rob Smith 2 0 Sen Enginexr 1992-09-05 103 107 Murray Rochester 30 Sen. Engineer 1991-01-25 106

1 102 1 Lam, Sanchez I 10 1 Sen. Eneineer 1 1989-06-1 2 1 100 I 101 Sheila Brown 10 En~inccr 1990- 10- 10 100 106 Sam Valdez 3 0 Manager 1990-04-20 105 Rob Jones 20 Engineer 199 1-09-08 103 103 Anna Rice 2 0 Manager 1985-07-10 1 108 Mary Adams 4 0 Manager 1988-08- 10 109 Nancy Bonet 4 0 Sen. Engineer 1989-1 1-12 108 110 kchard Park 4 0 Engineer 1990-1 1-14 108 11 1 Dan Chester 4 0 Eneineer 1987-03-22 11 1

SQLBcrse Trcrining Mnterinl Copyrrghr O 1995 b ) 1'7 I krhodaicr Sysrert~rndo, Jokurro

Page 31: Versa Data Gupta SQLBASE Training Material

Table CUSTOMERS CUST NUM COh1PANY SERV REP I CREDlT L1\1IT I

1000 Acme Camera 101 5000 2500 Photo- l Shop 110 3000 1001 Best Photography 106 1000 1050 Johnson's Canicra Company 105 8050 2000 Sue's Familt Photo 103 5000 3000 1-Hour Ouick Photo 102 3OOO

Table SERV CALLS CALL-NUM CALL - DAT CUST REP MFR PRODUC71'

E 2133 1994-05- 10 1000 10 1 ACK 1 0 2

1 6253 1 1994-05-02 1 3000 1 102 1 LMA 14516 1 7111 1994-05-09 100 1 106 MRP 600 4250 1994-05-14 1050 105 M RP 600

Table PRODUCTS MFR ID PRODUCI' ID DESCKIP'~I0N

ACR 1 0 1 Trrpod ACR 102 Tr1pod2 MRP 101 Long Pu~.glr: Lens

1 LMA 1 4211 I Autornat~c Camera I LMA 43 10 Regular Focus 1 LMA 45 16 Regular Focus 2 MRP 600 Lcns MRP 60 1 Shutter WRS 24c Widget 1

RI merupakan salah satu fasilitas SQLUasc >.u~ng sangat penting. K1 nleIijuiiu1 integrltas dar) validasi data pada level database. M~salkun jiks k i n telah member~kan ketentuan sbb: 0 Hanya boleh terdapat satu manajcr untuk tiap kantor

Sernua karyawan hams dihubungkan dcngrul satu kantor d m nllulajer Setiap produk harus rnemiliki kodc manufaktur clan kode produk Semua pelanggan diberikan nmla scorang kar-awan sebagai contact-person

SQLBase dapat mengatur semua RI construnt scpcrt~ dl atas. K ~ t a t~dak pcrlu mcnul~s apl~h;lh~ lagi. SQLBase, bukan user, yang akan mciljamin RI yang berlaku. Untuk mernpelnjar~ bagaimana RI beke rja, kita harus mengctaliui komponen-komponen RI sepcrti: 1 . Primary key 2. Foreign key 3 . Parenttchild table 4. Parentlchild row 5. Self-referencing tablelrow

SQLSase lrciining Mnterial Copyr~ghl 0 1995. by P7'. Versodoto Systemtndo, Jokarta

Page 32: Versa Data Gupta SQLBASE Training Material

Primary Key

Primary key (PK) adalah kolom atau kumpulan kolom yang secara unik tiietigidetit~fikasikai setiap baris. Dalam table OFFICES, kolom OFFICE merupakan PK karena secara utik niembedakan setiap kantor dengan nornor yang bcrbeda. PK dalam table PRODUCTS d~sebut sebagai composite primary key karena terdir~ dan dua kolom yaitu MFR - ID d m PRODUCT - ID. PK tidak boleh mengandung nilai NULL. Setiap table h a n ~ , a boleh meniiliL~ satu PK.

Suatu table munglun memlliki lcbih darr sntu ~denrlfier yang bcrpoterlsi nicnjadi P K . Sc t~ap kolom yang berpotensi menjad PK d~scbut I.'crnu'idare key. PK b~asanya dipilih d a r ~ salah satu candidate key tersebut. Candidore key yuig tidak terpilih disebut nlrernn/e key, C L I ~ ~ ~ I ~ L I [ C kc). harus memenuhi ketentuan sbb: 1 . Tidak boleh ada dua baris dalam sat11 table yang menliliki nilai yang sania untuk candidarc

key 2. Canddate key tidak diperkenankan mengandung subset yang unik. Sebagai contoh,

composite key MFR ID/PRODUCT - ID tidak tcrmas.uk cnndicr'n/r key b ~ l a s a 1.1 3 1 s9tu

kolom tersebut unik &lam table ybs

Pedornan &lam memilih PK. 1 Unique Idenr~jier

Pilihlah identljier yang unik nienjadi P k dalun setlap tablc s c p c n ~ kolom OFFICE dnlnn~ table OFFICES.

2. Nilai permanen Jika terdapat child row yang mengacu ke PI(, n i la~ dan PK tersebut harus tetapiperrnx~en dan tidak dapat drubah. Sebagai contoh, koloni MGK atau CITY dalarn table OFFICES dapat menjad kanddat PK karena n ~ l a ~ n y a unik. Tetapi apabila kantor baru d~tarnbah dalam kota yang sama, atau apabila ninnajer nieninggalkan perusahaan, nilai dari kedua kolom tersebut berubah. Sehingga kcdua kolom in1 tidak dapat menjadi PK karena n ~ l a ~ n y a tidak dapat selalu unik atau perniancn

3 . View Semua view yang didasarkan atas table ~ m i g me~nildu PK hams menganduiig semua PK tersebut. Jlka ketentuan h i tidak ditaati. maka pada saat INSERT kc vtew dilakukan. pesan NOT ENOUGH NON-NULL VALUES akan muncul. Pesati 1111 rniincul knrenrl semua kolom PK tidak boleh mengaldung nilai NULL.

4. Jumlah kolom Untuk PK yang composite, pakaildl jumlah kolom minimum untuk menjamm keunikan PK. Hal ini dsebabkan setiap jurelgn kcy yang menunjuk ke PK harus memiliki junllah kolom yang sama. Sebagai contoh daluii table PRODUCTS kita hanya menierlukan koloni MFR-ID dan PRODUCT-ID saja

5 . Not NULL with Default Ketika PK dibuat, pilihan NOT NULL WITH DEFAULT jangan dipakai kccual~ koloni- kolom PK memiliki tipe data TIMESTAMP atau DATETIME.

Ketentuan yang berlaku bila membuat PI( dalam SQLBase: 1 . Unique index

Jika suatu table memiliki PK, kita harus selalu membuat unlyue Index atas kolom-kolotii PK ybs.

SQLBme Trtrining hfc1terinI Copyrrght 63 1995, by F7 I'errcrdara Systenirndo. Jakarfa

Page 33: Versa Data Gupta SQLBASE Training Material

2 . Format Format d a r ~ PK harus memenuh~

Tidak dapat rnelebihi 16 kolom Jumlah dari panjang kolom tidak bole11 lebih dari 255 bytes Tidak boleh mengandung tipe data LONG atau LONG VARCHAR

3. UPDATE WHERE CURRENT UPDATE WHERE CLRRENT ckalcsr t~dak dapat dipakai dengan kolonl PK

4 . Self-referenced row Dalam self-referenced row, nilai PK tidak dapat dirubah

Jika suatu table rnemiliki PK, unique rndcx terscbut hams dibuat sesual dengan urutan kolom- kolom PK tersebut, hdex ini disebut scbaga~ prrmary index. Setiap table ha.nj,a boleh nlcmil~k~ satu primaty index. Jlka satu table rnen~iliki lebih dari satu unique rndex yang dibuat atas kolorn-kolom PK, maka index pertama yang dibuat adalahprrmary rndex

Primary index dapat humtkan secara oscendng niaupun descending. Table &an berada dalam incomplete state sarnpai primary rrldex dibuat. J~ka table berada dalarn incomplete srate, operasi-operasi lain seperti insert, srlecr dan membuat foreign k e y tidak dapar dilakukan. Untuk mengantisipasi masalah scperti ini, buatlah primary rnilex segera setelah suatu table selesai dibuat.

Urutan ha1 yang hams dilakukan untuk melcngkap~ proses pembuatan table yang rnc rn~ l~k~ PK 1 Buat table dengan perintah CREATE TABLE 2 Buat unique index dengan pemtah CREATE UNIQUE INDEX 3. Rubah table untuk menambahkan P K dcngan pcrlntah ALTER TABLE PRlMARI'

KEY

Foreinn Key

Foreign key (FK) mengacu ke PK dala.111 table yang sama maupun table yang lam. Kolom OFFICE dalam table OFFICES merupakan contoh PK. Kolom REP-OFFICE dalam tablc ENGINEERS adalah contoh dari FK. Data office dalam table ENGINEERS nlengacu kepada data office dalam table OFFICES. Sebcluni membuat FK, PK dan ltnrqile rndex sudah hams ada.

Setiap FK merniliki consrrarnt nume yang rnengidentifikast FK tersebut. C'onsrrnrnt nc7nie In1 diperlukan ketika operasi DROP FOREIGN KEY dilakukan. Constrarnr name dibcr~ka~i pad2 saat FK dibuat (dengan perintah CREATE TABLE atau ALTER TABLE). Constr~~rnt ncrnle dapat ditentukan oleh user. Jika user tidak mcmberikan constraint name, maka SQLBase aka1 memberikannya sesuai dengan kolori~ pzrtama dari FK. Constrnint name maksirnal dapnt menarnpung sarnpai 18 karakter.

Jika terdapat beberapa FK (dari beberapa table berlainan) yang mengacu ke table >,ang snnis. setiap constraint name harus rnerniliki nama yang unik. Sebagai contoh, kitn dapat mcmbunt FK dari kolom 0FFICES.MGR dm membenkan constrarnt name HASMGR. Jika n'ma HASMGR tidak diberlkan, maka SQLRnse akan nlemberdcan constrarnr name MGR sebaga~ default.

SQLtJnse 7i.crining. Mnterial Copyr~ghf O 1995. by 1'7' Yersadara Syrlem~ndo. Jukurra

Page 34: Versa Data Gupta SQLBASE Training Material

Ketentuan yang berlaku untuk FK: 1. Kolom yang sesuai

FK hams mengandung jumlah kolorn dan urutan kolom yang sama dengan PK. Tlpc datanya juga hams sama. FK boleh memiliki nama kolom yang berbeda dan nllal dqfuult FK juga boleh merniliki nilai NULL. Jika index ddasarkan atas kolom-kolorn FK, urutan ascending maupun descending-nya boleh berbeda dengan urutan dari prlmory index

2. Menggunakan kolom PK Satu kolom dapat dirmliki baik oleh PK maupun FK.

3 . FK unhlk tiap table Satu table boleh memiliki sejumlah FK

4 . Jumlah FK Satu kolom dapat dimiliki oleh leblh darr sntu FK.

5. Jumlah kolom Satu FK tidak dapat mengandung Icbih darl 16 kolon~.

6. Parent table Satu FK hanya boleh mengacu kc sebuah PK dalam purenr table-nya. I'crrer.11 tnblr ini hams terdapat dalam database yang sama

7. Nilai NULL Sebuah kolom FK boleh bernilai NULL

8. Hak Otoritas ALTER atas table hams diberikan kepada semua user yang niengatur IU atas table ybs.

9. System catalog table FK tidak dapat mengacu ke system ~,c~tnlog mblt.

10. View FK tidak dapat mengacu ke view.

1 1 . Seljlrejl.rencing row Dalam seFreferencing rout, nilai FK hanya dapat berubah jika nilai PK yang dlacu valid

SQLBase tidak membutuhkan index dibuat untuk FK, namun index dapat meniperbaiki kinerja. Operas1 join lazim dilakukan antara P K FL dan dcngan membuat indcs untuk FK, kincrja dar~ opcrasi ini dapat meningkat

Tidak seperti kolom PK, kolorn FK bolch bernilai NULL. Walaupun nilai NULL tldak scsua~ dengan nilai-nilai yang terdapat dalam PK, ha1 ini memenuhi IU consfruint. Jikn mungkin, jangan biarkan suatu FK memiliki nilai NULL/non-NULL yang partial. Berikut In1 diberikan contoh masalah yang akan timbul bila nilai NULL/non-NULL partial terjadi.

Compos~te key MFR-ID/PRODUCT-ID merupakan PK dan table PRODUCTS Coniposite key MFRPRODUCT merupakan FK dalam table SERV-CALLS yang mengacu ke table PRODUCTS. Misalkan kolom PRODUCT dalam table SERV - CALLS d~ljlnkan boleh mengandung ni la NULL. Hal lIll berart~ klta boleh memasukkan 111lal non-NULL untuk kolom SERV-CALL.MFR dan nilai NULL dalarl~ Lolom SERV-CALL PRODUCT SQL> INSERT INTO SERV-CALLS VALUES(8000,9-3-93,2000,103,'WRS',NULL).

I

I Hasllnya baris lang dimasukkan terscbut mengaldung nilal FK yang tldak cocok dengan nllal PK manapun dalam table PRODUCTS

SQLB(zse 7'rcrining M(iterin1 Copynghc @ 1993 by P7' ~ e r s a i o r o Sysrerrrrndo. Jokurto

Page 35: Versa Data Gupta SQLBASE Training Material

Table SERV CALLS CALL-NUM CALL - DAT CUST REP MFR

- I PRODUCT

8000 1 1993-09-04 2000 1 103 / WRS I

I

1 MFR ID I PRODUC:?' ID 1 DESCRIP.I'ION WRS 1 24, WRS i 25, 1 Wideet 2 -4 Table PRODUCT

SET NULL delete rule Situasi yang sama terjadi dengan Sli'I' iWf.ld delete nrle Dengan ketentuan I ~ I , nlenghapus sebans data dari table PRODUCTS mcngakibatkan kolom SERV_CALLS.PRODUCT menjadi NULL, Tapi pada kasus ini, impliknsin>'a tidak akan terjadi karena t ~ d a k ada FK >,ang memenuhi PK.

INSEftT sroternent Dcngan mempertimbmgkan RI, SQLBasc akrul monganggap baris data >.an2 NUl,L,lno~l- NULL sebagai NULL. Jika suatu bans d i m g a p sebagai NULL, SQLBase tidnk &an mengecek RI-nya lagi setiap kali per~ntall INSEKT dllakukan. In1 artllllza SQLDasr: t~dak aknn mengecek nilai kolom FK yang non-NU1.L untuk n~elihat apakah nilai tersebut cocok dcngar~ nilai dalam parenf mble.

Parenuchild Table

PK dan FK menggarnbarkan hubungm i~cir~.nr,child. Table yang menlilikl PK adalah poret~r table, scdangkan table yang mengandung FK adalah child [able. Child darl child dlsebut descendent. Dalam contoh di bawah ini, table PRODUCTS adalah pilrrnr darl table SERV-CALLS. Untuk menjadi parenl rable, table terscbut harus memiliki PK dan primnrj index. Ada table yang tidak memiliki porenr nlaupun child table. TabIe scperti ~ n i d~sebut sebagai independent table.

Parenuchild Row

Satu bans dalam parenf fable yang nlcr~jadl acuan dan bans lam dalrtin ~ h r l d roble d~scbur sebagal parent row. Sedangkan bans l u g niengacu ke pcrrerlt row adalah child rorr Cllrl~i row hams mem~liki paling sed~klt scltu kolom FK lang tldak NULL

Tidak semua bans dalam parenf rable harus menjadi pnrenl row dalanl ani tldak ad3 cl7110 raw yang mengacu ke baris tersebut. Contohnya ialali suatu bans di table PIIODUCI'S l.allg descrpfion-nya 'Autornmatic Camera' tidak nlenjadi acuarl dari baris mannpun dalam tablc SERV-CALLS. Sama haInya bila baris tcrtcritu di child [able mengandung nila~ NULL padn FK-nya, maka bans tersebut bukan child row

Page 36: Versa Data Gupta SQLBASE Training Material

Delete-connected table

SQLUtlse Trt~ining hlaterinl Copyr~ghr @ 1993, by PT. Versodoto Systern~ndo. Jakarta

Page 37: Versa Data Gupta SQLBASE Training Material

Blla menghapus satu baris dalanl satu tablc mempengaruh~ table ymg lam, maka table terscbut tergolong dalam delete-connected table Sebagal contoh, menghapus satu barls d a l m tablc OFFICES mempengaruhl table ENGINEERS karcna setiap karyawan dihubungkan dalanm satu kantor tertentu Setiap table yang tcrlibat dalam operas1 delete adalah delete-ionnec~cd

Defirllsi benkut ini berlaku untuk delere-connected table: 1. Self-referencing table pasti delrrr-connrcred terhadrlp dirinya sendir~ 2 . Child table selalu delere-connecrrd dengal yarenr ruble-nya tidak perduli kctcntuan

DELETE apa yang ctterapkan. 3 . Suatu table m e n j d delere-connectccl dengan grandparent dan great-grondprrnr-n).a bila

ketentuan DELETE antara paren[ dm grandparent, atau grandparent dengan grrar- grandparent-nya adalah CASCADE.

I Table 1 1

great-grantparent I

table I I I CASCADE I !

grandparent table !

I CASCADE i I 1

parent table Table I

Gambar 4.1 Delete-comccted table

Dalam gambar di atas, Table 4 menjadi delere-connecred dcngan Table 2 karcna hcrcntuan DELETE antaraa Table 2 dan Table 3 adalah CASCADE Table 4 juga delrre-cotinccted dengan Tablc 1 karena kctcntuan DELETE antara Table 1 dan Tablc 2 rtdalah CASCADE Sedangkan ketentuan DELELE antara Table 4 dengan Table 3 tidak mernpcrigaruh~ hubungm delete-connected yang telah terjadi

Membuat Table dengan RI constraint

Kita dapat menggunakan perintah CREATE TABLE dan ALTER TABLE urltuk ~iiernbunt atau merubah table dengan PK atau FK, dan mcneiitukan KI constrarnr

Berikut ini adalah perintah CREATE TABLE untuk membuat table ENGINEERS lerlgkap dengan PK dan FK-nya:

SQLLJase Trtrining Material Copyrrghr (3 1995, by I'T Versudata Systenrrndo, Jakarta

Page 38: Versa Data Gupta SQLBASE Training Material

SQL> CREATE TABLE ENGINEERS (EMPL-NUM INTEGER NOT NULL, NAME VARCHAR(24) NOT NULL, REP-OFFICE INTEGER, TITLE VARCHAR(15), HIRE-DATE DATE NOT NULL, MANAGER JNTEGER, PRIMARY KEY (EMPL-NUM), FOREIGN KEY WORKSIN (REP-OFFICE) REFEFENCES OFFICES ON DELETE RESTRICT);

Kita juga dapat rnenggunakan perlntah AL'I'ER TABLE untuk menlbuat PI( dan FK sctclah table selesai dibuat. Untuk rncmbuat FK ISFOR dalarn table SERV-CALLS sctclah tablc berhasll d~buat dengan CREATE TABLL, gunakan pcrlntah ber~kut In1 SQL> ALTER TABLE SERV-CALLS FOREIGN KEY ISFOR (MFR, PRODUCT)

REFERENCES PRODUCTS ON DELETE RESTRICT.

Table akan berada dalarn inconiplr/r .vrtrre sanlpal jlrrmnry rndex dibuat La~igkah in1 harus dilakukan segera setelah table selesai dibuat Szbagai contoh, untuk menibuat. y r ~ n ~ ~ i r ~ ~ ir7dt's

untuk table OFFICES, gunakan perlntah berikut. SQL> CREATE UNIQUE INDEX 0FFIC:E-IDX ON OFFICES (OFFICE);

J ~ k a lnfornlasr database dl-load dengall perlntah LOAD, lndcs harus d~buat sctelall lotrci selesa~ supaya klneqa tidak terganggu l ~ k a prrtrrrrry key d~tan~bahkan sctclah ALTER TABLE unlque ~ndex hams te1a.h ada dl kolom prrnlcrry key sebelurnnya

System catalog table untuk inform as^ R j

Ada 3 SQLBase systenl catalog table yang mengandung ~nforn~asi RI. \,aitu SYSFKCONSTRAINTS, SYSPKCONSTKAINTS d m SYSTABCONSI'It4lNTS 1 . SYSADM.SYSFKCONSTKAINTS ( F K Constraints)

Table I ~ I mengandung lnfonnasi 1:k c in r~ tablc-table, mlsalnya c,onxrrcitn/ t l i r t l i L ' . Lnlor11

d a r ~ FK danparent table yang nlerljadi scum SQL> SELECT *FROM SYSFKCONS'I'RAINTS WHERE l\IAME='SEKV - CALL.,S'.

2 . SY SADM.SYSPKCONSTRAINTS (PI( Constra~nts) Table ini berisi informasi PE; d a r ~ tablc-table, sepenl narna kolom PK darl nama table-11) ~1

SQL> SELECT * FROM SYSPKCONSTRAINTS WHERE NAME='PRODUCTS'. 3 . SYSADM.SYSTABCONSTRAlNTS (Table Constraints)

Table ini berisi inforn~asi senlua L , O ~ I . S I ~ L ~ I ~ I [ d a l m setiap tclble, scpcrti niuniri dari tipi. construin/ (PK atau FK), ketelltu'u dclctc urituk FK, dan setiap ziser error t?rexsagcl \.aiig dibuat . SQL> SELECT * FROM SYSTABC:C)NSTRAINTS WHERE NAME='SERV - CALLS'.

lmulikasi RI

RI memiliki irnplikasi yang khusus tcrhadap operas1 INSERT, UPDATE, DIIOP, SELEC'T dan DELETE dalarn SQLBase.

i SQLUnse Twining iCl(lteria1

Copyr~ghl O 1995. h~ P7' I'eruuiii~l~r Syslt'n~rndo. Jariclr.r,i

Page 39: Versa Data Gupta SQLBASE Training Material

INSERT SQLBase akan menerapkan ketentum bbcrlkut b~ la data dl-rn~err ke dalam tablc ~ , a i g mcm~l lh~ satu atau lebih FK. 1 Setlap nilai non-null yang d l - ~ n ~ e r t kc dalam kolom FK harus sesunl dengnn snlah sat11

nllal dalam PK 2 J ~ k a salah satu kolom dalam FK null, SQLBase akan men~perlakukal seluruh FK sebaga~

null SQLBase t~dak lag1 melakukan referent101 check atas perlntah lNSERT urltuk FK yang mlainya null.

3 Operas1 INSERT tldak dapat dilahukan terhadap parent atau chrld table b ~ l a / )~~rt 'nl rnble bcrada dalarn ~ncomplete srnre (rn~snlhnn prlmory key rndex-nya dl-drop)

Data dapat di-~nsert lie dalarn ynrenr cnhle setlap saat tanpa rnempcngaruhl ch~lci lablc> Contohnya, kita dapat menambah kantor baru ke table OFFICES tar~pa mcnipcngaruhl tablc ENGINEERS.

UPDA TE Jika child table di-update, setiap non-null FK harus sesuai dengal PK dalam purenr rub118 Satu-satunya ketentuan UPDATE yang dapat ditcrapkan ke parent rnble adalah RESTRICT 11ll berarti setiap usaha untuk merubah PK dari parent table tidak diijinkan jika tldak ada nlla~ yang sesuai dalarn child table.

Ketentuan yang berlaku untuk perlntah UPDATE lalah. 1 . Perintah LIPDATE yang memberikan nilal ke PI( tidak dapat mcnspcsifikas~ Icb~h dl11 I siitu

record. 2 . Perintah UPDATE yang mcmilik~ WHERE CURRENT OF clcrztse tidak dapat merubah

PK, atau kolom view yang berasal d a r ~ PK.

DELETE Ketentuan DELETE dapat d~berlakukan terhadap setlap relas~ parenr chlld Kctcntuan DELETE mengatur apa yang hams SQLBase lakukan jlka user berusaha menghapus scbar~s

I data dan parent table. Ada 3 kctentuan DELETE yang berlaku RESTNCT, CASCADE, SET NULL

DELETE RESTRICT Ketentuan ini merintangi penghapusan data dalam parent table jika data tersebut mnsih merniliki child row. Baris ini hanya dapat dihapus bila sudah tidak ada chrld row yang tergantung kepadanya. Sebagai contoh, ketentuan ini cocok untuk relasi aritara tablc SERV-CALLS dengan PRODUCTS. Data produk tidak boleh dihapus jika pruiggilan servis masih terjadi atas produk ybs SQL> ALTER TABLE SERV-CALLS FOREIGN KEY (MFR,PRODUC:'17) REFERENCES

SERV-CALLS ON DELETE RESTRICT; Jika tidak ada ketentuan DELETE yang diberikan, maka default-nya adalah RESTRICT

DELETE CASCADE Jika parent row dihapus, maka sernua chrld ruw-nya secara otomatls terhapus dorr c h ~ l d table Ketentuan ini cocok ditcrapkan untuk relasi antara table SERV-CALLS dan

Page 40: Versa Data Gupta SQLBASE Training Material

CUSTOMERS. Data pelanggan ha1b.n boleh dihapus jika pelanggan tcrscbut telah tidnk aktif lag1 sehlngga semua panggilan scrvls d a r ~ pelanuan ybs, harus dihnpus SQL> ALTER TABLE SERV-CALLS FOREIGN KEY (CUST) REFERENCES

CUSTOMERS ON DELETE CASCADE; Ketentuan ini tidak menghapus ynrrnr r o w jika chrld row atau ilesct~,~dcnt rovv nlcnlilik~ ketcntuan DELETE RESTRICT. Untuk sevlrejirencing ruble, CASCADE nlerupakan satu-satunya ketentuan yang diijinkan

DELETE SET NULL Jikapnrent row dlhapus, nila~ FK dari scnlua child ruw-nya sccara otoi~~atis dibcrika~i 1i1lai NULL. Contohnya, bila seorang kag-a~van kcluar d a r ~ perusatlaan, semila panggilan scrvls pelanggan yang ditangani oleh haryacin !lbs, menjadi tangung-ja~vab kan.awan lain ).ang beluni diketahui sarnpai karyawan tcrscbut. ditugaskm. SQL> ALTER TABLE CUSTOMERS FOREIGN KEY HASREP(SERV-REP)

REFERENCES ENGINEERS ON DELETE SET NULL; FK bisa diberikan nilai null bila saIa11 s;lt~l kolon~ FK memperbolehkan nil31 11~111

DROP Jika satu table dhapus (drop), maka PK dim FK-n)a oromatis terhapus. J ~ k a prrrc.nr t~lblt' ; i t .a~~

PK-nya dhapus, rejirenrial cuns rm~nr -n~ i~ juga tcrliapus. Jika hi& ALTER atas parct~r cia11 child rnhle dinliliki, PK dapat dihapus. Scbuga~ contoh perintah berikut 1111 111c1ighap11s PK diir.~ table OFFICES dan relasi pnrenr/child dcngan table ENGINEERS, SQL> ALTER TABLE OFFICES DROP PRIMARY KEY;

Menghapus PK tidak menghapus yrrrn~-rry ~ t idrs . Indux tetap scbaga~ llniyitc 1t7ilc.x dal~unn kolorn PK sebelumnya. Jikaprimury inilcs dihapus, nlaka table beract? dalam rncotnplrte .stirre',

s e h i n ~ a perlu dlbuat unique index yang lain ntas kolom PK ybs, lir/l.rc.n[7nl cons[roin/ tc'tap berlaku ~valaupun primary index dihapus. Untuk nncnghapus FK, user h a n ~ s mcm~liki hah ALTER atas pnrenr dan deyendenr tablc Conroh berikut menghapus FK ISFOR d a r ~ tablc SERV-CALLS: SQL> ALTER TABLE SERV - CALLS DROP FORElCiN KEY ISFOR,

SELECT Karena perintah SELECT tidak merubah 111ln1 data, muka perintah In1 t~dak dipc~igaruh~ olcli RI.

Siklus dari Dependent table

Table ENGINEERS mengandung kolorn REP OFFICE yang Inengacu kc kololn 0FFICES.OFFICE. Table OFFICES Jilgii memlli6 FK yaitu di pada kolom MGK, !.ang lilengacu ke kolon~ ENGMEERS.EMPL-NUM. Sctiap table nlenlilik~ FK 1.ang mcngucu kc PK masing-masing. Relasi seperti ini membcntuk rqfirrnrial cycle. In1 berarti szlr~ua bans dalam table ENGINEERS hams mengacu ke salah satu baris di table OFFICES, \.,an! mengacu lagi ke table ENGINEERS d m sctcrusnya. Contoh in1 n~cniiiijukkan s~klus dn r~ du:i -

table. Siklus yang terjadi bisa mclibatkiui I z b ~ l ~ d a r ~ dun table Table ENGINEERS

1 EMPL NUM 1 NAME REP OFFICE I I

Page 41: Versa Data Gupta SQLBASE Training Material

100 Paul Atkins 10 104 Bob Smith 2 0 107 Murray Rochester 30 102 Larrv Sanchez 10 101 I Sheila B r o ~ n 1 10 106 I Sam Valdez 1 30

Table OFFICES

Implikasi INSERT Siklus sepertt dt atas dapat mengakibatliru~ masalah untuk operas1 INSERT Misalkan J I L J seorang senlor engineer yang bemania Ronald Casey (employcc 112) baru rnasuk dan aLnn menjadl manager dl kantor baru di Boston (office SO)

INSERT INTO ENGINEERS (EMPL-NUM,NAME,REP-OFFICE, T1'TLE.HIRE-DATE)

VALUES (1 12,'Ronald Casey',jO,'Manager',8-15-93), SQL> CNSERT INTO OFFICES VALUES (SO,'Boston','Eastcm', 1 12,NULL).

Perintah INSERT pertama gaga1 karena rncngacu ke office 50 yarig seberiarn3a bzium adn Btla INSERT kedua dilakukan dulu, bdru lNSERT pertama juga tidak nlernecahkru~ masalnli karena manager 1 12 belum ada Untuk nlcrigatasi kasus mi, paling sedlklt satu dari F K d a r ~ referentral cycle harus mengtjmkan nilai NULL Perintah yang berhastl adalah SQL> INSERT INTO ENGINEERS VALUES

(1 12,'Ronald Casey1,NULL,'Mmager',8- 15-93',NULL), SQL> INSERT INTO OFFICES VALUES(jO,'Boston','Eastem', 1 12,NULL), SQL> UPDATE ENGINEERS SET REP_OFFICE=50 WHERE EMPL - NUM= 1 12,

Implikasi DELETE Referentlal cycle juga dapat incngak~ba&m masalah untuk operas1 DELETE Untuk menjelaskan ha1 ini, dipakai tiga table OFFICES, CUSTOMERS, ENGINEERS Tiga table In] memlllkl relas~ refcrentlal cycle Table CUSTOMER adalah parent d a r ~ table OFFICES OFFICES adalah parent d a r ~ ENGlNEEKS dan ENGINEERS adalah parent d a r ~ CUSTOMERS Gambar benkut ini nicnunjukkan apa tang tcrjadl j ~ k a scbnrls dnt,l d~liapus dengan ketentuan DELETE yang berbcdn

PK , FK OFFICE c r n - MGR

2 0 San Fransisco 103 - - 40 New York 1 O X 10 Los Angcles 100 30 Chicago 106

SQLUrrse Trllining Materiul Copyrfghr W 1995. by P T ~er sodoro Sysrertrrndo. Jokorro

Page 42: Versa Data Gupta SQLBASE Training Material
Page 43: Versa Data Gupta SQLBASE Training Material

Diagram benkut menunjukkan relasi antar table j k a setiap FK dbuat dengan ketentuan DELETE RESTRICT.

OFFICES OFFICE MAJ ACCCOUNT

t 10 3000

k ENGINEERS , 1 EMPL N U M / REP OFFICE I

CUSTOMER /'

CUST NUM SERV REP

1001 1050

PK FK awal proses

RESTRICT

Dengan ketentuan seperti di atas, tidak ada customer yang dapat dihapus karena scrnua customer adalah parent row dari table lain. RESTRICT jangan dipaka1 untuk semua relas~ dalam referential cycle, kecuali bila DBA ingin menjaga supaya tidak ada data yang dapat dihapus.

Delete-connected table restriction Ketentuan berikut ini berlaku untuk delete-connected table: 1. Jlka operasi DELETE rnelibatkari table lain yang rnenjah acuan dalam subqucp,

ketentuan DELETE terakhir hams KESTRlCT 2. Jika dua table menjadi delere-connected melalui dua atau leblh rejerrntral yolh, pn~h

tersebut (atau path terakhir) hams rnen~iliki ketentuan DELETE yang sama, d,m tidnk dapat menggunakan SET NULL.

Keterangan untuk butir 1 : Salah satu peraturan dasar SQL adalah hasil dari suatu operas1 sehamsnys t~dak tergantung kepada urutan baris data y'mg dakses. h berarti subqzrery dari pcrlntd~ DELETE tidak dapat mengacu ke table yang datanya ingin dhapus. Sebagai contoh, misalkan jika tidak ada f2l constrclint, maka hta dapat melakukan perintah ini:

! i

SQLBase Trrzining Material Copyrrghl 0 1995, by PT Versadato Sysretnrndo. Jakarta 1

Page 44: Versa Data Gupta SQLBASE Training Material

SQL> INSERT INTO OFFICES VALUES(lj,'ANYTOWN','MIDWES?",333,NULL) Kemudian kita dapat menghapus semun baris dari OFFICES yang mnnaJem!.a tidnk terdapat di ENGINEER. SQL> DELETE FROM OFFICES WHERE MGR NOT IN

(SELECT EMPL-NUM FROhI ENGINEERS); Tetapi bila FK di table ENGINEERS mengacu ke OFFICES, subquery dl atas m e l a n ~ a r aturan yang berlaku. Hasil dari operasi ini sangat tergantung kepada urutan baris yang diakses. SQLBase akan menggagalkan opcrasi ini dan menanlpilkan pesan kesalahan.

Keterangan untuk butir 2:

TABLE 2

'4 TABLE 1 1,

TABLE 2

C a s ad

TABLE 3

I

i I

Struktur 1 Stru ktur 2 !

Garnbar 4.2 Struktur cl~llere-connected yang valid Struktur pertama mengganlbarkan struktur rcfcrenr~al yang valid dengall tlclrlc-connrcreci table. S t r u h r kedua juga rnemil~ki d~>it.rtj-connecrion yang valid. Dalani t ~ a p struktur, TABLE 1 niemiliki ketentuan DELE'I'E !.ang samn, dm ketentuan terakhlnlya bukm SET NULL.

Struktur 1 Struktur 2

Ganlbar 4.3 Struktur cli.icri.-cunnrcted yang ~nvalid

SQLBase Trnining M(lterin1 Copynghf O 1995, h i : PT. Verxodafo Sysfenrrndo, Jokurfu

Page 45: Versa Data Gupta SQLBASE Training Material

Di struhzur 1, TABLE I menliliki kercntuarl SET NULL yang sama. DI struktur 7 , dua ketcntuan terakhir tidak sarna. Di strukrur 3, dun tablc dihubungkiu~ dcngal~ dua ketc~lruan DELETE yang berlainan Jika kita mcng~jlnkan ketentuan SET N U L L d a r ~ prlh yalig bcrlainan, mnka ada kemungklnan FK-n> a null/non-nuII. Tctapi bila path-n> 3 KESTRIC'T arau CASCADE, child row-nya nkan dihapus (CASCADE) ntau tetap sama (RESI'KlCT).

1 SQLTalk dan RI

Perintah SQLTalk - -- Dampak terhadap R1 -.

SQLBase mcnonaktlfkan seniiia pengecekan R1 scbeluni n~emulai proscs m d a n t i t k a n pcngecek'm kembali sctclah LOAD sclcsn~ -~

Operasi CHECK ITA ABASE tidak dilakukan jika ada tablc lang b c r a c c DATABASE dalam kondisi pctidlrl~ -- nrau ada tablc yang sedans mclakukan penpcceknii R I REORGANIZE SQLBase rnenonnkaiifiun semua pengecekan RI scbeluni rnernula~ proscs

REORGANIZE dan tncng&ti&an kernball pcngccckati setelnli REORGANLZE sclcsa~ -.

SQLBase mcnonnktifknn scmua pengecekan R1 scbelum mcrnulai proscs COPY dan nicngaktifkan kernbali pengecekan sctcldi COPY sclcsai dilakukan

Page 46: Versa Data Gupta SQLBASE Training Material

SQLBase Procedure

V. Procedure, Trigger dan Event

SQLBase Procedure adalah sekumpulan SQLWlndows Applicahon Language (SAL) dan perintah SQL yang diberikan suatu nanla, dl-comp~le dan secara opt~onal dlsilnpan dalarn SQLBase database.

Ada beberapa tipe dari implement as^ procedure: 1. Stored procedure di-compile dan dislmpan dalam database untuk dicksckus~ kcmudian 2. Non-stored pr~cedure di-compile untuk scgcra dieksekusi. 3. Ketika trigger clan event dibuat untuk memanggil inline procedure test, INLINE clause d a r ~

perintah CREATE TRIGGER atau CREATE EVENT hams diberikan. Inilah yang disebut sebagai d i n e procedure. Pada saat trlggcr atau event dibuat, SQLBase mcnyinipan 1n11nc procedure seperti ini dalam system catalog.

Keungulan mengunakan proccdure:'. 1 . Menyederhanakan aplikasi dengan memindahkan sebagian proses ke server 2. Mengurangi network rrnSfic dengan menyimpan perintah SQL yang dieksekusi di backend

tempat procedure diproses. Fronicncr' hanya perlu memanggil proccdure dan menunggu hasil pemrosesan.

3. Meyediakan fleksibilitas yarlg lebih balk dalam ha1 kcamanan (st'currty) dcngan memberikan hak kepada end-users data yang tidak berhak diakscs.

4. Meningkatkan kinerja runtime karena /~roceditrcrl logic telah di-prccotr~/~rle. Untztk .star/c. storedprocedure, perintah SQL juga dl-/)recotrryrlt.; scbagai hasilnya, S'QL cxt.clrrrot7 pl~rt7 juga telah ditentukan.

5 . Memiliki lokasi sentral tempat menampung precompile program yang dapat diakses oleh lokasi-lokasi lainnya untuk kebutuhan aplikas~ yang bcrbcda-bcda.

6. Procedure dapat dsimpan, kemudian di-retrleve scrta dieksekus~ d a r ~ fionlcnd >.ang berbeda-beda.

SQLBasc mengijinkan user untuk rnenynlpan pcr~ntih SQL y;~11g S C ~ I I I ~ d ~ g i ~ ~ ~ ; i k ; i ~ i d;il;i111 stored command untuk deksekusi pada masa yang akan datang. Narnun stored conunand memiliki keterbatasan, yaitu hanya dapat l~~cnyirnpru~ satu per~ntah SQL saja. P~occdurc, dalam pihak lain, mengijlnkan user mcmbuat program dengan memanfaatkan /~roced~trrrl l o g ~ c dan variable yang menggunakan lebih dari satu perintah SQL.

Tidak seperti stored command, stored proccdure tidak pemah mcnjadi invalid, walaupun stored command yang terdapat dalam stored proccdure dapat rncnjadi invalid Ini artlnya user t~dak perlu me-recompile proccdure secarn otomat~s dcngan EXECU'I'E KECIOMPILE, ncau membenkanjlag untuk keperluan recomp~le dengan AL'I'EK COMMAND

Perbedaan lainnya ialah prograrrl yang mcmangg~l stored procedure t~dak dapat munggunakar~ scrollable cursor (dengan SET SCROLLROW ON) untuk scroll bnck/scroll .forth has11 pernrosesan dari suatu procedure. Program yang memanggil stored procedure In1 juga ndak dapat melakukan fetch backward terhadap result set yang &hasilkan oleh suatu procedure

SQLBase Trairring Material Copyr~ghf @ 1995. by P7: Vclrsadata Sysreit~rndo. Jakarta

Page 47: Versa Data Gupta SQLBASE Training Material

Format dari Procedure

SQLBase procedure mengikuti format clan syntax yang sama dengan SQLLli~ndoivs. Nanlun tidak seperti SQLWindows, elemen yang terdapat dalarn SQLBase procedure terniasuk clue- insensitive. Elemen-elemen dari procedure ialah: 1 . Nama procedure

Nama procedure boleh berbeda dengar1 nama pada s a t procedure dis~mpan. 2. Parameter

Parameter untuk keperluan input d m output ke procedure dapat didefinisikan. 3. Local variable

Local variable didefinisikan untuk ternpat pcnyimpanan sementara. 4. Action Section

Bagian ini digunakan untuk mcngontrol kondisi dimana perintah dieksckus~ dan urutan pelaksanaan eksekusi.

Nama procedure Setiap procedure hams memililu nama. Scbngn~ contoh:

PROCEDURE: WithDraw Nama procedure adalah long identrfier dan dapat rnenampung sampal 18 karakter Pada smt

procedure disirnpan, user dapat rnemberiknn nama tambahan yang menlungkinkan user mengaksesnya lagi. Secara umurn, nama !,zing dibcrikan sama, walaupun n m a yang diberlkan boleh berbeda. Contoh:

SQL> STORE WDPROC PROCEDURE: WithDraw Parameters

Parameter Parameter digunakan untuk memberikan Input dan n~cncrima output dari proccdure. Bagla1 In1 optional, artinya tidak hams ada parameter di setiap procedure. Pada saat procedure dieksekusi, user hams menydakan nilal bagi sernua parameter yang terdapat dalam procedure tersebut. Syntax dari parameter adalah:

[Receive] DataType [:] ParameterNamc Contoh:

Parameters Boolean: bDone Date~Time: dtBirthDate Number: nCount Receive Number: nTotal String: strLastNarne

Output parameter dalarn procedure harus didihului dengan keyword lieceive. Contoh:

Receive Number: nTotal

SQLTalk meneruna nila~ brnd v a r ~ o h l ~ untuk Input parameter Untuk oltr i~ur r ~ , c e r v t ~

parameter, user hams rnenydakan place holder, dengan atau tanpa m l a ~ untuk b1t7d ke semila parameter tersebut. Jika recerve parameler d~gunakan secara kons~sten sebaga~ output, user dapat menggunakan tanda koma (,) tanpa spas1 sebagal place holder. Array t~dak dapat digunakan sebagai parameter.

Page 48: Versa Data Gupta SQLBASE Training Material

Local variable Local variable ruelakukan beberapa fungs~ cialmm perrntah SQL. 1 . Menyimpan data. 2 . Bind input data ke perintah SQL. Vnriablc scmacam in1 dinanlaknn bind virr/~~hIc~ 3. Menenhlkan dimana lneletakkan output dari pznntah SELECT. Variable dalnm IN.1'0

i clause disebut into varinble

Local variable juga tidak hams selalu tzrdapat dalam procedure. Tidak ada keyword Necclvt' dalam local variable. Local variable didcklarusikan sillna seperti s jntas parameter.

Data Type [:I LocalVariablcNanc

Bagian ini mengandung perlntah 4.ang hsrus d~zksekusi tergantung levcl dari proccdurc Sclaln itu, juga niengandung logic jlon' lnngzlc~,g~* yr ig mcngontrol urutan peiigcksekus~ali pcrlritah User tidak dapat memasukkan user-dqf;ne>cl jitnction dalam procedure. Procedure dapat memanggil procedure lain untuk menjalnnkan fungsi yaiig diinginkan.

Satu block dalam bagian ini mcngandurig sckunlpulaii pcnntah yang dieksekusi scsuai derigai urutan. Semua perintah dalam satu block mcnliliki indentation level yang s a n a atau draw311 dan diakhiri dengan Begin dan End.

Tipe data parameter dan local vanable

User hams rnemberikan salah satu d a r ~ trpe data bcrikut In1 pada saat nicndcfi~l~s~kari parameter dan local variable

Tipe data Nilai default

-- I

Sql Handle none .- - 1iSqlCur 1 Hanya ulltuk local var~ablc __I' Datemime 0 dtStartDatc

null string s (atau) srr

Standard system constant yang dapnt d~gunAan ialdl: 1. strNull null string constant. 2. TRUE dan FALSE boolean constant.

4. DBP parameter: DBP AUTOCOMMIT, DBP-BRAND, DBP-PRESERVE, DBP VERSION, DB? LOCKWAI'I-1.1 hlEOUT, DBP-ROLLB.4CKTIMEO U7'

5 . DBV_BRAND database brand: DBY_BRAND_DB2, DBV-BRAND-OSZEE. DBV-BRAND-OR4CLE d m DBV-BRAND - SQL

Semua tipe data dapat ditulis dalam bcntuk lam pang disebut rec.c.l\v d~ltrr type. >.ang mengidentifikasikan output parameter l(ri.eivr ~lcrto tjy)e niengtjinkan user untuk membcrrkan data ke procedure secara referensr (by rcf2retice) darlpada by value I111 berarti SQLBnsc

SQLfJuse 'l'ruining hluteriul Copyrrghc 8 1993. ,hi. P7' i'ersod~rrrr Sysle~~rrndo, Jakurra

Page 49: Versa Data Gupta SQLBASE Training Material

Contoh: Parameters

Receive Boolean: bOrderFilled ... Actions

Set bOrderFilled = TRUE

Perintah SAL dalam Stored Procedure

Perintah SAL digunakan untuk mengontrol aliran logic dalam procedure SQLBase menyediakan fasilitas SAL berikut mr. 1. Break 2. Call 3 . If, Else dan Else If 4 Loop

I 5. On i 6. Return

7. Set 8. When SqlError 9. While

Break

Perintah ini r n e n g h r i Loop. Fasilitas i r l i nlenlungkinkan user untuk mengakhiri lebih dari satu level dari loop. Jlka nama loop tidak diberikan, maka perintah in1 akan niengakhlrl loop yang paling akhir dilakukan.

Syntax: Break [loopname]

Contoh: Loop

Set nOutput2 = noutput2 + nInput2 If nOutput2 > nInput2 + 10

Break

Call -

Pcrintah ini mcngeksckusi SAL firncriotl

Syntax: Call FunctionNarne(l'ararneter, . . )

Contoh: Call SqlImmediate ('DELETE FROM CUSTOMER WHERE CUSTNO = ' 1290')

SQLUasr 'liuinirrg hlutrriul Copyrrghr O 1995, b ) ~ PT I,'ersoJara Sysfe~tr~ndo. Jukurru

Page 50: Versa Data Gupta SQLBASE Training Material

Bila menggunakan perintah Call, ini berarti user akan mendapatkan finetion return vnlite Tetapi jika kesalahan diternukan, SQLBase mernindahkan kontrol ke error handle yang

If. Else dan Else If

Perintah ini mengeksekusi permtah-perintah lain berdasarkan hasil dari suatu ex1)ressron ELSE dan ELSE IF optional. Untuk sctiap perintah IF, user dapat rncnuliskan ELSE IF sebanyak yang diinginkan, tetapi hanya boleh satu ELSE saja.

YExpressionl <statement(s)l>

Else JfExpression2 <statement(s)2>

<statement(s)3>

Jika hasil evaluasi Expression1 TRUE, starement(s)l dieksekusi Jika hasil evaluasi Express~onl FALSE, E.rpress1on2 dievaluasi. Jika

hasil evaluasi Expression2 TRUE, sraremenr(s)2 dieksekusi Jika hasil evaluasi hipression2 FALSE, srarcrnent(s)3 dieksekusi.

If nMonthly-Salary < 1 000 Set nTax-Rate = 10

Else If nMonthly-Salary < 2000 Set nTax-Rate = 20

Set nTax-Rate = 25

Perintah ini mengulangi sekumpulan pcrultah sanlpai perintah BREAK atau RETURF

Loop [loopname] Loopname bersifat optional. Men~berikan loopname memudahkan user untuk mengidentifikasikan loop yang tepat sebelum menjalankan BREAK.

If NOT SqlExecute (hSqlCur)

SQLBusr Truining Muteriul Copyright Q 1993, by PT Versadata Systernrndo. Jakarta

Page 51: Versa Data Gupta SQLBASE Training Material

Return 20 1 Set I3 = I3 - 1

Else Break Outer

Suatu procedure dapat berada &lam s a l d ~ satu tahap di bawah ini: 1 . Procedure Startup 2. Procedure Execute 3 . Procedure Fetch 4. Procedure Close

User tidak hams selalu n~enggunakan ON dalam mcnulis stored procedure. Jlka ON tldak digunakan, SQLBase akan memproses sclun111 procedure. Artinya. SQ LBase akan memperlakukan keadaan ill1 sama sepertl b~la hanya ada ON Procedztre Execitre dalam Ac.r/on Sebenarnya keadaan default (ON Proccdurc Execute) biasanya cukup untuk kcbanyakan procedure. Walaupun demikian, ada dua sltuasl tertentu dimana ON <proccdurc state> dibutuhkan: 1. Jika user ingin mengeksekusi suatu proccdurc sccara bcnrliuig-uliuig bila d~berikan nlla~

parameter yang berbeda-beda. Adalah lebih efisien untuk memberikan On Procedure Slarlzcp dan rnenuliskm perintah-pcrlntd~ yang hanya dieksekus~ satu kali saja (mlsalkan untuk database connectron dan pcnlberian n~lai variable). Hal In1 akan nienghindar~ eksekusi berulang-ulang yang tidak dipcrlukan

2. Jika user ingin melakukan fetching untuk mztltlple row, On Procedure Fetch dlbutuhkan.

SQLBase menjalankan Procedure Srclrtup dan Procedure Close hanya sckall. Procedzir~' Execute dan Procedure Fetch dapat diproses berulang kali sesuai dengan kebutuhar~ user Local variable berubah sejalan dengan operas; execute dan fetch yang bcrulang-ulang; 111lainya hanya dihilangkan pada saat Procedure Close dijalankan. Untuk menampung semua output data yang dihasilkan oleh procedurc, jumlah output variable yang disediakan harus scbanynk jumlah item yang ingin dihasilkan.

Syntax: On <procedure state>

<statement(.) >

Procedure Startup Suatu procedure dlsebut bcrada dalarr tahap procedure srartup bila kedua langkrd~ dl ba\\aIi ini telah selesai dilakukan: 1. Program pemanggil rneng-cornprlc procedure 2. Program pemanggil mengeksekusl procedure untuk pertama kallnya.

Setelah memproses perintah-pemtah j a ig terdapat dalam tahap Procedure Startup, per~ntah eksekusl pertama dari program pemangll juga memproses pemtah-penntah dalarn Procc~d~irt. Execute Dengan kata lam, program pemmggl menlproses balk Procedure Start~cp maupun Procedure Execute. Penntah eksekus~ berlkutnya dan program pemanggll hanya memproses Procedure Execute saja, jadl Procedure Srclrttip t~dak d~proses lag1

SQLBase Ziuining Muteriul Copyright O 1995. by P7' Versadoru Systemrndo. Jakorro

Page 52: Versa Data Gupta SQLBASE Training Material

Procedure Execute Suatu procedure disebut berada dalam tdlnp procedztre execlttc bila kcdua Ia~lgkah dl b a u h In1 telah selesai dilakukan: 1 Program pemanggil mengeksekus~ proccclurc untuli pcrtana kal~nya. 2 . Procedure Startup diproses.

Procedure Execute diproscs d m dlrcproscs sctlap k a l ~ program pcmnngg~l mcnjLil~rth.ln per~ntah execure.

Procedure Fetch J ~ k a program pemangg~l n1en~a~ank;ul pcr~ntah jerch dan tcrdapat bag~an Procedure 1;rrch dalam procedure, maka per~ntah-penntah dalanl Procedttre Ferch tersebut d~proses Proc5cdltrc Ferch diproses dan direproses setlap k a l ~ pcrintah ferch d~lakukan

BagIan Procedure Fetch harus ada blla 1ncl~2kuka.n fkrch terhadap rnztlrll~it~ row Scln111 ~ t u . periritah return juga dianjurkan untuk rncn~bcrikan nilai O pada saat j;rcil scdruig bcrlangsung. dan kemudian membenkan nilai 1 sete1ahjt;rch sclcsai. Urituk mendapatkan semua output data yang dihasilkan oleh procedure, jun~lah output variable hams didcklarasikan sebanyak junllah item yang dlhasilkan.

Procedure Close Pada saat program pemanggd n~enjalartkan pcrintah d~sconnecr atau penntah laln dl-c.ornplit' dengan cursor yang juga digunaka~l untuk mcngcksckus~ suatu procedure, 1 ' ro~' t~~I~lr t ' ( ' / u \c ,

drjalankan.

Contoh procedure dengan ON PROC'EI) Lif?E Table sang digunakan oleh proccdurc bcr~hut adnlah GldES T' - \L"T SQL> CREATE TABLE GUEST-W?'

(NAME varchar(25), WEIGHT dcclnial(3,0), WHEN date), SQL> INSERT INTO GUEST-W?' values( I , 2 , 3 ) \

JANE FYUDAI, 132, 13-OCT- 1992 DON JACKSON, 165, 11-OCT-1992 DON JACKSON, 159, 12-OCT-1992 I

Contoh berikut prepare, execute, dan fetch has11 d a r ~ procedure GULST-WTPROC SQL> PREPARE PROCEDURE GUEST-WTPROC' Parameters

Strlng sName Rccc~ve Number nWc~ght

Local Var~ables Sql Handle hSqlCur I S t r~ng sSelect Number nInd

Act~ons On Procedure Startup

E

I Call SqlConnect (hSqCur 1)

Page 53: Versa Data Gupta SQLBASE Training Material

Set sSelect='Select WEIGHT from GUEST - WT where NAME=:sName into :nWeightl

Call SqlPrepare(hSq1Cur 1, sSelect) On Procedure Execute 2

Call SqlExecute(hSq1Cur 1) On Procedure Fetch 3

If NOT SqlFetchNext(hSq1Cur 1, nlnd) Return 1

Else Return 0

On Procedure Close Call SqlDisconnect(hSq1Cur 1);

SQL> perform GUEST-WTPROC \

JANE FYUDAI,, I SQL> FETCH 1; SQL> perform GUEST-WTPROC \ DON JACKSON,, 1

SQL> FETCH 2; SQL> SELECT * FROM GUEST-WT:

Keterangan: 1 . Bagian ini hanya diproses sekali pada saat EXECUTE pertanla kali oleh program

pemanggil. Jika program pemanggil re-execute lagi procedure yang sama, perintah- perintah dalam bagian ini tidak diproses lagi. Hal ini &an mcngurangi procedure performance overhead.

2 . Bagian ini diproses setiap kali program per~~anggil menjalankan EXECUTE. Jikn tidak terdapat ON <procedure stares> dalanl procedure, procedure defi7ttlf ke bagian ini .

3. Bagian in1 diproses setiap kali program pemanggil menjalankan FETCH, dan sangat berperan dalam melakukanfefch tcrhadnp mltltiple row.

4. Bagian ini diproses hanya: Setelah procedure telah menyelcsarkan scrntla pcrnrosesan a t ; l~~ Perintah lain di-compile atau d~-es~clite dengan cursor yang sarila, atnu clrr.scjr tersebut di-disconnect.

5. Program pemanggil mcngeksckusi proccdure untuk pcrtana kalinya. Uclgrcrn 0 1 1

Procedure Startup dan On Procedlrrr Execute diproscs. Uscr harus nlernberikan placeholder comma untuk output rec<tJrve parameter.

6. Inilah pcrintah FETCH pertama yang dijalankan olch program penlanggil. Ljclglczr~ 0 1 7

Procedure Fetch &proses. 7. Program pemanggil mengeksekusi proccdurc untuk kcdua kalinya dengan nilai hind >*ang

berbeda. Hanya bagian On Procedure Execztte &proses. 8. Program pemanggil melakukan FETCH berikutnya, kali ini dengan nilai bind yang

berbeda. Bagian On Procedztre /q't.lch diproses dun kali. 9. Bagian On Procedure Close diproscs.

SQi!.du~e 'l'ruirlirtg Muteriul Copyrrghr O 1993 by 1'7 I >rsadoro ,Sy~ct.~r~rndo Jukorro

Page 54: Versa Data Gupta SQLBASE Training Material

Contoh procedure tanpa On Procedure Contoh berrkut ini melakukan comprle, execute dan fetch satu baris dan procedure yang default-nya ke On Procedure Execute untuk semua p e ~ t a h yang berada di bagian Action.

SQL> PROCEDURE: GUEST-WTPROC Parameters

Receive Number: nSumWeight Local Variables

Sql Handle: hSqlCurl String: sSelect Number: nInd

Actions Call SqlConnect (hSqCur I )

Sct sSelect='Select max(WE1GtiT) from GUEST-W?' into :nSumWcight' Call SqlPrepare(hSq1Cur 1, sSelect ) Call SqlExecute(hSqlCur 1) If NOT SqlFetchNext(hSq1Cur 1, nlnd)

Return 1 Else

Return 0 Call SqlDisconnect(hSq1Cur 1)

1 . Karena tidak ada bag~an On l'rocrdiire, scluruh procedure d1-deji7ztll ke bnglnn Ot7 Procedure Execute.

2 . Tidak terdapat bagian On Procedurcj 1.i.tch dalani procedure mi. In1 berarti program pemanggil dapat FETCH dari On l'rocedlire Execute dengan memberkan perlntah SqlFetchNext. User hanya dapat J2tc.h dm retzirn ke program pemanggll satu bans saja (walaupunfetch berada dalam loop). Dalani kasus lnl, FETCH d a r ~ prograni pernruiggll hanya mengembalikan (return) nilai rcccrvr yrrrorncter dan tidak melakukan proses lalnnya

Contoh dengan single row fetch dun multiple row result Contoh berikut menjalankan srngle row frtch dan niemanipulasi data terscbut untuk menghasilkaan multiple row result. Ini tnerupakan metode yang baik untuk nienghasilkan skenario 'bagairnana-jika'. Secara unlurn, semua jktch d a r i program pemanggil tidak hams memiliki sumber database dalam procedure.

SQL> PROCEDURE: GUEST-WTPROC Parameters

String: sName Receive Number: nCurrentWT Receive Number: nDays

Local Variables Sql Handle: hSqlCur 1 String: sSelect

SQLUuse 'I'rrrinirlg Mutrriul Copyrrghr O 1995. by PT Versacl~lra Sysre~rrrndo, Jakarta

Page 55: Versa Data Gupta SQLBASE Training Material

Number: nMaxWeight Number: nInd

On Procedure Startup Call SqlConnect (hSqCur I) Sct sSclcct='Sclcct max(WEIG1-IT) from GUEST-WT

where NAME=:sName into :nMaxWeight' Call SqlPrepare(hSq1Cur I , sSclect)

On Procedure Execute Call SqlExecute(hSqlCur 1) Call SqlFetchNext(hSQ1Cur 1, nlnd) Set nCurrentWT = nMaxWeight

On Procedure Fetch

If nCurrentWT < 200 Set nCurrentWT = nCurrentWT + 10 Set nDays = nDays + 1 Return 0

Return 1 On Procedure Close

Call SqlDisconnect(hSqlCur 1 )

DON JACKSON,,,

1 . Karena bagian On Procedure Fetch ada, srngle row jivtch tidak dikcnlbalikan kc program pemanggil dan hanya digunakan secara internal oleh procedure untuk proses selanjutn>ra

2. Perintah ini mendaftarkan berat badan tarnu setiap hari (10 pound untuk peningkacan harian) sampai berat badan lebih dari 200 pound, mulai dari berat badan maksimum Dalam kasus ini, program pemanggil tidak secara langsungjttch dari database.

Perintah ini menghentlkan aliran kontrol d m mengemballkan pengontrolan kc program pemanggil. Pengecualiannya adalah bila l(c~trrn dieksekusi dari When SqlError. Dalani situasl ini, kontrol dikembalikan ke procedure derigan boolean return (TRUEIFALSE) dnn menj;ld~ return value untuk SAL Sql Function >.ru~g gagal. Procedure akan nieneruskan pengeksekuslxi berdasarkan Boolean return.

Jika perintah lZeturn tidak terdapat dalaii procedure, kontrol dikembalikan kc program

1. Jika terjad SQL error, procedure Iangsung mengembalikan error code yang d~has~lknn oleh SAL Jhnction. Pengecualiannyn ialah bila perintah Return dieksckusr d a r ~ Wiit~n

SQLBuse Truirring Muteriul Copyrrghr 0 1995, by P7' Versadafa Sys[enrrndo. Jokarro

Page 56: Versa Data Gupta SQLBASE Training Material

Syntax: Return <expression>

Expression harus diberikan (mandatory) dan dapat berupa apa saja yang mengevaluasi suatu nilai:

Jika Return terdapat dalam When SqlError, nilai yang dikembalkan hanya TRUE atau FALSE. Jika Return terdapat di luar When SqlError, nilai yang dikembalikan hanya integer. User dapat mengatur apakah nilai integer ini berupa constant atau variable, namun tidak dapat berupa string, &te/time atau Sql Handle local variable type.

Contoh: On Procedure Startup

When ~ q l ~ r r o r Set nRcd=SqlError(hSqlCur 1) If nRcd4O 1

Return FALSE Else

Return TRUE

. . . On Procedure Fetch

If NOT SqlFetchNext(hSq1Cur 1, nInd) Return 1

Else Return 0

Perintah ini memberikan nilai ke variable. User juga dapat memberikan nilai dari satu variable ke variable lainnya.

Syntax: Set VariableNarne = Expression

Contoh berikut ini mendeklaraslkan dua variable untuk End-of-File dan Return Code: Local Variables

Boolean: bEOF Number: nRCD

... Actions

Set bEOF = FALSE Set nRCD = 0

SQLBase Training Matrrial Copyright (D 1995, by PT. Versadara Sysretnindo. Jakorra

Page 57: Versa Data Gupta SQLBASE Training Material

Perintah ini digunakan pada saat debuggrng procedure untuk mengecek nilai vanable. User dapat menggunakan perintah ini sebelum dan sesudah suatu perintah tertentu yang dapat merubah nilai variable. Perintah ini berbeda dengan SET TRACE di SQLTalk yang mengecek semua perintah dalam procedure. Untuk menggunakan fasilitas trace ini, user tidak perlu menggunakan SET TRACE ON terlebih dahulu. Secara default, output dari fiingsi Trncc drlurirn ke Process Activify screen pada multi-user server, dan tidak ditampilkan pada single- user engine. Biasanya user mengirunkan output-nya ke server dengan perintah SQLTalk SET TRACEFILE.

Syntax: Trace variablel, variable2, ..., variableN

Contoh berikut menunjukkan suatu procedure yang menggunakan perintah trace untuk mengecek nilai'dari dua variable 'nCount' dan 'nRcd' pa& dua bagian yang berbeda dalarn procedure.

SQL> PROCEDURE: P24 Local Variables

Number: nCount Actions

Trace nCount h p

Set nCount = nCount + 1 Trace nCount

I If nCount > 10

Trace nCount Return 0

When SalError

Perintah When SqlError mendeklarasikan local error handle

Syntax: When SqlError

<statement(s)>

Contoh berikut ini menunjukkan penanganan local error dengan SqlError dengan menggunakan table GUEST-WT: SQL> CREATE TABLE GUEST-WT (NAME varchar(25), WEIGHT dec1mal(3,0),

WHEN date); SQL> INSERT INTO GUEST-WT values ('DON JACKSON', 159, 12-OCT- 1992); SQL> COMMIT;

Contoh berikutnya menggunakan stored command W EIG HT-Q UERY: SQL> STORE WEIGHT-QUERY

SELECT WEIGHT from GUEST-WT where NAME=: 1 ;

SQLUase Traitring Material Copyrrghr 8 1995, by PT. Verrodora Sysren~lndo. Jakarlu

Page 58: Versa Data Gupta SQLBASE Training Material

. r , , , , , '\i '1,

S c l l E r ~ r ~ o ~ i!;il;lm p~~oLcclurc aka11 I ~ ~ L ~ I ~ ~ L ~ I I I ~ ~ . I ~ I ~ , , I I ~ ~ \ ~ r o r ::.!07 ( ( ' o I ~ ~ I I ~ ; I I I , ~ I I , ~ I , '1::1iI : . I , , , : I ! L \ , I :

L i ; l l l l l l c l l l l > L ~ r ~ l > ~ l l L l r l 1 ; l ~ : l I : ~ l l 1 1 1 1

< ( ) I . l ' l < . \ Y l : \{ l , l ( ; t 1 I (11 ' K , ' I i l

5()1 , l ~ I < O ( ' l : l ~ l l < l (;\\ PI<( ) (

l ) ; 1 1 , 1 1 1 1 L ~ l ~ ~ 1 \

\ I 1 I l l > , . \ L l l l , L

l < , ~ L ~ L ~ l \ ,, ~ l l l l l l ~ , ~ l !!\i L l i ! t i l

l.oc.11 \ ' ; 1 1 1 , 1 1 1 i L ' \

icil I I , I I I C ! I C I I S ~ ~ I ( (11. I \ l l l I 1 I ~ L . l 1 1 1 1 1 ~ 1

\ l l l l l l \ ~ ~ ! 1 1 t < ~ [ l

' j : 1 ~ , i \ I ! , , , ! I

If l l ( . l l bill l , , l . l 1 1 1

Si.[ l l l < C < ! ! 1 1 . I I I < L C I - . :(I7

( ,111 h L i ~ . i ~ o ; L ( I , ; , , : I i 01 I 10 \ c l L , c . i \ \ I I t ! ! I I - \ \ I \I I,,\.:< '\ ,\ 11 I

( ;ill SqI(. O ! ! : , I , , . 3 t

I I U l l l L . 1 i I I , I i , 1: t . \ I \t . i ! " , s

t < ~ , t l ~ r n I li1 I t ' . i l l ~ L ~ I C ' O I I I I C C ~ ( t15<!1(

( , I I I \ ~ j l ~ < L * I I I L , L C ~ I ~ . \ ~ ~ ' ( , , 1 1 ; I , \ \ I , I ; , l \ i !

( ) l l l ' l - , ~ L ~ L ~ ( j l l l - L ~ t- \ C C t l I C

1 ! ! I 5 ~ ~ l I ~ \ i ~ i l l t c ( i 1 5 , i 1 i

I ) I ! 1 ' 1 L : L I L I I L , l ~ ' L > l ~ l l

: : \ ( ) I ' b l ] l f . < l C l l \ , ~ , + l ' , ,

l i c t l l l - 1 1 1

l Z c , l 1 1 1 1 1 r

1 1 1 1 1 ' 1 , ~ ~ . c , d ~ ~ r c ( ' I O \ L , ,!I! ~ c j l l ~ l , ~ ! ~ l l l l L ~ L ~ ! l , . \

I ) ( 11 ! -\(~Ksot',.~

l , , ! : i L , k , l ' > ( j ; < ,.!.( I I 1L , l l l l ! . ~ ! l - ~ ~ L ~ I ! : l l ~ l I l ~ l . l l ~ 1 1 1 1 - , I 1 ' , , ! . : , . : \ . .

: 111',!11 1 1 l ~ ' - t c \ [ i j ' ~ > / J ' I , i O " . " . ; ) : . , \ . l ! l : . :.

, 1 1 1 , t , t ~ ~ . ~ ! , i ! ~ ~ l i , , r I ~ ~ L ~ I ~ ! ~ ~ ~ I ~ ~ I ~ , : I ~ I , I ! ; I I < [ ! ,

; > I . , ) , . L , ( . ~ ~ I I . L ~ ~ I I I I ~ ~ C I I ~ C ~ > C L ~ I ,! \ ) f , g i , L i ) ~ t ~ 1 1 L . i b ( ) l C I 1 0 1 I ; i i ~ i , I , : , i ~ k ., . :

Jc~ , I l i t i l I / t 7 > i l l l g dl~k~c!-,ll\l , ill! :

1" "!.>I ; I l l 1 ~ ~ ~ l ~ l ~ l l I ~ l \

, I f I l 1 l l l I ! ) I , . . . , I - . 2 P C I . I I I I ~ I ~ I 1 1 1 1 c ~ k ; l ~ ~ ~ : I S ; I I P , I I

. I l l I I ! I I ! ! . I 1 ; r , ' ; \ ! I f,;!l ! , J , I I ~ L . I I I ; ~ L ~ , ~ ,SqI/it :, t

~ l ~ ~ l l ~ , l l ~ \ t l L . \ i , \

'! I , , , ' s ~ ' / l L t l ~ \ I < ~ [ t ' / i t i j

,' ' , ' , , , . . , ' I , , "

Page 59: Versa Data Gupta SQLBASE Training Material

Perintah ini berulang terus sampai expression yang dievaluasi menjadi FALSE

Syntax: While Expressron

<stoternent(s) >

Contoh: . . . While nlnputVar3 > 0

If NOT SqlExecute (hSqlCur 1 ) Return 201

Set nInputVar3 = nInputVar3 - 1

Operator-operator benkut dapat digunakrul dalam procedure. I -1

Operator -- Keterangan -. . . . . - -,

Tanda ku rung - : Unary

1 * , I Numeric: perkalian, pcmbag~an ' Numeric: pertambahan, pengurangan ;

, +, - >, <, >=, <= Relational: leblh besar, lcbih kecil, lebih besar sanla dengnn.

dengan I

= I= Relational: sama dengnn, t~dak sama dengan -

7 ' 1 -

AND 1

Boolean NOT I

Boolean AND Boolean OR

Stat~c vs Dynarnlc Procedure

Suatu procedure dapat berupa statlc mnupun dynam~c Default-n,'a adalah d y n m ~ ~ c Perbedaannya dltunjukkan oleh table berlhut In1

Fasllltas Perlu dl-store dulu sebelum di-execute') Parselprecompile procedural logic') Ya Y a Parse SQL pada saat dl-store? Tld'ak Y a Precompile SQL pada saat di-store') Mendukung djnamlc SQL?

Leb~h Laubat Leb~h Cepat

D~gunakan bersama Trigger dan Event?

SQLBuse i'iuirrirrg Muterial Capyrrghl O 1995, by PI: Versadata Sysre~t~indo. Jukarru

Page 60: Versa Data Gupta SQLBASE Training Material

SQLBase melakukan compile clan oprlmrze (mcnentukan query plan) pcrlntah SQL Iang terdapat dalam statrc stored procedttre Scmua perintah d m query C X E C I ~ ~ ~ U ~ ~ jll~zr~ ~ a n g d~hasllkan d~slrnpan dalam database Statlc procedure harus dl-srore sebeluin d~ekschusl

Static procedure yang mengandung perlntah SQL harus menlenuh kritcrla bcrikut in1 Bukan perintah Data Definition bngzlrrge (DDL). Perintah CREATE, ALTER, DROP tidak dapat digunakan dalanl static procedure String d m tidak mengandung var~able di luar bind atau INTO varlablc

Contoh 1 SqlPrcpare (cur, 'select * from emplo).cc')

Contoh 2: Select Coll, Co12 from sysadn~.Table I ~ n t o :Out 1, :Out2

Dynunzic procedure Dynamic procedure dapat rnengandur~g pcrintah SQL ).ang dinam~s Lnr.cn;l ci~nam~s, nlaka perlntah SQL tersebut tidak dapat d~-~)rec,urnp~le, Dynamic procedure t l d d pcrlu dl-srort~ sebelum di-execute. Karena pcrintah SQL, dalan~ dynarn~c storcd procedure t ~ d a k d~-j)crr.se, sebelum dieksekusi, SQLBase tidak dapat rncndeteksi SQL error dalam procedurc pada s u r procedure tersebut di-store.

Contoh 1 : Set sCmd = 'select * from employee' SqlPreparc (cur, sCmd)

Contoh 2: Set sColumns = 'Coll, Co12' Set SELECT = 'Select 1 1 sColunuls / / 'from sysadn~.Tablel into :Out I , Out2'

Penggunaaian procedure

Men) lmpm suatu procedure berartl rncn:, lmpm procedurc tersebut ke dalmi rq 5 rcrtr iiirciIoq rnble untuk dl-rerrieve dan dl-execi~re kcmudla11 Pada saat procedure d~bua t dengan pcr~nt~lll PROCEDURE, user dapat menentukarl apnkah procedure tersebut srrrrrc ataii ~/~,riilrnrc Pndn saat suatu procedure dls~rnpm (dl-srort.), SQLBasc juga mcnylmpiln L , L L ~ L I I ( I O ~ I ~)ILIII ci,lr~ procedure tersebut

User dapat mengunakan perintah SQLTalk STORE untuk menyirnpan suatu procedure Perintah ini digunakan pada saat proccdurc: dibuat dengan perintah PROCEDURE. Contoh: SQL> STORE WD-PROC PROCEDURE: WITHDRAW Parameters

Per~ntah PKOCEDURE secara otonlatIs mcng-cumnprle d m rneng-cxrc~rtc proccdurc. 0sc1 JLI_C;I

dapat nienggunakan perintah SQLTalk PREPARE atnu RETRIEVE bersama-snma Jcng:111 PERFORM untuk melakukan conrj~ilr t2.tt1i,llre lztau rrtrrrve. rxtJc1rte procedurc !';ulg ci11nglnk:\11

1 3 dalan dua langkah yang berbeda. Untuk mclcFkukan retrlrve d m execute dalaln satu langkall. i

Page 61: Versa Data Gupta SQLBASE Training Material

gunakan perintah EXECUTE. Perintah ini akan menerima nilai input d m mc-retrieve data sekaligus execute stored procedure ybs. Contoh. SQL> EXECUTE WD-PROC

Untuk menghapus suatu procedure dari database, gunakan perintah SQLTalk ERASE Contoh: SQL> ERASE WD - PROC;

Untuk membenkan hak kepada user lam dalam menggunakan stored proccdurc, gunakaran GRANT EXECUTE Sedangkan untuk nlencabut kembali hak yang d~be r~kan , gunakan REVOKE EXECUTE

Fungsi SAL dalam SQLBase

Benkut ml daftar fungs~ SQLWlndoibs irulg dapat d~gunakan dalam procedure - 1 Fungs~ SQLWlndows I Keterangan i

SqlClearInlrnediate Disconnect Sql Hiuidle vang digunakan olch Sqllnunediat~. ---- I i

SqlClose Mengakhiri cursor -

SqlComm~t Commit trruls;&si SQL \.ang sedang berlangsun~ . .. ...

SqlConnect Connect Sql Handle ke database -- -. - . . - -. - - -

SqlDisconnect Disconnect Sql Haindle dari database ------ ~ - -

SqlDropStoredCmd -1 Menghapus stored command atau stored procedure 1

SqlError Mendapatkan error code paling f i r untuk Sql Handle tertentu - -- .. .. I

SqlExecute Execute perintall - SQL, stored command, atau stored procedure I

SqlExists Mengecek ap&h baris-baris tertentu ada dalanl databasc .__~.

SqlFetchNext Fetch baris berikutnya dalam result set ~ - - - . ..

SqlFetchPrevious Fetch baris sebelurnnya dalanl result set 1 SqlFetchRow Fetch baris tertcntu dari result sct I

SqlGetErrorPosition Mendapatkan offsct dari suatu kcsalahan dalarn pcr~ntah SQL 1 I SqlGetErrorText Mendapatkan pesan kesalahari untuk suatu SQL error nurnbcr

1 SqlGetModifiedRows Mengembalikan nomor baris yang dirubah ole11 perlntah LNSEfI.1'. UPDATE, DELETE

-*

SqlGetParameter Mengernbaliknn parameter databasee .

SqlGetParamctcrAll Mengembalikan paramctcr database ~~ - , , SqlGetResultSetCount Mengemballkan nomor bans dalam result set I

A

SqlGetRollbackFlag Mengemballkan database rollback flag -- -

1 SqlIrnmediate I Con~pile dan csccutc pcrintah SQL Mernbuat sunti1 cursor dan mengekschus~ pcrintnh SQL -.- - Compile penntah SQL atau non-stored procedure untuk dlckschus~

-1

SqlPrepareAndExecute Compile d m e\ccutc pcr~ntah SQL atau non-storcd proccdurc -. - Retr~eve stored command atau stored proccdurc

I

SqlSetIsolat~onLevel Set ~solatlon lcvcl SqlSetLockT~meout Set perlode tlmcout pada saat mcnunggu lock --

1 Set parameter database - - ,

SQLBrue l'ruinirrg Muteriul Copyrrghr O 1995 by Pf J'ersuilufa Sysret~r~nclo Jukurfu

Page 62: Versa Data Gupta SQLBASE Training Material

T r i g e r mengaktifkan stored atau inlinc procedure yang dicksckusi SQLBilsc sccar;l otomatls pada saat user berusaha merubah data dalani table. User dapat rnembuat satu atau lebh trlggcr dalam suatu table dengan keperluan yang bcrbeda-beda.

I SqlSetPararneterAll i SqlSetResultSet ! SqlStore

Trigger memungklnkan user untuk. 1 hlcng~mplementasikan Rl consts:~~nt, scpcrt~ r n c ~ ~ j ~ u i ~ ~ n bahwn nilat FK ~oic>L dc'lig;111 I'h 2 Mcrintaigi user lain rncrubdi data sccara tidnli benar schlngga mct-usalika~l 11ltc~r1t~ili

database. 3 Mcngan~bil t~ndakan berdasarkarl 1111;11 \>;11-1s S C ~ C I L I I I I atau sctc1;Fh pcrilb;ih;in te~:l~lii~ 4. Memindahkan pemrosesan logic kc backcnd scliingga rnengurangl network traffic

Set parameter database ----- ~~~~,

Set result set modc rnenjadi ON atau OFF -, Compile dan storc suatu cot~unand atau procedut-c

- - ..>

T r t g e r t~dak dapat mcmangg~l non-stored proccdurc Statlc procedure harus dls~nipan dcngcm perintah STORE. Gunakan penntah CREATE TIUGGER untuk membuat t r i ge r dan pcr~nr,iti DROP TRIGGER untuk mcnghapusnya

Tr~gger yang nienggunakan stored proccdu~c hanya b ~ s a dtbuat blla 1 Anda nieniiliki hak DBA a h u SYSADM

a 2 h d a tucrupakan pcm~lrk dart storcd procedure ! b b

3 . Anda tclah diberikan hak EXECUTE untuk stored proccdure ybs

Tinier Evcnt

l'irner even! mcngeksekus~ suatu procedurc pada saat yang telah ditentukan. I'initlr t J ~ . t , r l c

digunaknn untuk mclakukan suaru tlnd;~ka~l sccar;~ otomatls yrulg didasaskan ntas ir,aktu 7 ' i r ~ r c , t .

even! hanya dapat mengeksekus~ satu static proccdurc

Untuk niembuat suatu timer even!, gunakan CREATE EVENT' Everit y.ang dibuclt dc~pai berupa prrrodic atau one-rime I 'eno t i l~ . even! dituryukkan dcngan EVERY clt-r~r.sl-, u n r u h melakukan suatu tindakan setiap tntcl-vul waktu tcrtcntu. One-rime even! d~~ad\v:llknn untuh &if hanya satu kali saja. Untuk mcnghapus cvtwr, gunakan DROP EVEN]'

Timer even! mulai dijadwalkan bila trans;As~ l.ang mcmbuat evcnt terscbut tclali dl-coninlir lnilah yang disebut sebagai even! rnrrrnrron rrme. Waktu yang ditentukan supaya evcnt tcrscbur mulai beroperasi disebut raise time. Inrrrarron rime dari suatu timer even! trdah Aim berubrlli walaupun server di-shut down. hlisaln!,a bila mrse rrrrle ditentukari 10:00 a .m. nanlun transaksi in1 tidak di-commit sampai j~uii 11.00 a .m. . niaka SQLBase ,&at1 mer~ndwnikn~l rimer even! In1 mulai jam 1 1 :00.

User dapat niembuat frmer evcnr untuk suntu storcd atau lnl~nc proccdurl:

PROCEDUKE: PROC-UNLOAD static

SQLUuse I iui t~irrg hluleriul Copyr~ghr O 1995, b), PT L'ersudutu <)~s,e~nrndo. Jukurra

Page 63: Versa Data Gupta SQLBASE Training Material

Actions Call SqlIrnmediate ('unload database DOC.UNL on server')

SQL> CREATE EVENT EVENT UNLOAD raise at 12:00:00 AM everq 1 DAYS (execute PROC-WLOAD~);

SQL> COMMIT;

Untuk menghapus tlmrr event dari sysrrm corolog, gunakan DROP EVEN?'

SQLBuse lkuining Muteriul Coyyrrghr (P 199.5, by P7' Ifersaduro Sysrert~rndo, Jakurru

Page 64: Versa Data Gupta SQLBASE Training Material

1 VI. Database

SQLBase memiliki sebuah database rcttrpltrle pig bernnma Starr.clh.s Sc t~ap k a l ~ k~t:l I I ICI~S- create sebuah database baru, rnaka bcrarti kita telah lnendapatkan satu c o p d a r ~ start dbs Template ini berisi system catcilog tables bang di-maintain oleh SQLBase. Se la~n rtu, tcmplatc ini juga akan berisi semua perubahan struktur database, nlisalnya p c r u b d ~ m struktiir darl sntu \,ersi SQLBase ke versi lainnya. Sernua database memilih extension .dbs

Pencnluatan Database dalanl Dircctor~.

SQLBase rncrnbut~ihkan satu bottle L ~ L ~ I L I ~ L I . ) . L J dllrcc1or.11 (blasan)a F.',.Sqlb;isc) L ~ I I ~ L I ~ si't~;q) non-j~arlitionrd d~~ tabase yang tcrdnpat dl survcr, SQLBasc akan rncnlb~~ar scbuall subdirecton yang baru di b a w d homc datnbasc director). Nama dnrl subdrrcctor\ 1111 ~ 1 1 1 1 ; 1

dengan nama database (tentunya ranpa tilc cstcrltlon) Subd~rccton. 1111 nk;i~i ~ L ' I ~ S I

1 Database file (*.dbs) 2. Transact~on log file (*.log) 3 . Read-only h~story file (*.his)

-'.-7

DEMO\ TEST\

G m b a r 6 1 Organisnsi d a r ~ SQLBase databasc dircctory

Database dapat ditempatkm di d r~vc d;in I I O I T I ~ database dircctory dcng~in rnc r~ggu i i ah~~~~ keyword dbdir di file sql.ini. Misaln~.a brln kita ing~n menempatkan database c i ~ \.olurnc SL'S dan di bawah home database directory SQLBasc dalanl scbuah network. mnka k ~ t a lia~l!;~ pcr l i i

mengetik baris be r ih~ t ini di file syl. 1t7,

dbdir=sys :\sqlbase

database MAIN. Databasc ini pada g~l~runnya ,&an menunjukkm lokas~ dari j)trr~~r/otlc'ri dnrobase ybs. d a i Lug jile-nya.

Database Cache

S Q l ~ ~ ~ s c Trnittitrg hloteriul Copyrighi 65 199.5. by 1'7' I OrsLrr(ata .S),sre~~linJo. Jakorro

Page 65: Versa Data Gupta SQLBASE Training Material

SQLBase menggunakan cache untuk niengoptlmas~kan database Input d m output crrcht, adalah suatu area di memory server yang mengandung pages yang sedang d~gunakan uscr i~ntuk keperluan read / wnte

Pages dalam database file

Database cache dalarn memory

Gambar 6.2 Database page dalarn cache

I'clge adalali sebuah unit data d a r ~ darnbasc file yang merigandung satu / Icbrh ba r~s d n r ~ tnbli. atau data Index. Page adalah unit yang paling niendasar dan penyirnpa~ian fisik d a r ~ datab:lsc. Page dis~mpan seperti linked list clan 1 page berukuran 1024 bytes ( 1 Kb!.te). Pnda saar ustr read / write satu baris row / index, SQLBase mengccek apakah pagc yang dituju tclah bcrniia di cache. Jika tidak, SQLBase &an meng-copy-nya kc cache. Tetapi jika page tclah tcrdnpilt dl

cache, SQLBase dapat langsung nl~rnanf~mtkanny a . Hal ini akan nlengurarlgl disk ~npu t d m output karena lebih cepat bila langsung rcxi 1 write ke memory komputcr clarlpadn kc hnrcidisl,

Transact~on Log Files

Trunsacrion log jles mengandung kondisikeadm~ database sebclu nl dan sctelah pcru bahnn terjadi serta log record untuk [ronsclcrlon conrrol (misalnya checkpu~nt.~). lr~'msoc;.l,ot~ ~ ~ ) / r l t . o /

meliput~ dokumentasi kapan suatu transaksi dimulai dan bagaimana tra~isaks~ tersebut bcrnklur (contohnya commit dan rollback).

Tran.snc~lon log memiliki tiga fungs~ 1 Rollback

Transaction log file rnengandung data gang dibutuhkan untuk mclnkukan rollback ~lras sebuah transaksi. Rollback ~ n i dapilt diprakarsai baik oleh SQLBase rnaupun uscr

2 . Crash Recovery Transaction log file rnengandung data yalg d~butuhkan untuk mcngembal~krui dutabasc kc kondisi yang stabil setelah terjadinj~a crush yang diakibatkan olch regalgati l ~ s t r ~ h Innupun kesalahan operator. Database berada dalarn kondisi yang tidak stabil / crash b ~ l a databasc tcrsebut tidak di shut donmn scsuai dengan prosedur yang telah ditetapkan, contohn!,n scperti bila sewer dimatikm tanpa menonaktifkan SQLBase tcrlebih dahulu Pada s ~ 1 r

Page 66: Versa Data Gupta SQLBASE Training Material

uscr connect ke database ynng crnsh setelah servcr on lagi, SQLBasc aka11 secara otonl;it~s melakukan crnsh recovery.

3 Media Recovery Transaction log yang disirnpan dalam bcntuk backup mcngandutig data y.arig dibutuhAn~l untuk melakukan restore jika terjadi kerusakan database yang dlsebabkm ole11 kcgagalari media (rnedin.foilure). Kegagalai ~ncdia dapat terjadi karena ksrusakan hardlvare Dnlatii kcadaarl seperti ini, recovery yang Icngkap han1.a dapat dilakukan n~eln lu~ rcstorc s ta t~s dari backup operating system

Transaction log menjamin konsistcns~ data (dam ~~uns i s t enq) , Jlka suat i~ tra~isajis~ r o / / h L ~ i , k atau tcrjadi kegagalan sisterdmedia, SQLBase mengunakan transact~on log u~ituk niclakukan restore dan mengcmbalikan database terscbut ke keadaan scmula.

' Database tile

!\ - . - - -'

berada dalam ' . I 0 ,, 5.10 i. - . -. - - !. .-~.--

kondisi semula yangstabil Setiap transaction log file rnenggambarkan perubahan yang terjad

terhadap database setiap waktu

Garnbar 6 3 Database filc tirui Trn~isact~on Log filc

Pada saat proses, SQLBase mcmbunt bcbcrapa jcn~s ~crnj~urar~. f i l e 1 Son file

Meligandung hasil akhlr dart .\.or[ y n g diakibatkan oleli DISTI'NC'I', ORDER R 1 . GROUP BY, atau CREATE INDEX SQLBasc akan nicnlbunt satu , or-r .tilt' untuh [lap jmis pcngurutan.

2. Read-only history file Mengandung data page sebclum perubahan tcrjadi. SQLBnsc membuar sat11 rc,crti-ot~r:

hislory file untuk tiap database. I J r ~ t r l j~c~gcc adalah ternpat untuk tiicn? 1111pru1 b;lr~s-bn~ I.;

data dalam scbuah table. 3 General-use filc

Mcngnndung resulf ser, lenlporor?, ruble. ~crripornry ~nciex nng d~gunaknn dula111

Setiap temporary file yang terbentuk akarl berstniktur sql.~xss, lrnp dimana s.v.v.v ndalah nomur scri yang dibenkan secara acak (mnduni)

SQLBast. lrciining R.l(lterial Copyr~ghr C? 1995, by i'7' l i rs i iJc i~u S'ysfe)rlindo, Ji~h[lrrri

Page 67: Versa Data Gupta SQLBASE Training Material

Database yang berukuran besar daprtt disunpan dalam bcberapa volumi: d ~ s h untuh mempercepat kinerja. Dengan dcmikian, niaka ukuran database hanya dibntas~ olch bcsarn!,:~ disk yang tersedia di server. Database d m log file dapat disi~iip~ul dl cliiriihri.~~' iit.cJci. >.a~tu penyimpanan fisik yang memungk~nkan disk input 1 output yang paralel j.4~11 1111 J I I ~ L I

menlungkinkan user rnclahukan log hocklip sccara bersaniaan

<l 3 1 j C t L ' 1 l C l I I k l 1)crtohosr crrerr adalah bag~an dlsk yang d~Mi~~suskan urituk nicn>,lrnpan suatu dnt- t : .- d m log file-nya. SQLBase memungkinka~l user untuk rnembuat bcbcrapa datnbnsc ;Ircil >:111g ~nenirlikr ukuran yang berbcda-bcda Ucsanlya d ~ s k dalam satu databasc ar~cii dlbagl n~ctijaili bcberapa bag~an untuk menj,miprui bcbcrapa database Hal irl l d ~ s e b u ~ scbagal csrcnti I:luren.~ion unit adalah jurnlah ukurarl disk dalarn database area >,any dialokrts~knn untuh nienyrmpan satu database dan log file-n!,ri

D a t a b a s e l ~ l e s D a t a b a s e l o g f ~ l e s

I -. - - -- - F I L- 1 6 -

~ D S I L O G ! h I D S 2 L O G

Y-' ',-. , _ _ - '

I 1 i I

L O G ! L O G ~ I

4--

I D a t a b a s e a r e a l D a t a b a s e a r e a 2 D a t a b a s e a r e a 3

Gambar 6 4 Database dan log file lang tersebar dalarn t ~ g a databdsi' rtrc,l

I'ada Garnbar 2.4, kita nlel~liat dua darnhasc !.,u~g bcrnama V D S l dnn VDS3 set-t:~ 10,q tiit

yang terscbar di tiga database ilrro. Hal In1 dapat diwujudkan dcny:ln ~llcmbuat ( / l ~ ( l : i ~ ( i ~ l areo, nienggolongkannya ke storogc grolip dan ~nentbuat database dnlam ,slorti,yc' gru~ill tersebut.

90rngt. gruup adalah dafhr d a r ~ ciLitiiho~c 'rrerr yang digunakm u ~ l t u h r ~ r ~ ~ r i ~ q o r . , q , i t ~ i . \ ; t .

ptrrr~tiur~cd d~llab~7se. Konsep rnl sama scpcrtl rleclror~ic mail grolip Lnng bcrrs~ dattnr Liscr yang menjadi ariggota dari rlectronic. ni~111 tersebut. Dengan nicnggunakan storugc gr011/1. database dapat d i shpan dalam volurnc disk yang berbeda d a i mcrnungklnkan database menangani pengalokasian ternpat penyirllpan~ul sccara oromatis.

I --. . -

I S t o r a g e G r o u p

I

I I D a t a b a s e a r e a D a t a b a s e a r e a D a t a b a s e d r e a -- . -- - . -- - - -- -- -

Ganibar 6 5 Tlgn database: arc3 mcmbcntuk saru storage group

MAIN database

Page 68: Versa Data Gupta SQLBASE Training Material

SQLBasc akan mcmbuat MAIN database jika. 1. P~7rtrtioned database dibuat 2 . Mcngunakan keyword commltserver di file sql.ini untuk kzperlum r/~.c(r~h~i(cii

transaction

MAlN database berisi inform as^: 1. N a n a partitioned database 2 Nama database area . rxtcnl da11 ukurunn>a 3 N a n a storage group 3 Pihak yang terlibat dalarn u'lstr1butc.d trcinsuctrot7 5 . Oyerasi truo-phase comnllt

MAlN database menuldu luy\tt.m L L I I L I / ~ ~ itlhles tcrscnd~ri untuh pLirt~iioti~d c l i / l i / i ~ t ~ \ ~ ~ 1 ~ 1 1 1

d r ~ trlbzdrcd transncr~on

Nama table Keterangan CSVPARTS Mengandung informasi tentang 'semua pihak yang terlibat dalnm

distributed transaction - --

C S W R A N S Digunakan olch commitserver dalarn distributed tr'msactlon ur~t i~k menanganl t\+.o-pllnse cornrrlit .

DEFAULTS Berisi daflar semua default storage group ... --

DATABASES Berisi daftar scmua partitioned database - -

STOGROUPS Berisi d a h r storage group --

W A S Berisi d a h r database area STOAREAS Berisi d a h r database area dan storage group-nya -~ ~

EXTENTS Berisi d a h r extent yang sedang dipakai - - -- . . - .-

FREEXTS Berisi daftar extent yang belum dpaka~ p~ .-

CSWRANSV Digunakan oleh kebutuhan internal saja - -. . .. . . -

CSVPARTSV Digunakan oleh kebutuhan internal saja

Page 69: Versa Data Gupta SQLBASE Training Material
Page 70: Versa Data Gupta SQLBASE Training Material

Server status yang ditarnpilkan pada gambar di atas adalah untuk server VDS. Hal ini d~a tu r dl file sql. ini dengan men~etikkan: sewername - VDS, sqlspx. Client Node Menampilkan client yang connect ke database server. Nama client diartlbil d a r ~ file

sql, ini yaitu di bagian keyword clientnm~e. - User Naine Nama user database yang connect ke database ybs. Database Nanla database yang sedang diakses

Menyatakan apakah prosesnya lagi Active atau Idle.

Bagla11 ini ber~si daftar dari selnua database p i g teldl dl-install sebeluninya. lnfonllas~ tentang database ini juga terdapat di file sql. in1 yaitu di keyword dbnamr

FUNCTlOr< LEY S

F1 - S e m r Slatus

F3 - System A c t ~ r y

PROCESS ACTIVITY

Dabtasm prre~s crsaed -0 c u - o MWO c f r o fco= I lcurivrtl

datatascf-[PLNNV] uwrenm=[JWwr j

L W r Q a r t s o fW blfdbE-3 P L N W

Ciarnbar 7.2 Pcnampi l a~~ I'ruccss Ac l~ \ . i l y Jar1 .'iQI,ljils~ Scrvcr fur Net\\;lrr

SQIJIase Training Muterial Copyrrghr 8 1995, by Pii, I/ersorlufu Sy:ystettr~nrlo. Jukur fu

Page 71: Versa Data Gupta SQLBASE Training Material

SQLLJuse Training i2.1utericll Copyrrghr B 199.5, by PT l 'rrs~~doro Sysrs~nrndo. Jukr~r ru

Page 72: Versa Data Gupta SQLBASE Training Material

I System Activity display screen (F31

SQLBASE SERVER N M FOR bETWARE SYSTEMS 6 0 11 45 ' 1 COPYRIGHT (C) GUPTA CORPORATION 1985 - 1994

ALL RIGHTS RESERVED

FUNCTION KEYS I

F1 - Semr Status F2 - Process Aclwrty F3 - System A c l ~ r y ESC - Ex11 Sewer

SYSTEM ACTIVITY Sysarndab

L /'

Gambar 7.3 I-'enarnpllan Systcni A c t ~ ~ i t ) Jar1 SQ1,Uasc Scrver for Nel \ r , i r r

Baritier

Banner / judul lnyar menampilkan nmla dan versl d a r ~ produk, dalam gambar dl atas 1;11nh SQLBase Server for Netware, versi 6.0

F ~ t n c r ~ o n Keys Ada empnt pilihan yang disediakan di bagian Inl: F1 untuk melilint Sewer S ' t~i t l r .~ , F2 ~ ~ r i t ~ l l i Proce.~.~ A c t i v r ~ , , F3 untuk Sysrem Acrlvrry dan ESC urltuk menonakti£kar~ SQLUasc Scrkcr

Syslem A c t i v r y Menampilkan mforn~asi aktivitas internal scnjcr Systeni Ac~ivl<v mcniiliki tiga bagian: 1 . System data 2. Process infonnat~on 3 Databases

SQLBase Training M(ltericr1 Copyright O 1995. by PT 1 irsudoru Sysre~il~ndo. J L I ~ U ~ I L I

Page 73: Versa Data Gupta SQLBASE Training Material

B a ~ ~ n n ~ n i menampilkan informasi server Field

mc.monS avarlable Jumlah memorv vang tersedia setelah memory dialokasikan kc L,LIL, I IL, cur Jumlah slot czcrsor yang dialokasikan sejak server dijalarlkan db Jumlah database vang aktif sejak server dljalankan. .- -

Pr Jumlah maksimum user yang diijinkan server. Hal ini dapat datur di file sql.inr yaitu dengan keyword ilsers. .. . . - . . . . . . - - . . .

P S Jurnlah cache page di server.

--

I li

berart~ tldak ada batasan jurrrl:h lock - - . . -. -.

Ifv Jumlah resource sistetn bang dipaka1

1 Nlla~ 0 berart~ rcauilrce s ~ s t z ~ n t~dak d ~ p a k a ~

Proccss ~nfonnation Mengandung infonnasi dari setiap proses Jan2 tcrjiid~

Kctcrangm - prim Nomor proses

Nomor transaksi Mcssage yang mengindikas~kan l)ro~,t'.s.s L ~ c , / I \ ~ I / > ' srperu

waitingjbr rrquesr performing re quta.sr sending respunsc. handling error wait for 10 lo~,k

- - - - . . . . . . . . . .

l<er~~rn code dari requesr tcrakhlr

Single thread system 1oc.k -- - - - -- - - -

I = lncrelllerlt

Page 74: Versa Data Gupta SQLBASE Training Material

BagIan 1111 ~~ie~lgandu~ig lnformasi database yang sedan$ diproscs di servcr

Keterangan Narna database

----- -

File descrrptor -

Page terakhir cant; d~alokas~km Am..- - - . . . .. . .... .

Page terakhlr yang d~tulis (ukuran file databasc dalrun page ) - . -- - Jumlah transaksl yang rlktif

pLu .- -. - - . . . - ..

Jumlah cttrsor Fang cotitltl~,i kc dnlabase ybs - -. -. . . . . - --

Log file descrrpror - - - . . . - ~~

Nornor cztrrcnt log lilt -- - -- - -- - . .

Ukuran logfile dalani k~lob>zcs - . . .. . - - - - - - - - -

Checkpo~ni irtne 1nlcrvi11 ciaIan nicn~t - ~~ -.2.---..-.p

Flu - - . . - - - - - LoKgbenkut y ~ ~ g h&s di-backup - ~

Log berikut yang hnrus di-backup (setelah BACKUP SNAPSHOT) - - -. ... . . . -

Transaction span lirrrrt (nilal 0 berarti tidak adn batasan) - . - . . .. - - - - -

cpp, cpl. ftp, fap, fbl, Ibl Log polnter

Contoh salah satu bar~s !tang terdapat pacia bagla11 Oc~tnhcr.\,c.r ti1 LS'.stern A~,rr\,ri~. 1 S004:006:007

nomor transaksi qang rncmlllk~ l ock cjt7rrv atau nornor prox.; u ~ l r u h ) / )c 'c 1 t 1 1

.Shared lock 004 Yoge group yang n~enilllk~ lock 006 Siorfrng page number 007 Lnd~ng page number

SQLUase Training bfutericll Copyright O 1995, by PT Versudortl Sysletti~ndo. J a k u r ~ u

Page 75: Versa Data Gupta SQLBASE Training Material

VIII. Tanggung Jawab DBA

Operasl-operas; yang menjadi tanggung-jawab DBA ialah: 1 . Memulai dan mengakhiri SQLBase Server for NetWare 2. Membuat dan menghapus database 3 Drinsfall clan reinstall database 4. Load dan unload database 5 Membuat read-only database 6. Membuat dan mengatur par~ir~onrd d(rrcrbase 7 . Reorgun~ze database 8. Mengecek database inrrgntjt

Mcmulai dan Mengakhiri SQLBasc Server for NetWare

Untuk memulai SQLBase, ada tiga file yang harus tersedia: 1 error.sq1 2. message. sql 3 sql.in1

SQLBosr Server f i r Netware adalah NerWcrrt, Loadablr Modtrlr (NLM) >,ulg rtrnr~rng bersana operating system Novel1 NetWare NLM adalah program yang dapat dl-Io~rd 'itnu dl-unload dari memory server pada saat servcr beropcrasi Pada saat dl-load, NLM menjadl bagian dan operat~ng system NetWarc: Pada saat dl-unload, NLM n~ernbebuskan memory dan resource yang dlalokaslkan scbelurnnya

Langkah-langkah untuk food SQLBase Server for NetWare: 1 . Pastikan file clib.nlm dan mofhlib.nlm telah dl-food sebclurml?.a. Kcd~rn filc

n~engandung Cj'irnction yang dibutuhkm oleh SQLBasc Server load clib load mathlib

2. Jika nlenggunakan SQLBase Server for NetWare 3.x.

load directfs load dfs load nlm:\sqlbase\dll load nlm:\sqlbase\spxdll load nlm:\sqlbase\dbnservr

SQLBase Server for NetWare 4 , s . load dfs load nlm:\sqlbase\dll load nlnl:\sqlbase\spxdll4~ load nlm:\sqlbase\dbnwsrv

Langkah-langkah untuk unload SQLBasc Ser\.er for NetWare: 1 . Tekanlah key Esc untuk unload SQLBase NLM 2. Jika menggunakan

SQLBase Server for NetWare 3 .x :

SQLBase Trrrining Mrrterirrl Copyrrght O 1995, bv P7: I'ersadato Sysrenllndo. Jakarta

Page 76: Versa Data Gupta SQLBASE Training Material

unload spxdll unload dl1 unload dfs unload d~rcctfs

SQLBase Server for NetWare 4 u unload spxdll40 unload dl1 unload dfs

Membuat dan Menghapus Database

Berlkut In] merupakan contoh bagalmru~a mcntbuat d'itabase dengan SQLTaIL SQL> SET SERVER VDSIVERSA; SQL> SHOW DATABASES ON SERVER VDS;

***** DATAEiASES ON SERVER VDS

DEMO ***** SQL> CREATE DATABASE POWERCOM; DATABASE CREATED

SQL> SHOW DATABASES ON SERVER VDS;

* * * * * DATABASES ON SERVER VDS

DEMO POWERCOM

*****

Bcrlkut In1 merupakan contoh bagairnana ntcnghapus database dengal SQLT,llA SQL> SET SERVER VDSIVERSA; SQL> SHOW DATABASES ON SERVER VDS;

***** DATABASES ON SERVER VDS

POWERCOM ***** SQL> SHOW CONNECT;

***** Username DBA Database DEMO Cursor number 1 ***** SQL> DROP DATABASE POWERCOM; SQL> SHOW DATABASES ON SERVER VDS;

SQLBase Trninitzg Mnterinl Copyright 6 1995 by PT Versudora Sysrervtndo Jukurru

Page 77: Versa Data Gupta SQLBASE Training Material

***** DATABASES ON SERVER: VDS

DEMO *****

Deinstall dan Reinstall Database

Database d-deinsrall untuk mencegah user connect ke database ybs.

Berkut ini merupakan contoh bagaimana melakukan delnstnll database dengan SQLTalk SQL> SET SERVER VDSIVERSA; SQL> SHOW DATABASES ON SERVER VDS;

***** DATABASES ON SERVER: VDS

DEMO POWERCOM

***** SQL> SHOW CONNECT;

***** Username DBA Database: DEMO Cursor number 1 ***** SQL> DEINSTALL DATABASE POWERCOM; SQL> SHOW DATABASES ON SERVER VDS;

***** DATABASES ON SERVER VDS

DEMO *****

Benkut In1 merupakan contoh bagalmana melakukari rernsrall database dcngan SQLTaIA SQL> SET SERVER VDSIVERSA; SQL> SHOW DATABASES ON SERVER VDS;

***** DATABASE ON SERVER. VDS

***** SQL> SHOW CONNECT;

***** Username DBA Database DEMO Cursor number 1 *****

SQLBtzse Trtlining M(lteritzl Copyrrghf cD 1995, by PT. Versadata Syrtsrn~ndo. Jakarrrr

Page 78: Versa Data Gupta SQLBASE Training Material

v - - SQL> INSTALL DATABASE POWERCOM; SQL> SHOW DATABASES ON SERVER VDS;

***** DATABASES ON SERVER: VDS

DEMO POWERCOM

*****

Load dan Unload data bas^

Unlood dclrcl berarti rncmindahkan infornlasi dan perintah DDL (Ualcr I&finrlrun Language) dari database ke file lain. Ser~lua irlformasr yang tclah dipindalkan dalani file lni kernudian dapat di-load lagi ke database yang baru. SQLBase menggunaknn scrvcr untuk rnelakukan proses load dan unload. Hal ini a k a n~engurangi lalu-linras nct~vork karena server dapat rnelakukan ha1 secara lokal tanpa perlu melibatkan client. Selaln ~ t u . perintah LOAD maupun UNLOAD rnenyediakan fasilitas data.kornpresi untuk menluiganr data yang berskala besar. Operasi load dapat rnelakukan restore dari backup f i le (yaig dihasilkan dari operasi unload sebelurnnya), dm juga dapat rnernasukkan data ke dalam database dari file-file yang rnerniliki fonnnt SQL, ASCII, DIF

Operasi ini juga memiliki fasilitas segnlcrltasi yang tnernungkinkan DBA untuk rnclakukan perirltah LOADNNLOAD database yang besarnya lebih dari satu volume disk. Pada s a t menggunakan segmentasi, DBA dapat menentukan bcrapa byte informasr yang ditetapkan untuk tiap jile segment dan di rnana letak tiap segment terscbut. Untuk rricrigatur file segment, SQLBase menggunakan conrrol file yang bcrisi informasi. 1 Prefiks narna file segment 2. Directory tujuan di rnana file segment terlctak 3. Ukuran maksirnum dari tiap file segment (untuk operasi UNLOAD saja)

Ada dua tipe cont ro l j le yaitu Unload conrroljile dan Load conrroljile Untuk menlbuat conrrol jile, gunakan salah satu editor yang tcrsedia di sistem. Conrrolfile harus berada dalam format ASCII dan mengandung infornlasi berikut in^:

FILEPREFIX <filename prefix> DIR <destination dir> SIZE <masiiiium size of the unload segnlcnt file 111

megabytes> DIR <destination dir> SIZE <maximum size of the unload segment file In

megabytes>

Catatan. parameter SIZE hanya digunakari urituk unload con~rolfilt., dan t1dA d~gurlnknn di lood conrrolfile

Contoh lrnlond controlfile: FILEPREFIX dbs DIR c:\unldir\ SIZE I00 DIR d:\unldir\ SIZE 50 DIR e:\unldir\ SIZE 200

SQLllase Training Material Copyrrght @ 1995, by PT ~epsadolo Syr~ernmdo, Jakarro

Page 79: Versa Data Gupta SQLBASE Training Material

Pada saat operasi UNLOAD berlansung, conrrol file mengarahkan SQLBase untuh ~nelakukan tlnlond informasi database dalam urutan bcrikut: 1 . Informasi sebesar 100 megabytes ke file yang bemanla c:\unldir\dbs. 1

2 . Informasi sebesar 50 megabytes ke file vang bernama d:\unldlr\dbs.2 3 Informasi sebesar 200 rncgabytes ke file yang bernma e:\unldir\dbs 3

Selain itu, SQLBase juga membuat scbuah load canrrol file yang berna~na cihs J L J ' pncia directory yang sama tempat unload conrrolfilr disimpan. Lihat contoti di baivah In1

FILEPREFIX dbs DIR c:\unldir\ DIR d:\unldir\ DIR e:\unldir\

Contoh-contoh perlntah LOAD 1 Load external file dalam format DIF jx ig terletak dl cl~ent ke table EMP

SQL> LOAD DIF emp d ~ f EMP, 2 Load external file dalam format SQL yang terlctak dl scrver dcngan ~ n c n g g i ~ r ~ ~ ~ h ~ i ~ l

control file dan log message ke message log file yang terletak dl server SQL> LOAD SQL CONTROL dbs Icf ON SERVER LOG db log,

3 Restart load pada bans 101 dengan menggunakan control file dan log nlcssagc hc message log file SOL> LOAD SQL CONTROL dbs Icf ON SERVER LOG db log STAR I AT 10 I .

Contoh-contoh perintah UNLOAD: 1 Unload table EMP dan DEPT (hanya data) dalarn format SQL.

SQL> UNLOAD DATA SQL pcrsonnel.sq1 EMF DEPT; 2 . Unload seluruh database di server dengan nienggunc&an control file yang j ~ g a tcrdnpat

di scrver: SQL> UNLOAD DATABASE CONTROL contrll .fil ON SERVER,

Urltiik niempcrbaiki kine j a dan mcnghemat media pcnympanan, lakukrin pcrintah bzr~kut pada sal t rnenjalankan LOAD:

set recovery off; lock database; load [sql 1 ascii I difl exrerr~nlfilr on scwcr; conmiit; unlock database; set recovery on;

l<end-only database dlbuat untuk berbaga~ tujuan sepertl 1 Menjamin database hanya mengalrun1 pcrubah'm pada waktu j a i g teldi dltcntuhan 2 Menjamin bahwa di seluruh organisas1 hanya terdapat satu database pusat yang dapat

drrubah dan rnend~stribusikan copy d a r ~ database terscbut (dalam bcntuk ~ C ' L I C J - ~ I I ~ ) kc: seniua cabang

Untuk membuat read-only database SQL> SET READONLYDATABASE ON,

SQLBcrse Training Mrrterial I Copyrrghr cW 1995, b y 1'7' C'erstrdofo S}~sren~rndo. Jukurfu

Page 80: Versa Data Gupta SQLBASE Training Material

Untuk mengembalikan read-only database kc keadaan normal: SQL> SET READONLYDATABASE OFF;

hlernbuat dan Menaatur Partitioned ,!)atabase

Langkah 1 : Membuat Database Area Langkah pertama dalam rrienibuat pnrt~t~oned databa.vr adr~lah mrmbuat sebuah database area. Misalkan bila DBA ingin membuat ~kitnhcrst~ tzrco

VDSl dalam directory :sqlbnse pada volume VOLl dcngan ukurnn 5 megabyte, maka perintahnya adalah:

SQL> CREATE DBAKEA VDS 1 AS VOLl :\SQLBASE\VDS I SlZE 5 .

Langkah 2 Membuat Storage Group Langkah benkutnya adalah niernbuat sebuah storagr grozrp (STOGROIJP) Storage group sebcnarnya berls~ daftar darl dat~~base nren M~ca ln l a b ~ l a DBA lngln membuat sebuah storage gr021p yang bernarna VDSFILES untuh database area VDS I dan VDS2, maka per~ntahnya adalah

SQL> CREATE STOGROUP VDSFILES USING VDS I . VDS2.

Langkah 3: Membuat Database Langkah terakhlr adalah mcrnbuat database dalan~ storclgr grollp. Sclalri 1t11,

DBA juga dapat menempatkan log J le dalarn storagr group !.ang bcrbcd;~. Sebagai contoh, seorang DBA ingin membuat database VDS dnlam .cronr<yc group VDSFILES dan mcnernpatkan log ,file-nya dalarn .storage group yn11y terpisah (VDS130G), rn'aka DBA tersebut harus m e n ~ u n a k a n pcrlntah berikut:

SQL> CREATE DATABASE VDS IN VDSFILES LOG -1'0 VDS LOG. DBA harus rnengupayakan supaya database dan log jilt-nva d~tcnlpathan d a l m volume disk yang berbeda. DBA juga haws berusaha n~cncnlpathan sebuah database dalarn beberapa volume disk.

SQLBase Training Mtrterinl Copyr~ghr 8 1995, bj' PT l'ersodatu Sysre~ti~ndo. Jokrrrta

Page 81: Versa Data Gupta SQLBASE Training Material

i

Langkah 1: Membuat database area i

SQL> CREATE DBAREA VDSl AS VOLl :\SQLBASE\VDSI SlZE 5: SQL> CREATE DBAREA VDS2 AS VOLl :\SQLBASE\SPA2 SlZE 10; SQL> CREATE DBAREA VDS3 AS VOL2:\SQLBASE\SPA3 SlZE 10;

Langkah 2: Membuat storage group I

1 Storage Group VDSFILE Storage Group VDSLOG I !

SQL> CREATE STOGROUP VDSF ILES USING VDSI. VDS2; I

SQL> CREATE STOGROUP VDSLOG USING VDS3; I

I Langkah 3: Membuat database

VDS database I I

Storage Group VDSFILE Storage Group VDSLOG

I SQL> CREATE DATABASE VDS IN VDSFILES LOG TO VDSLOG; ~

Ganlbar 8 .1 Langkah-langkali untuk mc~nbuat p r l r ~ l o n e d d l~~ t rh l c~c

Sctelah yartrtioned darnbase selesai djbuat, nlnka u'ar~rbnse oren dar~ tot-(lgc grojlp ~ a r i g ada hams di-mainmin dengan baik. Bcrikut ini nierupakan operasi-operas1 !mg b~nsii dililkukan untuk mcngatur database area dan storngr group.

Oorclbose Area

Page 82: Versa Data Gupta SQLBASE Training Material

Merubah ukuran &ri database area DBA dapat menambah atau mengurangi ukuran dari database arecr Jang tclali ada Misalnya bila ingin menambah ukuran databnse area VDS 1 rne~i~adi h rnegab!.tc. rnaka gunakan perintah berikut in^.

SQL> ALTER DBAREA SPA1 SIZE 6.

Mennmbah atau menghapus drrohnsr L I ~ C ~ O dun . \ . I ~ ~ L I , ~ c ' ,gr011/) DBA dapat nienambah utau nic~~ghapus d(~1l7hi1.s~' urea kc atni~ ciar1 .\iorii)jc' , C I . ~ J ! ~ ! J

hlisalnya bila mgln ~ncnarnbahknli ~/ll~tlhe~.sc~ ilrec~ VDS? kc dnlnl11 ~.rot.civc v t . ~ : ~ ! ~ VDSf:ILES. kctlkkan

SQL> ALTER S l 'O(~ l iO l~ l ' \'l)SFII.LS .A[)U VDSi, Scdungkan unruk mcnghnpi~s t i c i ~ ~ i n ~ r \ . ~ ~ i/rct/ VDS? d a r ~ .~iorci:qc , C r . o l i i 1 \ 1 ) , 5 t ~ I l . t ' 4 ; lahukan

SQL--. AL7'I;K S'I'0C;KOI.f) \'L)SI~II,I':S L>li(.)t' VDS.?,

Mcnghapus dorcrbu.sc iirtlo DBA dapat rncnghapus ciu~c~hn.\c' r / t . c J ~ / j i kn t~dak :lda dntnb;~sc' / O , ~ Z -I!C \ . I I I ~

mcnggunakan area tcrscbut darl b~ln l / i~r~~ho.s t~ irrcJl/ tcrsebut t~dak sc i i n~~s bcr:lda iiainl~l sebuah . r~nmge group. Misalnjx bila ingln rncnghapus d~1rl1hll.i.c l/rcJn \'US I. l;ikuk,lrl

SQL> DROP DBAREA VDS I .

Mcn!.cd~akan sebuali dcfci/i// .\ rorr~,qc grorlp Sctelnh .sroroge grolrp d~buat. S()l,Basc akan mcnganggal? S ~ I I I ~ I ; ~ c ~ ; I [ ; I ~ J ; ~ s ~ \ . I I I ~

dibunt berikutnya sebaga~ por /~r /o t~c t / dir/(7h11si~ DBA dapat 1ncng;ltul- :;al;~li . \ : I ~ L I

. \ . ~o ro ,q~ Lqrozc/~ j .mg tcrsed~a scbaga~ r/t;ri/~l/r .\rorc-,,qc g r o ~ i l ~ bI~snl l -~~.a u 1 i ~ i 1 1 \ I ~ I L ~ I ~ ~ ~ I I , ~ I

V D S FILES sebagai ~/c~,fi~ri// .v/or.cri,~, yrori/,. _ S I I I I ; ~ ~ ; L I I l~cr~n[; l l~ ~ ) L ' I . I ~ \ L I ~

S(]L,j SET DEFAULT STOC;KOL.I1' VDSI:Il.ES. Contoh dl atas ~nengasums~kall bali\\.a I>BA tclnh mcrnbuat ~ l c~ l~~h t~ . sc , L I ~ C . ' ~ \ . l )5 I l!.lll .\/orcrgt. ,grotrp VDSFILES J ~ k a nama . ~ / l ~ r r / , q ~ ~ grolip d~aba~karl . l i ~ ' t c ~ ~ i / / - n \ ; ~ ; l l \a~i

dikembalikan ke null. Hal In1 ak;111 rric~~gak~batkiin SQLBasc kcmb;ll~ ~nti~clnpatA.~~i database yang baru ke dalam file s!.stcm . a n g 11ormnl (non-/>rrr/i11ot7~1/ 1/17rt1hi~\t')

1C1ci-u bid1 srorclge group DBA dapat mcrubah srortrgr gt.orip \.ang b c r ~ s ~ databasc mau pull 1, ,< / i i k S L , ~ ~ ~ ~ ; ; ~ I I contoh, u~ituk merubah S I O T L I ~ C ,groilp VDS ke VDSLISTER. lakukiln

SQL> ALTER DATABASE VDS STTOGROUP VDSLISTER. Ukurar~ database darl /og.fi/e-nj.2 tldnk nkan tcrpcngaruh olch pcr~ntah 1111

Mcnghapus sloroge groici) I DBA dapat nlenghapus vtorc7g~~ ,yro/ip b ~ l a .\.rort/,y~, ,qrolcp !,l?s sudall r1ii;lh ~ I I ~ L I I ~ . I L . , I I :

lag1 oleh database manapun dall hlla .storcrg~, group rerscbut bukan L / c ~ f ~ ~ l i i ~ \ r ~ ~ ~ . ~ i : : ~

groi//) pada saat penghapussn d~lakuhnn. Contoh ilnti~k 1i1cripIinl1~1~ slotc~yt~ :).o!/!' VDSFILES

SQL, DROP STOGKOUP L'DS1:ILES.

SL)l,lltr.s~~ 7'ririning Rltrteritrl (.'up),r~,yhr &)/99.>. / " I I b r , s ~ ~ ~ l ~ ~ i ~ ~ . ! \ ~ J ~ ~ I , I ~ ~ I ~ o , ..',,co,r,!

Page 83: Versa Data Gupta SQLBASE Training Material

Mengatur ukuran extension Ukuran database akan terus meningkat bila data pang disirnpan nlak~n bnn?.nk Pnda s a t suatu database nienjadi penuh, SQLBase akan menambah extent b c n k u r ~ y ~ kc dalam database ybs. DBA bertangung-jawab untuk mencntukan ukurnn d a r ~ t!stcr71 tcrsebut. DBA dapat menggunakan per~ntah SET EXTENSION untuk mcngarur ukuran exrenr baik untuk yarrirroned luaupun non-portltrunrd database Gln t r~x d a r ~

perrntah ini adalah: SQL> SET EXTENSION <#kbytes>;

Untuk rnencntukan bcsarnya tcnipat ?.ring ters~sa dalam l~nrrrrronrd dotohtr.st>, gunaka11 scnpt berikut ini.

SQL> SET LINEWRAY ON, column 1 width 8 heading 'Database‘. column 2 width 8 heading 'Stoareas'. column 3 width 8 heading 'Arcanarne'. colunm 4 width 8 heading 'Pathnarnc', colun~n 5 width 8 heading 'Areasize'. column 6 width 8 heading 'Free%'. break on 1 2 ; sclcct a.name, b stogroup. b.nrcanalnrnc. i/.tnr~i(c .pathna~~ic) .

c.areasizc, (~nu11valuc( 100*d ~ ~ t ~ ~ z c / c , i i r ~ ~ s ~ z ~ ) , O j from syssql .databases a,

syssql .stoareas b, syssql.areas c, syssql.freecsts d

where b.areaname=c.na~ne and c .nanlc=d.namc(+) n~l r l

((a.stogroup=b.snogroup) or (a.logstogroup=b. stogroup) 1 order by 1,2

Neorvonize Database

Ada dua tlpe framentasi ).,ang dapat nicnipcngaruh~ kinerja (pcrforniancc) 1 Frngmentasi database (*.dbs)

Hal ini terjadi bila database tidak nicrniliki disk s/?nce yang cot7r1g1cott.s 2 Fragmcntasi table d a l m database

Hal ini terjadi bila modifikasi tcrhadap data sering dilakukan.

DBA dapat memanfaatkan fasilitas sd d a r ~ Norron Utrlr~y untuk n~clnkuhan t'rngn~c~lras~ database. Sedangkan untuk fragnientas~ table dalaii databasc, pcr~ntall REORCiAKlZl; dari SQLTalk dapat digunakan. Proses yang terjadi pada saat REOKGANIZF adalnh sbk 1 UNLOAD database ke file 2 Inisialisasi database

i SQLBcrse Trrrining Material Copyrrgh~ Q lY9.5. h j , PT Vrrscrdoro S,v.rtr~~r~nJo. Jukuriu

Page 84: Versa Data Gupta SQLBASE Training Material

3. Re-LOAD database ybs.

SQLTalk menggunakan temporary file yang benlarna sqltmp.nnn untuk melaksanakan unload. Sebelum melakukan REORGANIZE, sirnpanlah satu copy dan database ybs. karena tenporary file dan database ybs. akan rusak apabila terjarfi kesalahan pada saat reorganisasi. Jika DBA ingin melakukan fiagrnentasi yang lengkap baik bagi database maupun ,table-table yang terdapat dalam database ybs, gunakan fasilitas sd (dari Norton Utility) dm kemudian rnanfaatkan perintah REORGANIZE. Contoh:

SQL> REORGANIZE;

LNLOAD COMPLETED

INITIALIZING DATABASE

STARTING TO LOAD

CREATE TABLE DBA.EMP (I INTEGER) PCTFREE 10

I TABLE CREATED

INSERT INTO DBA.EMP VALUES(: 1) LOADING TABLE DBA.EMP

PROCESSING DATA

50 ROWS LOADED

50 ROWS INSERTED

LOAD COMPLETED

Mengecek database intenrip

Perintah CHECK melakukan pengecekan atas integritas (integrip) clan keseluruhan atau sebagian database. Pengecekiln integritas meliputi: 1. Mengecek integritas sistem dan data struktur data yang mernilllu ruang kosong 2. Mengecek data dan stnrktur yang dialokasikan 3 . Mengecek jurnlah row dalarn table dan jumlah sebenarnya dan row 4. Mengecek setiap index ddam base table 5 . Mengecek integritas dm setiap row dan index page 6 . Menjamin bahwa setiap page adalah bagian dari struktur yang teralokasi atau terdapat

dalam d a h r page yang kosong

SQLBase membaca setiap page dalam database pada saat pengecekan lntegr~tas clan mengalubatkan penempatan shared lock dalam tiap page tersebut. Pada saat SQLBase menemukan kesalahan integritas (inregrip vrolahon), pengecekan diherltikan dan error

SQLBase Training Material Copynghf 8 1993, by PT Versadata Systemrndo. Jakarta

Page 85: Versa Data Gupta SQLBASE Training Material

message &tampilkan. DBA dapat menghapus objek yang memilllu kesalahan integritas. Jika SQLBase menemukan banyak masalah integritas, DBA dapat melakukan resrore dari database yang di-backup sebelumnya.

Tipe-tipe perintah CHECK yang dapat digunakan: Perintah Keterangan

CHECK DATABASE - Mengecek integritas atas seluruh database -. . .

CHECK SYSTEM ONLY Mengecek integritas atas systemdefmcd table: & ~ n d c s dnn rncngabaikan user-created table & index

p~

CHECK INDEX Mengecek integritas hanya pada index tertentu sya -- - CHECK TABLE Mengecek integritas hanya pada table dan index tcrtentu saja CHECK TABLE Mengecek integritas hanya pada table tertentu dan rllcngabalkarl WITHOUT INDEXES semua index ymg berhubungan dengan table tersebut

Contoh: SQL> CHECK DATABASE; SQL> CHECK DATABASE SYSTEM ONLY; SQL> CHECK INDEX idxl; SQL> CHECK TABLE emp; SQL> CHECK TABLE emp WITHOUT INDEXES;

SQLBase Training Material Copyrrgh~ 8 1995, by PT.-Vursoduto Sysrernrndo. Jokorro

Page 86: Versa Data Gupta SQLBASE Training Material

IX. Security dan Authorization

D atabase Authority (Otoritas database)

Database authority (otoritas database) mengontrol siapa yang berhak mengakses datczase dan operasi apa saja yang &pat dilakukan. SQLBase mengontrol hak akses ke database melalui username clan password. SQLBase mernildu empat level user sebagai benkut:

I SYSADM 1 Level Otoritas User

RESOURCE 1

Gambar 9.1 Level otoritas database

1 Secara singkat, keterangan clan setiap level adalah: Level Otoritas Keterangan SYSADM Membuat user, menentukan level otoritas user dan password-nya DBA Memberi, merubah atau mencabut kembali hak dari setiap user atas setiap objek RESOURCE Membuat dm menghapus objek. Memberi, merubah atau mencabut kembali hak

user lain atas objek4bjek ybs. CONNECT Mengakses objek, tetapi tidak dapat membuat objek

Hanya SYSADM yang dapat membuat/menambah user dengan mengunakan penntall GRANT. Level otoritas &edaDat di-GRANT oleh SYSADM adalah:

Y 1

Keterangan

I I Level otoritas ini hams dbenkan dahulu sebelum level-level yang lain diberikan. Level ini akan memunglunkan user untuk: I

Mengakses database SELECT table & view dari user lain bila hak SELECT tclah diberikm sebelumnya INSERT, UPDATE dan DELETE data ke dalam I dari table user lain bila semua hak yang diperlukan telah dbenkan sebelumnya Membuat view dan synonym

RESOURCE Level otoritas ini dapat menggunakan semua hak yang terdapat dalam I I CONNECT ditambah dengan hak untuk: I I I Membuat table dm rn&ghapus table yang dibuat sebelumnya I 1 / Memberi, merubah dan mencabut kernbali hak atas table ybs. keldan user (

lain DBA Level otoritas ini dapat meng~unakan semua hak yang terdapat dalanl level

SQLBase Training Material Copyright rD 1995, by );PT. Versadata Systemindo. Jakarta

Page 87: Versa Data Gupta SQLBASE Training Material

CONNECT dan RESOURCE serta semua hak atas semua objek dalam database. Selain itu, DBA dapat:

Memberi, merubah atau mencabut kembali hak-hak atas semua objck keldan user lain

Contoh: 1 . Membuat user dengan nama ERWIN dan password ERW

SQL> G M N T CONNECT T O ERWIN IDENTIFIED BY ERW; CONNECT AUTHORIIY GRANTED

2 . Menarnbah level otoritas user ERWIN ke RESOURCE SQL> GRANT RESOURCE T O ERWIN; RESOURCE AUTHORITY GRANTED

3. Mcnarnbah level otoritas user ERWIN ke DBA SQL> GRANT DBA T O ERWIN; DBA AUTHORITY GRANTED

Ada dua cara untuk merubah password: 1 . Melalui perintah GRANT yang hanya dapat dilakukan oleh SYSADM

Misalnya password user ERWIN ingin dirubah dari ERW rnenjadi SECRET SQL> GRANT CONNECT T O ERWIN IDENTIFIED BY SECRET; CONNECT AUTHORITY GRANTED

2. Melalui perintah ALTER PASSWORD yang dapat dilakukan oleh setiap user Misalnya password user ERWIN ingui dirubah dan SECIET menjad RAHASIA SQL> ALTER PASSWORD SECRET T O RAHASIA; PASSWORD ALTERED

Perintah REVOKE akan merubah level otoritas database user. SYSADM dapat I ~ ~ - R E V O K E level otoritas berikut ini: Level Otoritas Keterangan DBA Mengurangi otoritas user rnenjad level CONNECT. Alubatnya user tidak dapar

I 1 membuat dan menghapus table lagi, tidak &pat rnembcri d m niencabut kemb:ll~ I hak atas table-table terscbut dari user lain.

( RESOURCE I Mengurangi otoritas user rnenjadi level CONNECT. Akibatnya user t~dak ciapat 1 mernbuat dan menghapus table lag , tldak dapatt membcri dan mcncabut hembal~ hak atas table-table tersebut dan user lam.

CONNECT User tidak dapat mengakses database lagi. SYSADM hams mencabut kernball semua hak atas semua table dan view sebelum mencabut level CONNECT 1111

Contoh: 1 . Mencabut otoritas user ERWIN yang rnermliki level DBA:

SQL> REVOKE DBA FROM ERWIN; DBA AUTHORITY REVOKED

2. Mencabut otoritas user ERWIN yang nlemilllu level CONNECT S Q L , REVOKE CONNECT FROM ERWIN; CONNECT AUTHORITY REVOKED

/ Hak atas Table dan View

SQLBuse Training Material Copyrrghr (9 1995, by I'T. Versadata Syslernrndo, Jakarra

Page 88: Versa Data Gupta SQLBASE Training Material

User yang memildu otontas DBA dapat memberlkan hak atas semua table dan diilan~ database. User yang memiliki otoritas RESOURCE hanya dapat membcrikan hak ntas scniua table yang dibuatnya dan view yang didasarkan atas table-table yang dibuatnya Karcna uscr yarig memiliki otoritas CONNECT tidak dapat membuat objek, maka user tipc lnl t~dak ciapat ~ilembcrikan hak p pa pun.

User yang metnbuat tablelvicw ~nerupakan owner (pemilik) dari objck tcrscbut dnn r n c n u l ~ h ~ hak penuh atas objek-objek yang hbuatnya, termasuk hak untuk mernber~kan aLses supn! a user lain dapat menggunakan objek-objek terscbut. Sebagal pcn~~l ik objck, user dapnr nlembenkan hak sbb:

1 Hak I Keteranrzan 1 1 SEI.ECT I Mendanatkan data dan t~hlelview ----- - - - - - - - - - -- - - -- - - - - - - - -. . - - . .

-

INSERT ] Menambah baris (data) ke dalani tablc/view .

DELETE / Menghapus bans (data) dan tablelview .- - p~ -

Merubah data padakolo~n-kolom tertentu dalam suitu table Membuat atau menghapus indcx &lanl table

-- . . . - . . -. - . . . -

1 ALTER I Merubah table ( ALL I Menerapkan semua h,& dl atas atas tablelview

Keyword PUBLIC mewakili semua user. Dcngan memberlkan hak ttertentu kc PLjBl-,I(-. nlah;~ berarti mengijlnkan semua uscr (yang tclah a& dan ymg &an datang) mcndapatknn Iiah \ ang. dibcrikall tadi secara otomatis. GRANT INDEX, GRANT ALTER, REVOKE INDISS d;iri REVOKE ALTER tidak dapat dilakukan tcrhndsp v~c\v

Contoll: 1 . USERl menlberikan hak kepada USER2 ulltilk nicl~hat data tcrd~ipat dalanl t;it)lc'

EMP: SQL> GRANT SELECT ON EMP T O USERZ; PRIVILEGE(S) GRANTED ON TABLE OR VIEW

2 . DBA membenkan hak kepada USER3 untuk nlelihat &pat j9arlg terdapat cialnm t;lbIc EMP yang dibuat oleh USERl. SQL> GRANT SELECT ON USER1.EMP T O USERS; PRIVILEGE(S) GRANTED ON TABLE OR VIEW

3. DBA membenkan hak kepada USER4 untuk melihat dan merubah data pada hol~lr~i PHONENO dalarn table EMP yang dibuat oleh USERI: SQL> GRANT SELECT, UPDATE(PHONEN0) O N USER1.EMP T O L'SERJ; PRMLEGE(S) GRANTED ON TABLE OR VIEW

4 . DBA memberikan hak kepada semua user untuk melihat data dalnlli tablz E M P >iiIig dibuat oleh USERI : SQL> GRANT SELECT ON USER1.EMP T O PUBLIC; PlUVlLEGE(S) GRANTED ON Tc\RI.,E OR VIEW

5 . USERl nle~icabut hak USER2 untuk ~nclihat data d a r ~ table EMP SQL> REVOKE SELECT O N E M P FROM USER2; PRIVILEGE(S) REVOKED ON TABLE

6. DBA mencabut hak USER2 untuk melihat data di table EMP yang d ~ b ~ ~ ; i t CISEK 1 SQL> REVOKE S E L E C T O N USER1,EMP-INFO FROM USER2; PRIVILEGE(S) REVOKED ON TABLE

7. DBA mencabut hak USER2 untuk rncrubah kolom PHONENO dnri table EbIP >alig dibuat oleh USERl:

Page 89: Versa Data Gupta SQLBASE Training Material

S Q D REVOKE UPDATE(PHONEN0) .ON USER1.EMP FROM USERZ; PRlVILEGE(S) REVOKED ON TABLE

8 . DBA mencabut hak PUBLIC untuk mellhat data dari table EMP yang hbuat oleh USER1: SQL> REVOKE SELECT ON USER1.EMP FROM PUBLIC; PRIVILEGE(S) REVOKED ON TABLE

Setiap kali seorang user mengakses tablelview yang dbuat oleh user lain, user tersebut harus menyebutkan table/view ybs. lengkap dengan nama user yang rnembuat tablelview tersebu t, misalnya: SYSADM.SYSTABLES, USER1 .EMP, dst. Synonym memungkmkan user mengakses tablelview yang dibuat oleh user lain tanpa perlu menyebutkan nama tablelview tsb secara lengkap (&npa perlu mencantumkan owner-nya). Semua nama synonym ditampung di system catalog table yang bernarna SYSADM.SYSSYNONYMS. Synonym hanya bisa dlhapus oleh SYSADM, DBA, atau owner-nya.

Contoh: 1. Membuat synonym EMPLOYEE dan table USER1 .EMP:

SQL> CREATE SYNONYM EMPLOYEE FOR USER1.EMP; SYNONYM CREATED

2. DBA membuat PUBLIC synonym EMPLOYEE untuk semua user: S Q D CREATE PUBLIC SYNONYM EMPLOYEE FOR USER1.EMP; SYNONYM CREATED

3. Menghapus synonym EMPLOYEE: SQL> DROP SYNONYM EMPLOYEE; SYNONOYM DROPPED

4. Menghapus PUBLIC synonym EMPLOYEE: SQL> DROP PUBLIC SYNONYM EMPLOYEE; SYNONYM DROPPED

Views

Salah satu cara untuk mengontrol database object security adalah melalui view. Dengan cara ini, user tidak perlu diberikan hak untuk melihat data secara langsung dari table. View menjamin keamanan dalarn segi: 1 . Akses per baris

DBA dapat membatasi baris-baris data yang dapat diakses oleh user dengan men- WHERE pada saat membuat view.

2. Akses per kolom DBA dapat membatasi kolom-kolom mana saja yang boleh diakses oleh user dengan menyebutkan nama kolom pada saat view dibuat.

Table benkut ini akan digunakan oleh contoh kasus: NAME DEPT SALARY PHONENO ---- ----- ----- ----- Smith 355 32654 832

SQLBase Training Material Copyright 0 1995, by PT. Versodolo Syrrarnindo. Jakarta

Page 90: Versa Data Gupta SQLBASE Training Material

Jones 150 Brown 700 Joyce 150 Chen 355 Herrlein 700

Misalkan DBA ingin rnernbatasi akses dari user ANNA hanya pada kolorn nama, gaji dan nornor telepon. Selain itu, user ini hanya boleh rnelihat data pada Departernen 355 saja. View yang akan dibuat adalah: SQL> CREATE VIEW EMP AS SELECT NAME, SALARY, PNONENO S Q b FROM EMP-INFO WHERE DEPT=355; VIEW CREATED Setelah itu, DBA akan rnernberikan hak untuk dapat melihat data kepada user ANNA supaya &pat rnenggunakan view yang telah dibuat tadi dengan: SQL> GRANT SELECT ON EMP TO ANNA; PRIVILEGE(S) GRANTED ON TABLE OR VIEW

Pada saat ANNA rnengakses view EMP dengan: SQL> SELECT * FROM DBA.EMP; Maka hasilnya adalah: NAME SALARY PHONENO ------ ------ ------ --- ----- --- ------- Smith 32654 832 Chen 37666 222 2 ROWS SELECTED

DBA lalu membuat sebuah view baru supaya sernua user dapat rnelihat nama dm nornor telepon saja: SQL> CREATE VIEW PHONE AS SELECT NAME, PHONENO FROM EMP-INFO; VIEW CREATED SQL> GRANT SELECT ON PHONE TO PUBLIC; PR.IVILEGE(S) GRANTED ON TABLE OR VIEW

Hasil yang terlihat ketika sernua user melakukan SELECT * FROM PHONE adalah: NAME PHONENO -- Smith 832 Jones 285 Brown 72 1 Joyce 145 Chen 222 Herrlein 185

View hanya dapat dihapus oleh pembuatnya, SYSADM, atau DBA. SQLBase secara otomatis akan rnenghapus semua hak yang terdapat &lam view yang dhapus, dan juga rnenghapus semua view lain yang berhubungan dengan view yang drhapus tersebut.

Contoh: SQL> DROP VIEW EMP;

I VIEW DROPPED SQLBase Training Material

Copyright 8 1995, by PT. Versadatcl Sysremindo. Jakarta

Page 91: Versa Data Gupta SQLBASE Training Material
Page 92: Versa Data Gupta SQLBASE Training Material
Page 93: Versa Data Gupta SQLBASE Training Material
Page 94: Versa Data Gupta SQLBASE Training Material
Page 95: Versa Data Gupta SQLBASE Training Material
Page 96: Versa Data Gupta SQLBASE Training Material
Page 97: Versa Data Gupta SQLBASE Training Material
Page 98: Versa Data Gupta SQLBASE Training Material
Page 99: Versa Data Gupta SQLBASE Training Material
Page 100: Versa Data Gupta SQLBASE Training Material
Page 101: Versa Data Gupta SQLBASE Training Material
Page 102: Versa Data Gupta SQLBASE Training Material
Page 103: Versa Data Gupta SQLBASE Training Material

-

commit

Prepare to Commit

PREPARE STAGE

Transfer I COMMIT STAGE

I COMMIT ( 1 COMMIT ] I debit I credit I

Delete Transaction 4- END 4

Lnfo Transaction

Gambar 1 1.2 Tahapan untuk COMMIT dalam distributed transaction

Tidak semua distributed transaction yang COMMIT, ada juga yang melakukan ROLLBACK. Misalnya cabang Medm tidak dapat melakukan commit terhadap transaksi dan menginmkan pesan ROLLBACK ke Jakarta, Operasi roIlback akan membatalkan semua perubahan ke semua database. Sebagai contoh, bila suatu transaksi dibatalkan karena te jadinya kesalahan, rnaka rollback akan dilakukan ke seluruh database yang terlibat dalam transaksi tersebut.

Page 104: Versa Data Gupta SQLBASE Training Material

Prepare to Commit

Medan €3 I

PREPARE STAGE

i I

ROLLBACK

Delete Transaction END Llnfn 1 ( Transaction 1

I ROLLBACK I COMMIT

I Deposit I STAGE

Gambar 1 1.3 Tahapan untuk ROLLBACK dalarn distributed transactiton

Two-phase commit adalah fasilitas yang penting untuk menjamin integritas dalarn distributed transaction. Walaupun dernikian, fasilikfs ini menciptakan lalu-lintas network yang padat dan &pat mempenganh kinerja. Jlka terdapat X transaksi, maka coordinator hams n~engirimkan dan menerima paling seddc.it pesan sebanyak 4X untuk melakukan commit atas transaksi ybs. Sebelum memanfaatkan two-phase commit, pertimbangkanlah rnasalah kine rja hi.

SQLBase Training Material Copyrrghr 0 1995. by PT. Ijersadora Sysrerrr~ndo, Jrrkarra

Page 105: Versa Data Gupta SQLBASE Training Material

XII. SQLBase System Catalog

System catalog adalah sekumpulan table yang mengandung informas1 objek-objek dala1-r-r database. Semua system catalog table dirnilrlu oleh SYSADM dan datur oleh SQLBase System catalog juga lazim dsebut sebagai data dictionary.

Berikut ini dsaiikan semua SOLBase svstem catalon table beserta keterangan sinnkatr~\.a Nama table

SYSCOLAUTH SYSCOLUMNS SYSCOMMANDS

Keterangan Mencatat semua hak update kolom clan tiap user. Mencatat semua kolom dalam tiap table. Mencatat semua stored command dan ~rocedure.

SYSEVENTS SY SEXECUTEAUTH SYSFKCONSTRAINTS SYSINDEXES

SYSPKCONSTRAlNTS I Mencatat s e t i a ~ PK constraint.

Mencatat semua system timer event. Mencatat level otoritas execute user untuk tiap stored procedure Mencatat setiap FK constraint. Mencatat index dalam tiap table.

SYSKEYS SYSPARTTRANS

Mencatat semua kolom dalam tiap index. Mencatat s e t i a ~ indoubt distributed transaction.

SYSTABCONSTRAINTS enc cat at constraint dari tiap table. SY STABLES Mencatat semua table dan view. --

SYSTRGCOLS Mencatat semua kolom yang mernilllu UPDATE trigger. SYSTRIGGERS Mencatat semua trigger. -

SYSROWIDLISTS SYSSYNONYMS SYSTABAUTH

SYSUSERAUTH Mencatat setiap%el otoritas database dan user SYSVIEWS Mencatat text dan tiao view.

Mencatat informasi tentang Result set yang dsimpar. Mencatat semua table dan view synonym. . -

Mencatat hak tiap user atas table.

SYSADM.SYSCOLAUTH Table ini mengandung hak update user atas setiap kolom tablelview.

Nama kolom Keterangan GRANTEE Authorization ID dari user yang memildu hak update. CREATOR Authorization ID dari user yang rnernbuat table ternpat be;lakun)-a

hak update. TNAME Nama tablelview tempat berlakunya hak update. COLNAME Narna kolom t e m ~ a t berlakunva hak u ~ d a t e .

SYSADM.SYSCOLUMNS Table ini mengandung informasi semua kolom yang terdapat dalam tiap table dan VICV,

(termasuk kolom dari system catalog table).

SQLBnse Training Mnterinl Copyr~ghr @ 1995, by PT. Versadara Sysrerri~ndo. Jokarru

Page 106: Versa Data Gupta SQLBASE Training Material

Nama kolom NAME

I COLNO I Nomor kolom dalam table. Nomor ini tidak berubah walaupun ada 1

Keterangan Nama kolom.

TBNAME TBCREATOR

kolom lain dalam table yang sama dihapus.

Nama tablelview dari kolom. Authorization ID dari user yang membuat tablehiew. I

Panjang data dalam kolom. Panjang standar yang berlaku untuk tiap tipe data: INTEGER 4 SMALLrNT 2 FLOAT 8 CHAR panjang string VARCHAR panjang rnaksimum dari string

UPDATES

SCALE

REMARKS

DECIMAL jumlah precision Khusus untuk kolom dengan tipe data DECIMAL.

LABEL

AVGCOLLEN

Nilainya 0 untuk tipe data lainnya. 'Y' jika null dijmkan dalam kolom ybs 'N' j~ka NOT NULL i

; 'D' jlka NOT NULL WITH DEFAULT I

'Y' jlka kolom dapat drubah 'N' jika kolom hanya read-only. I User-specific comment untuk tiap kolorn Panjang rnaksimum 254 / karakter. User-specific label tentang tiap baris. Panjang maksimum 30 karakter . Panjang kolom rata-rata untuk semua bans dalam table. Ini 1

I dalam table. Nilainya 0 untuk kolom non-LONGVARCHAR AGCOLLONGLEN

Table ini mengandung mformasi untuk setiap stored command atau stored procedure. ,

Nama kolom Keterangan CREATOR Authorization ID dari user yang membuat stored command atau 1

m i & berbeda dengan panjang kolom karena SQLBare menyirnpan semua kolom sebagai data variable. I Panjang rata-rata dari kolom LONGVARCHAR untuk semua bans

1 I stored urocedure. I

NAME

TYPE SYSTEM

STATIC

Nama stored command atau stored procedure. Pada saat SQLBase menyimpan command yang terdapat dalanl static procedure, SQLBase akan membenkan narna yang di- generate secara internal. Command (C) atau Procedure (P). 'Y' bila SQLBase yang membuat stored command atau stored procedure; 'N' bila user yang membuat. Pada saat SQLBase menyimpan commandprocedure 4,ang terkandung dalam static procedure, nilainya 'Y'. Sebaliknya, b ~ l a werintah STORE diaunakan. nilainva 'N'. 'Y' bila static stored urocedure: 'N' bila bukan.

I VALID I 'Y' bila command valid; 'N' bila comrnand invalid.

SQLBase Training Matetic11 Copyright 0 1995. by PT Versodolo Sysrert~rndo. Jokurro

Page 107: Versa Data Gupta SQLBASE Training Material

Stored command menjadi invalid bila referenced column dlhapus, '

atau index pada referenced column &pus. Stored procedure tidak d a ~ a t m e n i d invalid.

1 AUTORECOMPILE Jika di-set ON dan stored command akhirnya menjadi invalid, I SQLBase secara otomatis me-recompile bila stored procedure 1 tersebut di-execute. i

TEXT Text dan stored command atau perintah-perintah SQL dalam stored ~rocedure.

' SNUM

/-TYPE I Command (C) atau Procedure (P). 1

Kolom ini bertipe data integer dan merupakan identifikasi (nomor seri) yang berhubungan dengan SYSCOMMANDS.

SYSADM.SYSEVENTS Table ini mengandung informasi untuk tiap event (peristiwalkejadian).

Nama kolom CREATOR NAME

Keterangan 1 Authorization ID dari user yang membuat event. I

Nama event.

I EVENTID BEGINTIME INTERVAL

SYSCOMMANDS) dari stored procedure yang dieksekusi oleh 1 event ~

Tipe event. 1 ;

Sampai versi ini, hanya timer event type saja yang ada. ID dari event. Permulaan waktu event.

-; I

Interval waktu (dalam detik) eksekusi dari event. I

SYSTEM SPSNUM

'Y' bila event merupakan systemdefined; 'N' bila tidak Kolom integer yang menunjuk ke nomor seri (SNLN dalam

I 1 procedure. hi untuk keperluan internal saja.

' TEXT ACTIONCODE

SYSADM.SYSEXECUTEAUTH Table ini mengandung informasi untuk setiap perintah GRANT PRIVILEGES da1a.m stored procedure. -

Nama kolom Keterangan 1

Text dari stored command atau perintah SQL d a l k I

Compiled code dari stored command atau perintah SQL dnlmi /

CREATOR Authorizatjon ID dan pembuat stored procedure. i NAME Nama yang diberikan secara internal untuk stored procedure. 7 GRANTEE Authorization ID dari grantee (user dan stored procedure). I

USECREATORPRIV 'Y' jika GRANTEE men an hak pembuat; jika tidak blank I USERGRANTEEPRIV 'Y' jika GRANTEE m e n s a n hak senhri; jika tidak blank. -

SYSADM.SYSFKCONSTRArNTS Table ini mengandung informasi kolom FK dari tiap table.

I

Nama kolom Keterangan CREATOR Authorization ID da.ri user yang membuat table. -7 NAME Narna table tempat FK berada. 1 CONSTRAINT Nama FK constraint.

4 I

L LFJCOLSEQNUM I Nomor urut dari kolom FK dalarn FK. SQLJrr.se Training Materirrl

I Copyrrghr O 1995, by PT 1,'ersodoro Sysra~~r~ndo, Juhurru

Page 108: Versa Data Gupta SQLBASE Training Material

u- - A D A A

1 COLCOUNT I Jumlah kolcm dalam index. --

REFSCOLUMN REFDTBCFEATOR

REFDTBNAME REFDCOLUMN

SYSADM.SYSINDEXES Table ini mengandung mformasi setiap index, termasuk index dalam system catalog table. -

I IXTYPE dana 'B' untuk B+ tree. I

CLUSTERRULE ----

'Y' untuk clustered index dan 'N' untuk non-clustered i~ldcs SYSTEM index, 'N' jlka bukan. !

Jumlah baris &lam table, sesuai dengan yang ditentukarin user. PERCENTFREE Jumlah free apace yang hams diberikan untuk tiap index pagc pada (

Nama clan nomor kolom referensi dalam table Author~zation ID dan user yang membuat parent t ~ b l e ~ a l g m e n j d acuan FK. Nama parent table yang menjah acuan FK Narna kolom yang menjadi kolom acuan &lam parent table -

Nama kolom NAME CREATOR TBNAME TBCREATOR UNIQUERULE

HEIGHT

Ketermgan I

__l_i Nama indsx. .-

Authoriza1:ion ID dari pembuat index. -- - Nama table tempat index hdefmisikan. - Authorizat~on ID dari pembuat ta5le tempat index didefinisikan. ~

-4 'D' bila dudikasi index dijinkan,'LJ' bila index u d . ---

saat index p*:rtama kali dbuat. Jlka tidak htentukatl user, malca 1 default-nya ialah 10 persen. :

Ketinggian index. Nilai minimum adalah 1, artinya index hcu11.a 1 mernililu satu page. Ketinggiankedalaman index tree adalah jurnlah 1 node yang haius dibaca dari root ke leaf level. Statistik it11 dlatur ! secara dinamtlc dalam index control page, tctapi han~ma d~cntat , dalam table SISINDEXES baik pada saat index dibuat pertxila (

) kali maupun UPDATE STATISTICS. I

4 1 Untuk B+ tree mden, Ilu mempakan jumlah index page Untuk llarli index, nilainya null. I

LEAFCOUNT Untuk B+ tree index, in1 mempakan jumlah node pada tlngkat lcof 1 I I I pada index (leaf page). Selain itu juga rnerupakan jumld~ p q c i dalam mdex sequence set. Untuk hash mdex, mlalnya null I ---.

CLUSTERCOUNT Untuk B+ tree index, irli adalah jumlah clustcr, yang rncrupahnn , jumlah total perul~ahan page yang mungkin tcjadi jika sclurull table dibaca melalui index sequence set. Nilai minimum (untuk clustered B+ tree intiex yang lengkap) adalah jumlah dari data pagc. i Nilai maksimum (urltuk unclustered index lengkap) adalah jumlah ~

I baris dalam table. Untuk hash index, nilainya null. I

PRIMP AGECOUNT Untuk B+ tree index, nilainya null. Untuk hash index, mi rnerupkrui j junllah primary page yang dalokaslkan untuk index subjcct table. i Iru sama dengan jumlah hash slot yang tersedia urltuk I mendistribusikan baris-baris dalarn table.

.. .- * OVFLPAGECOUNT Untuk B+ tree index, nilainya null. Untuk hash index, I ~ I 1

rnerupakan jumlah overflow page yang dialokasikan untuk ~ n d c s ( subject table. Ketika table dan index dibuat, ini adalah jurnlah 1 overflow page yang distxhakan SQLBase. Setelah itu. nllalny

i bertambah sejalan dengan jumlah overflow page yulg dibutuhkm untuk menangani hashmg collision.

--- ~. , SQLBnse Trtrining /I.l(~teritrl

( -u /~yr~ghr B !YY.T, b y 1'7: I/ersctd~~rn Sys f~ .~~ l l n i / o . .l i ir ioi-i i i

Page 109: Versa Data Gupta SQLBASE Training Material

AVGKEYLEN Untuk B+ tree index, ini rnerupakan panjang key rata-rata untuk sernua index entry. Statistik ini dbutuhkan karena SQLBase ,

mengatur semua index entry sebagai panjang variable, field prefix I

Untuk hash index, ini adalah nomor grup dari overflow page Jumlah frekwensi index digunakan dalam rnengalokasikan d a b Pada saat table atau index digunakan untuk pertama kalinya, n ~ l a ~ ,

i only minimum. Untuk hash index, nilainya null. I 7

Untuk B+ tree index, ini merupakan nornor grup untuk index page. /

i

i

1 1 dalarn satu table). I

variable ini di-load ke memory. Variable memory ini ditambah ) setiap kali full index scan digunakan. Kolom ini dirubah ket~ka I cursor terakhir dsconnect dari database. Untuk merubah kolom 1111.

SQLBase rnenggunakan internal cursor. 1 SYSADM.SYSKEYS Table ini rnengandung lnfonnasi kolorn-kolorn untuk tiap index.

I COLSEQ 1 Posisi numenk dari kolom dalam key; contohnya 2 (dari 3 kolom 1

Nama kolom IXNAME

Keterangan 7 Nama index.

descending. 1 I

Definisi @function digunakan untuk rnendefinis~kan key; contohnya ( CREATE INDEX EMPIX ON EMP (@UPPER (NAME)) I

ORDERING

IXCREATOR COLNAME COLNO

yang membentuk key). -A Sort order dari kolorn dalam key. 'A' jika ascending, 'D jlka

1 I SYSKEYS rnerniliki satu e n t j untuk tiap-prefix key dari rnultl- 1

Authorization ID dari pembuat index. I

Nama kolom clan key. 1 i

Posisi numenk dari kolorn dalam bans; contohnya 2 (dari 7 kolorn (

1 DISTrNCTCOUNT

I I column index key. Entry pertam; rnengidung nilai I

DISTMCTCOUNT untuk kolom pertama dalam key. Entry kedua 1 i mengandung nilai DISTINCTCOUNT untuk dua kolom pertama j

- dari key, dst. i

mernberikan nilai @UPPER(NAME) dalam kolorn ini. I

I

Jurnlah distinct key dari kolom pertama sampai nilai COLNO. I

SYSADM. SYSPARTRANS Table ini mengandung informal in-doubt distributed transaction. Jika transaksi ini telah di- resolved, maka data tersebut h p u s dari table ini. Table ini tidak mengandung semua informasi in-doubt transaction pada saat database mash aktif; table ini hanya mengandung inforrnasi in-doubt transaction setelah recovery.

Nama kolom 7 Keterangan

ID 1 Transaction ID global. I I t

ID2 Di unakan untuk ke erluan an akan datan . i

STATE Current status dari transaksi. Dapat berupa: &i

I

PROTOCOL ' protocol yang d i g k untuk &o-phase commit. saatInl.1 SQLBase hanya rnenggunakan protocol STANDARD.

LASTTMODTIME Timestamp yanp, rnenunjukkan kapan status transaksi dimodifikasi i SQLBase Training Material

Copyrighf O 1995, by PT. Versudarcr Sysre~t~indu, Jakarro

Page 110: Versa Data Gupta SQLBASE Training Material

I I untuk terakhir kalinva I DB 1 Nama dari co&t server

USERNAME PASSWORD SOURCE

Narna user yang &-connect ke commit server. Password yang dgunakan untuk connect ke commit server

-.

Suatu string yang rnengindrkaslkan bagainuna iilfornlasi tra~llsahs~ / dimaasukkan ke &lam table ini. I Nilai yang valid adalah: I

NORMAL i Mctlunjukkan baris dimasukkan ketika database aktif CRASH Menunjukkan baris ditnasukkan setelah crash recoverq ROLLFORWARD Menunjukkan baris hmasukkan setelah rollforward recoven. __--~-J

SYSADM.SYSPKCONSTRAINTS Table h i mengandung informasi kolom PK d a r ~ table.

1 COLNAME I Nama kolom yang menladl PK -- -A

1 NAME 1 PKCOLSEQNUM

SYSADM.SYSROWIDLISTS Table ini mengandung informasi result set dm setiap row IL). J k a SET KESTR1C:TlON dl-.vrr ke ON, table ini hanya mengandung informasi tentang result set user saja.

Nama table tempat PK dibuat. - --. , . - . . . . . . . .

Nomor kolonl dari PK kolom. . -. .. ..

I Nama kolom Keterangan ~ NAME CREATOR

. _ . . - - , Nama row id list (result sct) yang hsinlpan. I

Nama pembuat dari result set. i

Page 111: Versa Data Gupta SQLBASE Training Material

SYSADM. SYSTABAUTH Table ini mengandung informasi hak semua user dalam tiap table atau view.

SYSADM. SYSSYNONYMS Table ini mengandung informasi synonym dari tiap table atau view.

Nama kolom NAME CREATOR TBNAME TBCREATOR

Keterangan Synonym daari table atau view. Authorization ID dari pembuat synonym. Nama table atau view. Authorization ID dari pembuat table atau view.

I Narna kolom

TTNAME UPDATECOLS

Keterangan GRANTEE TCREATOR

Nama table atau view tempat hak berada. 'T' berarti target. '*' bila user memiliki hak update atas beberapa kolom dalam target table. Nama kolom tempat berlakunya hak update terdapat di table SYSCOLAUTH. Jika user tidak memiliki hak update atau bila update dlperbolehkan untuk setiap kolom dalam table, kolorn lni blank

I

Authorization ID user yang memiliki hak. Authorization ID user yang membuat table atau vlew tcmpnt hak /

ALTERAUTH

DELETEAUTH

INDEXAUTH

INSERTAUTH

SELECTAUTH

I view. Jika tidak, nilainya blank.

'Y' bila user dperbolehkan merubah target table. Jika rid&. / nilainya blank. 'Y' bila user diperbolehkan untuk menghapus bans dalarn target table atau view. Jika tidak, diberikan blank. 'Y' bila user diperbolehkan membuat atau menghapus index dalarn target table. Jlka tidak, rlllainya blank. 'Y' bila user &perbolehkan maambah baris kc dalarn targct ;d atau view. Jika tidak, nilainya blank. I

'Y' bila user diperbolehkan membaca data dari target table atau 1 UPDATEALITH

SYSADM. SYSTABCONSTR4lNTS

I

view. Jika tidak, nilainya blank. I

'Y' bila user dperbolehkan merubah data &lam target table ntau I

1 NAME

Table ini mengandung informasi table constraint.

I CONSTRArNT

Nama kolom CREATOR

Narna table tempat constraint berlaku. Nama constraint yang dgunakan database. Koloi-r-r ii-ri juga menunjukkan nama FK. Untuk PK, kolom ini di-set ke 'PRIh4ARY'.

1

Keterangan ~ Authorization ID dari user yang membuat table.

1 DELETERULE Tipe constraint. Diberikan nilai 'P' untuk PK d m 'F' untuk FK. i Ketentuan delete yang berlaku. Kolom ini tidak diguliakan untuk 1 PK constraint. i Kolom ini dapat &-set menjadi: CASCADE (C), SET NUL,L (N), RESTRICT (R). Default-nya RESTRICT. ----I

USRERIUNSDEP User-specified error message number untuk kesalaharn -..J

Page 112: Versa Data Gupta SQLBASE Training Material

USRERRUPDDEP

1 I DELETE-PARENT. Jika Gdak ada user-specified error, kolom ini 1

INSERT-DEPENDENT. J ~ k a tidak ada user-specified error, kolom ) ini dibenkan nilai 0. User-specified error message number untuk kesalahan

USRERRDELPAR

1 UPDATE-DEPENDENT. Jtka tidak ada user-specified error, I I

kolorn ini dibenkan nilai 0. I

User-specified error message number untuk kesalahan

I ( diberikan nilai 0. I 1

USRERRUPDPAR

SYSADM.SYSTABLES Table ini mengandung informasi semua table atau view.

Nama kolom Keterangan A

dberikan nilai 0. 1 User-specified error message number untuk kesalahan

I 1

UPDATE-PARENT. Jika tidak ada user-specified error, kolorn ~ n i 1

CREATOR NAME

Authorization ID user yang membuat table atau view. I

Nama table atau view. I

COLCOUNT REMARKS I

Jumlah kolom dalam table atau view. -j User-specified comment untuk tiap baris. Panjang rnaksimu~~~ untuk 1

TYPE SYSTEM SNUM

comment ini adalah 254 karakter. I

I 'T' jika table; 'V' jika view. -7 I

'Y' jtka table hasil system-defined; 'N' jika tidak. Nomor seri yang unik yang berfungsi sebagai table ID. Ini

i i

1 II

! I I control page, tetapi hanya dicatat &lam table ini pada s a t per~nrali ~ ROWCOUNT

PAGECOUNT

LABEL

PERCENTFREE ersen.

iumlah baris dalam table. h matur secara d i n a r k d a l a m x i

UPDATE STATISTICS dilakukan. 1 Jumlah base row page dalarn table. Kolom ini dirubah sctlap kali !

digunakan oleh perintah UNLOAD DATABASE User-specified label tentang tiap table clan maksimum dari label adalah 30 karakter 4 Jumlah fiee space untuk tiap table row page Default-nya 10 1

perintah UPDATE STATISTICS dlakukan. Jika t~dak ada nila~ I

yang diberikan user dengan perintah SET, maka kolom in1 I

merupakan jurnlah clan nilai ROWPAGECOUNT, i i EXTENTPAGECOUNT dan LONGPAGECOUNT. Default-nya 1 adalah 2. I -1

ROWPAGECOUNT Jumlah base row page dalarn table dan meliputi sernua extent page I yang dialokaslkan. Hanya &catat dan dirubah setiap kali pcr~ntdl i LPDATE STATISTICS dilakukan. Default-nya adalah 2 1

LONGPAGECOUNT Jumlah page dalam table yang dialokasikan untuk rnenyimpan i kolom LONG VARCHAR. Hanya dicatat clan d~rubah setlap ka11 ,

perintah UPDATE STATISTICS dilakukan. EXTENTPAGECOUNT Jumlah extent page. FREESLOTS Jumlah total dari free slot dalarn semua data page.

- I I

Ketlka satu page baru dralokasikan ke table, terdapat satu entry dalam slot table, yang disebut sebagai free slot. Pada s a t baris baru dtarnbahkan ke dalam page, lebih banyak entry yang ditarnbahkan ke slot table dan space untuk setiap slot tanbahan

SQLBase Training Muterial C o p ~ ~ r ~ g h l @ 199.7 h} , 1'7' I ~ ' e r . w d o ~ ~ l S ~ ~ s r r ~ r r ~ n d o , Jclkrrr-rti

Page 113: Versa Data Gupta SQLBASE Training Material

diambil dari free slot. Jlka satu baris dhapus, slot-nya rnenjadi free kembali.

USEDSPACE

FREESPACE

Jumlah total byte yang dpakai dalam semua data page, terrnasuk user data, page header, dsb. Jumlah total dari free byte dalam semua data page yang digunakan free slot. Ratio besar dari freespace dibandingkarl dengan usedspacc rnenunjukkar bahwa database reorgmzation atau load/unload dbutuhkar. Ratio ideal antara freespace dan usedspace haruslah kecil.

1 AVGROWLEN

i I

AVGKOWLONGLEN

i

Panjang rata-rata baris dalam table. Ini dapat berbeda dari panjang baris yarlg dideh~~sikan karcnrt SQLBase rnenyimpan sernua kolom sebagai variable data tanpa rnellhat tipe data yang digunakan dalam pendefi~uslan koloni. In1 rnerupakan panjang kolom yang disimpan dalam base table page sehingga mengabaikan semua kolorn LONG VAKCHAR. Panjang rata-rata dari semua kolorn LONG VARCHAR \.ang dsimpan dalam table. Nilainya 0 bila tidak ada kolorn LONG VARCHAR.

I GROUPNUM I 1 TABLESCAN

Untuk B+ tree index, ini rnerupakan nomor grup untuk index page Untuk hash index, ini adalah nomor grup dari overflow page Jumlah frekwensi operasi table scan yang lengkap dllakukan terhadap table. Pada saat table atau index digunakan untuk pertanla kallnya. , 1 current setting untuk vanable ini di-load ke rnernoq Var~able 1

i I memory ini htambah setiap kali table scan yang lengkap dilakukan. I

SYSADM.SYSTKGCOLS Table ini mengandung informasi tiap kolom yang dipengaruhi oleh ~rpdate trrgger

Narna kolom Keterangan A

i

I CREATOR I Authorization ID dari pembuat trigger. 1 -A

Kolom ilu dirubah saat cursor t&akhir disconnect darl ~ database. Untuk merubah kolom ini, SQ1,Basc mcnggun:lhan ~ internal cursor. .

1 NAME ; TBSNUM

' I ACTIONTIME

SYSADM.SYSTRIGGERS Table ini mengandung informasi untuk setiap tr lger

Nama kolom Keterangan CREATOR Authorization ID dari pernbuat trigger. -

NAME Nama trigger. ---1 "A

Nama trigger. I

Nornor sen dari tngger table i Apakah trigger didefuuslkan untuk aktif sebelurn atau ssesudall 1

1 1

1 TBSNUM Nomor sen dan tngger table ACTIONTIME

I Apakah trigger didefinisikan aktlf scbcluni arau sesudah , rnodlfikasl. 1

usaha rnodifikas~. I

1 TRIGGEREVENT I Event (INSERT, UPDATE atau DELETE) diniana trigger d~bunt 1 SQ13ase Ilrrrining Material

Copyr~ghr @ 1995. hy PT I'ersodora S)~sret~r~ndo. Jlrk~rrra I

i 1 COLNO Posisi relatif kolom dalam tngger table (rnulai dari 1) ! 7

Page 114: Versa Data Gupta SQLBASE Training Material

I untuk beroperasi. OLDVALUENAME NEWVALUENAME

NLMCOLUMNS r-- Alias (nama lain) table yang mengandung nilai kolom yang lama. Alias (narna lain) table yang mengandung nilai kolom yang baru.

FREQUENCY SYSTEM SPSNLTM

nya 0, yang berarti trigger diaktifkan oleh setiap usaha modifkasi atas salah satu kolom. Nilainya juga 0 untuk trigger yang d i d e h s ~ k a n untuk o~eras i MSERT dan DELETE.

Apakah trigger didehisikan &if untuk setiap baris atau permtah. 'Y' bila system-defined trigger; 'N' bila bukan. Kolom integer yang menunjuk ke nomor seri (SNUM dalam SYSCOMMANDS) dari stored procedure yang dieksekusi oleh trieeer.

SYSADM.SYSUSERAUTH Table ini mengandung level otoritas database dari tiap user.

Nama kolom NAME

RESOURCEAUTH

Keterangan Authorization ID d a r i setiap valid user dikatakan valid bila rnemillki itoritas CONNECT. 'Y' jika user dapat membuat dan menghapus table atau 'G' bila

DBAAUTH

I I melihat yang sesungguhnya, gunakan @DECRYPT.

user adalah SYSADM. Selain dari itu, blank. 'Y' jika user memiliki otoritas DBA, 'G' bila user adalah

PASSWORD

SYSADM.SYSVIEWS Table ini mengandung informasi setiap view.

S Y A ~ A M . Selain dari itu, blank. Password yang diasosiasikan dengan authorization ID. Untuk

Narna koIom NAME

Keterangan Nama view.

CREATOR SEQNO CHECKFLAG

SQLBase Training Material Copyrrghr 0 1995. by PT. Versadara Sysrer~rrndo, Jokarro

Authorization ID dari pembuat view. I I

Nomor urut dari baris yang berisi text dari view. Menunjukkan apakah CHECK option diberikan di penntah

TEXT CREATE VIEW. 'Y' berarti ya, dan 'N' bararti tidak. Text dari perintah CREATE VIEW. Kolom ini memiliki panjang 250 karakter. Jlka panjang perintah CREATE VIEW lebih dari 40 karakter, maka tiap baris berisi sebagian dari text.