Kamis, 01 Maret 2012 | By: Zizi Ramzi
ALL About Oracle

Perintah Dasar SQL

Perintah Select

Perintah Select digunakan untuk :
Selection : memilih baris/record
Projection : memilih kolom/field
Join : mengambil data dari beberapa tabel yang berbeda
Syntax Select
SELECT [DISTINCT] {*,column[alias],..}
FROM table;
Contoh:
SELECT loc,deptno
FROM emp

OPERATOR ARITMATIKA

Derajat Operator :
- Perkalian dan Pembagian
- Penjumlahan dan Pengurangan
- Bila ada ( ) maka ekspresi didalamnya dilaksanakan terlebih dahulu
Contoh :
SELECT ename,sal,12*sal+100 FROM emp;
NILAI NULL
Adalah nilai yang tidak ada, tidak didefinisikan, tidak diterapkan dan tidak diketahui.
Nilai null ¹ 0 { zero}, null ¹ spasi {blank}
Contoh:
SELECT ename,job,sal,comm. FROM emp;

KOLOM ALIAS

Digunakan untuk merubah tampilan judul kolom.
Menggunakan AS atau “ “ {Double Qoute}
Contoh:
SELECT ename AS name, sal “salary” FROM emp;
OPERATOR GABUNGAN
Digunakan untuk menghubungkan kolom satu dengan kolom yang lain.
Menggunakan opertor gabungan { || }
Contoh:
SELECT ename || job AS employees
FROM emp;
KOLOM ALIAS DAN GABUNGAN
Digunakan untuk merubah tampilan judul kolom.
Menggunakan AS atau “ “ {Double Qoute}
Contoh:
1. SELECT ename AS name, sal salary FROM emp;
2. SELECT ename ||”is a”|| job AS “employee details”
FROM emp;
BARIS DUPLIKAT / GANDA
Syntax Select
SELECT [DISTINCT] {*,column[alias],..}
FROM table;
Contoh:
SELECT loc,deptno
FROM emp

SQL dan SQL*PLUS

Keistimewaan SQL :
* Dapat digunakan oleh user baik yang berpengalaman atau tidak dalam pembuatan program
* Merupakan bahasa non prosedural
* Mengurangi sejumlah waktu untuk membuat dan memelihara sistem
      * Sintaksnya dalam bahasa Inggris
SQL dan SQL*PLUS
SQL *PLUS adalah lingkungan untuk melakukan hal berikut ini :
- Menjalankan perintah SQL untuk mengambil, mengubah, menambah dan memindahkan data dari database.
- Bentuk, kalkulasi, simpan & mencetak hasil QUERY dalam bentuk report
- Membuat file script untuk menyimpan perintah SQL sehingga digunakan kembali dimasa datang
SQL *PLUS EDITING COMMANDS
* APPEND TEXT.
* CHANGE / OLD / NEW.
* CHANGE / TEXT /.
* CLEAR BUFFER.
* DEL.
* DEL N.
* DEL M N
* INPUT
* INPUT TEXT
* LIST
* LIST N
* LIST M N
* RUN N
* N TEXT
* 0 TEXT
v SAVE FILENAME
v GET FILENAME
v START FILENAME
v @ FILENAME
v EDIT FILENAME
v SPOOL FILENAME
EXIT
BATASAN dan PENGURUTAN DATA
Membatasi Baris Menggunakan Pilihan
Syntax :
SELECT [ DISTINCT ] { * / column [alias], … }
FROM table
[ WHERE condition(s) ]
WHERE adalah batasan baris yang memenuhi kondisi
condition adalah susunan nama - nama kolom, ekspresi, konstanta dan operator perbandingan
Character String & Date
Syntax:
WHERE expr operator value
Contoh :
… WHERE hiredate = ‘01-JAN-95’
… WHERE sal >= 1500
… WHERE ename = ‘SMITH’
Character string dan date dalam WHERE clause harus dibatasi dengan tanda kutip tunggal (‘ ‘). Sedangkan number tidak perlu. Oracle menyimpan tanggal dalam bentuk numerik, yang menampilkan abad, tahun, bulan, tanggal, jam, menit, dan detik. Tanggal default dalam bentuk DD-MON-YY.
Operator perbandingan digunakan dalam kondisi yang membandingkan satu ekspresi dengan ekspresi yang lain.
OPERATOR PEMBANDING
OPERATOR BETWEEN
Digunakan untuk membandingkan diantara 2 nilai.
Syntax :
BETWEEN … AND
Contoh :
SELECT ename,sal FROM emp
WHERE sal BETWEEN 1000 AND 1500;
Anda dapat menampilkan baris berdasarkan range nilai tertentu menggunakan operator BETWEEN. Untuk menetapkan range harus disebutkan batas bawah dan batas atasnya.
OPERATOR IN
Digunakan untuk mencari nilai yang sama dengan nilai yang didalam kurung.
Syntax :
…… IN( List )
Contoh :
SELECT empno,ename,sal,mgr FROM emp
WHERE mgr IN(7902,7566,7788);
Operator IN dapat digunakan untuk data tipe apa saja. Jika yang didalam kurung ( ) bertipe karakter atau date gunakan kutip tunggal di tiap data.
OPERATOR LIKE
Digunakan untuk membandingkan nilai yang sesuai dengan susunan karakter yang ada.
Syntax :
…. LIKE ….
Contoh :
SELECT ename FROM emp
WHERE ename LIKE “S%”;
Anda dapat memilih baris yang sesuai dengan suatu pola karakter dengan menggunakan operator LIKE. Dua simbol dapat digunakan untuk membentuk string pencarian.
OPERATOR NULL
Digunakan membandingkan nilai apakah sama dengan NULL.
Syntax : … IS NULL
Contoh :
SELECT ename,mgr FROM emp
WHERE mgr IS NULL;
Operator NULL menguji nilai apakah null atau tidak.
Nilai null adalah sebuah nilai yang tidak ada, tidak didefinisikan, atau tidak diketahui.
Oleh karena itu, tidak dapat diuji dengan = karena sebuah nilai null tidak dapat disamakan dengan nilai apapun.
Urutan Operator LOGIKA :
1. Semua operator pembanding
2. NOT
3. AND
4. OR
Contoh :
SELECT ename,job FROM emp
WHERE job NOT IN(“CLERK”,”MANAGER”,”ANALYST”);
ORDER BY Clause
Syntax:
SELECT expr FROM table
[ WHERE condition(s)]
[ ORDER BY {column,expr} [ASC/DESC]];
Contoh:
SELECT ename, job, deptno, hiredate
FROM emp
ORDER BY hiredate DESC;
ORDER BY clause dapat digunakan untuk menentukan urutan tampilan dari record yang terpilih.
ASC : urutan baris / record dari kecil ke besar ( sebagai default pengurutan )
< optional > 

 
FUNGSI BARIS TUNGGAL
SQL FUNCTIONS
Dua macam SQL Functions :
Y Single row functions
-Memanipulasi data item
-Dapat memodifikasi tipe data
-Dapat berbentuk tersarang.
Y Multiple row functions
Syntax :
Function_name (column | ekpresi, [arg1, arg2, …])
Fungsi Karakter
Single-row character functions menerima data karakter sebagai masukan dan dapat menghasilkan nilai karakter dan bilangan.
Fungsi karakter dapat dibagi menjadi :
Case conversion functions
Character manipulation functions
Fungsi Mengubah Bentuk Huruf
  • LOWER : digunakan untuk mengubah untai karakter huruf menjadi huruf kecil.
  • INITCAP : digunakan untuk merubah huruf pertama dari setiap kata menjadi huruf besar dan sisanya huruf kecil.
  • UPPER : digunakan untuk mengubah untai karakter huruf menjadi huruf besar.
