Hari 2
Hari 2
Data Hasil
---------- ----------
SMITH Smith
JONES Jones
SCOTT Scott
ADAMS Adams
FORD Ford
SAL
----------
800
2975
3000
1100
3000
SUM(SAL)
----------
10875
SQL>
SQL>
SQL>
SQL> --CONTOH TABEL DUAL
SQL> SELECT sysdate
2 FROM dual;
SYSDATE
---------
01-AUG-17
SQL>
SQL>
SQL>
SQL> --CONTOH LOWER, INITCAP, UPPER
SQL> SELECT ename "data",
2 lower(ename) "ENAME",
3 .
SQL>
SQL> --CONTOH LOWER, INITCAP, UPPER
SQL> SELECT ename "data",
2 lower(ename) "LOWER",
3 initcap(ename) "INITCAP",
4 upper(ename) "UPPER"
5 FROM emp;
14 rows selected.
SQL>
SQL> --memanfaatkan case-manipulation untuk pencarian data
SQL> SELECT ename, sal
2 FROM emp
3 WHERE ename='Adams';
no rows selected
ENAME SAL
---------- ----------
ADAMS 1100
SQL>
SQL>
SQL> --FUNCTION CONCAT(x,y)
SQL> --MENGGABUNGKAN STRING X DAN Y
SQL> --INI SAMA SAJA DENGAN OPERATOR "||"
SQL> SELECT ename, sal, CONCAT(ename,sal) "Concat", ename||sal "Opr ||"
2 FROM emp
3 WHERE deptno=20;
CONCAT(CONCAT(ENAME,SAL),EMPNO)
--------------------------------------------------------------------------------
SMITH8007369
JONES29757566
SCOTT30007788
ADAMS11007876
FORD30007902
CONCAT(CONCAT(ENAME,SAL),ENAME)
------------------------------------------------------------
SMITH800SMITH
JONES2975JONES
SCOTT3000SCOTT
ADAMS1100ADAMS
FORD3000FORD
ENAME||SAL||ENAME
------------------------------------------------------------
SMITH800SMITH
JONES2975JONES
SCOTT3000SCOTT
ADAMS1100ADAMS
FORD3000FORD
SQL>
SQL> --SUBSTRING(x,y,z)
SQL> --dari string x tampilkan posisi y sebanyak z
SQL> --jika z tidak disebutkan maka tampilkan dari posisi y sampai akhir
SQL>
SQL> SELECT ename "Data",
2 SUBSTRING(ename,2,3) "Substring"
3 FROM emp
4 WHERE deptno=20;
SUBSTRING(ename,2,3) "Substring"
*
ERROR at line 2:
ORA-00904: "SUBSTRING": invalid identifier
Data Sub
---------- ---
SMITH MIT
JONES ONE
SCOTT COT
ADAMS DAM
FORD ORD
Data Sub
---------- ---
SMITH MIT
JONES ONE
SCOTT COT
ADAMS DAM
FORD FOR
SQL>
SQL>
SQL> --LENGHT(x)
SQL> --jumlah karakter dari string x
SQL>
SQL> SELECT ename "Data",
2 LENGHT(ename) "Lenght"
3 From emp
4 WHERE deptno=20;
LENGHT(ename) "Lenght"
*
ERROR at line 2:
ORA-00904: "LENGHT": invalid identifier
Data Length
---------- ----------
SMITH 5
JONES 5
SCOTT 5
ADAMS 5
FORD 4
SQL>
SQL>
SQL> --INSTR(x,y)
SQL> --POSISI KARAKTER Y DI STRING X
SQL>
SQL> SELECT ename "Data",
2 INSTR(ename,'A') "Posisi A"
3 From emp
4 WHERE deptno=20;
Data Posisi A
---------- ----------
SMITH 0
JONES 0
SCOTT 0
ADAMS 1
FORD 0
Data Posisi A
---------- ----------
SMITH 0
ALLEN 0
WARD 0
JONES 0
MARTIN 0
BLAKE 0
CLARK 0
SCOTT 0
KING 0
TURNER 0
ADAMS 0
Data Posisi A
---------- ----------
JAMES 0
FORD 0
MILLER 0
14 rows selected.
Data Posisi A
---------- ----------
JAMES 0
FORD 0
MILLER 0
14 rows selected.
SQL>
SQL> --RPAD(x,y,z)
SQL> --UNTUK STRING X PESAN SEBANYAK Y DIGIT, JIKA MASIH ADA SISA(PADDING)
SQL> --LETAKAN DI SISI KANAN DAN GANTI KARAKTER PADDING DENGAN KARAKTER Z
SQL>
SQL> SELECT ename "Data",
2 RPAD(ename,10,'-') "RPAD",
3 LPAD(sal,10,'*') "LPAD",
4 sal
5 From emp;
14 rows selected.
Data RPAD
---------- ----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
Data RPAD
---------- ----------
JAMES
FORD
MILLER
14 rows selected.
Data RPAD
---------- ----------
SMITH SMITH-----
ALLEN ALLEN-----
WARD WARD------
JONES JONES-----
MARTIN MARTIN----
BLAKE BLAKE-----
CLARK CLARK-----
SCOTT SCOTT-----
KING KING------
TURNER TURNER----
ADAMS ADAMS-----
Data RPAD
---------- ----------
JAMES JAMES-----
FORD FORD------
MILLER MILLER----
14 rows selected.
Data RPAD
---------- ----------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
Data RPAD
---------- ----------
JAMES
FORD
MILLER
14 rows selected.
Data RPAD
---------- ----------
SMITH -----SMITH
ALLEN -----ALLEN
WARD ------WARD
JONES -----JONES
MARTIN ----MARTIN
BLAKE -----BLAKE
CLARK -----CLARK
SCOTT -----SCOTT
KING ------KING
TURNER ----TURNER
ADAMS -----ADAMS
Data RPAD
---------- ----------
JAMES -----JAMES
FORD ------FORD
MILLER ----MILLER
14 rows selected.
Data TRI
------ ---
112121 212
Data TRIM 1
------ --------
112121 112121'1
Data TRIM
------ ----
112121 2121
Data Replace
---------- ----------
SMITH SMITH
ALLEN _LLEN
WARD W_RD
JONES JONES
MARTIN M_RTIN
BLAKE BL_KE
CLARK CL_RK
SCOTT SCOTT
KING KING
TURNER TURNER
ADAMS _D_MS
Data Replace
---------- ----------
JAMES J_MES
FORD FORD
MILLER MILLER
14 rows selected.
SQL>
SQL> --FUNCTION NUMBER
SQL>
SQL> --ROUND(A,Y)
SQL> --UNTUK NUMBER A DIJADIKAN Y DESIMAL
SQL>
SQL> SELECT 49783 "Data",
2 ROUND(49783,2) "2 DSM1",
3 ROUND(49783,0) "0 DSM1",
4 ROUND(49783,-1) "-1 DSM1",
5 ROUND(49783,-2) "-2 DSM1"
6 from EMP;
14 rows selected.
SQL> --TRUNC(x,y)
SQL> --bilangan x dijadikan y desimal tanpa pembulatan
SQL> SELECT 49.783 "Data",
2 TRUNC(49.783,2) "2 DSM1",
3 TRUNC(49.783,1) "1 DSM1",
4 TRUNC(49.783,0) "0 DSM1",
5 TRUNC(49.783,-1) "-1 DSM1",
6 TRUNC(49.783,-2) "-2 DSM1",
7 FROM dual;
FROM dual
*
ERROR at line 7:
ORA-00936: missing expression
SQL>
SQL> --MOD (X,Y)
SQL> --MENAMPILKAN SISA HASIL BAGI X TERHADAP X
SQL> SELECT mod(10,3)
2 FROM dual;
MOD(10,3)
----------
1
SYSDATE
---------
01-AUG-17
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
01-AUG-17 11.09.57.180000 AM +07:00
SYSDATE-(SYSDATE-1)
-------------------
1
LAMA
----------
14791
LAMA
----------
24684
SQL> SELECT to_date('01-JUL-90','DD-MON-RR') - to_date('17-AUG-45','DD-MON-YY')
"LAMA"
2 FROM dual;
LAMA
----------
-20136
LAMA
----------
-10243
LAMA
----------
26282
SQL> --MONTHS_BETWEEN(date1,date2)
SQL> jarak antar a date1 dan date2
SP2-0734: unknown command beginning "jarak anta..." - rest of line ignored.
SQL> --MONTHS_BETWEEN(date1,date2)
SQL> --jarak antar a date1 dan date2
SQL> SELECT MONTHS_BETWEEN('01-JUL-17','01-FEB-17') FROM dual;
MONTHS_BETWEEN('01-JUL-17','01-FEB-17')
---------------------------------------
5
SQL> --ADD_MONTHS(date,number)
SQL> --menambahkan number (dalam satuan bulan) ke tgl date
SQL> SELECT add_months(sysdate,6) "6bln" FROM dual;
6bln
---------
01-FEB-18
SQL> --NEXT_DAY(date,day_)
SQL> --hari day setelah tgl date jatuh pada tgl berapa?
SQL> SELECT next_day('01-JAN-26','sunday') from dual;
NEXT_DAY(
---------
04-JAN-26
NEXT_DAY(
---------
02-JAN-01
ROUND(TO_
---------
01-JUL-17
ROUND(TO_
---------
01-AUG-17
SQL> --SAMA SEPERTI ROUND MONTH, JIKA <= TENGAH TAHUN MAKA ROUND YEAR AKAN
DIBULATKAN KE TAHUN DATE
SQL> --SAMA SEPERTI ROUND MONTH, JIKA > TENGAH TAHUN MAKA ROUND YEAR AKAN
DIBULATKAN KE TAHUN SELANJUTNYA
SQL> SELECT ROUND(to_date('16-JUL-17','DD-MON-RR'),'year')
2 FROM dual;
ROUND(TO_
---------
01-JAN-18
SQL> --trunc(date,'month')
SQL> --trunc akan memberi tahu awal bulan, TGL TIDAK MEMPERNGARUHI
SQL> --trunc(date,'YEAR')
SQL> --trunc akan memberi tahu awal TAHUN, BULAN TIDAK MEMPERNGARUHI
SQL> -----------------------------------
SQL> --FUNGSI KONVERSI
SQL> --TO_CHAR(date-->char)
SQL> --TO_CHAR(number-->char)
SQL>
SQL> TO_DATE(char-->date)
SP2-0734: unknown command beginning "TO_DATE(ch..." - rest of line ignored.
SQL> --TO_DATE(char-->date)
SQL> --TO_NUMBER(char-->number)
SQL>
SQL> INSERT INTO emp (empno, ename, hiredate)
2 VALUES(1000,'Toni','11-MAR-90');
1 row created.
SQL> --itu adalah contoh kenversi data dengan implisit atau dilakukan otomatis
aslkan sesuai dengan default
SQL>
SQL> INSERT INTO emp (empno, ename, hiredate)
2 VALUES(1000,'Toni',to_date('110490','ddmmrr'));
INSERT INTO emp (empno, ename, hiredate)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.PK_EMP) violated
1 row created.
SQL> --itu adalah cara konversi data dengan eksplisit yaitu user memasukan sendiri
data yang akan diubah
SQL>
SQL>
SQL>
SQL> SELECT TO_CHAR(sysdate,'Day DD, MONTH yyyy') "Tanggal"
2 FROM dual;
Tanggal
----------------------------
Tuesday 01, AUGUST 2017
ANGKA
----------------
13,456,784
no rows selected
16 rows selected.
no rows selected
no rows selected
Session altered.
Session altered.
16 rows selected.
16 rows selected.
ENAME EMAIL
---------- ---------------------------------------------------------
Toni 1000toni.unikom.ac.id
Tono 1001tono.unikom.ac.id
SMITH 7369smit.unikom.ac.id
ALLEN 7499alle.unikom.ac.id
WARD 7521ward.unikom.ac.id
JONES 7566jone.unikom.ac.id
MARTIN 7654mart.unikom.ac.id
BLAKE 7698blak.unikom.ac.id
CLARK 7782clar.unikom.ac.id
SCOTT 7788scot.unikom.ac.id
KING 7839king.unikom.ac.id
ENAME EMAIL
---------- ---------------------------------------------------------
TURNER 7844turn.unikom.ac.id
ADAMS 7876adam.unikom.ac.id
JAMES 7900jame.unikom.ac.id
FORD 7902ford.unikom.ac.id
MILLER 7934mill.unikom.ac.id
16 rows selected.
ENAME EMAIL
---------- ---------------------------------------------------------
Toni 1000toni@unikom.ac.id
Tono 1001tono@unikom.ac.id
SMITH 7369smit@unikom.ac.id
ALLEN 7499alle@unikom.ac.id
WARD 7521ward@unikom.ac.id
JONES 7566jone@unikom.ac.id
MARTIN 7654mart@unikom.ac.id
BLAKE 7698blak@unikom.ac.id
CLARK 7782clar@unikom.ac.id
SCOTT 7788scot@unikom.ac.id
KING 7839king@unikom.ac.id
ENAME EMAIL
---------- ---------------------------------------------------------
TURNER 7844turn@unikom.ac.id
ADAMS 7876adam@unikom.ac.id
JAMES 7900jame@unikom.ac.id
FORD 7902ford@unikom.ac.id
MILLER 7934mill@unikom.ac.id
16 rows selected.
ENAME EMAIL
---------- -----------------
TURNER turn.unikom.ac.id
ADAMS adam.unikom.ac.id
JAMES jame.unikom.ac.id
FORD ford.unikom.ac.id
MILLER mill.unikom.ac.id
16 rows selected.
ENAME EMAIL
---------- -----------------
Toni toni@unikom.ac.id
Tono tono@unikom.ac.id
SMITH smit@unikom.ac.id
ALLEN alle@unikom.ac.id
WARD ward@unikom.ac.id
JONES jone@unikom.ac.id
MARTIN mart@unikom.ac.id
BLAKE blak@unikom.ac.id
CLARK clar@unikom.ac.id
SCOTT scot@unikom.ac.id
KING king@unikom.ac.id
ENAME EMAIL
---------- -----------------
TURNER turn@unikom.ac.id
ADAMS adam@unikom.ac.id
JAMES jame@unikom.ac.id
FORD ford@unikom.ac.id
MILLER mill@unikom.ac.id
16 rows selected.
ENAME EMAIL
---------- -----------------------
Toni toni@unikom.ac.id
Tono tono@unikom.ac.id
SMITH smith@unikom.ac.id
ALLEN allen@unikom.ac.id
WARD ward@unikom.ac.id
JONES jones@unikom.ac.id
MARTIN martin@unikom.ac.id
BLAKE blake@unikom.ac.id
CLARK clark@unikom.ac.id
SCOTT scott@unikom.ac.id
KING king@unikom.ac.id
ENAME EMAIL
---------- -----------------------
TURNER turner@unikom.ac.id
ADAMS adams@unikom.ac.id
JAMES james@unikom.ac.id
FORD ford@unikom.ac.id
MILLER miller@unikom.ac.id
16 rows selected.
SQL> --general function adalah function yang berlaku untuk semua tipe data
SQL> --NVL(x,y)
SQL> JIKA X NULL MAKA MISALKAN X DENGAN Y
SP2-0734: unknown command beginning "JIKA X NUL..." - rest of line ignored.
SQL> -JIKA X NULL MAKA MISALKAN X DENGAN Y
SP2-0734: unknown command beginning "-JIKA X NU..." - rest of line ignored.
SQL> --JIKA X NULL MAKA MISALKAN X DENGAN Y
SQL> --dengan syarat tipe data harus sama
SQL> SELECT ename, NVL(to_char(comm), tidak ada) "Komisi" FROM emp;
SELECT ename, NVL(to_char(comm), tidak ada) "Komisi" FROM emp
*
ERROR at line 1:
ORA-00907: missing right parenthesis
ENAME Komisi
---------- ----------------------------------------
Toni tidak ada
Tono tidak ada
SMITH tidak ada
ALLEN 300
WARD 500
JONES tidak ada
MARTIN 1400
BLAKE tidak ada
CLARK tidak ada
SCOTT tidak ada
KING tidak ada
ENAME Komisi
---------- ----------------------------------------
TURNER 0
ADAMS tidak ada
JAMES tidak ada
FORD tidak ada
MILLER tidak ada
16 rows selected.
ENAME Komisi
---------- ----------------------------------------
Toni tidak ada
Tono tidak ada
SMITH tidak ada
ALLEN 300
WARD 500
JONES tidak ada
MARTIN 1400
BLAKE tidak ada
CLARK tidak ada
SCOTT tidak ada
KING tidak ada
ENAME Komisi
---------- ----------------------------------------
TURNER 0
ADAMS tidak ada
JAMES tidak ada
FORD tidak ada
MILLER tidak ada
16 rows selected.
SQL> --NVL2(x,y,z)
SQL> --JIKA X TIDAK NULL MAKA MUNCULKAN Y
SQL> --JIKA X NULL MAKA MUNCULKAN Z
SQL> SELECT ename,comm, NVL2(comm,'ada','tidak ada') "Keterangan" FROM emp;
16 rows selected.
ENAME Komisi
---------- ---------
Toni tidak ada
Tono tidak ada
SMITH tidak ada
ALLEN ada
WARD ada
JONES tidak ada
MARTIN ada
BLAKE tidak ada
CLARK tidak ada
SCOTT tidak ada
KING tidak ada
ENAME Komisi
---------- ---------
TURNER ada
ADAMS tidak ada
JAMES tidak ada
FORD tidak ada
MILLER tidak ada
16 rows selected.
SQL> --NULLIF(X,Y)
SQL> --JIKA X DAN Y BERNILAI SAMA MAKA AKAN MENGHASILKAN NULL
SQL> --JIKA TIDAK SAMA MAKA MUNCULKAN X
SQL> SELECT NULLIF(10,4), nullif(10,10) FROM emp;
NULLIF(10,4) NULLIF(10,10)
------------ -------------
10
10
10
10
10
10
10
10
10
10
10
NULLIF(10,4) NULLIF(10,10)
------------ -------------
10
10
10
10
10
16 rows selected.
NULLIF(10,4) NULLIF(10,10)
------------ -------------
10
SQL> --COALESCE(X,Y,Z,.....,N)
SQL> --JIKA X TIDAK NULL MAKA MUNCULKAN X
SQL> --JIKA X NULL MAKA MUNCULKAN Y
SQL> --JIKA SEBELUMNYA NULL MAKA MUNCULKAN YG TIDAK NULL
SQL> UPDATE emp SET sal=NULL WHERE ename IN('MARTIN','BLAKE');
2 rows updated.
ENAME coalesce
---------- ----------
Toni 100
Tono 100
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1400
BLAKE 100
CLARK 2450
SCOTT 3000
KING 5000
ENAME coalesce
---------- ----------
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
16 rows selected.
16 rows selected.
16 rows selected.
16 rows selected.
SQL> rollback;
Rollback complete.
COUNT(EMPNO) COUNT(*)
------------ ----------
14 14
COUNT(DEPTNO) COUNT(DISTINCTDEPTNO)
------------- ---------------------
14 3
HItung
----------
14
jml peg
----------
6
5
3
SQL> SELECT deptno, count(empno) "jml peg" FROM emp GROUP BY deptno;
SQL> SELECT deptno, job, count(empno) "jml peg" FROM emp GROUP BY deptno, job ORDER
BY 1,2;
9 rows selected.
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> SELECT deptno, job, count(empno) "jml peg" FROM emp WHERE ename <> 'SCOTT'
HAVING count(empno) >=2 GROUP BY deptno, job ORDER BY 1,2;