Tampilkan postingan dengan label Oracle Database Dev. Tampilkan semua postingan
Tampilkan postingan dengan label Oracle Database Dev. Tampilkan semua postingan

Minggu, 21 Oktober 2018

Command Line Oracle Database DDL

Oracle Database merupakan produk yang dikembangkan oleh Oracle Corporation, pertama kali dirilis pada tahun 1979. Oracle dikembangkan oleh Larry-Ellison bersama Bob Miner, dan Ed Oates yang pada awalnya bekerja di Software Development Laboratories (SDL) pada tahun 1977.
SDL kemudian berhasil membuat versi prototype orisinil dari Oracle software, yaitu Oracle versi 1, yang ditulis dalam bahasa C  dan mempunyai SQL interface. Nama Oracle berasal dari code-name suatu proyek milik CIA dimana Larry-Ellison dulunya bekerja.

Oracle Relational Database Management System (Oracle RDBMS) atau sederhananya ‘Oracle’, merupakan sebuah RDBMS yang mempunyai fungsi antara lain sebagai berikut
- Data Storage pada area perancangan basis data
- Access Data untuk aplikasi tertentu, dengan Teknik Optimisasi
- Database Security dan pengaturan User Privilege tertentu
- Consistency Data yang berfungsi untuk proteksi data, dan locking-mechanism
- Integrity Data yang berfungsi pada implementasi basis data tersebar

Basic

Untuk masuk ke sqlplus di cmd
sqlplus
Describe Tabel
DESCRIBE nama_tabel; 
atau
DESC nama_tabel;

DDL

DDL merupakan bagian dari perintah SQL untuk membuat, memodifikasi atau menghapus struktur basis data Oracle.  Suatu DDL akan dieksekusi apabila sudah diakhiri dengan ‘;’ (titik koma).
DDL sendiri terdiri dari
- CREATE
- DROP
- ALTER
- RENAME
- TRUNCATE
- COMMENT

Perintah - perintah atau Command Line DDL pada Oracle 11g

A. CREATE

1. Create Table
Perintah Create Table digunakan untuk membuat/mendefinisikan sebuah tabel baru.
Syntax
CREATE TABLE nama_tabel  (
Nama_atribut1   tipe_data   CONSTRAINT_pk_nama_tabel  PRIMARY KEY,
Nama_atribut2   tipe_data   [unique]  [notnull/null]  [default] <nilai default>  [check],
............
);
Contoh
CREATE TABLE MAHASISWA(
id_mahasiswa char(4),
nama varchar2(30),
alamat varchar2(30),
no_telp varchar2(13),
CONSTRAINT pk_mahasiswa PRIMARY KEY(id_mahasiswa)
);

2. CREATE VIEW 
View merupakan sebuah tabel semu / tabel lojik, dimana datanya berasal dari satu/ lebih tabel lain sebagai tabel sumber. View biasa dibuat untuk memudahkan user menampilkan data.
Syntax
CREATE  [OR REPLACE]  [FORCE]  [NOFORCE]  VIEW  nama_view
[(alias[,alias]...)]  AS
Subquery  [with  <CHECK option>|<READ ONLY>];
Contoh
CREATE  OR  REPLACE  FORCE  VIEW   view_data_pembelian
(kode_pembelian,  nama_customer,  nama_barang,  harga)
AS
select  M.id_beli,  C.nama,  B.nama,  B.harga
from  membeli M,  customer C,  barang B
where  M.id_beli=‘M001’
and  M.id_customer=C.id_customer
and  M.id_barang=B.id_barang
with  check  option;
- OR REPLACE, digunakan apabila pada saat pembentukan view, ternyata view sudah ada, maka view didefinisikan kembali.
- FORCE, View akan dibuat walaupun tabel sumber belum ada.
- NOFORCE, View hanya akan dibuat bila tabel sumbernya sudah ada.
- With Check Option, View akan memeriksa data yang diinsert ataupun diupdate pada view.
- READ ONLY, dengan perintah ini maka operasi penambahan, pembaharuan, dan penghapusan melalui view tersebut tidak diperbolehkan.