Fungsi Manipulasi Karakter
  • CONCAT : digunakan untuk menggabungkan nilai.
  • SUBSTR : digunakan untuk mengambil string yang panjangnya ditentukan.
  • LENGTH : digunakan untuk menunjukkan panjang dari string dengan angka
Fungsi Manipulasi Karakter
  • INSTR : digunakan untuk menemukan posisi numerik dari karakter yang disebutkan.
  • LPAD : digunakan untuk mengisi nilai karakter rata kiri.
  • TRIM : digunakan untuk memotong bagian atas atau menarik karakter dari untai karakter.
Fungsi Number
  • ROUND : untuk menerima masukkan numerik dan menghasilkan nilai numerik.
  • TRUNC : untuk membulatkan kolom, ekspresi atau nilai ke n desimal.
  • MOD : untuk menemukan sisa nilai1 dibagi nilai2.
Bekerja Dengan Date
  • SYSDATE : fungsi tanggal yang menghasilkan tanggal dan waktu sekarang.
  • DUAL : tabel dummy yang digunakan untuk melihat sysdate.
Contoh
SELECT SYSDATE
FROM dual;
Fungsi Date
MONTHS_BETWEEN(date1, date2)
ADD_MONTHS (date, n)
NEXT_DAY (date, ‘char’)
LAST_DAY (date)
ROUND (date[,’fmt’])
TRUNC (date[,’fmt’])
MENAMPILKAN DATA DARI BEBERAPA TABEL
JOIN
Macam - macam join :
  • Equijoin
  • Non – Equijoin
  • Outer Join
  • Self Join
Syntax :
SELECT table1.kolom, table2.kolom
FROM table1,table2
WHERE table1.kolom1 = table2.kolom2
EQUIJOIN
Adalah hubungan antara tabel yang meliputi komplemen primary dan foreign key.
Contoh :
SELECT emp.empno, emp.ename, emp.deptno,
dept.deptno,dept.loc
FROM emp,dept
WHERE emp.deptno = dept.deptno
NON - EQUIJOIN
Adalah ketidak terhubungannya antara field-field dari tabel-tabel yang telah dijoin.
Contoh :
SELECT e.ename,e.sal,s.grade
FROM emp.e,salgrade s
WHERE e.sal BETWEEN s.losal AND s.hisal;
OUTER JOIN
Digunakan untuk melihat baris yang biasanya tidak ketemu dari kondisi JOIN.
Operator yang digunakan adalah tanda plus ( + )
Syntax :
SELECT table1.column,table2.column
FROM table1,table2
WHERE table1.column(+) = table2.column;
SELECT table1.column,table2.column
FROM table1,table2
WHERE table1.column = table2.column(+);
SELF JOIN
Digunakan untuk mencari isi dari suatu field
Contoh :
SELECT worker.ename ||‘works for’||manager.ename
FROM emp.worker,emp.manager
WHERE worker.mgr = manager.empno;
Mengumpulkan Data Dengan Menggunakan Fungsi GROUP
Apakah Group Functions?
Fungsi Group beroperasi pada set baris untuk memberikan suatu hasil per group.
EMP
SALARI MAKSIMUM DITABEL EMP

Bentuk Umum Group Functions
SELECT [kolom,] group_function(kolom)
FROM tabel
[WHERE condition]
[GROUP BY kolom]
[ORDER BY kolom];

SALARI MAKSIMUM DITABEL EMP

MAX SALE
5000

Contoh Group Functions yang Umum Dipakai
AVG
COUNT
MAX
MIN
SUM
Contoh Penggunaan AVG dan SUM
Functions :
AVG and SUM hanya untuk numeric data.
SQL> SELECT AVG(sal), MAX(sal),
2 MIN(sal), SUM(sal)
3 FROM emp
4 WHERE job LIKE ‘SALES%’;



AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)
——– ——— ——— ———
1400 1600 1250 5600

Contoh MIN dan MAX Functions



