Sabtu, 08 Januari 2011

PERBEDAAN SQL DAN PLSQL

PL/SQL (Procedural Language/Structured Query Language) merupakan sebuah penggabungan antara bahasa pemrograman prosedural (PL) dan SQL syntax. PL/SQL adalah fasilitas yang disediakan Oracle sehingga pengguna dapat memanfaatkan konsep pemrograman. Dalam PL/SQL dapat digunakan perintah untuk memanipulasi data yang ada dalam database Oracle. PL/SQL membentuk pemrograman terstruktur dalam memproses data.
Beberapa kelebihan PL/SQL dalam database Oracle :
· PL/SQL dapat digunakan di server sehingga client hanya dapat mengakses didalam
server.
· Penggunaan PL/SQL mudah dimengerti oleh setiap pengguna.
· PL/SQL dapat didesain khusus untuk database Oracle dalam menggunakan program
aplikasi.
Struktur PL/SQL
Struktur PL/SQL mirip dengan struktur bahasa pascal atau delphi yang menggunakan struktur blok, sehingga akan mempermudah pengertian dalam pemrograman dengan PL/SQL. Struktur Blok berisi perintah SQL dengan kondisi yang berbeda. Perintah PL/SQL dapat menangani kesalahan saat dijalankan. Setiap pengetikan dengan menggunakan PL/SQL dalam SQL*Plus selalu diakhiri dengan tanda /(slash). Sintaks penggunaan PL/SQL adalah sebagai berikut :
-  Declare
- Begin
- Exception
-  End
Pemanggilan PL/SQL :
· Langsung dari SQL Plus
· Dari Aplikasi
· Dari PL/SQL lainnya
Aturan penulisan:
· Dapat ditulis dalam beberapa baris (tidak harus dalam satu baris perintah
· Dapat berupa nested blok
· Karakter dan literal diapit oleh tanda kutip
· Setiap perintah/blok diakhiri dengan titik koma(;)
· Komentar diawali dengan tanda min dua kali(--) atau diapit dengan tanda /*…*/
· Pemberian nilai menggunakan :=
· Dapat menggunakan Bind Variable
· Tanda garis miring(/) berarti “run”
Contoh PL/SQL :
Sub Program :
a. Nama dari blok PL/SQL yang dapat menerima parameter dan dapat dipanggil terdapat
dua jenis:
· Sebuah prosedur yang digunakan untuk melakukan suatu kegiatan tertentu
· Sebuah fungsi yang digunakan untuk menghitung suatu nilai
b. Menggunakan struktur blok PL/SQL standart
c. Modular dapat dipergunakan berulang-ulang, ditingkatkan/dikembangkan dan mudah
dalam perawatan.
Struktur diatas dapat dijelaskan sebagai berikut :
1. Bagian Judul (Header)
Bagian ini hanya digunakan jika PL/SQL diberikan nama,misalnya untuk prosedur atau fungsi. Bagian ini berisi nama blok,daftar parameter, dan pengembalian hasil (return) jika blok adalahfungsi.
2. Bagian Deklarasi (declaration)
Bagian ini untuk membuat deklarasi mengenai semua variable dan konstanta yang direferensikan dalam pernyataan PL/SQL. Bagian deklarasi ini dimulai dengan perintah DECLARE. Jika tidak ada variable atau konstanta yang ingin dideklarasikan bagian ini boleh dihilangkan, bersifat optional.
3. Bagian Eksekusi (Execution)
Bagian ini memuat pernyataan-pernyataan PL/SQL yang akan ditulis. Bagian eksekusi ini harus dimulai dengan perintah BEGIN.
4. Bagian Perkecualian (Exception)
Bagian ini memuat cara menangani kesalahan-kesalahan (error) pada waktu eksekusi program PL/SQL, bersifat optional. Jika program tidak memuat cara menangani kesalahan, bagian ini boleh dihilangkan.Setiap pernyataan PL/SQL harus diakhiri dengan tanda titik koma(;) dan semua program PL/SQL harus diakhiri dengan perintah END.
Bentuk Umum Struktur PL/SQL
DECLARE
variabel tipe_data;
konstanta CONSTANT tipe_data := nilai;
...
BEGIN
statement_1;
statement_2;
...
EXCEPTION
WHEN nama_eksepsi THEN statement_untuk_mengatasi_error;
...
END;

Contoh Program (dengan exception):
SQL>SET SERVEROUTPUT ON
SQL>DECLARE
X Integer;
BEGIN
X := „Belajar Oracle‟;
DBMS_OUTPUT.PUT_LINE( TO_CHAR(X) );
EXCEPTION
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE („Kesalahan pada pengisian nilai‟);
END;

DBMS_OUTPUT
Merupakan paket yang disediakan oleh Oracle PL / SQL dan PUT_LINE merupakan salah satu prosedur yang dikemas. Menampilkan nilai-nilai pada SQL Plus * terminal yang harus diaktifkan dengan SERVEROUTPUT SET ON terlebih dahulu. Untuk menjalankan kode sampel ini, login ke SQL * Plus. PL / SQL blok diakhiri dengan tanda garis miring / atau garis byitself.
Tipe Data
a. Tipe Data dasar :
· Numerik
· NUMBER, BINARY_INTEGER, DEC, DOUBLE PRECISION, INTEGER, INT, NUMERIC.
· Karakter
· VARCHAR2, CHAR, LONG
· DATE
· BOOLEAN
· ROWID
b. Tipe Data tambahan : RECORD, ARRAY
Type data yang dapat dikenali dalam PL/SQL dapat berupa type data SQL dan type data
seperti :
1. BOOLEAN
Dipakai untuk menyatakan data logika, yaitu TRUE(benar), FALSE(salah), dan NULL(kosong).
2. BINARY_INTEGER 
Digunakan untuk mendeklarasikan bilangan yang tidak mempunyai angka desimal. Tipe data NATURAL dan POSITIVE merupakan subset dari BINARY_INTEGER. 3. %TYPE Tipe data ini dipakai untuk menandakan bahwa variabelyang deklarasikan sama dengan tipe data dari kolom tabel tertentu.

4. %ROWTYPE
Tipe data ini menandakan bahwa sekelompok variabel adalah sama dengan tipe data
Dari row suatu tabel tertentu.
5. Tabel dan Record
Tipe data komposit untuk pemakaian yang lebih kompleks.
Variabel dan Konstanta
Pada bagian deklarasi ditempatkan variable dan konstanta yang dipakai oleh pernyataan PL/SQL yang dibuat.
· Variabel adalah sebuah peubah yang digunakan untuk menampung sebuah nilai di
memori komputer. Dapat menerima nilai baru atau sebaliknya diubah pada saat program
dieksekusi Bentuk Umum :
variable_name datatype [NOT NULL := value ];
Keterangan :
· Variable_name adalah nama variabel.
· Datatype adalah valid PL / SQL datatype.
· NOT NULL adalah sebuah spesifikasi opsional pada variabel.
· Nilai atau DEFAULT juga merupakan spesifikasi opsional, di mana anda bisa
menginisialisasi variabel.
· Setiap deklarasi variabel adalah pernyataan terpisah dan harus diakhiri dengan titik koma.
Contoh Deklarasi variabel

DECLARE
X integer;
Alamat varchar2(40);
No_induk char(8);
.....
BEGIN
X := 12;
Alamat := „Gelatik Dalam 391, Bandung‟;
No_induk := „DOG29549‟;
END;
Ketika variabel ditetapkan sebagai TIDAK NULL, Anda harus menginisialisasi variable ketika dideklarasikan. Contoh di bawah ini menyatakan dua variabel, salah satunya adalah tidak null.
DECLARE
salary number(4);
dept varchar2(10) NOT NULL := “HR Dept”;
Nilai variabel yang bisa berubah dalam pelaksanaan atau pengecualian bagian PL / SQL Block. Kita dapat menempatkan nilai ke variabel dalam dua cara yang diberikan dibawah ini.
1. Kita dapat langsung memberikan nilai pada variabel. Sintaks Umum adalah:
variable_name:= value;
2. Kita dapat menempatkan nilai ke variabel langsung dari kolom database dengan
menggunakan SELECT… INTO statement. INTO pernyataan.
Sintaks Umum adalah:
SELECT column_name
INTO variable_name
FROM table_name
[WHERE condition];
· Konstanta
Digunakan untuk menyimpan sebuah nilai di memori komputer. Nilai yang disimpan bersifat tetap (konstan). Nilai ditentukan pada saat deklarasi dibuat sehingga nilainya tetap pada saat program dieksekusikan.
Contoh Deklarasi Konstanta :
DECLARE
pi CONSTANT real := 3.14;
lebar CONSTANT integer := 100;
Komentar
· Digunakan untuk memudahkan proses maintenance
· Jenis komentar :

· /* ... */ : untuk beberapa baris komentar
· -- ... : untuk satu bari komentar
Contoh :
/* Ini adalah komentar Oracle */
-- Ini juga komentar Oracle
PL/SQL (Procedural Language/Structure Query Language) adalah suatu blok yang berisi skrip-skrip bahasa prosedural. PL/SQL merupakan bahasa pemrograman procedural. PL/SQL dapat meningkatkan kinerja database
Struktur Blok PL/SQL
• Terdapat tiga bagian :
– Bagian pendeklarasian tipe data (opsional)
– Bagian penulisan perintah
– Bagian eksepsi (opsional)
Khusus bagi oracle, ada istilah PL/SQL. PL/SQL yang merupakan singkatan dari Procedural Language/Structured Query Language merupakan sebuah penggabungan antara bahasa pemrograman prosedural (PL) dan SQL syntax.


SEGERA MELAKSANAKAN.
Oracle Corporation lazim menambah fungsionalitas setiap rilis paket dengan berturut-turut
dari Database Oracle.
<<label>>
DECLARE
TYPE / item / FUNCTION / PROCEDURE declarations
BEGIN
Statements
EXCEPTION
EXCEPTION handlers
END label;
Para <<label>> dan MENYATAKAN dan bagian PENGECUALIAN adalah opsional.
Pengecualian, kesalahan yang timbul selama pelaksanaan kode, memiliki satu dari dua jenis:
1. Predefined pengecualian
2. Ditetapkan pengguna pengecualian.
Tipe data utama dalam PL / SQL termasuk NOMOR, INTEGER, CHAR, VARCHAR2, DATE, TIMESTAMP, dll TEKS. Fungsi di PL / SQL adalah kumpulan SQL dan / PL SQL laporan yang melakukan tugas dan harus mengembalikan nilai ke lingkungan menelepon. fungsi yang didefinisikan pengguna digunakan untuk melengkapi ratusan fungsi yang dibangun oleh Oracle.
Ada dua jenis fungsi dalam PL / SQL. Fungsi tradisional ditulis dalam bentuk:
CREATE OR REPLACE FUNCTION <function_name> [(input/output variable
declarations)] RETURN return_type
[AUTHID <CURRENT USER | DEFINER>] <IS|AS>
[declaration block]
BEGIN
<PL/SQL block WITH RETURN statement>
RETURN <return_value>;
[EXCEPTION
EXCEPTION block]
RETURN <return_value>;
END;
Penulisan funsi tabel :
CREATE OR REPLACE FUNCTION <function_name> [(input/output variable
declarations)] RETURN return_type
[AUTHID <CURRENT USER | DEFINER>] [<AGGREGATE | PIPELINED>] <IS|
USING>
[declaration block]
BEGIN
<PL/SQL block WITH RETURN statement>
PIPE ROW <return type>;
RETURN;
[EXCEPTION
EXCEPTION block]
PIPE ROW <return type>;
RETURN;
END;
· Numeric variables
variable_name NUMBER(P[,S]) := VALUE;
untuk mendefinisikan sebuah variabel numerik, programmer menambahkan para NOMOR tipe variabel dengan definisi nama. Untuk menentukan presisi (opsional) (P) dan skala (opsional) (S), salah satu lebih lanjut dapat menambahkan ini dalam kurung bulat, dipisahkan dengan koma. ("Precision" dalam konteks ini mengacu pada jumlah digit yang variabel dapat menahan, "skala" mengacu pada jumlah digit yang dapat mengikuti titik desimal.) Sebuah pilihan tipe data lain untuk variabel numerik akan mencakup: binary_float, binary_double, Desember, desimal presisi, double, float, integer, int, numerik, nyata, smallint, binary_integer.
Character variables
variable_name VARCHAR2(L) := 'Text'; Untuk mendefinisikan sebuah variabel karakter, programmer biasanya menambahkan para VARCHAR2 tipe variabel dengan definisi nama. Ada berikut dalam kurung jumlah karakter maksimum yang dapat menyimpan variabel.
Tipe data lain untuk variabel karakter meliputi: varchar, char, panjang, mentah, panjang mentah, nchar, nchar2, CLOB, gumpalan, bfile PL / SQL fungsi analogi ke tertanam bahasa prosedural yang terkait dengan database relasional lainnya. Sybase ASE dan Microsoft SQL Server telah Transact-SQL, PostgreSQL memiliki PL / DB2 pgsql (yang mencoba untuk meniru PL / SQL ke mana), dan IBM termasuk SQL prosedural Bahasa, [3] yang sesuai dengan / standar SQL ISO SQL PSM .
Para desainer dari PL / SQL model sintaks pada bahwa Ada. Baik Ada dan PL / SQL memiliki Pascal sebagai nenek moyang yang sama, dan PL / SQL juga menyerupai Pascal dalam berbagai aspek. Struktur paket / PL SQL mirip struktur Pascal program dasar atau unit
Borland Delphi. Pemrogram dapat mendefinisikan data global-jenis, konstanta dan variable statis, publik dan swasta, dalam sebuah paket / PL SQL. PL / SQL juga memungkinkan untuk definisi kelas dan instantiate ini sebagai obyek dalam PL / SQL code. Ini menyerupai penggunaan dalam bahasa pemrograman berorientasi objek seperti Object Pascal, C dan Java. PL / SQL merujuk kepada kelas sebagai suatu "Abstrak Data Type" (ADT) atau "User Defined Type" (UDT), dan mendefinisikan sebagai tipe data SQL Oracle-sebagai lawan jenis / PL SQL yang ditetapkan pengguna, yang memungkinkan yang digunakan baik dalam Engine Oracle SQL dan Oracle PL / SQL engine. Constructor dan metode dari Tipe Data Abstrak ditulis dalam PL / SQL. The Tipe Data Abstrak dihasilkan dapat beroperasi sebagai kelas objek dalam PL / SQL. objek tersebut juga dapat bertahan sebagai nilai-nilai kolom dalam tabel database Oracle. PL / SQL pada dasarnya berbeda dari Transact-SQL, meskipun kesamaan dangkal. Porting kode dari satu ke yang lain biasanya melibatkan kerja non-sepele, bukan hanya karena perbedaan dalam fitur set dari dua bahasa, tetapi juga karena perbedaan yang sangat signifikan dalam cara menangani Oracle dan SQL Server dengan concurrency dan penguncian. Proyek Fyracle bertujuan untuk memungkinkan eksekusi PL / SQL code dalam open-source database Firebird.
Struktur Kontrol PL/SQL
Pembahasan kali ini menunjukkan kepada kita bagaimana menyusun aliran control melalui program PL/SQL. Kita akan mempelajari bagaimana perintah-perintah dihubungkan dengan struktur-struktur kontrol sederhana namun powerful, yang memiliki single entry dan exit point. Secara bersama-sama, struktur-struktur ini dapat menangani berbagai situasi. Penggunaan yang tepat akan menghasilkan program terstruktur yang baik.
Gambaran Struktur Kontrol PL/SQL
Berdasarkan structure theorem, setiap program komputer dapat ditulis menggunakan struktur kontrol dasar yang ditunjukkan dalam Gambar 4-1. Mereka dapat dikombinasikan dalam suatu cara yang diperlukan untuk menjawab permasalahan-permasalahan yang ada
Keuntungan Penggunaan PL/SQL
• Integrasi
– 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
Kesimpulan nya perbedaan sql dan sql plus :
                   SQL
§  Sebuah bahasa
§  Standard ANSI
§  Keyword tidak dapat disingkat
§  Perintah-perintah memanipulasi data dan mendefinisikan didalam database 
 SQL PLUS
§        Sebuah lingkungan
§        Milik oracle
§        Keyword dapat disingkat 
§ Perintah-perintah tidak dapat memanipulasi data di dalam database.




blog.uin-malang.ac.id/faizz/files/10/PL-SQL

Contoh Relationship Pada Basis Data

Bahasan Sistem Basis Data kali ini tentang Entity Relationship Diagram (ERD) salah satu bentuk pemodelan basis data yang sering digunakan dalam pengembangan sistem informasi. Bahasan meliputi: Pengertian ERD, Notasi ERD, Metode ERD, Tahap ERD, Kardinalitas, dan Contoh kasus ERD

Pengertian ERD

Dalam rekayasa perangkat lunak, sebuah Entity-Relationship Model (ERM) merupakan abstrak dan konseptual representasi data. Entity-Relationship adalah salah satu metode pemodelan basis data yang digunakan untuk menghasilkan skema konseptual untuk jenis/model data semantik sistem. Dimana sistem  seringkali memiliki basis data relasional, dan ketentuannya bersifat top-down. Diagram untuk menggambarkan model Entitiy-Relationship ini disebut Entitiy-Relationship diagram, ER diagram, atau ERD.

Notasi ERD

Ada sejumlah konvensi mengenai Notasi  ERD. Notasi klasik sering digunakan untuk model konseptual. Berbagai notasi lain juga digunakan untuk menggambarkan secara logis dan fisik dari suatu basis data, salah satunya adalah IDEF1X.


Notasi-notasi simbolik yang digunakan dalam Entity Relationship Diagram adalah sebagai berikut :
  • Entitas, Adalah segala sesuatu yang dapat digambarkan oleh data. Entitas juga dapat diartikan sebagai individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999). Ada dua macam entitas yaitu entitas kuat dan entitas lemah. Entitas kuat merupakan entitas yang tidak memiliki ketergantungan dengan entitas lainnya. Contohnya entitas anggota. Sedangkan entitas lemah merupakan entitas yang kemunculannya tergantung pada keberadaaan entitas lain dalam suatu relasi.
  • Atribut, Atribut merupakan pendeskripsian karakteristik dari entitas. Atribut digambarkan dalam bentuk lingkaran atau elips. Atribut yang menjadi kunci entitas atau key diberi garis bawah.
  • Relasi atau Hubungan, Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda.
  • Penghubung antara himpunan relasi dengan himpunan entitas dan himpunan entitas dengan atribut dinyatakan dalam bentuk garis.
