SQL Plus
SQL Plus merupakan salah satu aplikasi yang bisa kita gunakan untuk melakukan administrasi database. Namun ada syarat yang musti dimiliki yaitu kemampuan untuk menggunakan query SQL. Berikut penulis jelaskan beberapa penggunaan query SQL.
SQL ( Structured Query Language ) merupakan bahasa query yang digunakan untuk mengakses database relasional. SQL sekarang sudah menjadi bahasa database standard dan hampir semua sistem database memahaminya. SQL terdiri dari berbagai jenis statemen. Semuanya didesain agar dia memungkinkan untuk dapat secara interaktif berhubungan dengan database.
KEUNTUNGAN Penggunaan SQL pada DBMS ( Database Management System ) sudah cukup luas. SQL dapat dipakai oleh berbagai kalangan, misalnya DBA ( Database Administrator ), progammer ataupun pengguna. Hal ini disebabkan karena :
• SQL sebagai bahasa administrasi database. Dalam hal ini SQL dipakai oleh DBA untuk menciptakan serta mengendalikan pengaksesan database.
• SQL sebagai bahasa query interaktif. Pengguna dapat memberikan perintah-perintah untuk mengakses database yang sesuai dengan kebutuhannya.
• SQL sebagai bahasa pemrograman database. Pemrogram dapat menggunakan perintah-perintah SQL dalam program aplikasi yang dibuat.
• SQL sebagai bahasa klien/server. SQL juga dipakai sebagai untuk mengimplementasikan sistem klien/server. Sebuah klien dapat menjalankan suatu aplikasi yang mengakses database. Dalam hal ini sistem operasi antara server dan klien bisa berbeda.
Di samping hal tersebut diatas SQL juga diterapkan pada internet atau intranet untuk mengakses database melalui halaman-halaman web untuk mendukung konsep web dinamis.
Kelompok Pernyataan SQL
Pernyataan SQL dapat dikelompokkan menjadi 5 kelompok DDL, DML, DCL, pengendali transaksi dan pengendali programatik.
• DDL ( Data Definition Language )
DDL merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut database, table, atribut (kolom), batasan-batasan terhadap suatu atribut serta hubungan antar table. Yang termasuk kelompok DDL ini adalah:
CREATE untuk menciptakan table ataupun indeks
ALTER untuk mengubah struktur table
DROP untuk menghapus table ataupun indeks
• DML ( Data Manipulation Language )
Adalah kelompok perintah yang berfungsi untuk memanipulasi data, misalnya untuk pengambilan, penyisipan pengubahan dan penghapusan data. Yang termasuk DML adalah:
SELECT memilih data
INSERT menambah data
DELETE menghapus data
UPDATE mengubah data
• DCL ( Data Control Language )
Berisi perintah-perintah untuk mngendalikan pengaksesan data. Yang termasuk DCL adalah :
GRANT memberikan kendali pada pengaksesan data.
REVOKE mencabut kemampuan pengaksesan data
LOCK TABLE mengunci table
• Pengendali transaksi
Adalah perintah-perintah yang berfungsi untuk mengendalikan pengeksekusian transaksi. Yang termasuk kelompok ini adalah :
COMMIT menyetujui rangkaian perintah yang berhubungan erat yang telah berhasil dilakukan
ROLLBACK membatalkan transaksi yang dilakukan karena adanya kesalahan atau kegagalan pada salah satu rangkaian perintah
Penggunaan Perintah SQL
Berikut ini akan dibahas lebih mendetail mengenai perintah SQL:
DDL kependekan dari Data Definition Language, yaitu perintah yang digunakan untuk menyatakan/mendefinisikan sesuatu. Meliputi perintah untuk membuat, menghapus maupun mengubah. Berikut ini daftar perintah yang termasuk dalam DDL:
• Membuat, mengubah dan menghapus obyek: CREATE, ALTER, DROP
• Mengubah nama skema: RENAME
• Menghapus semua data dalam obyek skema tanpa menghapus struktur obyek skema: TRUNCATE
• Melakukan analisa statistik dari suatu obyek: ANALYZE
• Memberikan atau menghapus role dan previlege: GRANT, REVOKE
• Mengubah nilai audin on atau off: AUDIT, NOAUDIT
• Menambahkan komentar pada kamus database: COMMENT
Perintah DDL ini berlaku untuk semua jenis object database, seperti tablespace, table, view, procedure, function dan sebagainya. Namun masing-masing memiliki sedikit perbedaan pada saat menyatakan beberapa perintah.
DML kependekan dari Data Modification Language, yaitu perintah yang digunakan untuk melakukan manipulasi data. Meliputi menyisipkan data baru, mengubah data, menghapus data, membaca data. Yang termasuk dalam DML adalah:
• Mengambil data dari satu atau lebih tabel atau view: SELECT
• Menambahkan baris baru ke dalam tabel atau view: INSERT
• Mengubah isi data dari suatu baris pada tabel atau view: UPDATE
• Menghapus suatu baris dari tabel atau view: DELETE
• Melihat rencana pelaksanaan perintah SQL: EXPLAIN PLAN
• Mengunci suatu tabel atau view, membatasi sementara akses dari user lain: LOCK
TABLE
DCL kependekan dari Data Control Language, yaitu perintah SQL untuk keperluan pengendalian database. Ada cukup banyak perintah dalam kategori ini. Di sini hanya diberikan dua contoh yang banyak digunakan, yaitu commit dan rollback.
Fungsi
Oracle menyediakan berbagai macam fungsi dasar yang dapat digunakan dalam operasi query, misalkan pada perintah select. Ada dua macam fungsi yang didukung Oracle, Fungsi SQL (builtin) dan user define function. Untuk fungsi SQL, dapat dikategorikan dalam fungsi dengan satu satu baris data dan fungsi dengan satu hasil untuk banyak data.
Fungsi dengan Satu Data Satu Hasil
Yang dimaksud dengan fungsi dengan satu hasil adalah fungsi yang hanya menghasilkan satu baris hasil untuk setiap baris data. Fungsi ini dapat digunakan pada WHERE, START WITH, CONNECT BY.
Bilangan
Fungsi bilangan digunakan untuk menerima data dalam bentuk bilangan dan mengeluarkan hasil juga dalam bentuk bilangan. Kebanyakan dari fungsi ini memiliki ketelitihan sampai 38 digit. Fungsi transcendental COS, COSH, EXP, LN, LOG, SIN, SINH, SQRT, TAN, and TANH memiliki ketelitihan sampai 36 digit. Fungsi transcendental ACOS, ASIN, ATAN, and ATAN2 memiliki ketelitihan sampai 30 digit.
Aggregate
Fungsi aggregate adalah fungsi yang mengolah lebih dari satu baris data menjadi satu hasil. Hasil dari perhitungan dipengaruhi oleh jumlah pengelompokan (GROUP BY) perhitungan. Seandainya dikelompokkan dan terdapat lebih dari satu kelompok, maka jumlah hasilnya sesuai dengan jumlah kelompok yang ada.
SQL *PLUS dipergunakan untuk mengakses Oracle Database Server. Untuk
mengakses server dibuat sebuah service yang mengarahkan client ke server
terlebih dahulu (Database Alias). Tahapan untuk membuat service tersebut
sebagai berikut :
1. Pada dialog diatas diberi service name TPRAKTIKUM. Klik next
2. Pilih protocol yang menghubungkan antara client dengan server. Pada
kesempatan ini untuk menghunbungkan client ke server mempergunakan
protocol TCP/IP. Berikutnya klik Next.
3. Pada field Host Name masukkan nama host name atau alamat IP address
server ORACLE, misalnya nt5. Klik Next
4. Pada menu field Database SID, pada layar System IDentifier, masukkan
nama database SID, misalnya lab4. Berikunya klik Next.
5. Untuk mencoba service name yang sudah dibuat, perlu dilakukan testing.
Klik tombol Test Service, dan akan menuju layar testing.
6. Pada layar Conection Test masukkan username dan password. Silahkan
masukkan Username scott dan Password tiger, klik tombol test, maka akan
ditampilkan respon server. Jika sukses akan ada komentar ….successful..
jika gagal akan muncul komentar bahwa service yang dibuat gagal.
Setelah Service Name dibuat, kini masuk kedalam SQL *PLUS untuk mengakses
database server.
Buka SQL *PLUS dari menu StartÆProgramÆOralce-OraHome81Æ
Aplication DevelopmentÆSQL PLUS.
Akan muncul dialog SQL plus sebagai berikut :
Masukkan pada User Name system, password manager dan Host String dengan
service name yang sudah dibuat tadi (TPRAKTIKUM).
Keuntungan Penggunaan PL/SQL :
– Memungkinkan Aplikasi dan Oracle Server menggunakan Library yang dapat digunakan bersama-sama dalam bentuk stored procedure
– Peningkatan Kinerja
– Penggunaan PL/SQL, memungkinkan pengiriman perintah secara blok dalam satu perintah yang secara drastis dapat menurunkan trafik jaringan
– Modular. Bentuk modular memungkinkan banyak kemudahan yang dapat diperoleh
– Portable. PL/SQL adalah sarana yang asli dimiliki oleh Oracle Server, artinya, program PL/SQL dapat dengan mudah dipindahkan dari satu Oracle Server ke Oracle Server lainnya, meskipun dengan OS atau platform yang berbeda.
– Dapat mendeklarasikan Variable
– Dapat berupa Variable, Constant, Cursor dan Exception
– Penggunaan variable/identifier sangat memudahkan dalam membuat suatu perintah. Misalkan untuk membaca hasil suatu perintah SELECT untuk diproses dan hasilnya digunakan untuk melakukan proses lainnya
– Dapat menggunakan Struktur Kontrol :LOOP, FOR, WHILE
– Dapat menangani Error
– Error bisa dihasilkan/dibangkitkan oleh Oracle
– Server atau bisa dibangkitkan sendiri dengan sengaja
– Untuk mengantisipasi berbagai hal yang barangkali sulit untuk ditangani secara langsung menggunakan kontrol program
MENANGANI PLSQL ERROR :
Run-time errors timbul dari kesalahan-kesalahan desain, kekeliruan-kekeliruan coding, kerusakan hardware, dan banyak lagi sumber-sumber lainnya. Meskipun kita tidak dapat mengantisipasi seluruh errors yang mungkin timbul, kita dapat merencanakan untuk menangani bentuk-bentuk tertentu dari errors tersebut yang ditujukan untuk program PL/SQL kita.
Dengan banyak bahasa-bahasa pemrograman, kecuali kita menonaktifkan pengecekan error, suatu run-time error seperti stack overflow atau division by zero menghentikan pemrosesan normal dan mengembalikan kontrol kepada sistem operasi. Dengan PL/SQL, mekanisme yang disebut dengan exception handling mengijinkan kita untuk “melindungi” program kita sehinga dapat terus beroperasi dalam kehadiran errors.
Pada pembahasan kali ini kita akan mendiskusikan topik-topik berikut ini:
• Pengenalan PL/SQL Error Handling
• Keuntungan PL/SQL Exceptions
• Predefined PL/SQL Exceptions
• Mendefinisikan PL/SQL Exceptions Kita Sendiri
• Bagaimana PL/SQL Exceptions Muncul
• Bagaimana PL/SQL Exceptions Menyebar
• Memunculkan Kembali PL/SQL Exception
• Menangani PL/SQL Exceptions yang Muncul
• Tip-tip Menangani PL/SQL Errors
7.1. Pengenalan PL/SQL Error HandlingDalam PL/SQL, kondisi peringatan atau error disebut dengan exception. Exceptions dapat secara internal didefinisikan (oleh run-time system) atau didefinisikan oleh pengguna. Contoh-contoh exceptions yang didefinisikan secara internal termasuk division by zero dan out of memory. Beberapa exceptions internal yang umum memiliki nama-nama yang telah didefinisikan sebelumnya (predefined names), seperti ZERO_DIVIDE dan STORAGE_ERROR. Exceptions internal lain dapat berupa nama-nama tersebut.
Kita dapat mendefinisikan exceptions kita sendiri di dalam bagian declarative dari suatu blok PL/SQL, subprogram, atau package. Sebagai contoh, kita dapat mendefinisikan sebuah exception bernama insufficient_funds untuk menandai penarikan dana yang melebihi saldo pada sebuah akun bank. Tidak seperti internal exceptions, user-defined exceptions harus memiliki nama.
Ketika sebuah error terjadi, sebuah exception dimunculkan (raised). Dengan demikian, eksekusi normal berhenti dan kontrol berpindah ke bagian exception-handling dari blok PL/SQL atau subprogram kita. Internal exceptions dimunculkan secara implisit (otomatis) oleh run-time system. User-defined exceptions harus dimunculkan secara eksplisit dengan perintah-perintah RAISE, yang mana juga memunculkan predefined exceptions.
Untuk menangani exceptions yang timbul, kita menuliskan routines terpisah yang disebut dengan exception handlers. Setelah sebuah exception handler berjalan, blok terkini berhenti mengeksekusi dan blok yang melingkupinya melanjutkan perintah selanjutnya. Jika tidak terdapat blok yang melingkupinya (lebih luar), kontrol kembali ke host environment.
Dalam contoh di bawah ini, kita menghitung dan menyimpan rasio harga-terhadap-pendapatan untuk perusahaan dengan simbol XYZ. Jika perusahaan tersebut memiliki pendapatan nol, predefined exception ZERO_DIVIDE dimunculkan. Hal ini menghentikan eksekusi normal dari blok tersebut dan mentransfer kontrol ke exception handlers. Handler opsional OTHERS menangkap seluruh exceptions yang tidak dinamai secara khusus oleh blok tersebut.
DECLARE
pe_ratio NUMBER(3,1);
BEGIN
SELECT price / earnings
INTO pe_ratio
FROM stocks
WHERE symbol = 'XYZ'; -- mungkin menyebabkan division-by-zero error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', pe_ratio);
COMMIT;
EXCEPTION -- exception handlers dimulai
WHEN ZERO_DIVIDE THEN -- menangani 'division by zero' error
INSERT INTO stats (symbol, ratio) VALUES ('XYZ', NULL);
COMMIT;
...
WHEN OTHERS THEN - menangani seluruh errors yang lain
ROLLBACK;
END; -- exception handlers dan blok berakhir disini
Contoh terakhir yang menggambarkan exception handling, bukan merupakan penggunaan efektif dari perintah-perintah INSERT. Sebagai contoh, sebuah cara yang lebih baik untuk melakukan penambahan data adalah sebagai berikut:
INSERT INTO stats (symbol, ratio)
SELECT symbol, DECODE(earnings, 0, NULL, price / earnings)
FROM stocks
WHERE symbol = 'XYZ';
Dalam contoh ini, sebuah subquery menyediakan nilai-nilai ke perintah INSERT. Jika pendapatan adalah nol, function DECODE menghasilkan null. Selain daripada itu, DECODE menghasilkan rasio harga-terhadap-pendapatan (price-to-earnings).
Tidak ada komentar:
Posting Komentar