MIN(HIRED MAX(HIRED
——— ———
17-DEC-80 12-JAN-83

MIN dan MAX untuk semua tipe data
SQL> SELECT MIN(hiredate), MAX(hiredate)
2 FROM emp;
Contoh COUNT Function

COUNT(*)
———
6
COUNT(*) untuk menghitung jumlah baris/record dalam sebuah Tabel
SQL> SELECT COUNT(*)
2 FROM emp
3 WHERE deptno = 30;

COUNT(COMM)
———–
4
COUNT(expr) memberikan jumlah baris yang tidak null
SQL> SELECT COUNT(kolom)
2 FROM emp
3 WHERE deptno = 30;
Contoh NVL Function pada Group Functions
NVL berfungsi memaksa Group untuk menyertakan nilai null



AVG(NVL(COMM,0))
—————-
157.14286

SQL> SELECT AVG(NVL(comm,0))
2 FROM emp;



Membuat Group dari Data
Tabel EMP
DEPTNO SAL
10 2450
10 5000
10 1300 Rata-rata gaji di setiap departemen pada table EMP
20 800
20 1100 Deptno AVG (Sale)
20 3000 ——— ————–
20 3000 10 2916.66667
20 2975 20 2175
30 1600 30 1566.66667
30 2850
30 1250
30 950
30 1500
30 1250

Membuat Groups Dengan
Menggunakan GROUP BY
SELECT kolom, group_function(kolom)
FROM tabel
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY kolom];
Membagi baris pada tabel ke groups yang lebih kecil dengan fungsi GROUP BY
Using the GROUP BY Clause

DEPTNO AVG(SAL)
——— ———
10 2916.6667
20 2175
30 1566.6667
Semua kolom pada daftar SELECT yang tidak berada di fungsi group harus berada dalam sintaks GROUP BY
SQL> SELECT deptno, AVG(sal)
2 FROM emp
3 GROUP BY deptno;
Group lebih dari satu kolom
Tabel EMP








DEPTNO JOB SAL
———— ——— ————
10 MANAGER 2450
10 PRESIDENT 5000
10 CLERK 1300
20 CLERK 800
20 CLERK 1100
20 ANALYST 3000
20 ANALYST 3000
20 MANAGER 2975
30 SALESMAN 1600
30 MANAGER 2850
30 SALESMAN 1250
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250


JOB SUM(SAL)
——— ————-
CLERK 1300
MANAGER 2450
PRESIDENT 5000
ANALYST 6000
CLERK 1900
MANAGER 2975
CLERK 950
MANAGER 2850
SALESMAN 5600



DEPTNO
——–
10
10
10
20
20
20
30
30
30






Jumlah gaji di Group berdasarkan departemen

Sintaks GROUP Untuk Beberapa Kolom
SQL> SELECT deptno, job, sum(sal)
2 FROM emp

DEPTNO JOB SUM(SAL)
————- ——— ————–
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 6000
20 CLERK 1900
9 rows selected.
3 GROUP BY deptno, job;
KESALAHAN QUERIES
DALAM PENGGUNAAN GROUP FUNCTION
SQL> SELECT deptno, COUNT(ename)
2 FROM emp;
SELECT deptno, COUNT(ename)
*
ERROR at line 1:
ORA-00937: not a single-group group function
Kesalahan terjadi karena dalam perhitungan jumlah ename
“COUNT(ename)” tidak ditentukan berdasarkan field yang mana?.
SQL> SELECT deptno, AVG(sal)
2 FROM emp
3 WHERE AVG(sal) > 2000
4 GROUP BY deptno;
WHERE AVG(sal) > 2000
*
ERROR at line 3
ORA-00934: group function is not allowed here
Klausa WHERE tidak dapat digunakan pada Aggregate Function,
Untuk keperluan tersebut gunakanlah klausa HAVING.
PENGGUNAAN KLAUSA HAVING

JOB PAYROLL
———— —————
ANALYST 6000
MANAGER 8275
SQL> SELECT job, SUM(sal) PAYROLL
2 FROM emp
3 WHERE job NOT LIKE ‘SALES%’
4 GROUP BY job
5 HAVING SUM(sal) > 5000
6 ORDER BY SUM(sal);
RINGKASAN
Urutan penulisan klausa dapat dilihat seperti bentuk umum dibawah ini :
SELECT field, fungsi_group(field)
FROM tabel
WHERE kondisi
GROUP BY field
HAVING kondisi_grup
ORDER BY field;
SUBQUERY
Tujuan Pembahasan
Setelah menyelesaikan materi berikut, anda diharapkan dapat :
Mampu mendeskripsikan permasalahan apa saja yang dapat diselesaikan menggunakan subquery
Mendefinisikan subquery
Menggunakan single-row & multiple-row subquery
Pengertian Subquery dan Sintaksnya
Subquery adalah sebuah statement SELECT yang digunakan didalam statement SELECT lainnya
Sintaks :
SELECT select_list
FROM table
WHERE expr_operator
( SELECT select_list FROM table);
Penggunaan Subquery dalam menyelesaikan masalah
Siapakah yang memiliki gaji lebih besar dari gajinya JONES
Main Query
Siapakah yang memiliki gaji lebiih besar dari gaji JONES

Petunjuk Penggunaan Subquery
Menuliskan subquery didalam tanda kurung ()
Menuliskan subquery disebelah kanan operator pembanding
Jangan menggunakan statement ORDER BY pada subquery
Gunakan operator single-row untuk single-row subquery
Gunakan operator multiple-row untuk multiple-row subquery
Subquery
Berapakah gaji JONES
Penggunaan Subquery
SQL > SELECT ename
FROM emp
WHERE sal >
( SELECT sal
FROM emp
WHERE empno = 7566);



ENAME
KING
FORD
SCOTT

Jenis-jenis subquery
Single-row subquery
Multiple-row subquery
Multiple-column subquery







Operator
Arti
=
Sama dengan / ANY
>
Lebih besar dari
> =
Lebih besar dari atau sama dengan
<
Kurang dari
< =
Kurang dari atau sama dengan
< >
Tidak sama dengan / IN/





Contoh Single-Row Subquery
SQL > SELECT ename, job

ENAME JOB
MILLER CLERK
FROM emp
WHERE job = ( SELECT job
FROM emp
WHERE empno = 7369 )
AND sal > ( SELECT sal
FROM emp
WHERE empno = 7876 ) ;
Menggunakan Group Function pada Subquery

ENAME JOB SAL
————– ————- ——-
SMITH CLERK 800
SQL > SELECT ename, job, sal
FROM emp
WHERE sal = ( SELECT MIN(sal)
FROM emp ) ;
Statement HAVING dalam Subquery
Oracle Server akan menjalankan subquery nya terlebih dahulu
Oracle Server akan mengirimkan hasil subquery ke statement HAVING pada Main Query
SQL > SELECT deptno, MIN(sal)
FROM emp
GROUP BY deptno
HAVING MIN(sal) > (SELECT MIN(sal)
FROM emp
WHERE deptno = 20) ;



Multiple-Row Subquery
Mengembalikan nilai lebih dari satu baris
Gunakan operator pembanding multiple-row
Operator
Arti
IN
Sama dengan nilai yang dihasilkan subquery
ANY
Membandingkan nilai hasil dari subquery
ALL
Membandingkan nilai hasil dari subquery

Menggunakan Operator ANY pada Multiple-Row Subquery
SQL > SELECT empno, ename, job
FROM emp
WHERE sal < ANY ( SELECT sal
FROM emp
WHERE job = ‘CLERK’ )
AND job < > ‘CLERK’ ) ;



EMPNO ENAME JOB
———— ————- ——————
7654 MARTIN SALESMAN
7521 WARD SALESMAN

Menggunakan Operator ALL pada Multiple-Row Subquery
SQL > SELECT empno, ename, job
FROM emp
WHERE sal > ALL ( SELECT avg(sal)
FROM emp
GROUP BY deptno) ;



EMPNO ENAME JOB
————- ————- ——————
7839 KING PRESIDENT
7566 JONES MANAGER
7902 FORD ANALYST
7788 SCOTT ANALYST

Kesimpulan :
Subquery sangat berguna apabila sebuh query tidak diketahui nilainya
SELECT select_list
FROM table
WHERE expr_operator
( SELECT select_list
FROM table);
Menentukan Batasan Data Melalui Input Pemakai dengan SQL* PLUS
Tujuan Pembahasan
Setelah menyelesaikan materi berikut, anda diharapkan dapat :
Menghasilkan queri yang memerlukan sebuah variabel input
Mengubah lingkungan SQL*Plus
Membuat dan menjalankan file script / program
Menyimpan hasil perubahan
Variabel Pengganti
Menggunakan variabel pengganti pada variabel substitusi untuk menyimpan suatu nilai sementara
v Single Ampersand (&)
v Double Ampersand (&&)
v Statement DEFINE & ACCEPT
Memberikan nilai dari satu perintah SQL ke lainnya
Mengubah Header dan Footer secara dinamik
Menggunakan (&) Variabel Pengganti
Menggunakan variabel yang didahului ampersand (&) untuk melakukan input yang dilakukan oleh user
SQL > SELECT empno, ename, sal, deptno
FROM emp
WHERE empno = employee_num ;



EMPNO ENAME SAL DEPTNO
7369 SMITH 800 20

Tipe Data
Karakter dan Date pada Variabel Pengganti
Gunakan tanda petik satu (‘ ‘) untuk tanggal dan karakter

ENAME DEPTNO SAL*12
SCOTT 20 36000
FORD 20 36000
SQL > SELECT ename, deptno, sal*12
FROM emp
WHERE job = ‘job_title’ ;
Spesifikasi Nama Kolom, Ekspresi & Text pada saat Runtime
SQL > SELECT empno, ename, job, &column_name
FROM emp
WHERE &condition
ORDER BY &order_column ;



Enter value for column_name : sal
Enter value for condition : sal >= 3000
Enter value for order_column : ename
EMPNO ENAME JOB SAL
7902 FORD ANALYST 3000
7839 KING PRESIDENT 5000
7788 SCOTT ANALYST 3000

Menggunakan (&&) Variabel Pengganti
Gunakan double-ampersand (&&) jika ingin menggunakan kembali nilai variabel tanpa harus menginput ulang
SQL > SELECT empno, ename, job, &&column_name
FROM emp
ORDER BY &column_name ;



Enter value for column_name : deptno
EMPNO ENAME JOB DEPTNO
7839 KING PRESIDENT 10
7782 CLARK MANAGER 10
7932 MILLER CLERK 10
. . . . .
14 rows selected

