SQLBASE TRAINING MATERIAL Table of Contents I. ! 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 2.12. Bind Variable Dasar Relational Database Management (RDBM) Database Administrator (DBA) Relational Database Distributed Processing 3.4. Model Client-Server 3.5. File Server vs Database Server 3.6. Distributed Database 111, Konsep 3.1. 3.2. 3.3. 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.12. Trace 5.13. When SQLError 5.14. While 5.15. Operator 5.16. Static vs Dinamic Procedure 5.17. Penggunaan Procedure 5.18. Fungsi SAL Dalarn SQLBase 5.19. 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. 8.6. 8.7. 8.8. Membuat Read-Only Database Membuat dan Mengatur Partitioned Datat - Reorganize Database 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 10.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 .SQLBase System Catalog Case Study rpis 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~cpdatrdapat mcrubah scjumlah bans data dalanl database, kitn tidak perlu membenkan lokasi baris, forillat penyunpanan dan fonnat pengaksesan data Seiarah SOL h w a y a t SQL dimulai dan sebu'ah rnakalah yyan ditulis oleh E.F. Codd pada tahun 1970. Codd adalah seorang ahli matematika y m g 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~emenuhikebutuhan 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~llDntnbnse 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 ( D O I L I ~ U . S L , 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. Input 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 aadalah. AUDIT MESSAGE START AUDIT STOP AUDIT SQLLJnse Training Material Copyright O 1995, by P1: Versada~aSystenrrndo, 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 CREATE SYNONYM CREATE TABLE CREATE TRIGGER CREATE VIEW LOCK DATABASE REVOKE SET DEFAULT STOGROUP UNLOCK DATABASE 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 dinamakanforeign 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~ghtO 1 9 Y j . by PT Versadata Syslerntndo. Jakarta M o v d~gunakansebaga~cara altemat~funtuk merepresentasrkan data dal'm satulleb~htablc Sebuah vlew dapat mengandung semua/sebaglan kolom dan satulleb~hbase table K ~ t ajuga dapat membuat vlew yang d~dasarkanatas vlcw lam atau kombmas~vlcw dcngan tablc lam V ~ e wdapat d~gunakansepertl 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 telah h ditul~skansecara 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~kanuccrss 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~elaluiperlntah 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~ght8 1995. by Versudura Sysletnrndo. Jakurra Jika data yang diing~nkanadalah 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 b e n ~ p a huruf, angka dan garis bawah 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 . ~ identifier". 7 u. 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 8 Authorization ID Bind Variable 18 I Column Command Correlation I Database Event Index Password Procedure Synonym Table Trigger I 1 View 18 18 18 8 18 18 8 18 18 18 18 18 SQLUaue Troining Material Copyrrghr (D 199$, by P7: Versadara Sysremrndo. Jukorro 1 I , T i ~ Data e (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~pandalant 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 ~ character g 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 yang eku~valen Tipe data DECIMAL (atau DEC) DOUBLE PRECISION INTEGER (atau INT) FLOAT REAL NUMBER 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 edata 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~kanprecrsron terbcsar secara otonlatls 2 DECIMAL (atau DEC) SQLUase rain in^ Material Copyr~ghtO 1995, by PT I'errudala Sysrernrndo. Jakurra 3. 4. 5. 6. 7. ! Default precision & scale adalah 5 & 0, sedangkan h g i t maksm~umyang dapat dis~inpan ialah 15. Tipe data ini digunakan bila user ingin mengontrol preclsron dan scale, misalnya untuk keperluan nilai mata uang. INTEGER (atau INT) Tipe data ini tidak memiliki scale. Panjnrlg rnaksimalnya adalah 10 digit. SMALLINT SMALLINT juga tidak memiliki scale. Panjang maks~malrlyaadalah 5 digit DOUBLE PRECISION Tipe data ini menyimpan nilai double-precision floating poitlr FLOAT Tipe data ini menyimpan nilai d a r ~scmua precrsion dan scale. User dapat member~kan precision dengan format: FLOAT(precision). J ~ k aprecision-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. 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 maks~niumdari SQLBase (15) Precision = maksimunl precision - precision nilai input perta~nn+ scalc nilai Scale pertama - scale nilai input kedua input 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 ts2) Contoh: D 1 DECIMAL( 10,2), D2 DECIMAL( 10,2). J ~ k aD 1 dikali dcngan D2, n ~ a k a . 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 ~ a x (132) s + 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,ll) = 1 1 scale = max(2,2) = 2 I I L SQLBase Training Material Copyr~ghr8 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 N~laisource data type hams dalam bentuk nurnerik ),an2 Numeric I I 1 valid Numeric Character Tanda petik tunma1 tidak diperlukm Datemime Numeric Datflime Numeric Datflime Character Tanda petik tunggal tidak hperlukan Character Datemime Nilai source data type hams dalam bentuk dateltime yang valid 1 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 -) dikejakan sebelum perkalian (*) dan pembagian(/) 3 . Perkalian dan pembagian dikerjakan sebelum penambahan dan pengurangan 4. Operator dalam level yang sama dikerjakan dari kin ke kanan Contoh expression: AMOUNT * TAX (CHECKS.AMOUNT * 10) - PAST DUE HIREDATE + 90 SAL = MAX(B0NUS) SAL + : I SYSDATETIME + 4 SQLBase column arithmetic Nested arithmetic dengan nama kolom Arithmetic column dan constant Function dengan column arithmetic Bind variable dengan column arithmetic . Dateltirne system keyword arithmetic raini in^ Material Copyrrghr O 199J,by PT. Versadara Sysremrndo. Jakorro Search Condition Search condrtron (kondisi pencarian) yang din~ulaidengan 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~caldan pred~cnreadaiah. 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~kutini menghasilkarl karyawan dalarrl departemen 2500: SQL> SELECT * FROM EMP WHERE DEPTNO = 2500; 2. Perintah berikut ini menghasilkan karyawan dalarn departemen 2500 d m n~ulalbekcrja 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!zG01-FEB- 1994'; Predicate h it Pred~cateyang terdapat dalam WHERE atau HAVING menentukan apakah suatu search condtion true, false atau unknown darl menghasilkan sebaris/sejumlah baris dari table Predrcnte rnenggunakan operator, expre~srondan constant untuk n~enentukank o n d ~ s~~a r i g 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. Q u a n h j e d 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~adalahper~ntallSELECT 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; i EXISTS predicate Predicate mi digunakan untuk mengetahul apakah bans-bans tertentut terdapat dalan suatu table. Contoh: SQLBase rain in^ Material Copyr~ghfO 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: Underscore ( ) I memenuhi semua single character Percentage (%) I memenuhi zero atau lebih character Backslash 0) merupakan escape character bagi &,- dan dirinya sendiri. I I 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 ~nfonnasitentang 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~aSysrerrrrndo. Jokorru 1 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 ( @ABS BACOS @?SIN OATAN OATAN2 @,CHAR @CHOOSE @,CODE -@COS RCTERM B,DATE @DATETOCHAR @DATEVALUE @.DAY @,DECIMAL I Jurnlah keseluruhan item Nilai absolut Arcasinus I Arc-sinus Arc-tangen dua kuadrant Arc-tangen empat kuadrant Karakter ASCII untuk desimal Menampilkan satu nilai dari daftar berdasarkan correlation Kode desimal ASCII karakter pertama dari string Cosinus Menggabun~kanpericde untuk menghasilkan nilai yad. Konversi ke date Mengedit nilai date E d t nilai date Hari ke b e r a ~ adari bulan tertentu I NiIai desimal dari string hexadecimal SQLBase Training Material Copyrighf (3 1995, by PT. VersadofoSysfernindo. Jokorfa Math Math [ Math Math Math String Special I String Math Finance Dateltime Dateltime Dateltime Dateltinle Special @DECODE @DECRYPT @EXACT @EXP @,FACTORIAL @FIND @FV @HEX @HOUR @IF @MICROSECOND -- - 1 I 1 String, Specinl Menghas~lkanstnIig darl espresslon yang d ~ b e n k m Melakukan decn pt terhadap pass~vord ( specla1 Membandlngkan dua stnng String Exponcnsial Factorial Math Posisi dalam strlng 1 yang terdapat dalam strlng7 -String F~nxnce Nilai yad. dari sekumpulan pembavaran yang sama String hexadecimal d n r ~nllal dcs~mal Specla1 Jam &lam h a r ~ Datcltln~c Mengecek nilai, nienghasi1ka.n 1 (TRCE) atau 0 Logical (FALSE) Nlla~integer Marh 1 Panjang darl string Str~ng Sort mengunahan hun~pulankarakter ~ntemas~onal Specla1 Algontma natural Math Logarma Math Merubah huluf bcs'ir menjadl huruf kec~l String Nlla~tengall darl sehu~npular~ ~tcm &regarc N~lalmlcro dctlh -Datclt~rnc Menghasllhan strlllg, nlula~ d,~rl p o s ~ skarakter ~ pnda Stnng Menit &lam jam Bulan dalanl tihull tcrtcntu Han pertarna d a r ~bulan tcncntu Tanggal dan ~3.111sch'lrang (current date and tlmc) Menghasilkan str~ng/nurnbcr lang dltunjukkm olch 1 j ~ k ax NULL Nllal PI (3 14 159265) Pembayaran pcr~odlh)ang dlbutuhkan untuk mcmba>ar @QUARTERBEG Konvers~karahtcr pcrtdna d a r ~sctlap kata dalan strlllg ke huruf bcsar d,ui rricnjdirnln sctlap karakter la111dlll,lm huruf kccil Nllal sekarang (present value) darl sekurnpulan pembayarm yang sama Nilal yang n ~ c ~ \ a l \cjuartzr ~lr (per~odc3 bulannn) Han pertruncl d a r ~quarter Datcltlnlu Datclt~rnc Strung blath Flnnncc Str~ng Finance Datclt~rnc Date/t~mc M e n g g a b u ~ ~ g k ~ n s str~ng u ~ t u dalarn dlr111qa s c ~ ~ dil~r ~~ ~ t i lSht r ~ ~ l g beberapa kall M e n ~ a n t ~ k akarakter n dalrurl strmg Urutan stnng d a r ~scbcldl kanan Membulatkan nllai Math Mencar~strlng berdasarkan pattern SQLBase Trmining Mufericrl Copyr~ghtO 1995 b) PT I'er~odotoSj:)srutnrnJoJohurr.~ -- I I @SECOND ,@SIN @SLN OSQRT 1 I @STRING I OSUBSTRlNG (qSYD @TAN Iri2TERM @TIME t4TIMEVALUE mTRIM , @UPPER @VALUE '3WEEKBEG @WEEKDAY @YEAR @YEARBEG I @YEARNO I Detik dalam menit I D;lte/t~nic Sinus Straight-l~nedepreciation Akar I I Konversi nunibcr kc string I Menghasilkan scbngl;ul string I 1 Strin~ 1 String 1 F~nancc Sum-of-the-Year's Dlglt Depreclat~on Tangen Jumlah ~ e r l o d cvc~nbavaranuntuk suatu ~ n v c s t a s ~ Menghasilkan n ~ l adateltlnie ~ darl jam, menlt, d e t ~ k Menghasllkan n ~ l adatelt~nie ~ dengan HH MM SS [AM atau PM] Menghilangkan blanklspace yang terdapat dalam stnng Meru bah huruf kec~lrncrljadl huruf besar Konversl stnng karnkter dengan dlglt ke number Harl Sen~nd a r ~satu m111n~u Hari tertentu dari satu rninggu Tahun ke berapa, dihitung dan 1900 H a n ~ertarnadan satu tahun --I hlath f-~nancc Date/trmz Datc/tlr~ic Strlrlg Strlllg St1 lrlg Dateltlrnc Date/t~~nc Datelt~nie Dntcltimc ( Datelt~riic ( Tahun kalender Dateltime memiliki system keyword scncilr~.Hzrikut SYSDATETIME CURRENT TIMESTAMP CURRENT DATETIME SYSDATE CURRENT DATE Math F~nancc Math 1111 nierupakan tablc s!,stcni kcy\s~ordd a r ~ Keteransan Current date and tirnc Current date Current time CURRENT TIME SYSTIMEZONE CURRENT TIMEZONE MICROSECOND[S] Interval tunezone dalam hari Contoh: SYSTIMEZONE= 025 bcrarti 6 j~un 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~ininghJc~terirrl Cop)~rrghrO 1995, byP7' I.'ersudura Syrrr~trindo,Jukurru I Perhat~kanlahbahwa jika k ~ t amcnruiit);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).csrc1t7sbb DATE + Junllah DAYS Sebagal contoh, expressron berikut 1111 r~iulgliasilkiu~ nila~DATE'I'IME !.:ulg baru SYSDATETIME + 3 MINUTES nlnka ll~lnl>;ulg diber~kandiasunlslkari scbagai 0:I)'S ( ' O I I I L ~ I I Jika interval tidak discbutk:~~, bcnkut In] mcncunbah 1 hari darl i.zirrc>rrrt 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 aatau i dikurnrlgknrl dun luml;~li DATE atau DATETTIME Benar. (SYSDATE -t 3 I I A J . 5 ) 1 \'EAR Salah: SYSDATE t. (3 DAYS . I YEAR) 2 . Pada saat MONTH ditambah. niln~bulnrl ( d i n j ~ k arnungkln 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 tics~~~lrll 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~ntahbcr i h c ~ r In]. SQLB SELECT DISTINC'I' SYSI).-\'l'LTTIME. SYSDATETIME I 5 "L1ON.I'HS FRO.Z1 SYSTABLES 7 - + DateRirne Express~on 3 1-Jan-1993 + 1 MONTH 20-Jan- 1993 + 1 MONTH 3 1-Jan- 1993 + 1 MONTH - I MONTH Rcsult .. -- 28-Feb-1993 20-Fcb- 1993 -.-- -- --- - Opcras~join 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 CUSTNO 1 2 3 - Y .AhlE ADDRESS .- .. . . .- . 13 A St 1 B St 12 C St ABC INC S Y % [NC' A l IhC' Tablc ORDERS ORDERYO 300 1 3002 ORDERDATF. 0 I -J U1,-94 03-JUL-94 SL)I,JJII.\L~ lrriining Iklrirericil Copyr~ghl@ 19%>,h\, I > / I ' t , r s [ ~ [ l.<\ y~~/ /(e~~ r ~ ~ n. I d( JuK,u ~ ~ ( I i S.AIJl:S 12tt' Jill Jill . -- - - -- Untuk menemukan narna dan nomor ordcr >.angdibuat 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,/ort7scbagai bcrikut: 1 Equ~join 2 Outer j o ~ n 3 Selfjo~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~hubungkandcngan CUSTOMER rnclalu~kolorn C:US'I.?-0 yang terdapat di kedua table T ~ p c.stli7rch condrnon yang rnenghu bunglian du;i tab lc berdasarkan persarnaan (equnlrr~t)seperti in1 discbut eyirrjoin. Curresiun Product Corre.rlcrn product adalah kumpulan dari scniua b a r ~ spang mungk~ndihas~lkand 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 aCUSTOMER memiliki 100 baris dan ORDERS 500 bans, n ~ a k aL C I I . [ C ~ . S I I I ~~I ! ~ . o L ~ ;II ~ L . 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&& ALIId ~ t ; l ~ i l l ) ~ l h ; ~ 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~nvarlull. Hasilnya adalah scmun barls dal;lm satu table tanpa memperdulikan s p ~ k a hbaris 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 . CLISTNO(+); Selfjoin S t y jorn mcnghubungkan su;ltil tablc dc~iga~l diri11>as e n d ~ r ~scpert~ , dua table > , ~ n ghCibii1.1 Untuk melakukan ha1 mi, berlhut nanla ~orrc~iirrrotl untuk table y a i g akan d~-\clf-!c~l~i I ; 1 Contoh bcr~kut1n1menanlpllkan scmu,i tu1ggal yang r i ~ e n l ~ lcb~h l ~ k ~d n r ~sntu order 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~cnghubungkansuatu tablc dcngln table laiiu~yaberdasarkan pcrb~1~I11lgu1, buha11 persanlaan Seniua operator relat~onaldapat 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~nkanfas~litasrectirslve Illput d a r ~satu query dapat m c q a d ~output bag1 qucrL la~nnya Suatu query dapat d~gabungkarldcli~nnqucn lalnnya Nestcd quer: scpert~1111 dlsebut sebaga~sltbq~tery/sztbselecr Suhy~rcrymcrupnhan per~ntahSELECT ) nng t e r d ~ rdari ~ bcbcrnpn level ORDER BY dan LONG VARCHAK t~d'lkdrlpat d~gunakandala1-n kasus 1111 Untuk ~txnarnpilkansernua order yang lerjadl dalam tanggal ilomor customer 2: sarnn dcngnn ordcr d a r ~ SQL> SELECT ORDERNO, ORDERDATE FROM ORDERS WHERE ORDERDATE=(SELECT ORDERDATE FROM ORDERS WHERE CUSTNO=2). Pertanla sekal~,tanggal order ddri noirlor custonler 2 dlanlb~ldan nllal 1111 dlgurlakatl untuh menyelesa~kansearch condrrron darl morrLozirer query Dalam contoh dl atas, s u b q u e r ~ 1111 d~eksekus~ sekal~untuk mendapatkan suatu nllal yang d~gunakanoleh main quety Dalam perintah SELECT berikutnya, >,ru~g d~scbutsebagal 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~onSystem) terdir~dari fungsi-fungs~b e r l a ~ n m> , x ~ saling g 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~stransaksi 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 y m g 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 ~ e w ,looding, convcrrlng, dnn unloading data 10. Menjamin data a~allablllty, 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 kSebagai contoh, kumpulan kelinci p u t ~ hadal,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 Set Theory Conventional Data Process~ng Table Relat~on File / Data Set Row Tuple Record Column [ Attr~butc/ Domarn Field 1 I 1 I Relational database nlengurangl rcdundansr data Hal rnl &an mcmbcr~kant ~ g akeuntungan SQLUase Training Muterial Copyrlghr 8 199>, by 1'7' Versadocl(i~ S y s ~ e ~ t ~ r nJokorru do. 1 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 l e b h 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~hkolom 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~embenkangambaran 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~asilpcmrosesan kernbali kepada clienr SQLUase Training Moterial Copyrrghr 0 1993. by P7' i/~.rsudu~u Syslrrrrrndo. Jukurru Client C l ~ e n t~ F J j -( ;;;////---4 / Server / LAN Dl 7 4&2i Y~ client Data base Server Clien - 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 Network + Database Serve (Multi-user) Communication Library Front-en Back-en Ganlbar 3.2 Cooperative Processing SQLUase Truining Material Copyrrghr @ 1995, by PT ~ e r s a d o t oSyrte,~lndo.Jokarru D~stributedDatabase S o f i a r e darabase term mengalam1 evolus~.Pertarna sekali, sofiwnre dambnsr bersrfat monolithic dan terdapat d~ komputer besar yang d~hubungkanke 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) I 1 Dumb Termina L -- I -- 1 Dumb Termina I 1 ..p--.--pp~~d. Gambar 3 . 3 P e m ~ u l ~ aEvolusi n Software Databasc Evolusi ini terus berlangsung dm pada saat mi, komponen clienr dari software dclrahclsr dipindahkan ke PC clan LAN, sedangkan lio~llponcnserver tetap berada di dotobase sewer. -- Clientj ! Gambar 3.4 Databasc scrver dm client dalam LAN i Keuntungan dari distributed databasc adalnh 1. Location Independence Lokasi dari aplikasi client tidak tergmtung kepada lokasi dan data 2. Locaf~ on Transparency SQLBase Training Material Copyrrghr cD 1995, by PT Versadara Sysrernrndo. Jakarta 3. 4. 5. 6. 7. 8. User dapat mengakses database tanpa pcrlu mengetahui lokasl data, selaln ~ t u ,database dapat dipindahkan tanpa mernpengaruh~user 1 aplikasl Incremental application growth Aplikasi dapat di-upgrade dengan mel~arnballkanclient-client lain atau dcngnn rncmbcl~ database server baru yang leb~hcarlggih Sire autonomy Setiap database dapat di-maintain secara terpisah satu dengan lainnya Data dapat didistribusikan d m diproteksi urltuk mernenuhl kebutuhru~ tiap dcpartcrncr~ secara spesifik Hardware a n d Sofrware Independen~.r Perangkat keras dan perangkat lunak yculg dipaka1 dapat berasal darl vendor yang berbeda dan dapat dsesuaikan sesual dengan kcbutuhan aplikasi. Distributed processing Proses dan media penyimpanan data dapat didistribusikan ke beberapa komputcr Meningkatkan a v a i l a b i l ~ ~dan y rel~abrlr(~r Bila database server-nya down, hmya client prig connect ke database tersebut terpengaruh, namun PC lainnya tetap a m m 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) lO/l/93,NULL); VALUES (400,'LIENA',50,'Engl~ieer', 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-1yang 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 struktur dan data sbb: Table OFFICES OFFICE 20 40 10 30 CITY San Frans~sco New York Los Angelcs Chicago Table ENGINEERS I EMP-NUM I 1 100 104 107 102 101 106 105 103 108 109 110 11 1 1 Paul Atkins Rob Smith Murray Rochester Lam, Sanchez Sheila Brown Sam Valdez Rob Jones Anna Rice Mary Adams Nancy Bonet k c h a r d Park Dan Chester kita rnemerlukan suatu databasc yang mern11ik.l REGION il.'cstern Eastern Western M~dwest 1 NAME 1111, I REPOFFICE 10 20 30 10 10 30 20 20 40 40 40 40 I 1 MGR 103 108 100 106 TITLE Manager Sen Enginexr Sen. Engineer Sen. Eneineer En~inccr Manager Engineer Manager Manager Sen. Engineer Engineer Eneineer SQLBcrse Trcrining Mnterinl Copyrrghr O 1995 b ) 1'7 I krhodaicr Sysrert~rndo,Jokurro MAJ ACCOUNT 1050 2500 -3000 100 1 1 HIRE I MANAGER DATE 1988-02-12 1992-09-05 103 1991-01-25 106 1 1989-06-1 2 1 100 I 1990- 10- 10 100 1990-04-20 199 1-09-08 103 1985-07-10 1 1988-08- 10 1989-1 1-12 108 1990-1 1-14 108 1987-03-22 11 1 Table CUSTOMERS CUST NUM 1000 2500 1001 1050 2000 3000 1 COh1PANY Acme Camera Photo- l Shop Best Photography Johnson's Canicra Company Sue's Familt Photo 1-Hour Ouick Photo Table SERV CALLS CALL-NUM CALL-DAT E 2133 1994-05- 10 6253 1 1994-05-02 1994-05-09 7111 4250 1994-05-14 Table PRODUCTS MFR ID ACR ACR MRP 1 LMA LMA LMA MRP MRP CUST 1000 1 3000 100 1 1050 REP 1 10 1 102 106 105 1 ACK LMA MRP M RP 10 1 102 101 4211 43 10 45 16 600 60 1 24c WRS CREDlT L1\1IT 5000 3000 1000 8050 5000 I 3OOO MFR PRODUCI' ID 1 I SERV REP 101 110 106 105 103 102 PRODUC71' 102 14516 600 600 1 DESCKIP'~I0N I Trrpod Tr1pod2 Long Pu~.glr: Lens Autornat~cCamera Regular Focus 1 Regular Focus 2 Lcns Shutter Widget 1 RI merupakan salah satu fasilitas SQLUasc >.u~ngsangat penting. K1 nleIijuiiu1 integrltas dar) validasi data pada level database. M~salkunjiks k i n telah member~kanketentuan 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 at~dakpcrlu mcnul~sapl~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~ghl0 1995. by P7'. Versodoto Systemtndo, Jokarta I 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 ~ , boleh a meniiliL~ satu PK. Suatu table munglun memlliki lcbih darr sntu ~denrlfieryang bcrpoterlsi nicnjadi P K . S c t ~ a p kolom yang berpotensi menjad PK d~scbutI.'crnu'idare key. PK b~asanyadipilih d a r ~salah satu candidate key tersebut. Candidore key yuig tidak terpilih disebut nlrernn/e key, C L I ~ ~ ~kc). I~LI[C 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 asa 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(, nila~dan PK tersebut harus tetapiperrnx~en dan tidak dapat drubah. Sebagai contoh, koloni MGK atau CITY dalarn table OFFICES a Tetapi apabila kantor baru d~tarnbah dapat menjad kanddat PK karena n ~ l a ~ n yunik. 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 gme~nilduPK 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~kolonikolom 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~dakdapat 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 kolomkolom PK tersebut, h d e x ini disebut scbaga~prrmary index. Setiap table ha.nj,a boleh nlcmil~k~ satu primaty index. Jlka satu table rnen~ilikilebih 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~katable 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 r n c r n ~ l ~PK k~ 1 Buat table dengan perintah CREATE TABLE 2 Buat unique index dengan pemtah CREATE UNIQUE INDEX PRlMARI' 3. Rubah table untuk menambahkan P K dcngan pcrlntah ALTER TABLE 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 d i b c r ~ k a ~pad2 i 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 >,angsnnis. 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 C o p y r ~ g hO f 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. Operas1join lazim dilakukan antara P K d a r ~opcrasi ini dapat meningkat FL dan dcngan membuat indcs untuk FK, kincrja 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~tekey 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 nila NULL. Hal lIllberart~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 oSysrerrrrndo.Jokurto Table SERV CALLS CALL-NUM CALL-DAT CUST - 8000 1 1993-09-04 1 MFR ID WRS WRS Table PRODUCT 2000 I PRODUC:?' 1 i 24, 25, REP 1 ID 103 MFR I / WRS 1 DESCRIP.I'ION 1 Wideet 2 PRODUCT I I -4 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>'atidak akan terjadi karena t ~ d a kada FK >,ang memenuhi PK. INSEftT sroternent Dcngan mempertimbmgkan RI, SQLBasc akrul monganggap baris data >.an2 NUl,L,lno~lNULL sebagai NULL. Jika suatu bans d i m g a p sebagai NULL, SQLBase tidnk &an mengecek RI-nya lagi setiap kali per~ntallINSEKT dllakukan. In1 artllllza SQLDasr: t ~ d a kaknn mengecek nilai kolom FK yang non-NU1.L untuk n~elihatapakah nilai tersebut cocok dcngar~ nilai dalam parenf mble. Parenuchild Table Table yang menlilikl PK adalah poret~r PK dan FK menggarnbarkan hubungm i~cir~.nr,child. 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 id~sebut sebagai independent table. Parenuchild Row Satu bans dalam parenf fable yang nlcr~jadlacuan dan bans lam dalrtin ~ h r l droble d~scbur sebagal parent row. Sedangkan bans l u g niengacu ke pcrrerlt row adalah child rorr Cllrl~i row hams mem~likipaling sed~kltscltu kolom FK lang tldak NULL Tidak semua bans dalam parenf rable harus menjadi pnrenl row dalanl ani tldak ad3 raw yang mengacu ke baris tersebut. Contohnya ialali suatu bans di table PIIODUCI'S descrpfion-nya 'Autornmatic Camera' tidak nlenjadi acuarl dari baris mannpun dalam SERV-CALLS. Sama haInya bila baris tcrtcritu di child [able mengandung nila~NULL FK-nya, maka bans tersebut bukan child row cl7110 l.allg tablc padn Delete-connected table SQLUtlse Trt~ininghlaterinl Copyr~ghr@ 1993, by PT. Versodoto Systern~ndo.Jakarta Blla menghapus satu baris dalanl satu tablc mempengaruh~table y m g 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[ d m grandparent, atau grandparent dengan grrargrandparent-nya adalah CASCADE. I 1 Table I great-grantparent table CASCADE grandparent table I CASCADE Table 1 I I I I! ! I i 1 parent 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 ~ b u a dengan t CREATE TABLL, gunakan pcrlntah ber~kutIn1 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~igkahin1 harus ~ir~~ dilakukan segera setelah table selesai dibuat Szbagai contoh, untuk menibuat. y r ~ n ~ ir7dt's untuk table OFFICES, gunakan perlntah berikut. SQL> CREATE UNIQUE INDEX 0FFIC:E-IDX ON OFFICES (OFFICE); J ~ k alnfornlasr database dl-load dengall perlntah LOAD, lndcs harus d~buatsctelall lotrci selesa~supaya klneqa tidak terganggu l ~ k prrtrrrrry a key d~tan~bahkan sctclah ALTER TABLE unlque ~ n d e xhams 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) I lnfonnasi 1:k cinr~ tablc-table, mlsalnya c,onxrrcitn/ t l i r t l i L ' . Lnlor11 Table I ~ mengandung d a r ~FK danparent table yang nlerljadi scum SQL> SELECT *FROM SYSFKCONS'I'RAINTS WHERE l\IAME='SEKV CALL.,S'. 2. SYSADM.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 ~ Id~ Ia[ 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~ghlO 1995. h~ P7' I'eruuiii~l~rSyslt'n~rndo.Jariclr.r,i INSERT SQLBase akan menerapkan ketentum bbcrlkut b ~ l adata dl-rn~errke dalam tablc ~ , a i m g cm~llh~ satu atau lebih FK. 1 Setlap nilai non-null yang d l - ~ n ~ ekc r t dalam kolom FK harus sesunl dengnn snlah sat11 nllal dalam PK 2 J ~ k asalah satu kolom dalam FK null, SQLBase akan men~perlakukalseluruh FK sebaga~ null SQLBase t ~ d a klag1 melakukan referent101 check atas perlntah lNSERT urltuk FK yang mlainya null. rnble 3 Operas1 INSERT tldak dapat dilahukan terhadap parent atau chrld table b ~ l a/)~~rt'nl bcrada dalarn ~ncompletesrnre (rn~snlhnnprlmory key rndex-nya dl-drop) Data dapat di-~nsertlie dalarn ynrenr cnhle setlap saat tanpa rnempcngaruhl ch~lcilablc> Contohnya, kita dapat menambah kantor baru ke table OFFICES tar~pamcnipcngaruhl 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~hdl11I 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 I Ketentuan DELETE dapat d~berlakukan terhadap setlap relas~ parenr chlld Kctcntuan DELETE mengatur apa yang hams SQLBase lakukan jlka user berusaha menghapus scbar~s data dan parent table. Ada 3 kctentuan DELETE yang berlaku R E S T N C T , 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~i1i1lai NULL. Contohnya, bila seorang kag-a~vankcluar d a r ~perusatlaan, semila panggilan scrvls pelanggan yang ditangani oleh haryacin !lbs, menjadi tangung-ja~vabkan.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~lkolon~FK memperbolehkan nil31 11~111 DROP Jika satu table dhapus (drop), maka PK dim FK-n)a oromatis terhapus. J ~ k aprrrc.nr t~lblt';it.a~~ PK-nya dhapus, rejirenrial c u n s r m ~ n r - n ~juga i ~ tcrliapus. Jika hi& ALTER atas parct~rcia11 child rnhle dinliliki, PK dapat dihapus. Scbuga~contoh perintah berikut 1111 111c1ighap11sPK diir.~ table OFFICES dan relasi pnrenr/child dcngan table ENGINEERS, SQL> ALTER TABLE OFFICES DROP PRIMARY KEY; Menghapus PK tidak menghapus yrrrn~-rry~ t i d r s .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 ~ aperlu dlbuat unique index yang lain ntas kolom PK ybs, lir/l.rc.n[7nl cons[roin/ tc'tap berlaku ~valaupunprimary index dihapus. Untuk nncnghapus FK, user h a n ~ smcm~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 111ln1data, muka perintah In1 t ~ d a kdipc~igaruh~ olcli RI. Siklus dari Dependent table 1 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~uabans dalam table ENGINEERS hams mengacu ke salah satu baris di table OFFICES, \.,an! mengacu lagi ke table ENGINEERS d m sctcrusnya. Contoh in1 n~cniiiijukkans ~ k l u sd n r ~du:i table. Siklus yang terjadi bisa mclibatkiui I z b ~ dl ~a r ~dun table Table ENGINEERS EMPL NUM 1 NAME I REP OFFICE I 100 104 107 102 101 106 I I PK Paul Atkins Bob Smith Murray Rochester Larrv Sanchez Sheila B r o ~ n Sam Valdez 1 1 10 20 30 10 10 30 , OFFICE 20 40 10 30 Table OFFICES crn San Fransisco New York Los Angcles Chicago - 103 1O X 100 106 FK MGR - - 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 ascbnrls dnt,l d~liapus dengan ketentuan DELETE yang berbcdn SQLUrrse Trllining Materiul Copyrfghr W 1995. by P T ~ e r s o d o r oSysrertrrndo. Jokorro Diagram benkut menunjukkan relasi antar table j k a setiap FK dbuat dengan ketentuan DELETE RESTRICT. OFFICES OFFICE MAJ ACCCOUNT 3000 10 ENGINEERS EMPL N U M 1 CUSTOMER CUST NUM t k / REP OFFICE , I / ' 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, p n ~ h tersebut (atau path terakhir) hams rnen~ilikiketentuan DELETE yang sama, d,m tidnk dapat menggunakan SET NULL. ! i 1 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: SQLBase Trrzining Material Copyrrghl 0 1995, by PT Versadato Sysretnrndo.Jakarta 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 TABLE 2 C a s ad TABLE 3 I '4 1, TABLE 1 i Stru ktur 2 Struktur 1 I ! Garnbar 4.2 Struktur cl~llere-connectedyang valid Struktur pertama mengganlbarkan struktur rcfcrenr~alyang valid dengall tlclrlc-connrcreci table. S t r u h r kedua juga rnemil~ki d~>it.rtj-connecrionyang valid. Dalani t ~ a p struktur, TABLE 1 niemiliki ketentuan DELE'I'E !.ang samn, d m 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 DATABASE REORGANIZE 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 dalam kondisi pctidlrl~ -nrau ada tablc yang sedans mclakukan penpcceknii R I 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 - -- V. Procedure, Trigger dan Event SQLBase Procedure SQLBase Procedure adalah sekumpulan SQLWlndows Applicahon Language (SAL) dan perintah SQL yang diberikan suatu nanla, dl-comp~ledan secara opt~onaldlsilnpan 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~ceduredi-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 /~roceditrcrllogic 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~ntihSQL y;~11g S C ~ I I Id~~ g i ~ ~ ~ ; id;il;i111 k;i~i 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 log~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~ledengan AL'I'EK COMMAND Perbedaan lainnya ialah prograrrl yang mcmangg~lstored procedure t ~ d a kdapat 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 clueinsensitive. 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~cncrimaoutput dari proccdure. Bagla1 In1 optional, artinya tidak hams ada parameter di setiap procedure. Pada saat procedure dieksekusi, user hams m e n y d a k a n 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 o l t r i ~ u r 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~gunakansecara kons~stensebaga~output, user dapat menggunakan tanda koma (,) tanpa spas1 sebagal place holder. Array t ~ d a kdapat digunakan sebagai parameter. i 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 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 sjntas parameter. Data Type [:I LocalVariablcNanc Bagian ini mengandung perlntah 4.ang hsrus d~zksekusitergantung levcl dari proccdurc Sclaln itu, juga niengandung logic jlon' lnngzlc~,g~* y r i g mcngontrol urutan peiigcksekus~alipcrlritah User tidak dapat memasukkan user-dqf;ne>cljitnction 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 - Sql Handle Datemime none 0 null string I .- 1iSqlCur 1 dtStartDatc - Hanya ulltuk local var~ablc __I s (atau) srr Standard system constant yang dapnt d ~ g u n A a nialdl: 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.1hlEOUT, 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 ~lcrtotjy)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 I i Perintah SAL digunakan untuk mengontrol aliran logic dalam procedure menyediakan fasilitas SAL berikut mr. 1. Break 2. Call 3 . If, Else dan Else If 4 Loop 5. On 6. Return 7. Set 8. When SqlError 9. While SQLBase Break Perintah ini r n e n g h r i Loop. Fasilitas irli 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~onlFALSE,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 mengidentifikasikan loop yang tepat sebelum menjalankan BREAK. If NOT SqlExecute (hSqlCur) SQLBusr Truining Muteriul Copyright Q 1993, by PT Versadata Systernrndo. Jakarta user untuk 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 ~ l ahanya 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~berikannlla~ 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 i g 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~cpmaupun Procedure Execute. Penntah eksekus~berlkutnya dan program pemanggll hanya memproses Procedure Execute saja, jadl Procedure Srclrttip t~dakd~proseslag1 SQLBase Ziuining Muteriul Copyright O 1995. by P7' Versadoru Systemrndo. Jakorro Procedure Execute Suatu procedure disebut berada dalam tdlnp procedztre execlttc bila kcdua Ia~lgkahdl 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~ntahexecure. Procedure Fetch J ~ k aprogram pemangg~l n1en~a~ank;ul pcr~ntahjerch dan tcrdapat bag~anProcedure 1;rrch dalam procedure, maka per~ntah-penntahdalanl Procedttre Ferch tersebut d~prosesProc5cdltrc 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~bcrikannilai 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~lahoutput variable hams didcklarasikan sebanyak junllah item yang dlhasilkan. Procedure Close Pada saat program pemanggd n~enjalartkanpcrintah d~sconnecratau penntah laln dl-c.ornplit' dengan cursor yang juga digunaka~luntuk mcngcksckus~suatu procedure, 1'ro~'t~~I~lrt' ('/u\c, drjalankan. Contoh procedure dengan ON PROC'EI)Lif?E Table sang digunakan oleh proccdurc bcr~hutadnlah 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 E I Contoh berikut prepare, execute, dan fetch has11d a r ~procedure GULST-WTPROC SQL> PREPARE PROCEDURE GUEST-WTPROC' Parameters Strlng sName Rccc~veNumber nWc~ght Local Var~ables Sql Handle hSqlCur I S t r ~ n gsSelect Number nInd Act~ons On Procedure Startup Call SqlConnect (hSqCur 1) Set sSelect='Select WEIGHT from GUEST-WT where NAME=:sName into :nWeightl Call SqlPrepare(hSq1Cur1, sSelect) On Procedure Execute 2 Call SqlExecute(hSq1Cur1) On Procedure Fetch 3 If NOT SqlFetchNext(hSq1Cur1, nlnd) Return 1 Else Return 0 On Procedure Close Call SqlDisconnect(hSq1Cur1); 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, perintahperintah 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 at;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 h berada di bagian Action. default-nya ke On Procedure Execute untuk semua p e ~ t a yang 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 d m 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'rrrinirlgMutrriul Copyrrghr O 1995. by PT Versacl~lraSysre~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 Set nDays = nDays + 1 Return 0 + 10 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~trrndieksekusi 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(hSq1Cur1, 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 singleuser engine. Biasanya user mengirunkan output-nya ke server dengan perintah SQLTalk SET TRACEFILE. Syntax: Trace variablel, variable2, ..., variableN I 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 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 S c l l E r ~ ri!;il;lm ~ o ~ p~~oLcclurc aka11 I ~ ~ L ~ I ~ ~ L ~ I I I ~ ~~. I\ ~~ I r~ ::.!07 o, , rI I ~ ( ( ' o I ~ ~ I I ~ ; I I I ,I ~I , ~ I , '\i , ,,,, '1::1iI : . '1, I,,,:I!L \,I: L i ; l l l l l l c l l l l > L ~ r ~ l > ~ l rl lL1 l; l ~ : l I : ~ l l 1111 . l ' l < . \ Y l : \{ l , l ( ; t 1 I (11' K , ' I i l l ~ I < O ( ' l : l ~ l < l (;\\ P I < ( ) ( <()I 5()1 , l);11 , 1 1 1 1 L ~ l ~\~ 1 \ I 1 Ill>, .\Llll,L l < , ~ L ~ L ~,,l \ ~ l l l l l l ~ , ~!!\i l Lli!til l.oc.11 \ ' ; 1 1 1 , 1 1 1 i L ' \ icil I I , I I I C ! I C I I S ~ (11. ~ II ( \lllI1I~L.l 11111~1 \ l l l l l l \ ~ ~ ! 11t : ' j <~[l ,,, !I ~ , i \ I ! 1 Ifl l ( . l l bill l , , l . l 111 Si.[ l l l < C < ! ! 11. III<LCI - .:(I7 ( ,111 h L i ~ . i ~ o ; (LI , ; ,, \clL,c.i \\ I I t ! ! I ( ;ill SqI(. O ! ! , . :,I I t '.ill ( ,II I U l l l t < ~ , t l ~ rI nli1 I \I I,,\.:< ,\ 1 1I '\ . iI 1 I ,Ii 3 1: t , . \ t \t . i!",s I ~ L ~ I C ' O I I I I C C t~1( 5 < ! 1 ( ) l l l ' l - , ~ L ~ L ~ ( j l l l - tL ~\ C C t l I C I ) I ! 1'1 L : L I L I I L , !!I , , ; 11 ,\\I,I;, I l \ i ! 5 ~ ~ l I ~ \ i ~ i l l t c ( i 1 5 , i 1 i :: \ ( ) I ' l~'L>l~ll bl]lf.<lCll\, l Z c , l 1 1 1 11 ~ , + l ' , , 1 lictlll-11 1 \\ I , L I \ ~ j l ~ < L * I II L , L C ~ I ~ . \ ~ ~ ' ( ( 1 01 I 10 :I i - I r 1 1 1 1 ' 1 , ~ ~ . c , d (~' I O~ \ Lr , c ,!I! ~ c j l l ~ l , ~ ! ~ l l l l L ~, .L\ ~ ! l I ) ( 11 !-\(~Ksot',.~ I : 111',!11 ,111 ; > I . , ) , . L , ( . ~ ~ I I . L ~~ I I II J c ~ , lIi t i l I / t 7 1" 2 "!.>I - l,,!:iL,k,l I1L,l l l l ! . ~ ! l - ~ ~ L! ~: lI l ~ l I l ~ l . l l ~ 1 1 1 1 ~ ~ C I I ~ C ~,!> C L ~ I \ ) > i ll \ll l ,-g!c~k~ld , f , 11l~'-tc\ ,t < '>( j; [ i j ' ~ ,.!.( >/ , t ~ ~~ !. , i ! ~ ~ l i , , r I 11L.i b ( ) l g i , L i ) ~ t ~ ',,!.:, ,I1 ,i J'I O"." .;):., .:\ \ J , CI1 0 1 , I , : , i k~ ., I;ii~i ill! : , P,II :, I I l 1 l l l f . I l l t I I I ! I I ! !. ~ l ~ ~ l l \ t~l L ,. \ il, \ l ~ '! ,' ' , ' I,,, ' s ~ ' / l L t \l I ~< ~ [ t ' / i t i j , , ,. . , ' I , ," . . : . :. ~ ~ L ~ I ~ ! ~, I !~; ~ I I I <~ [ ~ ! I ~, , : I ~ I ;Ill1 ~ ~ ~ l ~ l ~ l l I ~ l \ P C I . I I I I ~1I1 1~1 I c ~ k ; l~ : I~S ; I~I L~,~ f,;!l !, I I ~ L . I I I ; ~,SqI/it .l!l ) I ! I 1 , ; r .. . , I - . , ';\ !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. 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= Relational: sama dengnn, t~daksama dengan AND 1 I -. -- 7 ' ... .- ,- - : - ' ; I 1 1 Boolean NOT Boolean AND Boolean OR I Stat~cvs Dynarnlc Procedure Suatu procedure dapat berupa statlc mnupun dynam~c Default-n,'a adalah Perbedaannya dltunjukkan oleh table berlhut In1 Fasllltas Perlu dl-store dulu sebelum di-execute') Parselprecompile procedural logic') Ya Parse SQL pada saat dl-store? Tld'ak Precompile SQL pada saat di-store') Mendukung djnamlc SQL? Leb~hLaubat D~gunakanbersama Trigger dan Event? SQLBuse i'iuirrirrg Muterial Capyrrghl O 1995, by PI: Versadata Sysre~t~indo. Jukarru dynm~~c Ya Ya Leb~hCepat 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 ~ ~jll~zr~ ~ U ~ ~~ a n g d~hasllkand~slrnpandalam 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~abledi luar bind atau INTO varlablc Contoh 1 SqlPrcpare (cur, 'select * from emplo).cc') Contoh 2: Select Coll, Co12 from sysadn~.TableI ~ n t o:Out 1, :Out2 Dynunzic procedure Dynamic procedure dapat rnengandur~gpcrintah 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~cstorcd procedure t ~ d a kd~-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 11 sColunuls // 'from sysadn~.Tablelinto :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~rekcmudla11 Pada saat procedure d ~ b u a tdengan pcr~nt~lll PROCEDURE, user dapat menentukarl apnkah procedure tersebut srrrrrc ataii ~/~,riilrnrcPndn 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 1 3 i Per~ntahPKOCEDURE secara otonlatIs mcng-cumnprle d m rneng-cxrc~rtcproccdurc. 0sc1JLI_C;I dapat nienggunakan perintah SQLTalk PREPARE atnu RETRIEVE bersama-snma Jcng:111 PERFORM untuk melakukan conrj~ilrt2.tt1i,llrelztau rrtrrrve.rxtJc1rte procedurc !';ulg ci11nglnk:\11 dalan dua langkah yang berbeda. Untuk mclcFkukan retrlrve d m execute dalaln satu langkall. 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 W D-PROC; Untuk membenkan hak kepada user lam dalam menggunakan stored proccdurc, gunakaran GRANT EXECUTE Sedangkan untuk nlencabut kembali hak yang d ~ b e r ~ k a ngunakan , REVOKE EXECUTE Fungsi SAL dalam SQLBase 1 Benkut ml daftar fungs~SQLWlndoibs irulg dapat d~gunakandalam procedure Fungs~SQLWlndows Keterangan i SqlClearInlrnediate Disconnect Sql Hiuidle vang digunakan olch Sqllnunediat~. ---Ii SqlClose Mengakhiri cursor SqlComm~t Commit trruls;&si SQL \.ang sedang berlangsun~ . . ... SqlConnect Connect Sql Handle ke database --. ..- -.-SqlDisconnect Disconnect Sql Haindle dari database ------ ~ - -1 SqlDropStoredCmd 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 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 I SqlFetchRow Fetch baris tertcntu dari result sct SqlGetErrorPosition Mendapatkan offsct dari suatu kcsalahan dalarn pcr~ntahSQL 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 -, I Mengemballkan nomor bans dalam result set SqlGetResultSetCount A SqlGetRollbackFlag Mengemballkan database rollback flag -- 1 SqlIrnmediate I Con~piledan csccutc pcrintah SQL -.- Mernbuat sunti1 cursor dan mengekschus~pcrintnh SQL Compile penntah SQL atau non-stored procedure untuk dlckschus~ SqlPrepareAndExecute Compile d m e\ccutc pcr~ntahSQL atau non-storcd proccdurc -. Retr~evestored command atau stored proccdurc I SqlSetIsolat~onLevel Set ~solatlonlcvcl SqlSetLockT~meout Set perlode tlmcout pada saat mcnunggu lock -1 Set parameter database - -, I - -- I ~ - - ~~ -1 SQLBrue l'ruinirrg Muteriul Copyrrghr O 1995 by Pf J'ersuilufa Sysret~r~nclo Jukurfu I SqlSetPararneterAll i SqlSetResultSet ! SqlStore Set parameter database ----Set result set modc rnenjadi ON atau OFF Compile dan storc suatu cot~unandatau procedut-c ~~~~, -, - - > .. 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. Trigger memungklnkan user untuk. 1 hlcng~mplementasikanRl consts:~~nt, scpcrt~r n c ~ ~ j ~ bahwn u i ~ ~ nnilat F K ~oic>L dc'lig;111I'h 2 Mcrintaigi user lain rncrubdi data sccara tidnli benar schlngga mct-usalika~l11ltc~r1t~ili database. 3 Mcngan~bilt~ndakanberdasarkarl 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 T r t g e r t ~ d a kdapat mcmangg~lnon-stored proccdurc Statlc procedure harus dls~nipandcngcm perintah STORE. Gunakan penntah CREATE TIUGGER untuk membuat t r i g e r dan pcr~nr,iti DROP TRIGGER untuk mcnghapusnya a Tr~ggeryang nienggunakan stored proccdu~chanya b ~ s adtbuat blla 1 Anda nieniiliki hak DBA a h u SYSADM 2 h d a tucrupakan pcm~lrkdart 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 digunaknn untuk mclakukan suaru tlnd;~ka~l sccar;~otomatls yrulg didasaskan ntas ir,aktu even! hanya dapat mengeksekus~satu static proccdurc tJ~.t,rlc 7'ir~rc,t. Untuk niembuat suatu timer even!, gunakan CREATE EVENT' Everit y.ang dibuclt dc~pai berupa prrrodic atau one-rime I ' e n o 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:llknnuntuh &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 Aimberubrlli 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~ncproccdurl: PROCEDUKE: PROC-UNLOAD static SQLUuse Iiuit~irrghluleriul Copyr~ghrO 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 P R O C - W L O A D ~ ) ; 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 S c t ~ a pk a l ~k~t:l I I I C I ~ 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. S e l a ~ nrtu, tcmplatc ini juga akan berisi semua perubahan struktur database, nlisalnya p c r u b d ~ mstruktiir darl sntu \,ersi SQLBase ke versi lainnya. Sernua database memilih extension .dbs Pencnluatan Database dalanl Dircctor~. SQLBase rncrnbut~ihkansatu bottle L ~ L ~ I L I ~ L I . ) . Ldllrcc1or.11 J (blasan)a F.',.Sqlb;isc) L ~ I I ~si't~;q) LI~ non-j~arlitionrd d ~ ~ t a b a s eyang tcrdnpat dl survcr, SQLBasc akan rncnlb~~arscbuall 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~onlog file (*.log) 3. Read-only h~storyfile (*.his) ' . 7 DEMO\ TEST\ G m b a r 6 1 Organisnsi d a r ~SQLBase databasc dircctory Database dapat ditempatkm di d r ~ v cd;in I I O I T I ~ database dircctory dcng~in r n c r ~ g g u i i a h ~ ~ ~ ~ keyword dbdir di file sql.ini. Misaln~.abrln kita ing~nmenempatkan database c i ~\.olurnc SL'S dan di bawah home database directory SQLBasc dalanl scbuah network. mnka k ~ t alia~l!;~pcr l i i mengetik baris b e r i h ~ tini di file syl. 1t7, dbdir=sys :\sqlbase database MAIN. Databasc ini pada g~l~runnya ,&an dnrobase ybs. d a i Lug jile-nya. menunjukkm lokas~dari j)trr~~r/otlc'ri Database Cache S Q l ~ ~ Trnittitrg ~ s c 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~gunakanuscr i~ntukkeperluan 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 b a r ~ sd n r ~tnbli. atau data Index. Page adalah unit yang paling niendasar dan penyirnpa~ianfisik d a r ~datab:lsc. Page dis~mpanseperti 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 ~ n p tu d m output karena lebih cepat bila langsung rcxi 1 write ke memory komputcr clarlpadn kc hnrcidisl, Transact~onLog 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~ ~~)/rlt.o/ meliput~dokumentasi kapan suatu transaksi dimulai dan bagaimana tra~isaks~ tersebut bcrnklur (contohnya commit dan rollback). Tran.snc~lonlog memiliki tiga fungs~ 1 Rollback Transaction log file rnengandung data gang dibutuhkan untuk mclnkukan rollback ~lras sebuah transaksi. Rollback ~ n dapilt i diprakarsai baik oleh SQLBase rnaupun uscr 2 . Crash Recovery Transaction log file rnengandung data yalg d~butuhkanuntuk mcngembal~kruidutabasc kc kondisi yang stabil setelah terjadinj~acrush yang diakibatkan olch regalgati l ~ s t r ~Innupun h kesalahan operator. Database berada dalarn kondisi yang tidak stabil / crash b ~ l adatabasc 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 3 uscr connect ke database ynng crnsh setelah servcr on lagi, SQLBasc aka11 secara otonl;it~s melakukan crnsh recovery. 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 ~ncdiadapat terjadi karena ksrusakan hardlvare Dnlatii kcadaarl seperti ini, recovery yang Icngkap han1.a dapat dilakukan n ~ e l n l urcstorc ~ stat~s dari backup operating system Transaction log menjamin konsistcns~data (dam ~ ~ u n s i s t e n qJlka ) , suati~tra~isajis~ ro//hL~i,k atau tcrjadi kegagalan sisterdmedia, SQLBase mengunakan transact~onlog u~itukniclakukan restore dan mengcmbalikan database terscbut ke keadaan scmula. Database tile berada dalam kondisi semula yangstabil ' '.I0 , !\ -. - - -' 5.10 i -. . -. - - .! .-~.-- 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~. file 1 Son file Meligandung hasil akhlr dart .\.or[ y n g diakibatkan oleli DISTI'NC'I', ORDER R 1 . GROUP BY, atau CREATE I N D E X 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 lj~c~gccadalah ternpat untuk tiicn? 1111pru1b;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~ghrC? 1995, by i'7' l irsiiJci~uS'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 1)crtohosr crrerr adalah bag~andlsk yang d~Mi~~suskan urituk nicn>,lrnpan suatu dnt-<lt3 :1.-j C t L ' 1 l C l I I k l d m log file-nya. SQLBase memungkinka~luser untuk rnembuat bcbcrapa datnbnsc ;Ircil >:111g ~nenirlikrukuran yang berbcda-bcda Ucsanlya d ~ s kdalam satu databasc ar~ciidlbagl n~ctijaili bcberapa bag~an untuk menj,miprui bcbcrapa database Hal irll d ~ s e b uscbagal ~ csrcnti I:luren.~ion unit adalah jurnlah ukurarl disk dalarn database area >,any dialokrts~knn untuh nienyrmpan satu database dan log file-n!,ri Database l ~ l e s F I-. I D a t a b a s e log f ~ l e s L 1 - - -- 6 ~ D S LI O G ! - - hIDS2 L O G Y-' ,__-' -.,' I 1 i I LOG ! LOG ~ I 4-- I Database a r e a l Database area2 Database area3 Gambar 6 4 Database dan log file lang tersebar dalarn t ~ g adatabdsi' rtrc,l I'ada Garnbar 2.4, kita nlel~liatdua 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~icmail grolip Lnng bcrrs~dattnr Liscr yang menjadi ariggota dari rlectronic. ni~111 tersebut. Dengan nicnggunakan storugc gr011/1. database dapat d i s h p a n dalam volurnc disk yang berbeda d a i mcrnungklnkan database menangani pengalokasian ternpat penyirllpan~ulsccara oromatis. I Storage Group I I I - --. . I Database area -- Database area .- - - Database drea . --- - --- Ganibar 6 5 Tlgn database: arc3 mcmbcntuk saru storage group MAIN database - SQLBasc akan mcmbuat MAIN database jika. 1. P~7rtrtioneddatabase 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 CSVPARTS Keterangan Mengandung informasi tentang 'semua pihak yang terlibat dalnm distributed transaction Digunakan olch commitserver dalarn distributed tr'msactlon ur~ti~k menanganl t\+.o-pllnsecornrrlit . Berisi daflar semua default storage group ... Berisi daftar scmua partitioned database -Berisi d a h r storage group Berisi d a h r database area Berisi d a h r database area dan storage group-nya -~ Berisi d a h r extent yang sedang dipakai --. .- .Berisi daftar extent yang belum dpaka~ -. Digunakan oleh kebutuhan internal saja -. .. .. Digunakan oleh kebutuhan internal saja -- CSWRANS DEFAULTS DATABASES STOGROUPS W A S STOAREAS EXTENTS FREEXTS CSWRANSV CSVPARTSV - -- ~ - p~ - Server status yang ditarnpilkan pada gambar di atas adalah untuk server VDS. Hal ini d ~ a t u dl r 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~sidaftar 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] u w r e n m = [ J W w r j L W r Q a r t s o f W blfdbE-3 P L N W Ciarnbar 7.2 P c n a m p i l a ~I'ruccss ~ A c l ~ \ . i l yJar1 .'iQI,ljils~Scrvcr fur Net\\;lrr SQIJIase Training Muterial Copyrrghr 8 1995, by Pii, I/ersorlufu Sy:ystettr~nrlo. Jukurfu SQLLJuse Training i2.1utericll Copyrrghr B 199.5, by PT l'rrs~~doroSysrs~nrndo.J u k r ~ r r u I System Activity display screen (F31 SQLBASE SERVER N M FOR bETWARE SYSTEMS 6 0 COPYRIGHT (C) GUPTA CORPORATION 1985 - 1994 11 45 ' 1 ALL RIGHTS RESERVED I FUNCTION KEYS - F1 Semr Status F3 - System A c l ~ r y F2 - Process Aclwrty ESC - Ex11Sewer SYSTEM ACTIVITY Sysarndab L Gambar 7.3 I-'enarnpllan Systcni A c t ~ ~ i Jar1 t ) SQ1,Uasc /' Scrver for N e l \ 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 ~ oKeys n Ada empnt pilihan yang disediakan di bagian Inl: F1 untuk melilint Sewer S't~itlr.~,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~asiaktivitas internal scnjcr Systeni Ac~ivl<vmcniiliki 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. JLI~U~ILI B a ~ ~ n~ nn menampilkan i informasi server Field Jumlah memorv vang tersedia setelah memory dialokasikan kc L,LIL,IIL, mc.monSavarlable cur Jumlah slot czcrsor yang dialokasikan sejak server dijalarlkan db Jumlah database vang aktif sejak server dljalankan. .Jumlah maksimum user yang diijinkan server. Pr Hal ini dapat datur di file sql.inr yaitu dengan keyword ilsers..... - . .....- - . Jurnlah cache page di server. PS - .. -- Ili Ifv 1 berart~tldak ada batasan jurrrl:h lock Jumlah resource sistetn bang dipaka1 N l l a ~0 berart~rcauilrce s ~ s t z ~t ~nd a kd ~ p a k a ~ -- .. -.-. Proccss ~nfonnation Mengandung infonnasi dari setiap proses Jan2 tcrjiid~ Kctcrangm Nomor proses prim - Nomor transaksi Mcssage yang mengindikas~kanl)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 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 .. - -... -.. Jumlah cttrsor Fang cotitltl~,i kc dnlabase ybs - -. -.. . .. Log file descrrpror -- -...Nornor cztrrcnt log lilt -Ukuran logfile dalani k~lob>zcs -.....-Checkpo~niirtne 1nlcrvi11ciaIan nicn~t -.2.---..-.p 1111 ~ ~ i e ~ l g a n dlnformasi u~ig ----- - - - -- - . pLu - -- ~~ - - - Flu . - -- - -- -- . - ~~ -- . . - - - - LoKgbenkut y ~ h&s ~ gdi-backup Log berikut yang hnrus di-backup (setelah BACKUP SNAPSHOT) -. .... .. Transaction span lirrrrt (nilal 0 berarti tidak adn batasan) -.- .. ..Log polnter ~ -- - cpp, cpl. ftp, fap, fbl, Ibl Contoh salah satu bar~s!tang terdapat pacia bagla11Oc~tnhcr.\,c.rti1 LS'.stern A~,rr\,ri~. 1 S004:006:007 nomor transaksi qang rncmlllk~ l o c k cjt7rrv atau nornor prox.; 004 006 007 .Shared lock Yoge group yang n~enilllk~ lock Siorfrng page number L n d ~ n gpage number SQLUase Training bfutericll Copyright O 1995, by PT Versudortl Sysletti~ndo.J a k u r ~ u u ~ l r u h )/)c'c 1 t 1 1 - - 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~zedatabase 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~ngsystem 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~engandungCj'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~amcntbuat 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~luairlformasr 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~engurangilalu-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 file (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 c o n t r o l j l e 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> SIZE <masiiiium size of the unload segnlcnt file 111 DIR <destination dir> megabytes> SIZE <maximum size of the unload segment file In DIR <destination dir> 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 ~epsadoloSyr~ernmdo,Jakarro Pada saat operasi UNLOAD berlansung, conrrol file mengarahkan SQLBase untuh ~nelakukantlnlond 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 b e r n m a e:\unldir\dbs 3 Selain itu, SQLBase juga membuat scbuah load canrrol file yang berna~nacihs JLJ' 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 j x i g terletak dl cl~entke table EMP SQL> LOAD DIF emp d ~ EMP, f 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 atcrdnpat di scrver: SQL> UNLOAD DATABASE CONTROL contrll .fil ON SERVER, Urltiik niempcrbaiki kine j a dan mcnghemat media pcnympanan, lakukrin pcrintah bzr~kut pada salt rnenjalankan LOAD: set recovery off; lock database; load [sql 1 ascii I difl exrerr~nlfilron scwcr; conmiit; unlock database; set recovery on; l<end-onlydatabase 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~stribusikancopy d a r ~database terscbut (dalam bcntuk ~ C ' L I C J - ~)I kc: I~ 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> S E T 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 ~ c a l n l ab ~ l a DBA lngln membuat sebuah storage gr021p yang bernarna VDSFILES untuh database area VDS I dan VDS2, maka per~ntahnyaadalah 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 Jle 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'0VDS 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~ghr8 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 1I Storage Group VDSFILE Storage Group VDSLOG SQL> CREATE STOGROUP VDSF ILES USING VDSI. VDS2; SQL> CREATE STOGROUP VDSLOG USING VDS3; I ! I I Langkah 3: Membuat database VDS database Storage Group VDSFILE I I I I Storage Group VDSLOG SQL> CREATE DATABASE VDS IN VDSFILES LOG TO VDSLOG; ~ Ganlbar 8.1 Langkah-langkali untuk mc~nbuatp r l r ~ l o n e dd l ~ ~ t r h l c ~ c Sctelah yartrtioned darnbase selesai djbuat, nlnka u'ar~rbnseoren dar~ tot-(lgc grojlp ~ a r i g ada hams di-mainmin dengan baik. Bcrikut ini nierupakan operasi-operas1 ! m g 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 dun ~ O . \ . I ~ ~ L I , ,gr011/) ~c' 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.civcv t . ~ : ~ ! ~ VDSf:ILES. kctlkkan SQL> ALTER S l ' O ( ~ l i O l ~ \'l)SFII.LS l' .A[)U VDSi, Scdungkan unruk mcnghnpi~st i c i ~ ~ i n i/rct/ ~ r \ . ~V~D S ? 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 ~ /jikn t~dak :lda dntnb;~sc' /O,~Z -I!C \ . I I I ~ mcnggunakan area tcrscbut darl b ~ l nl / i ~ r ~ ~ h irrcJl/ o . s t ~tcrsebut t~daks c i i n ~ ~bcr:lda s iiainl~l sebuah .r~nmgegroup. Misalnjx bila ingln rncnghapus d~1rl1hll.i.cl/rcJn\'US I. l;ikuk,lrl SQL> DROP DBAREA VDS I . Mcn!.cd~akan sebuali dcfci/i//.\ rorr~,qcgrorlp Sctelnh .sroroge grolrp d~buat. S()l,Basc akan mcnganggal? S ~ I I I ~ cI ~; ;~I [ ; I ~ J ; ~\ s. ~I I I ~ dibunt berikutnya sebaga~p o r / ~ r / o t ~ cdir/(7h11si~ t/ DBA dapat 1ncng;ltul- :;al;~li . \ : I ~ L I . \ . ~ o r o ,Lqrozc/~ q ~ j.mg tcrsed~ascbaga~r/t;ri/~l/r.\rorc-,,qcg r o ~ i lb~I ~ s n l l - ~u~1 i.~ai 1 1I\ ~ I L ~ I ~ ~ ~ I I , V D S FILES sebagai ~/c~,fi~ri// .v/or.cri,~, yrori/,. _ S I I I I ; ~ ~ ; Ll~cr~n[;ll~ II ~)L'I.I~\LI~ 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 ~ ~ hL tI ~~ C. .s' c~\ ., l ) 5 I l!.lll .\/orcrgt. ,grotrp VDSFILES J ~ k anama . ~ / l ~ r r /grolip , q ~ ~ d~aba~karl. l i ~ ' t c ~ ~ i / / ;-lnl \ \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-ubid1 srorclge group DBA dapat mcrubah srortrgr gt.orip \.ang b c r ~ sdatabasc ~ mau pull 1, ,< / i i k contoh, u~itukmerubah 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~ntah1111 I ~ I SL,~~~~;;~II Mcnghapus sloroge groici) 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 ~\ ~r ~l i~i~~. ~ i : : ~ groi//) pada saat penghapussn d~lakuhnn.Contoh ilnti~k1i1cripIinl1~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 ~ ~. ! ~\ ~ lJ ~~~ ~I , Ii ~~~ ..',,co,r,! I~~ o , Mengatur ukuran extension Ukuran database akan terus meningkat bila data pang disirnpan nlak~nbnn?.nk Pnda s a t suatu database nienjadi penuh, SQLBase akan menambah extent b c n k u r ~ ykc ~ 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 G l n t r ~ xd a r ~ perrntah ini adalah: SQL> SET EXTENSION <#kbytes>; Untuk rnencntukan bcsarnya tcnipat ?.ring ters~sadalam 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~n5 width 8 heading 'Areasize'. column 6 width 8 heading 'Free%'. break on 1 2; a.name, b stogroup. b.nrcanalnrnc. i/.tnr~i(c .pathna~~ic). sclcct 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~lrl ((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~yuntuk n~clnkuhant'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 C o p y r r g h ~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~tasclan 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 CHECK DATABASE CHECK SYSTEM ONLY Keterangan Mengecek integritas atas seluruh database -. .. Mengecek integritas atas systemdefmcd table: & ~ n d c s dnn rncngabaikan user-created table & index Mengecek integritas hanya pada index tertentu s y a- Mengecek integritas hanya pada table dan index tcrtentu saja Mengecek integritas hanya pada table tertentu dan rllcngabalkarl semua index ymg berhubungan dengan table tersebut p~ CHECK INDEX CHECK TABLE CHECK TABLE WITHOUT INDEXES 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 Membuat user, menentukan level otoritas user dan password-nya SYSADM 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: Keterangan Level otoritas ini hams dbenkan dahulu sebelum level-level yang lain diberikan. Level ini akan memunglunkan user untuk: 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 CONNECT ditambah dengan hak untuk: Membuat table dm rn&ghapus table yang dibuat sebelumnya / Memberi, merubah dan mencabut kernbali hak atas table ybs. keldan user Y I I I 1 1 I I I I I lain DBA Level otoritas ini dapat meng~unakan semua hak yang terdapat dalanl level SQLBase Training Material Copyright rD 1995, by );PT. VersadataSystemindo. Jakarta I ( 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 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~dakciapat 1 mernbuat dan menghapus table l a g , 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 I 1 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 diilan~ User yang memildu otontas DBA dapat memberlkan hak atas semua table dan 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 ~ d a kciapat ~ilembcrikanhak p pa pun. 1 1 User yang metnbuat tablelvicw ~nerupakanowner (pemilik) dari objck tcrscbut dnn r n c n u l ~ h ~ hak penuh atas objek-objek yang hbuatnya, termasuk hak untuk mernber~kanaLses supn! a user lain dapat menggunakan objek-objek terscbut. Sebagal p c n ~ ~ l i kobjck, user dapnr nlembenkan hak sbb: Hak I Keteranrzan SEI.ECT I Mendanatkan data dan t~hlelview ----- - - - - - - ---- - --- -- - - - - - -. . - - . . INSERT ] Menambah baris (data) ke dalani tablc/view . DELETE / Menghapus bans (data) dan tablelview .Merubah data padakolo~n-kolomtertentu dalam suitu table Membuat atau menghapus indcx &lanl table ... ..-. - . .. ALTER I Merubah table ALL Menerapkan semua h,& dl atas atas tablelview - - p~ - -- 1 ( - I Keyword PUBLIC mewakili semua user. Dcngan memberlkan hak ttertentu kc PLjBl-,I(-. nlah;~ berarti mengijlnkan semua uscr (yang tclah a& dan y m g &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~hatdata tcrd~ipatdalanl t;it)lc' EMP: SQL> G R A N T S E L E C T O N E M P T O USERZ; PRIVILEGE(S) GRANTED ON TABLE OR VIEW DBA membenkan hak kepada USER3 untuk nlelihat &pat j9arlg terdapat cialnm t;lbIc 2. EMP yang dibuat oleh USERl. SQL> GRANT SELECT O N 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> G R A N T S E L E C T , 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> G R A N T S E L E C T O N USER1.EMP T O PUBLIC; PlUVlLEGE(S) GRANTED ON Tc\RI.,E OR VIEW 5 . USERl nle~icabuthak USER2 untuk ~nclihatdata d a r ~table EMP SQL> R E V O K E SELECT O N E M P F R O M USER2; PRIVILEGE(S) REVOKED ON TABLE 6. DBA mencabut hak USER2 untuk melihat data di table EMP yang d ~ b ~ ~CISEK ;it 1 SQL> R E V O K E S E L E C T O N USER1,EMP-INFO F R O M USER2; PRIVILEGE(S) REVOKED ON TABLE 7. DBA mencabut hak USER2 untuk rncrubah kolom PHONENO dnri table EbIP >alig dibuat oleh USERl: - 1 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 menWHERE 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 -------Smith 355 --------- PHONENO 32654 832 SQLBase Training Material Copyright 0 1995, by PT. Versodolo Syrrarnindo. Jakarta Jones Brown Joyce Chen Herrlein 150 700 150 355 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 Chen 37666 2 ROWS SELECTED 832 222 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: PHONENO NAME -Smith Jones Brown Joyce Chen Herrlein 832 285 72 1 145 222 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. I Contoh: SQL> DROP VIEW EMP; VIEW DROPPED SQLBase Training Material Copyright 8 1995, by PT. Versadatcl Sysremindo. Jakarta - commit Prepare to Commit PREPARE STAGE Transfer I COMMIT STAGE I I Delete Transaction 4Lnfo END Transaction COMMIT debit ( I 1 COMMIT credit ] I 4 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 tejadinya kesalahan, rnaka rollback akan dilakukan ke seluruh database yang terlibat dalam transaksi tersebut. €3 Medan Prepare to Commit I PREPARE STAGE I I ROLLBACK Deposit I I COMMIT STAGE ROLLBACK Delete Transaction END Llnfn 1 ( Transaction 1 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 kinerja hi. SQLBase Training Material Copyrrghr 0 1995. by PT. Ijersadora Sysrerrr~ndo,Jrrkarra i I 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 Keterangan SYSCOLAUTH Mencatat semua hak update kolom clan tiap user. Mencatat semua kolom dalam tiap table. SYSCOLUMNS Mencatat semua stored command dan ~rocedure. SYSCOMMANDS SYSEVENTS Mencatat semua system timer event. Mencatat level otoritas execute user untuk tiap stored procedure SYSEXECUTEAUTH Mencatat setiap FK constraint. SYSFKCONSTRAINTS SYSINDEXES Mencatat index dalam tiap table. Mencatat semua kolom dalam tiap index. SYSKEYS SYSPARTTRANS Mencatat s e t i a ~indoubt distributed transaction. SYSPKCONSTRAlNTS I Mencatat s e t i a ~PK constraint. SYSROWIDLISTS Mencatat informasi tentang Result set yang dsimpar. SYSSYNONYMS Mencatat semua table dan view synonym. . SYSTABAUTH Mencatat hak tiap user atas table. SYSTABCONSTRAINTS enc cat at constraint dari tiap table. Mencatat semua table dan view. -SYSTABLES SYSTRGCOLS Mencatat semua kolom yang mernilllu UPDATE trigger. Mencatat semua trigger. SYSTRIGGERS SYSUSERAUTH Mencatat setiap%el otoritas database dan user SYSVIEWS Mencatat text dan tiao view. - - 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. Nama tablelview tempat berlakunya hak update. TNAME COLNAME Narna kolom t e m ~ a berlakunva t hak u ~ d a t e . SYSADM.SYSCOLUMNS Table ini mengandung informasi semua kolom yang terdapat dalam tiap table dan (termasuk kolom dari system catalog table). SQLBnse Training Mnterinl Copyr~ghr@ 1995, by PT. Versadara Sysrerri~ndo.Jokarru VICV, Nama kolom I NAME TBNAME TBCREATOR COLNO Keterangan I SCALE UPDATES Nama kolom. Nama tablelview dari kolom. I Authorization ID dari user yang membuat tablehiew. Nomor kolom dalam table. Nomor ini tidak berubah walaupun ada 1 kolom lain dalam table yang sama dihapus. 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 DECIMAL jumlah precision Khusus untuk kolom dengan tipe data DECIMAL. Nilainya 0 untuk tipe data lainnya. 'Y' jika null dijmkan dalam kolom ybs i 'N' j~kaNOT NULL ; I 'D' jlka NOT NULL WITH DEFAULT 'Y' jlka kolom dapat drubah 'N' jika kolom hanya read-only. 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 mi& berbeda dengan panjang kolom karena SQLBare menyirnpan semua kolom sebagai data variable. I Panjang rata-rata dari kolom LONGVARCHAR untuk semua bans dalam table. Nilainya 0 untuk kolom non-LONGVARCHAR I / REMARKS LABEL AVGCOLLEN AGCOLLONGLEN I 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 I stored urocedure. I NAME Nama stored command atau stored procedure. Pada saat SQLBase menyimpan command yang terdapat dalanl static procedure, SQLBase akan membenkan narna yang digenerate secara internal. TYPE Command (C) atau Procedure (P). SYSTEM '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'. STATIC 'Y' bila static stored urocedure: 'N' bila bukan. I VALID I 'Y' bila command valid; 'N' bila comrnand invalid. 1 SQLBase Training Matetic11 Copyright 0 1995. by PT Versodolo Sysrert~rndo.Jokurro 1 Stored command menjadi invalid bila referenced column dlhapus, ' atau index pada referenced column &pus. Stored procedure tidak d a ~ am t e n i d invalid. Jika di-set ON dan stored command akhirnya menjadi invalid, SQLBase secara otomatis me-recompile bila stored procedure 1 tersebut di-execute. i Text dan stored command atau perintah-perintah SQL dalam stored ~rocedure. Kolom ini bertipe data integer dan merupakan identifikasi (nomor seri) yang berhubungan dengan SYSCOMMANDS. I AUTORECOMPILE TEXT ' SNUM SYSADM.SYSEVENTS Table ini mengandung informasi untuk tiap event (peristiwalkejadian). Nama kolom Keterangan Authorization ID dari user yang membuat event. CREATOR NAME Nama event. /-TYPE I Command (C) atau Procedure (P). Tipe event. 1; Sampai versi ini, hanya timer event type saja yang ada. I ID dari event. EVENTID BEGINTIME Permulaan waktu event. I INTERVAL Interval waktu (dalam detik) eksekusi dari event. 'Y' bila event merupakan systemdefined; 'N' bila tidak SYSTEM SPSNUM Kolom integer yang menunjuk ke nomor seri (SNLN dalam SYSCOMMANDS) dari stored procedure yang dieksekusi oleh 1 I 1 I ;- 1 event ' TEXT ACTIONCODE I 1 Text dari stored command atau perintah SQL d a l k Compiled code dari stored command atau perintah SQL dnlmi procedure. hi untuk keperluan internal saja. SYSADM.SYSEXECUTEAUTH Table ini mengandung informasi untuk setiap perintah GRANT PRIVILEGES da1a.m stored procedure. Nama kolom Keterangan CREATOR Authorizatjon ID dan pembuat stored procedure. NAME Nama yang diberikan secara internal untuk stored procedure. GRANTEE Authorization ID dari grantee (user dan stored procedure). USECREATORPRIV 'Y' jika GRANTEE men an hak pembuat; jika tidak blank USERGRANTEEPRIV 'Y' jika GRANTEE m e n s a n hak senhri; jika tidak blank.- ~ I / -1 i 7 SYSADM.SYSFKCONSTRArNTS Table ini mengandung informasi kolom FK dari tiap table. Nama kolom Keterangan CREATOR Authorization ID da.ri user yang membuat table. NAME Narna table tempat FK berada. CONSTRAINT Nama FK constraint. I Nomor urut dari kolom FK dalarn FK. SQLJrr.se Training Materirrl LFJCOLSEQNUM I Copyrrghr O 1995, by PT 1,'ersodoroSysra~~r~ndo, Juhurru I I I -7 1 4 I L u- - A DA A 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 REFSCOLUMN REFDTBCFEATOR - REFDTBNAME REFDCOLUMN SYSADM.SYSINDEXES Table ini mengandung mformasi setiap index, termasuk index dalam system catalog table. Ketermgan Nama kolom __l_i Nama indsx. . NAME Authoriza1:ion ID dari pembuat index. CREATOR --TBNAME Nama table tempat index hdefmisikan. Authorizat~onID dari pembuat ta5le tempat index didefinisikan. TBCREATOR -4 'D' bila dudikasi index dijinkan,'LJ' bila index u d . UNIQUERULE --COLCOUNT I Jumlah kolcm dalam index. 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 ( saat index p*:rtama kali dbuat. Jlka tidak htentukatl user, malca default-nya ialah 10 persen. : HEIGHT 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 ( I ) kali maupun UPDATE STATISTICS. 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 II pada index (leaf page). Selain itu juga rnerupakan j u m l d ~p q c i dalam mdex sequence set. Untuk hash mdex, mlalnya null CLUSTERCOUNT Untuk B+ tree index, irli adalah jumlah clustcr, yang rncrupahnn , jumlah total perul~ahanpage 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 I baris dalam table. Untuk hash index, nilainya null. 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 mendistribusikan baris-baris dalarn table. .. .- * OVFLPAGECOUNT Untuk B+ tree index, nilainya null. Untuk hash index, I ~ 1 I 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 bertambah sejalan dengan jumlah overflow page yulg dibutuhkm i untuk menangani hashmg collision. ~., I -~ 1 -- 1 1 I 4 1 - -. I ~ I --- SQLBnse Trtrining /I.l(~teritrl ( - u / ~ y r ~ g hBr !YY.T, b y 1'7: I/ersctd~~rn S y s f ~ . ~ ~ l l n.liirioi-iii i/o. 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 only minimum. Untuk hash index, nilainya null. 7 Untuk B+ tree index, ini merupakan nornor grup untuk index page. / 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, ~ variable ini di-load ke memory. Variable memory ini ditambah ) setiap kali full index scan digunakan. Kolom ini dirubah ket~kaI cursor terakhir dsconnect dari database. Untuk merubah kolom 1111. SQLBase rnenggunakan internal cursor. AVGKEYLEN I i i i 1 SYSADM.SYSKEYS Table ini rnengandung lnfonnasi kolorn-kolorn untuk tiap index. Nama kolom Keterangan IXNAME Nama index. IXCREATOR Authorization ID dari pembuat index. I COLNAME Nama kolom clan key. i Posisi numenk dari kolorn dalam bans; contohnya 2 (dari 7 kolorn ( COLNO 1 dalarn satu table). COLSEQ Posisi numenk dari kolom dalam key; contohnya 2 (dari 3 kolom yang membentuk key). ORDERING Sort order dari kolorn dalam key. 'A' jika ascending, 'D jlka 1I descending. Definisi @function digunakan untuk rnendefinis~kankey; contohnya ( CREATE INDEX EMPIX ON EMP (@UPPER (NAME)) I mernberikan nilai @UPPER(NAME) dalam kolorn ini. I DISTrNCTCOUNT Jurnlah distinct key dari kolom pertama sampai nilai COLNO. I SYSKEYS rnerniliki satu e n t j untuk tiap-prefix key dari rnultl- 1 7 1 1 I I 1 1 -A I 1 1I I I i - I column index key. Entry pertam; rnengidung nilai DISTMCTCOUNT untuk kolom pertama dalam key. Entry kedua 1 mengandung nilai DISTINCTCOUNT untuk dua kolom pertama j dari key, dst. i SYSADM. SYSPARTRANS Table ini mengandung informal in-doubt distributed transaction. Jika transaksi ini telah diresolved, 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. 7 Nama kolom Keterangan I Transaction ID global. ID 1 t ID2 Di unakan untuk ke erluan an akan datan . i & i Current status dari transaksi. Dapat berupa: I STATE I PROTOCOL LASTTMODTIME ' protocol yang d i g k untuk &o-phase commit. saatInl.1 SQLBase hanya rnenggunakan protocol STANDARD. Timestamp yanp, rnenunjukkan kapan status transaksi dimodifikasi i SQLBase Training Material Copyrighf O 1995, by PT. Versudarcr Sysre~t~indu, Jakarro I I DB I untuk terakhir kalinva 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 NAME 1 1 PKCOLSEQNUM COLNAME I Nama table tempat PK dibuat. Nomor kolonl dari PK kolom. Nama kolom yang menladl PK ---. .- .. .. . . . . , . -. -- .. .. -A 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. I Nama kolom Keterangan ._ . . NAME Nama row id list (result sct) yang hsinlpan. CREATOR Nama pembuat dari result set. -- ,~ I i SYSADM. SYSSYNONYMS Table ini mengandung informasi synonym dari tiap table atau view. Keterangan Nama kolom Synonym daari table atau view. NAME Authorization ID dari pembuat synonym. CREATOR TBNAME Nama table atau view. TBCREATOR Authorization ID dari pembuat table atau view. SYSADM. SYSTABAUTH Table ini mengandung informasi hak semua user dalam tiap table atau view. I Narna kolom Keterangan GRANTEE Authorization ID user yang memiliki hak. TCREATOR Authorization ID user yang membuat table atau vlew tcmpnt hak blank ALTERAUTH DELETEAUTH INDEXAUTH SELECTAUTH 1 1 '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 atau view. Jika tidak, nilainya blank. 'Y' bila user diperbolehkan membaca data dari target table atau view. Jika tidak, nilainya blank. 'Y' bila user dperbolehkan merubah data &lam target table ntau view. Jika tidak, nilainya blank. / ;d INSERTAUTH I / 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 TTNAME UPDATECOLS UPDATEALITH I I I 1 I I I SYSADM. SYSTABCONSTR4lNTS Table ini mengandung informasi table constraint. 1 Nama kolom Keterangan ~ CREATOR Authorization ID dari user yang membuat table. NAME Narna table tempat constraint berlaku. CONSTRArNT Nama constraint yang dgunakan database. Koloi-r-rii-rijuga menunjukkan nama FK. Untuk PK, kolom ini di-set ke 'PRIh4ARY'. Tipe constraint. Diberikan nilai 'P' untuk PK d m 'F' untuk FK. DELETERULE 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. USRERIUNSDEP User-specified error message number untuk kesalaharn -..J i --I USRERRUPDDEP 1 1 USRERRDELPAR I USRERRUPDPAR I ( INSERT-DEPENDENT. J ~ k atidak ada user-specified error, kolom ) ini dibenkan nilai 0. User-specified error message number untuk kesalahan I UPDATE-DEPENDENT. Jtka tidak ada user-specified error, I I kolorn ini dibenkan nilai 0. User-specified error message number untuk kesalahan DELETE-PARENT. Jika Gdak ada user-specified error, kolom ini dberikan nilai 0. 1 I User-specified error message number untuk kesalahan 1 UPDATE-PARENT. Jika tidak ada user-specified error, kolorn ~ n i 1 diberikan nilai 0. I 1 1 SYSADM.SYSTABLES Table ini mengandung informasi semua table atau view. Nama kolom Keterangan A I Authorization ID user yang membuat table atau view. CREATOR NAME Nama table atau view. I COLCOUNT Jumlah kolom dalam table atau view. REMARKS User-specified comment untuk tiap baris. Panjang rnaksimu~~~ untuk 1 I comment ini adalah 254 karakter. I -7 TYPE 'T' jika table; 'V' jika view. I 'Y' jtka table hasil system-defined; 'N' jika tidak. SYSTEM Nomor seri yang unik yang berfungsi sebagai table ID. Ini SNUM digunakan oleh perintah UNLOAD DATABASE LABEL User-specified label tentang tiap table clan maksimum dari label adalah 30 karakter PERCENTFREE Jumlah fiee space untuk tiap table row page Default-nya 10 1 ersen. ROWCOUNT iumlah baris dalam table. h matur secara d i n a r k d a l a m x i control page, tetapi hanya dicatat &lam table ini pada s a t per~nrali UPDATE STATISTICS dilakukan. PAGECOUNT Jumlah base row page dalarn table. Kolom ini dirubah sctlap kali 1 perintah UPDATE STATISTICS dlakukan. Jika t~dakada nila~ I yang diberikan user dengan perintah SET, maka kolom in1 merupakan jurnlah clan nilai ROWPAGECOUNT, i EXTENTPAGECOUNT dan LONGPAGECOUNT. Default-nya 1 I adalah 2. 1 ROWPAGECOUNT Jumlah base row page dalarn table dan meliputi sernua extent page yang dialokaslkan. Hanya &catat dan dirubah setiap kali pcr~ntdl I i LPDATE STATISTICS dilakukan. Default-nya adalah 2 1 LONGPAGECOUNT Jumlah page dalam table yang dialokasikan untuk rnenyimpan kolom LONG VARCHAR. Hanya dicatat clan d~rubahsetlap ka11 i perintah UPDATE STATISTICS dilakukan. EXTENTPAGECOUNT Jumlah extent page. FREESLOTS Jumlah total dari free slot dalarn semua data page. 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 -j I i i 1II ! 4 I ~ I ! I , I SQLBase Training Muterial C o p ~ ~ r ~@ g h199.7 l h}, 1'7' I ~ ' e r . w d oS~~~~l s r r ~ r r ~Jclkrrr-rti ndo, USEDSPACE FREESPACE 1 AVGROWLEN i I AVGKOWLONGLEN i I GROUPNUM I 1 TABLESCAN i i I 1 ; I ' 11 1 i diambil dari free slot. Jlka satu baris dhapus, slot-nya rnenjadi free kembali. 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. 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~uslankoloni. 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. 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. current setting untuk vanable ini di-load ke rnernoq Var~able1 memory ini htambah setiap kali table scan yang lengkap dilakukan. Kolom ilu dirubah saat cursor t&akhir disconnect darl database. Untuk merubah kolom ini, SQ1,Basc mcnggun:lhan internal cursor. . 1 I , I ~~ SYSADM.SYSTKGCOLS Table ini mengandung informasi tiap kolom yang dipengaruhi oleh ~rpdatetrrgger Narna kolom Keterangan A CREATOR I Authorization ID dari pembuat trigger. 1 I NAME Nama trigger. TBSNUM Nornor sen dari tngger table ACTIONTIME Apakah trigger didefuuslkan untuk aktif sebelurn atau ssesudall I usaha rnodifikas~. COLNO Posisi relatif kolom dalam tngger table (rnulai dari 1) A i 1 ! 7 SYSADM.SYSTRIGGERS Table ini mengandung informasi untuk setiap trlger Nama kolom Keterangan CREATOR Authorization ID dari pernbuat trigger. ---1 NAME Nama trigger. "A 1 TBSNUM Nomor sen dan tngger table I ACTIONTIME Apakah trigger didefinisikan aktlf scbcluni arau sesudah , rnodlfikasl. 1 TRIGGEREVENT I Event (INSERT, UPDATE atau DELETE) diniana trigger d~bunt 1 1 SQ13ase Ilrrrining Material I Copyr~ghr@ 1995. hy PT I'ersodora S)~sret~r~ndo. Jlrk~rrra I untuk beroperasi. Alias (nama lain) table yang mengandung nilai kolom yang lama. Alias (narna lain) table yang mengandung nilai kolom yang baru. 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 OLDVALUENAME NEWVALUENAME FREQUENCY SYSTEM SPSNLTM r-- trieeer. NLMCOLUMNS 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 nuntuk o~erasiMSERT dan DELETE. SYSADM.SYSUSERAUTH Table ini mengandung level otoritas database dari tiap user. Nama kolom Keterangan NAME Authorization ID dari setiap valid user dikatakan valid bila rnemillki itoritas CONNECT. RESOURCEAUTH 'Y' jika user dapat membuat dan menghapus table atau 'G' bila user adalah SYSADM. Selain dari itu, blank. DBAAUTH 'Y' jika user memiliki otoritas DBA, 'G' bila user adalah S Y A ~ A M Selain . dari itu, blank. Password yang diasosiasikan dengan authorization ID. Untuk PASSWORD melihat yang sesungguhnya, gunakan @DECRYPT. I I SYSADM.SYSVIEWS Table ini mengandung informasi setiap view. Narna koIom Keterangan NAME Nama view. CREATOR Authorization ID dari pembuat view. Nomor urut dari baris yang berisi text dari view. SEQNO CHECKFLAG Menunjukkan apakah CHECK option diberikan di penntah CREATE VIEW. 'Y' berarti ya, dan 'N' bararti tidak. TEXT 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. SQLBase Training Material Copyrrghr 0 1995. by PT. Versadara Sysrer~rrndo,Jokarro I I