Top Banner
29

Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Oct 04, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter
Page 2: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Function pada SQL

Aggregate Functions

Scalar functions

Arithmetic functions

String functions

Date functions

Page 3: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Aggregate Functions

Function Keterangan

AVG(column) Menghitung rata-rata nilai column

COUNT(column) Menghitung jumlah data pada kolom

COUNT(*) Menghitung jumlah baris pada tabel

MAX(column) Mencari nilai terbesar pada kolom tersebut

MIN(column) Mencari nilai terkecil dari kolom tersebut

SUM(column) Menjumlahkan data yang ada pada kolom

Page 4: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Contoh Perintah Agregate Function

Pola perintahnya :

SELECT function(column) FROM table

select count(nim) from mahasiswa

select Max(nim) from mahasiswa

select UPPER(nama) from mahasiswa

Page 5: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Arithmetic Functions

Fungsi Aritmatika

Fungsi Kegunaan Contoh

ABS Mengembalikan nilai absolute ABS(-10) = 10

CEIL Mengembalikan bilangan

bulat terbesar

CEIL(4.2) = 5

CEIL(-4.2) = -4

EXP Mengembalikan nilai

pemangkatan bilangan natural

(ex)

EXP(0) = 1

EXP(1) = 2.718

FLOOR Mengembalikan bilangan

bulat terkecil

FLOOR(4.2) = 4

FLOOR(-4.2) = -5

LN Mengembalikan nilai

logaritma natural

LN(2) = 0.693147181

LOG Mengembalikan nilai

logaritma

LOG(10,10) =1

MOD Menghasilkan sisa pembagian MOD(4,2) = 0

MOD(7,2) = 1

POWER Mengembalikan nilai pangkat POWER(2,3) = 8

ROUND Mengembalikan bilangan

pembulatan

ROUND(5.56,1) = 5.6

SIGN Mengembalikan nilai positif,

negative, atau nol. Nilai

balikan sign ada tiga yaitu

1 jika x>0

0 jika x=0

-1 jika x<0

SIGN(-6) = -1

SIGN(3) = 1

SIN, COS, TAN, SINH,

COSH,TANH

Fungsi trigonometri SIN(0) = 0

COS(90) = 0

SQRT Mengembalikan nilai akar SQRT(16) = 4

TRUNC Mengembalikan nilai yang

telah dipotong

TRUNC(5.671,2) = 5.67

Fungsi Aritmatika

Page 6: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

String FunctionsFungsi Kegunaan Contoh

ASCII(karakter) Memgembalikan nilai ASCII dari

karakter

ASCI(‘A’) = 65

CHR(nilai_ASCII) Memgembalikan karakter dari

sebuah nilai ASCII

CHR(65) = ‘A’

CONCAT(teks1, teks2) Menggabungkan teks1 dan teks2 CONCAT

(“sate”,

”ayam”)

= “sate ayam”

DECODE(field, kode_decode) Menggantikan nilai yang terdapat

di dalam field dengan nilai lain.

DECODE(bulan,1, ‘Januari’,

2,’Februari’,

3,’Maret’,

4,’April’,

5,’Mei’,

6,’Juni’,

‘Bulan Lain’

) bulan

GREATEST(nilai1, nilai2, nilai3,

…)

Mengembalikan nilai terbesar

dari sederetan nilai

GREATEST

(3,10,15,4)

= 15

INITCAP(String) Mengembalikan string yang

terdiri dari huruf kapital pada

setiap kata.

INITCAP(‘pOLItekNik

tElkoM’)

= Politeknik Telkom

INSTR

(teks1, teks2)

INSTR(teks1, teks2, i)

INSTR(teks1, teks2, 1, n)

Mencari posisi teks2 yang

terdapat di dalam teks1.

Pencarian dapat dimulai dari

posisi ke-i.

n menyatakan pengulangan yang

ke-n kali dari teks2 yang

terdapat di dalam teks1.

INSTR

(’SQL n PL/SQL’,

’SQL’) = 1

INSTR

(’SQL n PL/SQL’,

’SQL’, 4) = 10

INSTR

(’SQL n PL/SQL’,

’SQL’,1,2) = 10

Fungsi Karakter / String

Page 7: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