Mendefinisikan Variabel Pemakai
Untuk mendefinisikan variabel dapat digunakan salah satu dari kedua statement input pada SQL*PLUS dibawah ini :
v DEFINE : membuat variabel bertipe CHAR
v ACCEPT : membaca inputan user dan menyimpannya dalam variabel
Jika menggunakan statement DEFINE dan menginput nilai variabel terdapat spasi, maka harus digunakan tanda petik satu
Statement ACCEPT
Mengatur sendiri kalimat yang akan ditampilkan jika ada bentuk masukan berupa input
Mendafinisikan secara eksplisit tipe data variabel untuk NUMBER atau DATE
Menyembunyikan masukkan pemakai untuk alasan keamanan
ACCEPT variable [datatype] [FORMAT format]
[PROMPT text] [HIDE]
Menggunakan Statement ACCEPT
ACCEPT dept PROMPT ‘Provide the Department Name :

Provide the department name : SALES
DEPTNO DNAME LOC
30 SALES CHICAGO
SELECT *
FROM dept
WHERE dname = UPPER (&dept)
/
Perintah DEFINE dan UNDEFINE
Variabel akan terdefinisi sampai Anda :
v Menggunakan perintah UNDEFINE pada sebuah variabel
v Keluar dari SQL*PLUS
Saat Anda mengubah variabel menjadi tidak terdefinisi, Anda dapat memastikan perubahan dengan perintah DEFINE
Untuk mendefinisikan variabel-variabel itu untuk tiap sesi, ubahlah file login.sql agar variabel-variabel itu dibuat pada saat permulaan
Menggunakan Statement DEFINE
Membuat variabel untuk mendefinisikan nama departemen :
SQL > DEFINE deptname = sales
SQL > DEFINE deptname
SQL > DEFINE deptname = sales
Gunakan variabel seperti yang Anda inginkan :



SQL > SELECT *
FROM dept
WHERE dname = UPPER(‘&deptname’);

Mengubah LingkunganSQL*PLUS
Menggunakan statement SET untuk mengontrol session yang sedang aktif
SET system_variable value
Pastikan apa yang telah Anda atur (set) dengan menggunakan perintah SHOW
SQL > SET ECHO ON



SQL > SHOW ECHO
echo ON

Variabel Perintah SET
ARRAYSIZE {20 | n}
COLSEP {_ | text}
FEEDBACK {6 | n | OFF | ON}
HEADING {OFF | ON}
LINESIZE {80 | n}
LONG {80 | n}
PAGESIZE {24 | n}
PAUSE {OFF | ON | text}
TERMOUT {OFF | ON}
Menyimpan Perubahan dalam File login.sql
File Login.sql berisi standar SET dan perintah SQL*Plus lain yang Anda butuhkan untuk setiap sesi
Anda dapat mengubah login.sql agar berisi perintah SET tambahan
Format Statement SQL*PLUS
COLUMN [column option]
TTITLE [text | OFF | ON]
BTITLE [text | OFF | ON]
BREAK [ON report_element]
Menggunakan Statement Column
Membuat judul(heading) kolom
COLUMN ename HEADING ‘Employee|Name’ FORMAT A15
COLUMN sal JUSTIFY LEFT FORMAT $99,990.00
COLUMN mgr FORMAT 999999999 NULL ‘No manager’
Menampilkan setting untuk kolom ENAME
COLUMN ename
Menghapus setting untuk kolom ENAME
COLUMN ename CLEAR
Model Format Kolom
Elemen
Penjelasan
Contoh
Hasil
An
Set lebar dari n
N/A
N/A
9
Single Zero-suppression digit
999999
1234
0
Enforces leading zero
099999
01234
$
Floating tanda $
$9999
$1234
L
Mata Uang Local
L9999
L1234
.
Desimal
9999.99
1234.00
,
Ribuan
9,999
1,234
Menggunakan Statement BREAK
Memperkecil duplikasi dan baris sesi
Menghapus nilai yang ganda
SQL > BREAK ON ename ON job
Memecah baris per sesi sesuai nilai BREAK
SQL > BREAK ON ename SKIP 4 ON job SKIP 2
Menggunakan Statement TTITLE dan BTITLE
Menampilkan header dan footer
TTI[TLE] [text | OFF | ON]
Mengatur header dari report
SQL > TTITLE ‘Salary | Report’
Mengatur footer dari report
SQL > BTITLE ‘Confidential’
Membuat Script untuk Menjalankan Report
  1. Membuat statement SELECT SQL
  2. Menyimpan statement SELECT dalam sebuah file script
  3. Memanggil file script kedalam editor
  4. Menambah perintah format sebelum perintah SELECT
  5. Verifikasi bahwa karakter pengeksekusi mengikuti perintah SELECT
  6. Menghapus perintah format setelah perintah SELECT
  7. Menyimpan file script
  8. “START nama_file” untuk menjalankan scriptnya
SQL> set pagesize 37
SQL> set linesize 60
SQL> set feedback off
SQL> ttitle ‘EMPLOYEE|REPORT’
SQL> btitle ‘CONFIDENTIAL’
SQL> break on job
SQL> column job heading ‘JOB|CATEGORY’ format A15
SQL> column ename heading ‘EMPLOYEE’ format A15
SQL> column sal heading ‘SALARY’ format $99,999.99
SQL> rem**insert selet statement
SQL> select job,ename,sal
2 from emp
3 where sal<3000
4 order by job,ename;



MEMANIPULASI DATA
Tujuan
Pada akhir bab ini, anda diharapkan dapat melakukan hal berikut :
Mendeskripsikan setiap statemen DML
Menyisipkan baris ke dalam tabel
Meng-update baris di tabel
Menghapus baris dari sebuah tabel
Mengendalikan transaksi
MENAMBAHKAN BARIS BARU KE DALAM TABEL
Dengan memberikan perintah INSERT
Sintaks :
INSERT INTO table [( coloumn [,coloumn…] ) ]
VALUES (VALUE [ ,VALUE….]);
Dengan :
Table : nama tabel
Coloumn : nama kolom pada tabel yang akan dimasukkan nilainya
Value : nilai yang diberikan untuk kolom yang bersangkutan
MENAMBAHKAN BARIS BARU
Nilai yang dimasukkan harus sesuai dengan urutan kolom yang
ada pada tabel.
Bersifat optional untuk menuliskan nama-nama kolom pada
klausa INSERT.
SQL > INSERT INTO dept (deptno,dname, loc)
2 VALUE ( 50,’DEVELOPMENT’, ‘DETROIT’);
1 row created.
Berikan kutip satu pada karakter dan nilai tanggal.
BAHASA PEMANIPULASIAN DATA
Perintah DML dieksekusi ketika anda :
Menambah baris baru ke tabel
Memodifikasi baris yang telah ada
Menghapus baris yang telah ada dari sebuah tabel
Transaksi adalah sekumpulan perintah DML yang membentuk sebuah unit kerja logik
MENAMBAHKAN BARIS DENGAN NILAI NULL
Metode Implisit :
Dengan menyertakan kolom yang dimaksud pada kolom yang akan dimasukkan.



SQL > INSERT INTO dept (deptno, dname)
2 VALUES ( 60, ‘MISA’);
1 row created.

Metode Eksplisit :
Mencantumkan keyword Null pada klausa VALUES
Mencantumkan string kosong ( ‘ ‘) pada klausa
VALUES untuk tiap data , karakter dan Date saja.



SQL > INSERT INTO dept
2 VALUES (70.’FINANCE’, NULL);
1 row created.

MEMASUKKAN NILAI KHUSUS
Fungsi SYSDATE mencatat tanggal dan waktu sekarang.



SQL > INSERT INTO emp ( empno, ename, job,mgr, hiredate,
2 sal,comm, deptno)
3 VALUES ( 7196 ,’GREEN’,’SALESMAN’, 7782,
4 SYSDATE, 2000, NULL, 10);
1 row created.

