versa data gupta sqlbase training material
TRANSCRIPT
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
@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 ®arc
@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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Delete-connected table
SQLUtlse Trt~ining hlaterinl Copyr~ghr @ 1993, by PT. Versodoto Systern~ndo. Jakarta
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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)
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
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
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
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
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
. 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 , , "
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
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
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
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
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
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
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
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
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
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
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
SQLLJuse Training i2.1utericll Copyrrghr B 199.5, by PT l 'rrs~~doro Sysrs~nrndo. Jukr~r ru
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
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
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
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
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
***** 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
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
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
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
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
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,!
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
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
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
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
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
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:
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
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
-
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.
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
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
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
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
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
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
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
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
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
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
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.