Anda di halaman 1dari 30

KUMPULAN PERINTAH

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

DDL (Data Definition Language). Digunakan untuk menyatakan


suatu Object Database
CREATE, ALTER, DROP, RENAME, TRUNCATE

DML (Data Manipulation Language). Digunakan untuk


pengubahan Object Database
INSERT, UPDATE, DELETE, MERGE

Transaction Control. Digunakan untuk mengendalikan Transaksi


COMMIT, ROLLBACK, SAVEPOINT

DCL (Data Control Language). Digunakan untuk mengendalikan


Object Database
GRANT, REVOKE

Penulisan SQL SELECT Dasar


Pembagian/Kemampuan perintah SELECT
Proyeksi : Memilih Kolom
Seleksi : Memilih Baris
Join : Penggabungan tabel

Format :
SELECT *|{[DISTINCT] kolom|ekspresi [alias],} FROM tabel

SELECT artinya memilih kolom mana yang akan


ditampilkan (proyeksi)
Dapat berupa list kolom, suatu persamaan (operasi aritmatika),
fungsi, obyek tertentu
Dapat diberikan alias (nama lain) pada masing-masing list

FROM menunjukkan nama Tabel yang akan ditampilkan


Dapat berupa tabel tunggal, join, view, inline view

Contoh Perintah SQL


Melihat seluruh tabel yang dimiliki oleh USER
SELECT * FROM tab;

Melihat struktur suatu tabel


DESC emp;

Melihat seluruh isi suatu tabel


SELECT * FROM emp;

Melihat hanya sebagian kolom dari suatu tabel


SELECT ename,deptno FROM emp;

Melihat sekaligus melakukan operasi pada suatu kolom dan memberikan


alias pada masing-masing kolom
SELECT ename nama,sal gaji,sal*(0.10) bonus FROM emp;

Melakukan penggabungan dengan suatu literal dan kolom


SELECT nama : ||ename FROM emp;

Mengambil hanya nilai-nilai yang berbeda/membatasi hasil yang muncul


(semua pegawai bekerja pada departemen apa saja)
SELECT DISTINCT deptno FROM emp;

Memilih/Membatasi dan Mengurutkan Data


Memilih baris data mana saja yang akan ditampilkan (seleksi)
Format :
SELECT *|{[DISTINCT] kolom|ekspresi [alias],} FROM table
[WHERE kondisi] [ORDER BY kolom [ASC|DESC]];

WHERE menyatakan batasan apa saja yang diberikan


ORDER BY menyatakan hasil akan diurutkan menurut kolom mana
(bisa lebih dari satu kolom)
ASC (atau tidak disebutkan/default) menyatakan urutan naik
DESC menyatakan urutan turun

Kondisi :

Perbandingan - =, <>, >, <. <=, >=


Range - IN(), BETWEEN AND , LIKE
Boolean - AND, OR, NOT
NULL - IS NULL, IS NOT NULL

Contoh Perintah SQL


Membaca data semua pegawai yang bekerja pada departemen dengan nomor
departemen 40
SELECT * FROM emp WHERE deptno=40;

Membaca data lengkap pegawai dengan nama ADAMS


SELECT * FROM emp WHERE ename=ADAMS;

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

Mengolah data items


Dapat menerima argumen dan menghasilkan satu nilai
Mengeluarkan nilai untuk setiap baris data
Dapat mengubah tipe data
Dapat dalam bentuk bersarang (nested)
Dapat menerima argumen berupa data kolom atau suatu ekspresi

Fungsi Multi-Row : Melakukan operasi pada sekelompok baris data


untuk menghasilkan sebuah data. Input fungsi dari banyak baris,
menghasilkan satu atau banyak baris (Gouping, Fungsi Agregat)

Contoh Fungsi
Umum (nvl, nvl2, decode)
SELECT nvl(deptno,0) FROM emp;

Karakter (lower, upper, initcap, concat, substr)


SELECT lower(ename) FROM emp;

Bilangan (round, trunc, mod)


SELECT sal,round(sal/100) FROM emp;

Tanggal (sysdate, add_months, round, trunc)


SELECT sysdate,sysdate+1 besok FROM dual;

Konversi implisit, atau eksplisit (to_number, to_date, to_char)


SELECT to_char(sysdate,dd-mm-yyyy) FROM dual;

Menggabungkan Tabel (Join)


Kegunaan :
Digunakan untuk menampilkan dari banyak tabel
Mengkombinasikan seluruh kemungkinan data antar banyak tabel
Mendapatkan informasi yang tersimpan pada tabel lain (melakukan
relasi antara satu tabel dengan tabel lainnya)

Jenis Join

Equijoin
Nonequijoin
outer join
self join

Mulai 9i, memiliki jenis join yang kompatibel


dengan SQL99

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;

Nonequijoin, untuk mencari/membandingkan nilai antara


SELECT * FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal
AND s.hisal 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(+);

self join, relasi dengan diri sendiri


SELECT * FROM emp e,emp m WHERE e.mgr=m.empno AND
e.ename=ADAMS;

Menampilkan Data Menggunakan


Fungsi Group
Mengoperasikan sekelompok baris data menjadi
bentuk group data
Fungsi Group : AVG, COUNT, MAX, MIN,
SUM,
Format :
SELECT [kolom,] fungsi_group(kolom), FROM
tabel [WHERE kondisi] [GROUP BY kolom]
[HAVING kondisi_group] [ORDER BY kolom];

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;

Menghitung total gaji pegawai dari departemen nomor 20,