MEMASUKKAN NILAI TANGGAL SPESIFIK
Tambahkan employee baru

SQL > INSERT INTO emp
2 VALUES ( 2296, ‘AROMANO’, ‘SALESMAN’, 7782,
3 TO_DATE ( ‘FEB 3, 1997’, ‘MON DD, YYYY’)
4 1300, NULL, 10);
1 row created

MEMASUKKAN NILAI MENGGUNAKAN VARIABEL SUBTITUSI
Membuat perintah insert yang memperbolehkan user menambahkan nilai secara interaktif menggunakan variabel subtitusi SQL * PLUS
SQL > INSERT INTO dept (deptno, dname, Loc)
2 VALUES (&department_id, ‘&department_name’,
3 ‘&location’);
Enter value for department_id : 80
Enter value for department_name : education
Enter value for location : ATLANTA
1 row created.
MEMBUAT SCRIPT DENGAN MENGATUR PROMPT
ACCEPT menyimpan nilai didalam variabel
PROMPT menampilkan text yang ingin ditampilkan
ACCEPT department_id PROMPT ‘Please enter the department number:’
ACCEPT department_name PROMPT ‘Please enter the department name :’
ACCEPT location PROMPT ‘Please enter the location :’
INSERT INTO dept (deptno, dname, loc)
VALUES &department_id,’&department_name’,’&location’);
MENYALIN BARIS DARI TABEL LAIN
Perintah INSERT dapat digunakan untuk menambahkan baris kedalam tabel dengan nilai yang diperoleh dari tabel yang ada.
Sintaks :
INSERT INTO table [coloumn(,coloumn)]
Subquery ;
SQL > INSERT INTO managers (id, name, salary, hiredate)
2 SELECT empno, ename, sal, hiredate from emp
3 WHERE Job = ‘ MANAGER’;
3 row created
Jangan menggunakan klausa VALUES.
Jumlah dan tipe data kolom pada klausa INSERT harus sesuai dengan jumlah dan tipe data nilai yang ada di subquery.
PERINTAH UPDATE
Anda dapat memodifikasi baris yang ada menggunakan perintah UPDATE .
Sintaks :
UPDATE table
SET column = value [ value, column = value, ….]
[where condition];
Dengan :
Value = nilai atau hasil subquery untuk kolom yang dimaksud.
Condition = Mengidentifikasi baris tertentu yang akan di update.
MENGUPDATE BARIS DI TABEL
Sebuah baris / beberapa baris spesifik dimodifikasi ketika anda menspesifikasikan klausa WHERE.
SQL > UPDATE emp
2 SET deptno = 20
3 WHERE empno = 7782;
1 row updated.
Semua baris akan dimodifikasi jika anda tidak memakai WHERE
SQL > UPDATE emp
2 SET deptno = 20
14 row updated.
MENGUPDATE DENGAN MULTIPLE-COLUMN SUBQUERY
Sintaks :
UPDATE table
SET (column, column…..) =
(SELECT column, column,…..
FROM table
WHERE condition)
WHERE condition;
UPDATE emp
SET (job,deptno) =
(SELECT job,deptno FROM emp
WHERE empno = 7499)
WHERE empno = 7698;
1 row created
MEMODIFIKASI BARIS BERDASARKAN TABEL LAIN
Gunakan subquery pada perintah UPDATE untuk memodifikasi baris disuatu tabel.
SQL > UPDATE employee
2 SET deptno = (SELECT deptno From emp
3 WHERE empno = 7788)
4 WHERE job = (SELECT job FROM emp
5 WHERE empno = 7934);
2 row updated.
INTEGRITY CONSTRAINT ERROR
SQL > UPDATE emp
2 SET deptno = 55
3 WHERE DEPTNO = 10;
UPDATE emp
*
ERROR at line 1 :
ORA-02291 : integrity constraint (USR.EMP_DEPTNO_FK)
Violated – parent key not found
PERINTAH DELETE
Anda dapat menghapus baris yang telah ada dari tabel dengan menggunakan perintah DELETE.
DELETE [From] table
[WHERE condition] ;
MENGAPUS BARIS DARI TABEL
Baris spesifik akan dihapus jika anda menspesifikasikan klausa WHERE.
SQL > DELETE FROM department
2 WHERE dname = ‘DEVELOPOMENT’ ;
1 row deleted.
Semua baris ditabel akan dihapus jika anda tidak menggunakan klausa WHERE.
SQL > DELETE FROM department;
4 row deleted.
MENGHAPUS BARIS BERDASARKAN TABEL LAIN
Gunakan subquery pada perintah DELETE untuk menghapus dari tabel berdasarkan pada nilai tabel lain.
SQL > DELETE FROM employee
2 WHERE deptno =
3 (SELECT depno FROM dept
4 WHERE dname = ‘SALES’);
6 row deleted.
INTEGRITY CONSTRAINT ERROR
SQL > DELETE FROM emp
2 WHERE deptno = 10;
DELETE FROM dept
*
ERROR at line 1 :
ORA-02291 : integrity constraint (USR.EMP_DEPTNO_FK)
Violated – child key found
TRANSAKSI DATABASE
Terdiri dari salah satu perintah-perintah berikut ini :
Perintah – perintah DML membuat suatu perubahan konsisten terhadap data.
Satu perintah DDL.
Satu perintah DCL.
TRANSAKSI DATABASE
Dimulai saat perintah eksekusi pertama SQL di eksekusi
Diakhiri dengan salah satu dari hal berikut ini terjadi :
- Dijalankan sebuah perintah COMMIT atau ROLLBACK
- Dijalankan sebuah perintah DDL atau DCL.
- User keluar.
- Sistem mengalami crash.
KEUNTUNGAN PERINTAH COMMIT DAN ROLLBACK
Menjamin konsistensi data.
Data sebelumnya dapat dirubah sebelum dibuat secara permanen.
GROP logically related opertiions.
MENGKONTROL TRANSAKSI
PROSES TRANSAKSI SECARA IMPLISIT
AUTOMATIC COMMIT =
- Peritah DDL atauDCL dkeluarkan
- Keluar dari SQL * PLUS tanpa mengeluarkan perintah COMMIT atau ROLLBACK
AUTOMATIC ROLLBACK =
- Mengakhiri SQL * PLUS secara abnormal atau system failure
KEADAAN DATA SEBELUM DI COMMIT ATAU DI ROLLBACK
Data dapat dikembalikan ke keadaan sebelumnya.
User yang bersangkutan dapat melihat hasil operasi pemanipulasian data dengan menggunakan perintah SELECT.
User lain tidak dapat melihat hasil operasi pemanipulasian data.
Baris-baris yang dipergunakan dikunci, user lain tidak dapat mengubah data pada baris yang bersangkutan.
KEADAAN DATA SETELAH DI COMMIT
Perubahan data dibuatkan permanen kedalam database.
Keadaan data sebelunya secara otomatis hilang.
Semua user dapat melihat hasil transaksi.
Lock pada baris-baris yang terkena perubahan dilepas, dan kini dapat diakases oleh user lain.
Semua Savepoint dihapus.
MEN-COMMITKAN DATA
Buat perubahan
SQL > UPDATE emp
2 SET deptno =10
3 WHERE empno = 7782;
1 row updated.
Men-COMMIT perubahan
SQL > COMMIT;
commit complete.
KEADAAN DATA SETELAH DI ROLLBACK
Semua Perubahan data dapat dibatalkan menggunakan perintah ROLLBACK.
Perubahan data dibatalkan.
Data dikembalikan ke keadaan semula.
Lock pada baris-baris yang terkena perubahan dilepas
ROLLBACK PERUBAHAN
Buatlah tanda pada transaksi saat ini dengan menggunakan perintah SAVEPOINT.
ROLLBACK pada tanda tersebut dengan menggunakan perintah ROLLBACK TO SAVEPOINT.
SQL > UPDATE…
SQL>SAVEPOINT update _done;
savepoint created.
SQL> INSERT…
SQL > ROLLBACK TO update_done;
ROLLBACK complete.
ROLLBACK LEVEL PERINTAH
Jika perintah DML mengalami kesalahan pada saat eksekusi pengaruhnya dibatalkan oleh rollback level perintah. Oracle memberikan COMMIT secara implisit sebelum dan sesudah perintah DDL.
Semua perubahan dapat dikembalikan.
Meskipun perintah DDL tidak berhasil dijalankan, anda tidak dapat melakukan rollback perintah perintahsebelumnya karena server telah melakukan commit.
READ CONSISTENCY
Read consistency menjamin user melihat seluruh data secara konsistenPerubahan yang dilakukan oleh satu user tidak akan konflik dengan perubahan yang dilakukan oleh user lain.
Read consistency memastikan pada data yang sama :
Readers tidak melihat data yang sedang diubah
writer yakin bahwa perubahan database dilakukan secara konsisten.
LOCKING
Mekanisme yang menghindari interaksi destruktif antara transaksi-transaksi yang mengakses sumber daya yang sama.
Tidak dapat dilihat oleh user
Tidak memerlukan aksi dari user
Locking pada oracle dilakukan secara otomatis
MEMBUAT DAN MENGELOLA TABEL
Data Obyek
Sebuah database oracle dapat terdiri dari beberapa struktur data.
Tabel : menyimpan data.
View : subset data dari satu atau lebih tabel.
Sequence : menghasilkan nilai primary key.
Index : meningkatkan kinerja query.
Synonym : memberikan alternatif nama obyek database.
Struktur Tabel Oracle
Aturan Penamaan
Nama tabel dan kolom harus dimulai dengan huruf dan panjangnya dapat mencapai 30 karakter.
Nama hanya terdiri dari karakter A-Z , a-z, 0-9, _ , $ dan #
Nama suatu tabel tidak boleh sama dengan nama obyek database lainnya yang berada disatu oracle server.
Nama tidak boleh sama dengan reserved word
Statement Create Table
Dengan perintah SQL CREATE TABLE. Perintah ini termasuk dalam DDL.
Sintaks :
CREATE [ GLOBAL TEMPORARY ] TABLE [schema] table (column datatype [DEFAULT expr] , [.....]);
Dengan :
GLOBAL TEMPORARY : menspesifikasikan bahwa tabel bersifat sementara dan definisinya dapat dipakai oleh semua session. Data yang terdapat pada tabel sementara (temporary) hanya dapat digunakan pada session yang memasukkan data tersebut ke dalam tabel.
Schema : sama dengan nama pembuat tabel.
Table : nama tabel.
DEFAULT expr : menspesifikasikan nilai default jika nilainya dihilangkan dari statement insert.
Column : nama kolom.
Datatype : tipe dan panjangnya data kolom.
Option Default
Sebuah kolom boleh diberikan nilai default menggunakan option DEFAULT.
Nilai default dapat berupa literal, ekspresi atau fungsi SQL.
Nilai default tidak boleh berupa nama kolom lain ataupun pseudocolumn.
Ekspresi default harus sesuai dengan tipe data kolom tersebut.
Pembuatan Tabel
Membuat tabel
SQL> CREATE TABLE dept
2 (deptno NUMBER(2),
3 dname VARCHAR2 (14),
4 loc VARCHAR2 (13) ) ;
Table created.
Menampilkan struktur tabel
SQL> DESCRIBE dept ;
Kamus Data Query
(Querying Data Dictionary)
Ada sekumpulan tabel dan view lain pada database oracle yang dikenal sebagai data dictionary.
Data dictionary dibuat dan dipelihara oleh server oracle dan berisi informasi database.
Ada 4 kategori view data dictionary, setiap kategori memiliki prefix tersendiri yang menunjukkan kegunaannya :
Kategori View Data Dictionary
Prefix
Keterangan
USER_
View berisi informasi mengenai obyek-obyek yang dimiliki user
ALL
View berisi informasi mengenai semua table (object table dan relational table) yang dapat diakses oleh user
DBA_
View ini merupakan view terbatas, yang hanya dapat diakses oleh DBA
V$_
View ini berisi informasi mengenai kinerja dinamis, kinerja database server dan locking
Tipe Data
Deskripsi
VARCHAR2(size)
Data karakter variable length (ukuran maksimum harus disebutkan). Ukuran minimum dan defaultnya adalah 1, maksimum 4000.
CHAR(size)
Data karakter fixed length dengan ukuran bytes (ukuran minimum dan defaultnya 1, maksimum 2000).
NUMBER(p,s)
Number memiliki presisi p dan skala s (presisi adalah jumlah keseluruhan digit desimal, skala adalah jumlah digit poin desimal. Presisi berkisar dari 1 sampai 38 dan skala berkisar dari -84 sampai 127).
Membuat Tabel Dari
Baris-Baris Di Tabel Lain
Sintaks : CREATE TABLE table
[ ( column, column,....) ]
As subquery;
Dengan :
column :nama kolom, nilai default dan integrity constraint.
subquery :statement SELECT yang mendefinisikan sekumpulan baris yang dimasukkan ke dalam tabel yang dibuat.
Contoh :
SQL> CREATE TABLE dept30
As
SELECT empno, ename, sal*12 ANNSAL, hiredate
FROM emp
WHERE deptno = 30 ;
Table created
Statement ALTER TABLE
Statement Alter table digunakan untuk :
Menambah sebuah kolom baru
Memodifikasi kolom yang sudah ada
Sintaks : ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[ , column datatype] …..);
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[ , column datatype] …..);
Dengan :
column : nama kolom baru
datatype : tipe data dan panjang kolom baru
DEFAULT expr : menspesifikasikan nilai default untuk kolom baru
Menambahkan Kolom
Anda dapat menggunakan add clause untuk menambahkan kolom.
.
SQL>ALTER TABLE dept30
2 ADD ( job VARCHAR2(9)) ;
Table altered
Kolom yang baru kita buat akan menjadi kolom terakhir.
EMPNO ENAME ANNSAL HIREDATE JOB
—————- ————- ————- ————— ——–
7698 BLAKE 34200 01-MAY-81
7654 MARTIN 15000 28-SEP- 81
7499 ALLEN 19200 20-FEB- 81
………
6 rows selected
Mengubah Kolom
Anda dapat Mengubah typedata kolom,ukuran dan nilai awal.
SQL> ALTER TABLE dept30
2 MODIFY ( ename VARCHAR2(15));
Table altered.
Perubahan pada nilai default hanya mempengaruhi sisipan yang berikutnya.
Menghapus Kolom
Menggunakan statement ALTER TABLE dengan klausa DROP COLUMN
SQL>ALTER TABLE dept30
2 DROP COLUMN job;
Table altered.
Petunjuk :
Kolom mungkin kosong atau berisi data
Kolom hanya dapat dihapus satu persatu
Tabel harus memiliki paling tidak satu kolom setelah dilakukan proses ALTER
Setelah kolom dihapus, tidak dapat dikembalikan seperti semula
Option Set Unused
Option SET UNUSED memberikan tanda pada satu atau lebih kolom bahwa kolom-kolom tersebut dapat dihapus saat tidak dibutuhkan lagi.
Sintaks :
ALTER TABLE table
SET UNUSED (column) ;
OR
ALTER TABLE table
SET UNUSED COLUMN column ;
Option Drop
Unused Columns
Statement DROP UNUSED COLUMNS menghapus semua kolom yang telah ditandai sebagai unused.
Sintaks :
ALTER TABLE table
DROP UNUSED COLUMNS ;
SQL> ALTER TABLE dept30
SET UNSED (ename) ;
Table altered
SQL> ALTER TABLE dept30
DROP UNSED COLUMN ;
Table altered
Menghapus Tabel
Statement DROP TABLE menghapus tabel beserta definisinya
Sintaks :
DROP TABLE table ;
Mengubah Nama Tabel
Perintah DDL RENAME digunakan untuk mengganti nama table, view, sequence atau synonym.
Sintaks :
RENAME old_name TO new_name
Truncate Table
Untuk menghapus semua baris dari suatu tabel dan membebaskan storage yang digunakan tabel tersebut.
Sintaks :
TRUNCATE TABLE table ;
Menambahkan Komentar Tabel
Menambahkan komentar ke sebuah tabel atau kolom menggunakan statement COMMENT.
Sintaks :
COMMENT ON TABLE table | COLUMN table.column IS ‘text’
Dengan :
table : nama tabel
column : nama kolom
text : teks komentar
Komentar disimpan dalam data dictionary dan dapat dilihat pada salah satu dari view berikut :
- ALL_COL_COMMENTS
- USER_COL_COMMENTS
- ALL_TAB_COMMENTS
- USER_TAB_COMMENTS