3. CREATE SEQUENCE (MEMBUAT NOMOR UNIK SECARA OTOMATIS)
Sequence digunakan untuk mengenerate angka angka unik secara otomatis. Biasanya sequence diaplikasikan untuk membentuk primary key secara  otomatis.
Syntax
CREATE  SEQUENCE  nama_sequence
[increment  by  integer]
[start  with  integer]
[maxvalue  integer | nomaxvalue]
[minvalue  integer | nominvalue]
[cycle | nocycle]
[cache integer | nocache]
[ order | noorder]
;
Contoh
CREATE SEQUENCE seq_pembelian
Increment by 1
Start with 1
Maxvalue 9999
Minvalue 0
Nocycle
Nocache
Order;
Pada sintak pembentukan sequence terdapat beberapa kata kunci seperti berikut:
- INCREMENT BY, untuk menyatakan nilai penambahan/penurunan pada sequence.
- START WITH, untuk menyatakan nilai awal yang dihasilkan sequence.
- MAXVALUE, untuk menyatakan nilai tertinggi sequence. NOMAXVALUE berarti nilai tertinggi yang dihasilkan tidak dibatasi. MAXVALUE dan NOMAXVALUE bersifat optional. 
- MINVALUE, untuk menyatakan nilai terendah yang dihasilkan sequence. MINVALUE berarti nilai terendah yang dihasilkan tidak dibatasi. MINVALUE dan NOMINVALUE bersifat optional. 
- CYCLE, untuk menyatakan sequence akan kembali ke nilai terendah yang ditetapkan. NOCYCLE adalah kebalikan dari CYCLE.
- CACHE, untuk menentukan berapa banyak nilai dari sequence yang akan dialokasikan ke memori. NOCACHE berarti tidak ada nilai sequence yang dialokasikan ke memori.
- ORDER atau NOORDER berfungsi untuk menjamin atau tidak, nilai yang digenerate adalah berurut berdasarkan permintaan pada server paralel. Default dari klausa ini adalah NOORDER

Penggunaan Sequence 
Nama_sequence.nextval

4. CREATE SYNONYM
Synonym digunakan untuk membuat nama alias bagi sebuah tabel, view atau sequence. Synonym biasanya digunakan untuk menjaga keamanan struktur suatu tabel.
Syntax
CREATE  [PUBLIC]  SYNONYM  nama_synonim FOR nama_tabel/view/sequence;
Contoh
CREATE  SYNONYM  brg  FOR  barang;
Tujuan penggunaan synonim adalah: 
- Untuk mengganti atau menyingkat nama yang sulit diingat dari sebuah objek.
- User dapat mengakses data pada table yang berisi informasi yang sensitive dan private melalui synonym tanpa harus mengetahui nama table aslinya sehingga kamu tidak dapat melakukan perubahan pada struktur table

5. CREATE INDEX
Index digunakan untuk mempercepat pengaksesan data pada suatu tabel. Index dapat diberikan pada satu atau lebih kolom
Syntax
CREATE  INDEX  nama_index
On  nama_table(nama_atribut-1, nama_atribut-2, nama_atribut-n);
Contoh
CREATE  INDEX   alamat
ON  customer(alamat);
6. Create User
Create user digunakan untuk mendefinisikan user baru beserta passwordnya.
Syntax
CREATE  USER  nama_user
IDENTIFIED  BY  password_user;
Contoh
CREATE  USER  nama_user IDENTIFIED  BY  password_user;
Memberikan akses login ke user
GRANT  CONNECT,  RESOURCE  TO  nama_user;

B. DROP

1. Drop Table
Perintah ini digunakan untuk menghapus definisi tabel pada ORACLE yaitu semua data dan indeks yang dimiliki tabel.
Syntax
DROP  TABLE  nama_table  [CASCADE CONSTRAINT];
Contoh
DROP  TABLE  pegawai  CASCADE CONSTRAINT;
Option CASCADE CONSTRAINT akan menghapus pula constrain referensi integrity yang terhubung.