contoh erd :

Derajat relasi atau kardinalitas

Menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain. Macam-macam kardinalitas adalah:
  • Satu ke satu (one to one), Setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.
  • Satu ke banyak (one to many), Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.
  • Banyak ke banyak (many to many), Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya.

Tahap ERD

Tahap pertama pada desain sistem informasi menggunakan model ER adalah menggambarkan kebutuhan informasi atau jenis informasi yang akan disimpan dalam database. Teknik pemodelan data dapat digunakan untuk menggambarkan setiap ontologi (yaitu gambaran dan klasifikasi dari istilah yang digunakan dan hubungan anatar informasi) untuk wilayah tertentu.
Tahap berikutnya disebut  desain logis, dimana data dipetakan ke model data yang logis, seperti model relasional.  Model data yang loguis ini kemudian dipetakan menjadi model fisik , sehingga kadang-kadang, Tahap kedua ini disebut sebagai “desain fisik”.
Secara umum metodologi ERD sebagai berikut:

 

 

 

 

 

 

 

 

 

Contoh Kasus:

Sebuah perusahaan mempunyai beberapa bagian. Masing-masing bagian mempunyai pengawas dan setidaknya satu pegawai. Pegawai ditugaskan paling tidak di satu bagian (dapat pula dibeberapa bagian). Paling tidak satu pegawai mendapat tugas di satu proyek. Tetapi seorang pegawai dapat libur dan tidak dapat tugas di proyek.