Apakah Constraint itu ?

? Menjamin pelaksanaan aturan pada level tabel.
? Mencegah penghapusan tabel jika terdapat ketergantungan dari tabel lain.
? Di bawah ini adalah tipe constraint yang berlaku di oracle :
ĂĽ NOT NULL ĂĽ FOREIGN KEY
ĂĽ UNIQUE ĂĽ CHECK
ĂĽ PRIMARY KEY

Panduan Constraint

? Semua constraint disimpan dalam data dictionary.
? Jika tidak diberi nama, oracle akam membuat dengan format SYS_Cn.
? Constraint didefinisikan saat membuat tabel atau setelah tabel terbentuk.

Mendefinisikan Constraint

Sintaks :
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr]
[column_constraint],
[table_constraint][,...]);
Level Kolom :
column [CONSTRAINT constraint_name] constraint_type,
Level Tabel :
column,…
[CONSTRAINT constraint_name] constraint_type
(column, …),

Constraint NOT NULL

@ Memastikan bahwa nilai null tidak diperbolehkan.
@ Hanya dapat dispesifikasikan pada level kolom.
@ Contoh :
SQL> CREATE TABLE emp(
2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL);

Constraint UNIQUE KEY

@ Mengharuskan nilai pada sebuah atau sekelompok kolom bernilai unik.
@ Contoh :
SQL> CREATE TABLE dept(
2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE(dname));