2. Drop View
3. Drop Sequence
4. Drop Synonim
5. Drop Index
6. Drop User
C. ALTER
D. RENAME
E. TRUNCATE
F. COMMENT

sumber: Modul Praktikum 2015 D3 Teknik Informatika Telkom University
Continue reading...

Tipe Data pada Oracle 11g

Datatype (tipe data) adalah klasifikasi atau jenis dari suatu informasi atau data tertentu. Setiap nilai yang dimanipulasi oleh Oracle memiliki sebuah tipe data masing-masing. Tipe data dari sebuah nilai tersebut diasosiasikan dengan nilai properti yang diset tetap. Properti ini menyebabkan nilai-nilai dari satu tipe data diperlakukan berbeda dengan nilai-nilai lain oleh Oracle.

Oracle Database menyediakan sejumlah built-in tipe data serta beberapa kategori untuk jenis yang ditentukan oleh pengguna, yang dapat digunakan sebagai tipe data. Penjelasan dari tipe data Oracle tiap-tiap tipe data akan dijelaskan pada bagian berikut:

Char (i): String dengan panjang karakter tetap sebesar ukuran i. Tipe data ini mempunyai kemampuan yang hampir sama yakni menyimpan karakter, hanya saja maksimum size yang disimpan hanya sebesar 2000 bytes.

Varchar2 (i): String yang memiliki panjang karakter variable dengan panjang maximal sebesar i. Tipe data ini memperbolehkan penyimpanan semua karakter yang dapat dimasukkan melalui keyboard. Maksimum size yang dapat disimpan sebesar 4000 bytes(karakter). Tipe data ini juga memungkinkan untuk menyimpan data numerik. Biasanya space akan langsung dielimansi jika menggunakan tipe data ini. 
Contoh : ”Informaticslab   ” (dengan 3 spasi di akhir) dimasukkan ke dalam kolom yang didefinisikan dengan tipe data varchar2, maka akan menjadi “Informaticslab” (tidak ada spasi)

Number(p,s): tipe data number memiliki presisi p dan s digit dibelakang koma Jika kita abaikan p dan s berarti dianggap sebagai tipe number floating point. Tipe data ini menyimpan bilangan integer sampai maksimum dari digit integer tersebut. Bagian kiri menunjukkan presisi dan bagian kanan menunjukkan skala. Contoh:

Number specification
Column Length
Decimal Digits
(4,2)
4
2
(7,4)
7
4
(15,11)
15
11

Jumlah integer yang disajikan adalah merupakan selisih antara kedua angka tersebut. Misalnya untuk spesifikasi (7,4) artinya 3 digit sebelum koma dan 4 digit dibelakang koma. Jika jumlah digit di belakang koma melebihi daripada yang sudah didefinisikan maka akan langsung dibulatkan.

Long: Data karakter dengan ukuran panjang bervariasi, hingga mencapai 2 GigaBytes. (tipe data ini tidak dapat digunakan sebagai key).

Raw(size): Tipe data berupa binary data dengan ukuran maksimal 255 bytes

Long Raw: Tipe data berupa binary data dengan ukuran maksimal 2 GigaBytes tidak dikonversi oleh oracle (data mentah apa adanya, spasi dihitung 1 karakter).

Date: Tipe data ini meyimpan waktu dan tanggal dari sebuah informasi, dengan komponen waktu yang dibulatkan ke detik terdekat.  Untuk menampilkannya menjadi sebuah text, harus menggunakan fungsi to_char.

Timestamp: Tipe data ini mirip dengan tipe data date. Di dalam tipe data ini terdapat komponen waktu yang dapat langsung ditampilkan tanpa harus mengubahnya terlebih dahulu dengan fungsi to_char.

Clob: Tipa data ini memperbolehkan penyimpanan objek dengan ukuran yang sangat besar sekitar 4 GB. Clob mirip sekali dengan varchar2 hanya saja tipe data ini mempunyai kapasistas maksimum yang lebih besar.

Blob: Tipe data ini memperbolehkan penyimpanan objek binary yang besar dan tidak terstruktur. Contoh dari tipe data blob adalah suara dan video.