Menentukan entitas

Entitasnya : pengawas, bagian, pegawai, proyek

Menentukan relasi dengan matrik relasi

 


Gambar ERD sementara

Hubungkan entitas sesuai dengan matrik relasi yang dibuat

Mengisi kardinalitas

Dari gambaran permasalahan dapat diketahui bahwa:
  • masing-masing bagian hanya punya satu pengawas
  • seorang pengawas bertugas di satu bagian
  • masing-masing bagian ada minimal satu pegawai
  • masing-masing pegawai bekerja paling tidak di satu bagian
  • masing-masing proyek dikerjakan paling tidak oleh satu pegawai
enentukan kunci utama
Kunci utamanya: Nomor Pengawas, Nama Bagian, Nomor Pegawai, Nomor Proyek

Menggambar ERD berdasarkan kunci

Ada dua relasi many to many pada ERD sementara, yaitu antara bagian dengan pegawai, pegawai dengan proyek, oleh sebab itu kita buat entitas baru yaitu bagian -pegawai dan pegawai-proyek Kunci utama dari entitas baru adalah kunci utama dari entitas lain yang akan menjadi kunci tamu di entitas yang baru.


Menggambar ERD berdasarkan kunci

Ada dua relasi many to many pada ERD sementara, yaitu antara bagian dengan pegawai, pegawai dengan proyek, oleh sebab itu kita buat entitas baru yaitu bagian -pegawai dan pegawai-proyek Kunci utama dari entitas baru adalah kunci utama dari entitas lain yang akan menjadi kunci tamu di entitas yang baru.

Menentukan atribut

Atribut yang diperlukan adalah: nama bagian, nama proyek, nama pegawai, nama pengawas, nomor proyek, nomor pegawai, nomor pengawas

Memetakan atribut

  • Bagian : Nama bagian
  • Proyek: Nama proyek
  • Pegawai:Nama pegawai
  • Pengawas: Nama pengawas
  • Proyek-Pegawai : Nomor proyek, Nomor pegawai
  • Pengawas: Nomor pengawas

Menggambar ERD dengan atribut

Memeriksa Hasil

Periksa apakah masih terdapat redundasi. ERD akhir: untuk pemodelan data pada sistem.
sumber : wordpress.com