Constraint PRIMARY KEY

@ Hanya ada satu primary key yang dibuat untuk setiap tabel.
@ Mengidentifikasikan setiap baris dalam tabel secara unik.
@Contoh :

SQL> CREATE TABLE dept(

2 deptno NUMBER(2),
3 dname VARCHAR2(14),
4 loc VARCHAR2(13),
5 CONSTRAINT dept_dname_uk UNIQUE (dname),
6 CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));

Constraint FOREIGN KEY

@ Membentuk sebuah relasi dengan primary key pada tabel yang sama atau pada tabel yang berbeda.
@ Dapat didefinisikan pada level kolom atau tabel.
@ Contoh :
SQL> CREATE TABLE emp(
2 empno NUMBER(4),
3 ename VARCHAR2(10) NOT NULL,
4 job VARCHAR2(9),
5 mgr NUMBER(4),
6 hiredate DATE,
7 sal NUMBER(7,2),
8 comm NUMBER(7,2),
9 deptno NUMBER(7,2) NOT NULL,
10 CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno)
11 REFERENCES dept (deptno));
KEYWORDS FOREIGN KEY
@FOREIGN KEY digunakan untuk mendefinisikan kolom pada child table pada constraint level tabel.
@REFERENCES mengidentifikasikan tabel dan kolom di parent table.
@ ON DELETE CASCADE mengindikasikan bahwa saat baris di parent table dihapus, baris yang berhubungan denganya di child tabel juga akan terhapus.

Constraint CHECK

@Mendefinisikan kondisi yang harus dipenuhi setiap baris.
@ Beberapa kondisi yang tidak diperbolehkan :
§ Bereferensi ke pseudocolumn CURRVAL, NEXTVAL, LEVEL, & ROWNUM.
§ Memanggil fungsi SYSDATE, UID, USER, & USERNV.
§ Query yang mengambil nilai dari baris lain.
@Tidak ada batas jumlah constraint check yang dapat didefinisikan terhadap sebuah kolom.
@ Constraint CHECK dapat didefinisikan pada level kolom atau tabel.
@ Contoh :
…, deptno NUMBER(2),
CONSTRAINT emp_deptno_ck
CHECK (DEPTNO BETWEEN 10 AND 99),…

Menambahkan Constraint

@ Menggunakan statement ALTER TABLE dengan kalusa ADD.
@ Untuk menambahkan constraint NOT NULL gunakan klausa MODIFY.
@ Constraint tidak dapat diganti/dimodify strukturnya, untuk mengganti harus dihapus terlebih dahulu.
@Dapat menambah, mengahapus, menonaktifkan maupun mengaktifkan constraint.
@ Sintaks :
ALTER TABLE table
ADD [CONSTRAINT constraint] type (column);
@ Contoh :
SQL> ALTER TABLE emp
2 ADD CONSTRAINT emp_mgr_fk
3 FOREIGN KEY(mgr) REFERENCES emp(empno);
Table altered.

Menghapus Constraint

@ Sintaks :
ALTER TABLE table
DROP PRIMARY KEY / UNIQUE(column) / CONSTRAINT constraint [CASCADE]
@ Klausa CASCADE menyebabkan semua constraint yang berhubungan akan terhapus.
@ Contoh :
SQL> ALTER TABLE dept
2 DROP PRIMARY KEY CASCADE;
Table altered.
SQL> ALTER TABLE emp
2 DROP CONSTRAINT emp_mgr_fk;
Table altered.

Menonaktifkan Constraint

@ Klausa DISABLE dapat digunakan pada statement CREATE TABLE atau ALTER TABLE
@ Klausa CASCADE menonaktifkan integrity constraint yang berhubungan.
@ Contoh :
SQL> ALTER TABLE emp
2 DISABLE CONSTRAINT emp_empno_pk CASCADE;
Table altered.

Mengaktifkan Constraint

@ Indeks UNIQUE atau PRIMARY KEY akan terbuat secara otomatis, jika mengaktifkan constraint UNIQUE atau PRIMARY KEY.
@ Klausa ENABLE dapat digunakan pada statement CREATE TABLE atau ALTER TABLE
@ Contoh :
SQL> ALTER TABLE emp
2 ENABLE CONSTRAINT emp_empno_pk;
Table altered.

Melihat Constraint