Continue reading...

Selasa, 10 Juli 2018

PL/SQL Oracle



PL/SQL atau Procedural Language/Structure Query Language adalah sebuah bahasa yang menggabukan kekuatan dan fleksibilitas dari SQL.

Karakteristik PL/SQL

1. User friendly.
2. Bahasa standard dan portable dalam pengembangan oracle.
3. Merupakan bahasa bawaan dari oracle yang berarti PL/SQL dapat dieksekusi di host maupun di client
4. Integritas yang tinggi.

Struktur Blok PL/SQL
DECLARE
   Bagian Declarasi
BEGIN
  Bagian eksekusi
EXCEPTION
   Bagian exception
END;
/
set serveroutput on;    /* Perintah di sqlplus untuk mengaktifkan konsol output sebelum kita membuat perinta pl/sql */

/* contoh dasar Hello World di PL/SQL */
BEGIN
dbms_output.put_line('Hello World');
END;
/
/* pembuatan variable dengan type data di PL/SQL */
DECLARE
v_jml_beri number(2,0) not null :=12;
v_name_depan varchar2(15) := 'Tono';
v_nim char(9) := '113010000';
Today date := sysdate;
v_phi number(1,0) not null :=3;
BEGIN
dbms_output.put_line(TO_CHAR(v_jml_beri));
dbms_output.put_line(TO_CHAR(v_name_depan));
dbms_output.put_line(v_nim);
dbms_output.put_line(TO_CHAR(Today));
dbms_output.put_line(TO_CHAR(v_phi));
END;
/
/* Array di PL/SQL */
DECLARE
TYPE table_nomor IS TABLE OF number INDEX BY BINARY_INTEGER;
A table_nomor;
BEGIN
A(1) := 10;
A(2) := 20;
A(3) := 30;
dbms_output.put_line('Nilai elemen ke-1'||' = '||to_char(A(1)));
dbms_output.put_line('Nilai elemen ke-2'||' = '||to_char(A(2)));
dbms_output.put_line('Nilai elemen ke-3'||' = '||to_char(A(3)));
END;
/
/* Inputan dan condisonal IF ELSE di PL/SQL */
DECLARE
equal Exception;
v_nilai1 number := '&inputan1';
v_nilai2 number := '&inputan2';
BEGIN
if v_nilai1 = v_nilai2 then
raise equal;
elsif v_nilai1 < v_nilai2 then
dbms_output.put_line(v_nilai1||' Lebih kecil dari '||v_nilai2);
else
dbms_output.put_line(v_nilai1||' Lebih besar dari '||v_nilai2);
end if;
exception
when equal then
dbms_output.put_line(' Nilainya sama ');
END;
/
/* Loop di PL/SQL */
DECLARE
V_counter number := 1;
BEGIN
LOOP
dbms_output.put_line(V_counter);
V_counter := V_counter +1;
IF V_counter > 10 THEN
EXIT;
END IF;
END LOOP;
END;
/
/* While di PL/SQL*/
DECLARE
TYPE tablex IS TABLE OF varchar2(10) INDEX BY BINARY_INTEGER;
Data tablex;
vNoUrut number:=1;
BEGIN
WHILE vNoUrut <= 10 LOOP
Data(vNoUrut) := 'data ke-' || to_char(vNoUrut);
dbms_output.put_line(Data(vNoUrut));
vNoUrut:= vNoUrut+1;
end loop;
end;
/
/* FOR di PL/SQL */
DECLARE
TYPE tablex IS TABLE OF varchar2(10) INDEX BY BINARY_INTEGER;
Data tablex;
vNoUrut number;
BEGIN
FOR vNoUrut IN 1..10
LOOP
Data(vNoUrut) := 'data ke-' || to_char(vNoUrut);
dbms_output.put_line(Data(vNoUrut));
end loop;
end;
/
/* GOTO di PL/SQL*/
BEGIN
GOTO second_output;
dbms_output.put_line('This line will never execute.');
<<second_output>>
dbms_output.put_line('We are here!');
end;
/
Sekian Terimakasih :)
Continue reading...