LEAST(nila1, nilai2, nilai3,…) Mengembalikan nilai terkecil dari

sederetan nilai

LEAST(2,2,5,1,6)

= 1

LENGTH(String) Mengembalikan panjang String LENGTH(“1233”)

= 4

LOWER(String) Mengubah String menjadi huruf kecil

semuanya

LOWER

(“PoLTeK”)

= poltek

LPAD

(teks1, n , teks2)

Menyisipkan karakter teks2 ke

dalam teks1 untuk karakter kosong

sepanjang n disebelah kiri teks1

LPAD

(‘Oracle’, 10 , ‘/’)

= ////Oracle

LTRIM

(teks1, teks2)

Menghapus karakter-karakter pada

bagian kiri teks1 sehingga tidak

diawali dengan sembarang karakter

pada teks2.

Default teks2 adalah spasi

LTRIM

(‘xxxOracle’,’x’)

= Oracle

REPLACE

(teks1, teks2, teks3)

Menggantikan kemunculan karakter

teks2 di dalam teks1 dengan teks3.

Bila teks3 tidak disebutkan maka

teks2 pada teks1 akan dihapus

karena default teks3 null

REPLACE

(‘siswa’,’a’,’i’)

= siswi

RPAD

(teks1, n, teks2)

Menyisipkan karakter teks2 ke

dalam teks1 untuk karakter kosong

sepanjang n disebelah kanan teks1

RPAD

(‘Oracle’, 10 , ‘/’)

= Oracle////

RTRIM

(teks1, teks2)

Menghapus karakter-karakter pada

bagian kanan teks1 sehingga tidak

diakhiri dengan sembarang karakter

pada teks2.

Default teks2 adalah spasi

RTRIM

('123000', '0')

= 123

SUBSTR(Teks,i)

SUBSTR(Teks, i, n)

Mengambil karakter pada string teks

dimulai dari posisi ke-i (dari kiri ke

kanan) sebanyak n buah. Jika i

bernilai negatif, maka posisi ke-i

dimulai dari kanan ke kiri

SUBSTR(“ABCD”, 2)

= “BCD”

SUBSTR

(“ABCD”, -3, 2 )

= “BC”

TRANSLATE

(teks1, teks2, teks3)

Menggantikan kemunculan karakter

teks2 di dalam teks1 dengan teks3.

perbedaannya dengan REPLACE

adalah karakter yang digantikan

dilakukan secara individual

UPPER(String) Mengubah String menjadi huruf

besar semuanya

UPPER(“PoLTeK”)

= POLTEK

Page 8: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Date FunctionsFungsi Kegunaan Contoh

ADD_MONTHS

(tanggal, n)

Menambah atau mengurangi

tanggal

terhadap n

sysdate

=06-JUL-05

ADD_MONTHS

(sysdate, 2)

= 08-JUL-05

ADD_MONTHS

(sysdate, -2)

= 04-JUL-05

LAST_DAY

(tanggal)

Menghasilkan tanggal terakhir

pada sebuah bulan

LAST_DAY

(sysdate) =

31-JUL-05

MONTHS_BETWEEN

(tanggal 2, tanggal1)

Mengahsilkan selisih tanggal2

dan tanggal1 dalam satuan

bulan

MONTHS_BETWEEN

(‘01-JUL-05’,

‘14-MAR-05’)

=

3.58064516129032

NEXT_DAY() Mengembalikan tanggal

berikutnya

NEXT_DAY()

= 07-JUL-05

TO_CHAR

(tanggal, format)

Mengubah tanggal menjadi

bentuk karakter sesuai

dengan format. Sehingga dapat

ditampilkan sebagai string

TO_CHAR

(sysdate,

‘DD-MM-YYYY’) = 06-07-

2006

Page 9: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Cartesian Product

Jika kita melakukan operasi seperti ini:

SELECT * FROM A, B;

maka akan dihasilkan??

Page 10: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Join Operation

Untuk menghindari fenomena cartesian product maka operasi tersebut

harus memiliki kondisi pada klausa “where” untuk melibatkan kolom-kolom

yang terdapat pada tabel yang terlibat join yang memiliki kesamaan dan

keserupaan maksud representasi dari kolom tersebut.

Operasi ini disebut sebagai join.

