Function pada SQL Aggregate Functions Scalar functions Arithmetic functions String functions Date functions
Aggregate Functions Function AVG(column) COUNT(column) COUNT(*) MAX(column) MIN(column) SUM(column) Keterangan Menghitung rata-rata nilai column Menghitung jumlah data pada kolom Menghitung jumlah baris pada tabel Mencari nilai terbesar pada kolom tersebut Mencari nilai terkecil dari kolom tersebut Menjumlahkan data yang ada pada kolom
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
Fungsi Aritmatika Arithmetic Functions Fungsi Kegunaan Contoh ABS Mengembalikan nilai absolute ABS(-10) = 10 CEIL EXP FLOOR Mengembalikan bilangan bulat terbesar Mengembalikan nilai pemangkatan bilangan natural (e x ) Mengembalikan bilangan bulat terkecil CEIL(4.2) = 5 CEIL(-4.2) = -4 EXP(0) = 1 EXP(1) = 2.718 FLOOR(4.2) = 4 FLOOR(-4.2) = -5 LN Mengembalikan nilai LN(2) = 0.693147181 logaritma natural LOG Mengembalikan nilai LOG(10,10) =1 logaritma MOD Menghasilkan sisa pembagian MOD(4,2) = 0 MOD(7,2) = 1 POWER Mengembalikan nilai pangkat POWER(2,3) = 8 ROUND SIGN SIN, COS, TAN, SINH, COSH,TANH Mengembalikan bilangan pembulatan Mengembalikan nilai positif, negative, atau nol. Nilai balikan sign ada tiga yaitu 1 jika x>0 0 jika x=0-1 jika x<0 ROUND(5.56,1) = 5.6 SIGN(-6) = -1 SIGN(3) = 1 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 Karakter / String String Functions Fungsi Kegunaan Contoh ASCII(karakter) CHR(nilai_ASCII) Memgembalikan nilai ASCII dari karakter Memgembalikan karakter dari sebuah nilai ASCII ASCI( A ) = 65 CHR(65) = A CONCAT(teks1, teks2) Menggabungkan teks1 dan teks2 CONCAT ( sate, ayam ) DECODE(field, kode_decode) GREATEST(nilai1, nilai2, nilai3, ) INITCAP(String) INSTR (teks1, teks2) INSTR(teks1, teks2, i) INSTR(teks1, teks2, 1, n) Menggantikan nilai yang terdapat di dalam field dengan nilai lain. Mengembalikan nilai terbesar dari sederetan nilai Mengembalikan string yang terdiri dari huruf kapital pada setiap kata. 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. = sate ayam DECODE(bulan,1, Januari, 2, Februari, 3, Maret, 4, April, 5, Mei, 6, Juni, Bulan Lain ) bulan GREATEST (3,10,15,4) = 15 INITCAP( politeknik telkom ) = Politeknik Telkom INSTR ( SQL n PL/SQL, SQL ) = 1 INSTR ( SQL n PL/SQL, SQL, 4) = 10 INSTR ( SQL n PL/SQL, SQL,1,2) = 10
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 LOWER semuanya ( PoLTeK ) LPAD (teks1, n, teks2) LTRIM (teks1, teks2) REPLACE (teks1, teks2, teks3) RPAD (teks1, n, teks2) Menyisipkan karakter teks2 ke dalam teks1 untuk karakter kosong sepanjang n disebelah kiri teks1 Menghapus karakter-karakter pada bagian kiri teks1 sehingga tidak diawali dengan sembarang karakter pada teks2. Default teks2 adalah spasi Menggantikan kemunculan karakter teks2 di dalam teks1 dengan teks3. Bila teks3 tidak disebutkan maka teks2 pada teks1 akan dihapus karena default teks3 null Menyisipkan karakter teks2 ke dalam teks1 untuk karakter kosong sepanjang n disebelah kanan teks1 = poltek LPAD ( Oracle, 10, / ) = ////Oracle LTRIM ( xxxoracle, x ) = Oracle REPLACE ( siswa, a, i ) = siswi RPAD ( Oracle, 10, / ) = Oracle//// RTRIM (teks1, teks2) SUBSTR(Teks,i) SUBSTR(Teks, i, n) TRANSLATE (teks1, teks2, teks3) UPPER(String) Menghapus karakter-karakter pada bagian kanan teks1 sehingga tidak diakhiri dengan sembarang karakter pada teks2. Default teks2 adalah spasi 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 Menggantikan kemunculan karakter teks2 di dalam teks1 dengan teks3. perbedaannya dengan REPLACE adalah karakter yang digantikan dilakukan secara individual Mengubah String menjadi huruf besar semuanya RTRIM ('123000', '0') = 123 SUBSTR( ABCD, 2) = BCD SUBSTR ( ABCD, -3, 2 ) = BC UPPER( PoLTeK ) = POLTEK
Date Functions Fungsi 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) MONTHS_BETWEEN (tanggal 2, tanggal1) Menghasilkan tanggal terakhir pada sebuah bulan Mengahsilkan selisih tanggal2 dan tanggal1 dalam satuan bulan LAST_DAY (sysdate) = 31-JUL-05 MONTHS_BETWEEN ( 01-JUL-05, 14-MAR-05 ) = 3.58064516129032 NEXT_DAY() TO_CHAR (tanggal, format) Mengembalikan tanggal berikutnya Mengubah tanggal menjadi bentuk karakter sesuai dengan format. Sehingga dapat ditampilkan sebagai string NEXT_DAY() = 07-JUL-05 TO_CHAR (sysdate, DD-MM-YYYY ) = 06-07- 2006
Cartesian Product Jika kita melakukan operasi seperti ini: SELECT * FROM A, B; maka akan dihasilkan??
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.
Jika kita melakukan operasi: SELECT * FROM A, B WHERE A.A1 = B.B1;
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.
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;
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
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 kolomkolom 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;
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
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;
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.
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;
Self Join Tabel Pegawai b Tabel Pegawai a Hasil Join
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.
Didalam statement SELECT, subquery boleh ada pada klausa-klausa berikut ini: Klausa select. Klausa from. Klausa where. Klausa having. Subquery pada klausa where sering disebut sebagai nested subquery. Sedangkan subquery pada klausa from disebut sebagai inline view.
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);
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);
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);
Klausa pada Query bersarang Klausa ANY/SOME Membandingkan nilai dengan salah satu nilai yang dikembalikan oleh query tersarang. Kondisi perbandingan akan bernilai benar jika salah satu nilai yang dikembalikan oleh subquery memenuhi kondisi tersebut dan akan bernilai salah atau tidak terpenuhi jika subquery tidak mengembalikan nilai apapun (tabel kosong). Contoh: select * from pegawai where gaji > any(select gaji from pegawai); Klausa [NOT] EXISTS Klausa EXISTS digunakan untuk melakukan pengecekan apakah hasil dari nested query yang berkorelasi menghasilkan baris data atau tidak. Operator exists akan menghasilkan nilai TRUE jika subquery yang mengikutinya menghasilkan paling tidak satu baris data. Contoh: select * from pegawai a where exists(select * from unit b where a.kd_unit=b.kd_unit);
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
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
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