30, atau 40, tetapi hanya menampilkan yang total setiap
jurusannya lebih besar dari 5000 dollar
SELECT deptno,sum(sal) FROM emp WHERE deptno
IN(20,30,40) GROUP BY deptno having sum(sal)>5000 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);

Hasil subquery harus satu baris, menggunakan perbandingan


SELECT * FROM emp WHERE sal=(SELECT sal FROM emp WHERE
ename=ADAMS);

Hasil subquery boleh banyak baris, menggunakan range


SELECT * FROM emp WHERE sal in (SELECT sal FROM emp
WHERE deptno=20)

Salah, karena operator perbandingan digunakan pada subquery yang


menghasilkan banyak baris
SELECT * FROM emp WHERE sal=(SELECT sal FROM emp WHERE
deptno=20);

Inline View
Digunakan untuk mengantikan list Tabel menjadi perintah
QUERY
Untuk melakukan operasi yang tidak berasal dari tabel
aslinya
Menyederhanakan perintah yang rumit

Contoh Inline View


Membaca data pegawai dengan nomor departemen>20,
yang berasal dari suatu inline view
SELECT * FROM (SELECT ename,deptno FROM emp) WHERE
depno>20

Melakukan operasi join hasi dari suatu inline view


SELECT e.*,d.dname FROM (SELECT ename,depno FROM emp
WHERE sal>1000) e,(SELECT deptno,dname FROM dept
WHERE deptno>20) d WHERE e.deptno=d.deptno

Melakukan manipulasi data pada suatu inline view


UPDATE (SELECT ename,sal FROM emp WHERE delpno=20)
SET sal=1000 WHERE sal=1100

Sedikit tentang SQL*Plus


Subsitusi Variabel
&variable, untuk tiap kali run selalu memasukkan
nilai
SELECT * FROM emp WHERE sal>&gaji;

&&variable, untuk hanya sekali saja memasukkan


nilai
SELECT * FROM emp WHERE sal>&&gajih;

Mendefinisikan nilai secara langsung


define gajih=1500;

Memanipulasi Data
DML - Data Manipulation Language
Menambah baris data baru
Mengubah isi suatu baris data
Menghapus suatu baris data

Transaksi adalah kumpulan dari perintah


DML yang membentuk suatu suatu kerja
tertentu

Contoh Operasi DML


Operasi DML
INSERT into dept (deptno,dname,loc) values
(1,IT,SURABAYA);
UPDATE dept set loc=JAKARTA WHERE
deptno=1;
DELETE dept WHERE deptno=1;

Kontrol Transaksi
Operasi Kontrol Transaksi
COMMIT;
ROLLBACK;
SAVE POINT

Kontrol Transaksi Implisit


Auto COMMIT
Melakukan operasi DDL dan DCL
Keluar dari aplikasi SQL*PLUS secara normal

Auto ROLLBACK
Keluar dari SQL*PLUS secara tidak normal
Kegagalan System

Membuat dan Mengatur Tabel


CREATE
CREATE TABLE nama (
kolom tipe konstrain,
kolom tipe konstrain,
,
CONSTRAINT nama_konstrain konstrain);

tipe : NUMBER, CHAR, VARCHAR, DATE,


konstrain : NOT NULL, PRIMARY KEY, UNIQUE,
DEFAULT,
Perintah Lainnya :
ALTER TABLE, DROP TABLE, TRUNCATE TABLE

Menambahkan Konstrain
Kegunaan :

Memberikan aturan pada tingkat table


Membatasi Manipulasi tertentu pada Tabel
Menjaga Integritas Data
Menjaga Validitas Data

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

Suatu kolom dinyatakan sebagai kunci utama dari suatu tabel


Otomatis dianggap UNIQUE dan NOT NULL
, kolom tipe NOT NULL PRIMARY KEY, ...
..., CONSTRAINT nama_konstrain PRYMARY KEY(kolom), ...

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, ...

Contoh Membuat Tabel


CREATE TABLE dosen(
nip
varchar(15) not null primary key,
nama
varchar(50) not null
);
CREATE TABLE siswa(
nrp
varchar(15) not null primary key,
nama
varchar(50) not null,
dosen_wali varchar(15) references dosen(nip)
);
CREATE INDEX nama_siswa ON siswa(nama);

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;

Inline VIEW, view yang langsung dituliskan pada baris perintah


SQL tanpa perlu membuat object view
SELECT * FROM (SELECT empno,ename,depno,sal FROM emp) e, dept d
WHERE e.deptno=d.deptno;

Obyek Database Lainnya


Table
View
Sequence
CREATE sequence nomor;
SELECT nomor.nextval FROM dual;

Index
CREATE index nama on tabel(kolom);

Synonym
CREATE synonym nama for nama_object

Mengatur Akses User


Membuat User
CREATE USER nama IDENTIFIED BY password;

Hak/Wewenang disebut Privileges


System Privileges. Mengatur Hak dari USER
CREATE, DROP, SELECT,
Contoh : GRANT CREATE table to dono;

Object Privileges. Mengatur Hak USER pada Object dari USER


Lain
alter, delete, execute,
Contoh : GRANT SELECT on emp to dono;

Kumpulan Privileges dan Role disebut Role


Contoh,
GRANT connect TO dono;
GRANT resource TO dono;

Menggunakan Operator SET


UNION
Digunakan untuk menggabungkan hasil dari
lebih dari satu query
Hasil dari setiap query harus memiliki
kolom yang sama
UNION - tidak semua (yang kembar
dibuang)
UNION ALL - semua

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;

Anda mungkin juga menyukai