Page 11: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Jika kita melakukan operasi:

SELECT * FROM A, B WHERE A.A1 = B.B1;

Page 12: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Jenis operasi join:

Equjoin/simple join/inner join adalah join yang menggunakan operator sama

dengan (=) pada join condition-nya.

Self Join adalah query yang menggabungkan sebuah tabel dengan dirinya

sendiri. Tabel tersebut muncul dua kali pada klausa from dan masing-masing

harus diikuti dengan nama aliasnya. Penggunaan tabel alias ini wajib dilakukan

untuk menghindari ambiguous karena semua nama kolom pada tabel pertama

ada juga pada tabel kedua.

Outer join biasanya digunakan ketika kita ingin baris data dari tabel yang pertama, atau dari tabel yang kedua atau dari keduanya tetap ditampilkan

meskipun tidak terdapat pasangan baris data tersebut dari tabel lain pada

kondisi join-nya.

Page 13: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Join dengan perintah From

select pegawai.nip, pegawai.nama, pegawai.kd_unit, unit.nama_unit from

pegawai, unit where pegawai.kd_unit=unit.kd_unit;

select a.nip, a.nama, a.kd_unit, b.nama_unit from pegawai a, unit b where

a.kd_unit=b.kd_unit;

Page 14: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Join dengan perintah Inner Join

select pegawai.nip, pegawai.nama, pegawai.kd_unit, unit.nama_unit from

pegawai inner join unit on pegawai.kd_unit=unit.kd_unit;

Biasanya join dilakukan pada tabel yang mempunyai foreign-key pada

suatu tabel dihubungkan dengan primary-key pada tabel yang lainnya

Page 15: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Outer Join

Kebalikan dari Inner Join, dimana inner join akan mencari data yang sama

pada kedua belah tabel, sementara Outer Join adalah memungkinkan

untuk menampilkan data walaupun data tidak ditemukan pada sebelah

tabel. Data yang tidak ketemu akan diberikan nilai null.

Misalkan tabel A dijoinkan dengan tabel B. semua baris data pada tabel A

ingin ditampikan walaupun tidak memenuhi join condition. Untuk itu

operator outer join (+) pada join condition harus disertakan setelah kolom-

kolom tabel B. Penulisannya adalah sbb: a.col_name=b.col_name(+) atau

dengan menggunakan

a left outer join b on a.col_name=b.col_name;

Page 16: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Outer Join

Penulisan query untuk OUTER JOIN ini dibentuk menjadi 3 bagian sbb:

LEFT JOIN

RIGHT JOIN

FULL JOIN

SELECT nama_kolom

FROM nama_tabel_1

(LEFT|RIGHT|FULL) [OUTER] JOIN nama_tabel_2

ON relasi_tabel

Page 17: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Outer Join

Misalkan ditampilkan semua data pegawai meskipun pegawai tersebut

tidak memiliki unit kerja:

select pegawai.nip, pegawai.nama, pegawai.kd_unit, unit.nama_unit from

pegawai, unit where pegawai.kd_unit=unit.kd_unit(+);

select pegawai.nip, pegawai.nama, pegawai.kd_unit, unit.nama_unit from

pegawai left outer join unit on pegawai.kd_unit=unit.kd_unit;

Page 18: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Contoh kasus

untuk Inner/simple Join

Menampilkan data pegawai yang sudah memiliki unit kerja.

Untuk outer Join

Menampilkan data karyawan yang maupun belum memiliki unit kerja.

Page 19: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Self Join

Adalah query yang menggabungkan sebuah tabel dengan dirinya sendiri.

Contoh penggunaan self join adalah mencari atasan atau bawahan yang

dimiliki oleh seorang pegawai.

Query:

select b.nip, b.nama, a.nip as "nip atasan", a.nama "nama_atasan" from

pegawai a, pegawai b where a.nip=b.atasan;

Page 20: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Self Join

Tabel Pegawai a

Tabel Pegawai b

Hasil Join

Page 21: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Query Bersarang

Merupakan query yang berada didalam query lainnya.

Subquery sering disebut sebagai inner query, sedangkan query induknya

disebut sebagai outer query.

Query bersarang atau nested query dapat digunakan insert, update,

delete, maupun select statement.

