16 December 2011

Menyeleksi dan Mengurutkan Data dengan SQL Oracle


Login sebagai user SCOTT

-- Menampilkan semua pegawai
SELECT empno, ename, sal, deptno
FROM emp;

-- menampilkan pegawai yg salary-nya diatas 2000
SELECT empno, ename, sal, deptno
FROM emp
WHERE sal > 2000;

-- Untuk mencari data karakter gunakan tanda kutip tunggal dan
   case-sensitive

Contoh : Cari pegawai yang namanya 'ALLEN'

SELECT empno, ename
FROM emp
WHERE ename='Allen'; --> tidak akan ketemu

SELECT empno, ename
FROM emp
WHERE ename='ALLEN'; --> ketemu

-- Untuk data DATE itu format sensitive
   Format defualt untuk DATE DD-MON-RR (25-JAN-11)

Contoh : cari pegawai yang masuk kerja sebelum tgl 01 Januari 1981

SELECT empno, ename, hiredate
FROM emp
WHERE hiredate < '01-JAN-81';

SELECT empno, ename, hiredate
FROM emp
WHERE hiredate < '01/01/81'; --> error

-- Operator BETWEEN..AND..
Menampilkan data mulai dari batas bawah sampai batas atas yang ditentukan
Contoh:
Tampilkan pegawai yang salary-nya antara 1300 s.d 3000

SELECT empno, ename, sal
FROM emp
WHERE sal BETWEEN 1300 AND 3000;
  EMPNO ENAME             SAL
------- ---------- ----------
   7499 ALLEN            1600
   7566 JONES            2975
   7698 BLAKE            2850
   7782 CLARK            2450
   7788 SCOTT            3000
   7844 TURNER           1500
   7902 FORD             3000
   7934 MILLER           1300

-- Operator IN
Menampilkan data sesuai dengan yang disebutkan di dalam IN
Misal : Tampilkan pegawai2 yg salarynya 1250, 3000, 800

SELECT empno, ename, sal
FROM emp
WHERE sal IN(1250,800,3000);

EMPNO ENAME             SAL
----- ---------- ----------
 7369 SMITH             800
 7521 WARD             1250
 7654 MARTIN           1250
 7788 SCOTT            3000
 7902 FORD             3000

Tampilkan pegawai yang namanya SCOTT, JAMES dan CLARK
SELECT empno, ename, sal
FROM emp
WHERE ename IN('SCOTT','JAMES','CLARK');
 EMPNO ENAME             SAL
------ ---------- ----------
  7782 CLARK            2450
  7788 SCOTT            3000
  7900 JAMES             950

-- Operator LIKE
mencari data berdasarkan format tertentu
format dibentuk dengan karakter under score "_" dan persen "%"
dengan ketentuan :
_   : akan mengabaikan satu karakter
%   : akan mengabaikan banyak karakter

Contoh : Cari pegawai yang namanya diawali dengan 'S'

SELECT ename
FROM emp
WHERE ename LIKE 'S%';

Contoh : Cari pegawai yg huruf kedua adalah 'L'
SELECT ename
FROM emp
WHERE ename LIKE '_L%';

-- Operator IS NULL
Mencari data yang bernilai NULL

Contoh : Tampilkan pegawai yg komisi-nya (comm) tidak ada
SELECT ename, sal, comm
FROM emp
WHERE comm IS NULL;

Tampilkan pegawai yang tidak punya manager
SELECT ename,sal,mgr
FROM emp
WHERE mgr IS NULL;

-- Operator Logik
AND, OR dan NOT

Selama ini kondisi yang digunakan untuk menyeleksi data hanya satu. Jika kondisi yg digunakan untuk menyeleksi data lebih dari satu maka gunakan operator logik untuk menghubungkan antara kondisi satu dengan lainnya.

AND : data akan dimunculkan jika memenuhi kedua syarat
Misal : tampilkan pegawai yang ada di bagian (deptno) 30 dan salary-nya kurang dari 2500

SELECT empno, ename, sal, deptno
FROM emp
WHERE deptno=30
      AND
      sal < 2500;

OR : data akan dimunculkan walaupun hanya memenuhi salah satu kondisi

Misal : Cari pegawai yang ada di bagian 10 atau pegawai yang jabatannya (job) SALESMAN

SELECT ename, deptno, job
FROM emp
WHERE deptno=10
      OR
      job = 'SALESMAN';

-- Operator NOT
Menampilkan data yang berlawanan dengan kondisi

Misal : tampilkan pegawai yang salarynya berada diluar interval 1300 sampai 3000

SELECT empno, ename, sal
FROM emp
WHERE sal NOT BETWEEN 1300 AND 3000;

Tampilkan pegawai yang punya komisi

SELECT empno, ename, sal, comm
FROM emp
WHERE comm  IS NOT NULL;

-- Mengurutkan data Menggunakan ORDER BY

SELECT kolom,kolom...
FROM tabel
WHERE kondisi
ORDER BY kolom

Mode urutan
ASC : kecil ke besar (default)
DESC: besar ke kecil

Selama ini data yg dimunculkan tidak terurut berdasarkan kolom tertentu. Untuk mengurutkan data digunakan ORDER BY
Buatlah daftar gaji pegawai dengan diurutkan berdasarkan gajinya mulai dari kecil ke besar

SELECT empno, ename, sal
FROM emp
ORDER BY sal;

SELECT empno, ename, sal
FROM emp
ORDER BY sal DESC;

-- Mengurutkan berdasarkan dua kolom
Buatlah daftar gaji pegawai dengan mengurutkan berdasarkan DEPTNO-nya
kemudianya pegawai2 yg dalam satu bagian (deptno) salary-nya diurutkan mulai dari yg besar ke kecil

SELECT deptno, empno, ename, sal
FROM emp
ORDER BY deptno, sal DESC;

    10       7839 KING             5000
    10       7782 CLARK            2450
    10       7934 MILLER           1300
    20       7788 SCOTT            3000
    20       7902 FORD             3000
    20       7566 JONES            2975
    20       7876 ADAMS            1100
    20       7369 SMITH             800
    30       7698 BLAKE            2850
    30       7499 ALLEN            1600
    30       7844 TURNER           1500
    30       7654 MARTIN           1250
    30       7521 WARD             1250
    30       7900 JAMES             950

-- Mengurutkan berdasarkan kolom alias
SELECT ename  AS Nama,
       sal    AS Gaji,
       comm   AS Komisi,
       sal + NVL(comm,0) AS TOTAL
FROM emp
ORDER BY total;


No comments:

Post a Comment