@ Lakukan query terhadap tabel USER_CONSTRAINTS
SQL> SELECT constraint_name, constraint_type,
2 search_condition
3 FROM user_constraints
4 WHERE table_name = ‘EMP’;
CONSTRAINT_NAME C SEARCH_CONDITION
———————————- -- ————————-
SYS_C00674 C EMPNO IS NOT NULL
SYS_C00675 C DEPTNO IS NOT NULL
EMP_EMPNO_PK P
Melihat Kolom-kolom yang terhubung dengan Constraint

Lakukan query terhadap view USER_CONS_COLUMN

SQL> SELECT constraint_name, column_name
2 FROM user_cons_columns
3 WHERE table_name = ‘EMP’;
CONSTRAINT_NAME COLUMN_NAME
———————————— ————— ————————————
EMP_DEPTNO_FK DEPTNO
EMP_EMPNO_PK EMPNO
EMP_MGR_FK MGR
SYS_C00674 EMPNO
SYS_C00675 DEPTNO
Text Box:  Membuat View
Tujuan :
Setelah mempelajari bab ini, diharapkan anda dapat :
- menjelaskan apa itu view
- membuat view
- merubah view
- membuat Complex View
- menghapus view
Pengertian :
View adalah tabel logika yang berdasarkan pada sebuah tabel atau lebih. Tabel yang ada pada view dinamakan “tabel asal”, view disimpan seperti perintah select pada data dictionary
Syntax :
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view [(alias[, alias]…)]AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY];
Contoh :
SQL> CREATE VIEW empvu10
2 AS SELECT empno, ename, job
3 FROM emp
4 WHERE deptno = 10;
View created.
Merubah View
Melihat struktur view yang telah dibuat :
SQL> DESCRIBE empvu10
merubah view yang telah kita buat :
SQL> CREATE OR REPLACE VIEW empvu10
2 (employee_number, employee_name, job_title)
3 AS SELECT empno, ename, job
4 FROM emp
5 WHERE deptno = 10;
View created.
Membuat Complex View
Contoh :
SQL> CREATE VIEW dept_sum_vu
2 (name, minsal, maxsal,avgsal)
3 AS SELECT d.dname,MIN(e.sal), MAX(e.sal),
4 AVG(e.sal)
5 FROM emp e, dept d
6 WHERE e.deptno = d.deptno
7 GROUP BY d.dname;
View created.
Menghapus View
Syntax :
DROP VIEW view;
Contoh :
SQL> DROP VIEW empvu10;
View dropped.

Apakah Sequence itu ?

?Menghasilkan nilai yang unik.
?Penggunaannya seperti membuat nilai Primary Key.
?Mengubah kode aplikasi.
? Mempercepat efisiensi mengakses nilai sequence ketika disembunyikan dalam memory

Membuat Sequence

? Sintaks :
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
? Contoh :

SQL> CREATE SEQUENCE dept_deptno

2 INCREMENT BY 1
3 START WITH 91
4 MAXVALUE 100
5 NOCACHE
6 NOCYCLE;
Sequence created.

Melihat Nilai Sequence

@ Nilai-nilai sequence disimpan dalam tabel data dictionary USER_SEQUENCE.
SQL> SELECT sequence_name, min_value, max_value,
2 increment_by, last_number
3 FROM user_sequences;
@ Kolom LAST_NUMBER menampilkan nomor sequence yang digunakan selanjutnya.
NEXTVAL dan CURRVAL Peudocolumns
@ NEXTVAL mengembalikan kegunaan nilai sequence selanjutnya.
§ Mengembalikan nilai unik saat diperintah oleh user lain.
@ CURRVAL memperoleh nilai-nilai sequence yang ada saat itu.
§ NEXTVAL harus terbentuk terlebih dahulu sebelum CURRVAL berisi nilai.
Aturan Penggunaan NEXTVAL dan CURRVAL
@ Boleh digunakan dalam :
§ SELECT list pada statement SELECT yang bukan bagian dari subqueri.
§ SELECT list pada subqueri dalam statement INSERT.
§ Klausa VALUES pada statement INSERT.
§ Klausa SET pada statement UPDATE.
@ Tidak Boleh digunakan dalam :
§ SELECT list pada view.
§ Statement SELECT dengan klausa DISTINCT.
§ Statement SELECT dengan klausa GROUP BY, HAVING, atau ORDER BY.
§ Subqueri dalam statement SELECT, DELETE atau UPDATE.
§ DEFAULT ekps dalam perintah CREATE TABLE atau ALTER TABLE.
Penggunaan Nextval & Currval dalam Sequence
@ Tambahkan departemen baru dengan nama departement ‘MARKETING’ DI San Diego.
SQL> INSERT INTO dept(deptno, dname, loc)
2 VALUES (dept_deptno.NEXTVAL,
3 ‘MARKETING’, ‘SAN DIEGO’);
1 row created.
@ Tampilkan data yang ada saat ini dari sequence DEPT_DEPTNO.
SQL> SELECT dept_deptno.CURRVAL
2 FROM dual;
Memodifikasi Sequence
Contoh :
SQL> ALTER SEQUENCE dept_deptno
2 INCREMENT BY 1
3 MAXVALUE 999999
4 NOCACHE
5 NOCYCLE;
Sequence altered.
Menghapus Sequence
@ Menghapus Sequence dari data dictionary menggunaan perintah DROP SEQUENCE.
@ Sekali terhapus, sequence tidak dapat dipanggil lagi.
SQL> DROP SEQUENCE dept_deptno;
Sequence dropped.
Apakah Index itu ?
@ Sebuah objek skema.
@ Gigunakan oracle server untuk mempercepat pencarian baris dengan menggunakan pointer.
@ Dapat mengurangi I/O disk dengan menggunkan metode akses jalur cepat untuk mempercepat penemuan data.
Membuat Index
@ Membuat index untuk satu atau lebih kolom.
CREATE INDEX index
ON table (column[, column]…);
@ Contoh :
SQL> CREATE INDEX emp_ename_idx
2 ON emp(ename);
Index created.
Kapan Membuat Index ??
@ Kolom sering digunakan dalam klausa WHERE atau kondisi JOIN.
@ Kolom berisi rata-rata nilai yang besar.
@ Kolom berisi banyak nilai NULL.
@ 2 atau lebih kolom sering digunakan bersama dalam klausa WHERE atau kondisi JOIN.
@ Tabel yang besar dan sering digunakan untuk pencarian 2 – 4% baris.
Kapan Index
tidak perlu Dibuat ???
@ Tabel Kecil
@ Kolom tidak sering digunakan sebagai kondisi dalam queri.
@ Banyak queri yang digunakan untuk pencarian data yang lebih dari 2 – 4 % baris.
@Tabel sering diupdate.
Melihat Index
@ View data dictionary USER_INDEXES berisi mana index dan yang bersifat unik.
@ View USER_IND_COLUMNS berisi nama index, nama tabel, dan nama kolom.
SQL> SELECT ic.index_name, ic.column_name,
2 ic.column_position col_pos,ix.uniqueness
3 FROM user_indexes ix, user_ind_columns ic
4 WHERE ic.index_name = ix.index_name
5 AND ic.table_name = ‘EMP’;
Synonyms
@ Membuat nama lain untuk objek.
@ Memudahkan objek untuk mengakses.
@ Mempersingkat nama objek.
@ Sintaks :
CREATE [PUBLIC] SYNONYM synonym
FOR object;
Membuat dan Menghapus Synonym
@ Membuat sebuah nama singkat untuk view DEPT_SUM_VU.
SQL> CREATE SYNONYM d_sum
2 FOR dept_sum_vu;
Synonym Created.
@ Menghapus synonim.
SQL> DROP SYNONYM d_sum;
Synonym dropped

0 komentar:

Posting Komentar