Page 22: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Didalam statement SELECT, subquery boleh ada pada klausa-klausa berikut ini:

Klausa select ….

Klausa from ….

Klausa where ….

Klausa having ….

• Subquery pada klausa where sering disebutsebagai nested subquery.

• Sedangkan subquery pada klausa from disebut sebagai inline view.

Page 23: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Subquery pada klausa select (menampilkan nama unit tempai pegawai

bekerja):

select nip, nama, kd_unit, (select nama_unit from unit b where

a.kd_unit=b.kd_unit) from pegawai a;

Subquery pada klausa from (menampilkan data pegawai dari tabel yang

telah difilter dari nilai null):

select nip, nama, kd_unit from (select * from pegawai where kd_unit is not null);

Page 24: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Subquery pada klausa where (menampilkan data pegawai yang se-unit

dengan pegawai dengan nip 54):

select nip, nama, kd_unit from pegawai where kd_unit=(select kd_unit from

pegawai where nip='54');

Subquery pada klausa having(menampilkan data unit yang gaji

pegawainya diatas rata-rata seluruh pegawai):

select kd_unit, min(gaji), max(gaji), avg(gaji) from pegawai group by kd_unit

having avg(gaji) > (select avg(gaji) from pegawai);

Page 25: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Klausa pada Query bersarang

Klausa IN

Subquery yang dilakukan menggunakan klausa IN akan dilakukan

pengecekan apakah suatu nilai ada atau tidak dalam hasil dari subquery.

Contoh: select * from pegawai where kd_unit in(select kd_unit from unit);

Klausa ALL

Membandingkan nilai dengan setiap nilai yang dikembalikan oleh query

tersarang. Kondisi perbandingan akan bernilai benar jika semua nilai yang

dikembalikan oleh subquery memenuhi kondisi tersebut.

Contoh: select * from pegawai where gaji > all(select gaji from pegawai);

Page 26: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Klausa pada Query bersarang

Klausa ANY/SOME

Membandingkan nilai dengan salah satu nilai yang dikembalikan oleh querytersarang. Kondisi perbandingan akan bernilai benar jika salah satu nilai yangdikembalikan oleh subquery memenuhi kondisi tersebut dan akan bernilai salahatau tidak terpenuhi jika subquery tidak mengembalikan nilai apapun (tabelkosong).

Contoh: select * from pegawai where gaji > any(select gaji from pegawai);

Klausa [NOT] EXISTS

Klausa EXISTS digunakan untuk melakukan pengecekan apakah hasil darinested query yang berkorelasi menghasilkan baris data atau tidak. Operatorexists akan menghasilkan nilai “TRUE” jika subquery yang mengikutinyamenghasilkan paling tidak satu baris data.

Contoh: select * from pegawai a where exists(select * from unit b wherea.kd_unit=b.kd_unit);

Page 27: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Rangkuman

Perintah-perintah query dilengkapi dengan berbagai fungsi untuk

memperoses datanya.

Terdapat dua kelompok fungsi, yaitu:

Aggregate Functions

Scalar functions

Join operation digunakan untuk menampilkan data yang berasal dari dua

atau lebih tabel yang terkait

Keyword yang digunakan dapat menggunakan Inner Join dan Outer Join

Page 28: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Rangkuman

inner join akan mencari data yang sama pada kedua belah tabel,

sementara Outer Join adalah memungkinkan untuk menampilkan data

walaupun data tidak ditemukan pada sebelah tabel. Data yang tidak

ketemu akan diberikan nilai null.

Query bersarang digunakan sebagai kondisi pembanding untuk

menampilkan data

Beberapa kalusa yang dapat digunakan adalah: IN, ANY/SOME, EXISTS or

NOT EXISTS

Page 29: Function pada SQL - ebook.repo.mercubuana-yogya.ac.idebook.repo.mercubuana-yogya.ac.id/FTI/materi20151/7. Structure Qu… · ASCII(karakter) Memgembalikan nilai ASCII dari karakter

Tugas e -learning

dari contoh kasus pada UTS anda buatlah contoh query dan hasil

screenshotnya untuk

1. kasus agregasi menggunakan count,max,min,adv

2. join dengan dua table dan 3 table

3. inner join

4. self join

5. query bersarang