Kumpulan Perintah SQL
Kumpulan Perintah SQL
SQL
PENDY
Perjanjian
ORACLE menganggap semua perintah adalah
HURUF BESAR
Semua sama : SELECT, select, Select
Termasuk Nama Object : SISWA, siswa, Siswa
dianggap sama
kecuali
LITERAL menggunakan tanda , tergantung penulisan:
Ini, INI,ini dianggap berbeda
NAMA suatu pengenal menggunakan tanda : SISWA,
Siswa, siswa dianggap berbeda
Pendahuluan
Perintah SQL:
Data Retrieval. Digunakan untuk mengambil/membaca Object
Database
SELECT
Format :
SELECT *|{[DISTINCT] kolom|ekspresi [alias],} FROM tabel
Kondisi :
Membaca pegawai yang memiliki gaji >= 2000 dollar dan bekerja pada
departemen 20, 30 atau 40
SELECT * FROM emp WHERE sal>=2000 AND deptno IN(20,30,40);
Membaca data pegawai dari departemen 40 yang memiliki gaji dari 1000
sampai 2000 dollar
SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 AND
deptno=40;
Membaca data pegawai yang memiliki huruf kedua dari nama adalah D dan
bekerja pada departemen tertentu, dan urutkan berdasarkan nama dengan
urutan menurun
SELECT * FROM emp WHERE ename like _D% AND deptno IS NOT NULL
ORDER BY ename DESC;
Fungsi Single-Row
Input fungsi dari satu baris/record, dan menghasilkan satu per baris.
Input banyak baris, menghasilkan banyak baris yang sama
Contoh Fungsi
Umum (nvl, nvl2, decode)
SELECT nvl(deptno,0) FROM emp;
Jenis Join
Equijoin
Nonequijoin
outer join
self join
Contoh Join
Kartesian, untuk mendapatkan seluruh kombinasi data
SELECT * FROM emp,dept;
Equijoin, relasi antar tabel dengan nilai data yang sama tepat
SELECT * FROM emp e,dept d WHERE e.deptno=d.deptno AND
ename=ADAMS;
outer join, relasi dengan tabel yang kemungkinan nilai datanya tidak
ada
SELECT * FROM emp e,dept d WHERE e.deptno=d.deptno(+);
Contoh Group
Menghitung jumlah pegawai setiap departemen dan
mengurutkan hasilnya berdasar nomor departemen
SELECT deptno,count(empno) jumlah FROM emp GROUP BY
deptno ORDER BY deptno;
Subquery
Mencari sesuatu yang berasal dari hasil query lainnya
Petunjuk
Subquery diawali dengan kurung buka dan diakhiri dengan kurung
tutup
Subquery diletakkan pada sisi kanan dari suatu perbandingan
Penggunaan order by dalam subquery tidak diperlukan, kecuali
untuk melakukan analisa top-n
Gunakan operator yang sesuai dengan hasil dari subquery. Singlerow operator dengan single-row subquery, multiple-row operator
dengan multiple-row subquery
Contoh Subquery
Siapa saja pegawai yang gajinya lebih besar dari gaji Adam ? Untuk
itu, harus dicari dulu, berapa gaji Adam ?
SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE
ename=ADAMS);
Inline View
Digunakan untuk mengantikan list Tabel menjadi perintah
QUERY
Untuk melakukan operasi yang tidak berasal dari tabel
aslinya
Menyederhanakan perintah yang rumit
Memanipulasi Data
DML - Data Manipulation Language
Menambah baris data baru
Mengubah isi suatu baris data
Menghapus suatu baris data
Kontrol Transaksi
Operasi Kontrol Transaksi
COMMIT;
ROLLBACK;
SAVE POINT
Auto ROLLBACK
Keluar dari SQL*PLUS secara tidak normal
Kegagalan System
Menambahkan Konstrain
Kegunaan :
Jenis
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHEK
Konstrain
NOT NULL
Suatu kolom harus memiliki nilai tertentu (tidak boleh kosong)
UNIQUE
Suatu kolom harus tidak boleh memiliki nilai yang sama (tetapi boleh null)
, kolom tipe NOT NULL UNIQUE,
, CONSTRAINT nama_konstrain UNIQUE (kolom), ...
PRIMARY KEY
FOREIGN KEY
Menyatakan suatu kolom harus sesuai dengan kolom lain dari suatu tabel
, kolom tipe REFERENCES tabel(kolom),
, CONSTRAINT nama_konstrain FOREIGN KEY(kolom) REFERENCES tabel(kolom), ...
CHECK
Melakukan pengujian pada suatu kolom
..., CONSTRAINT nama_konstrain CHECK kondisi, ...
Membuat VIEW
Kegunaan:
Membatasi Akses Data
Menyederhanakan query
Menghasilkan bentuk lain dari data yang sama
Format :
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW nama
[(kolom_alias,)] AS subquery [WITH CHECK OPTION [CONSTRAINT
konstrain]] [WITH READ ONLY [CONSTRAINT konstrain]];
Contoh :
CREATE OR replace view pegawai as SELECT * FROM emp e,dept d
WHERE e.deptno=d.deptno;
Index
CREATE index nama on tabel(kolom);
Synonym
CREATE synonym nama for nama_object
Contoh
Menggabungkan semua hasil dari pegawai yang
bekerja pada departemen 20 dan departemen 30.
Hasilnya sama dengan perintah : select * from
emp where deptno in(20,30) order by deptno
SELECT * FROM emp WHERE depno=20 union all
SELECT * FROM emp WHERE deptno=30;