Anda di halaman 1dari 12

DATABASE MANAGEMENT SYSTEM

MINGGU 9 – DML (DATA MANIPULATION LANGUAGE)


NAMA : RIZKY SURYA ALFARIZY
NPM : 2113221022
NO ABSEN : 11
KELAS : A1

1.2.1 Membatasi Penyajian Informasi


Pada saat menyajikan informasi hasil pengolahan data yang tersimpan pada basis data melalui SELECT statement,
dimungkinkan untuk menambahkan kondisi-kondisi tertentu yang harus dipenuhi. Kondisi yang ditambahkan tersebut
akan membatasi informasi yang disajikan, dimana hanya informasi yang memenuhi kondisi saja yang akan disajikan
dari hasil eksekusi SELECT statement. Untuk menambahkan kondisi, pada SELECT statement ditambahkan klausa WHERE.

Penambahan klausa WHERE pada SELECT statement akan menambahkan pola (pattern) pada SELECT statement menjadi:

SELECT *|{[DISTINCT] column|expression [alias],...}


FROM table
WHERE condition(s)

• SELECT digunakan untuk menentukan column yang akan ditampilkan. Jika kita akan menampilkan nilai pada
semua column pada table, maka pada klausa SELECT digunakan * (bintang). Sedangkan jika kita hanya akan
menampilkan nilai pada beberapa column saja pada table, maka pada klausa SELECT disebutkan nama setiap
column yang akan disajikan nilainya.
• FROM digunakan untuk menentukan table yang menyimpan column
• WHERE digunakan untuk membatasi informasi yang akan disajikan dengan menambahkan kondisi-kondisi
yang disyaratkan. Setiap kondisi akan dicek nilai kebenarannya (Boolean). Dengan demikian, record yang
dikembalikan oleh SQL statement hanyalah record yang memenuhi kondisi (nilai kebenaran kondisi adalah
TRUE)

Kondisi yang ditambahkan pada klausa WHERE setidaknya mengandung operator pembanding sebagai berikut:

Operator Arti
= Sama dengan
> Lebih besar dari
>= Lebih besar sama dengan
< Kurang dari
<= Kurang dari sama dengan
<> Tidak sama dengan
BETWEEN … AND … Diantara dua nilai (inclusive)
IN (set) Mencocokkan nilai pada sebuah list
LIKE Mencocokkan karakter pada pola tertentu
IS NULL Pengecekan NULL value
Operator LIKE digunakan untuk menampilkan record yang sesuai dengan pola pencarian menggunakan karakter wildcard.
Karakter wildcard yang dapat digunakan adalah % (percent) dan _ (underscore), dimana:

 % menandakan karakter apapun (jumlah karakter 0 – n).


 _ menandakan sebuah karakter.

1.2.1.1 Soal
1. Tampilkan nama depan dan gaji pegawai yang memiliki gaji > 3000
2. Tampilkan nama belakang dan gaji pegawai yang memiliki gaji pada range 2500 – 3500
3. Tampilkan nama depan, nama belakang, ID manajer pegawai yang memiliki ID manajer 100, 101, atau 201
4. Tampilkan nama depan pegawai yang nama depannya dimulai dengan huruf S.
5. Menampilkan data pegawai yang memiliki pekerjaan selain IT_PROG
6. Tampilkan data pegawai yang tidak memiliki manajer.

1.2.1.2 Langkah Penyelesaian


1. Untuk menyajikan informasi yang dimaksud pada soal, harus ditambahkan kondisi yang disyaratkan.
2. Kondisi yang ditambahkan harus menggunakan operator pembanding yang tepat
a. Kata kunci kondisi pada soal nomer 1, memiliki gaji > 3000 identik dengan salary >= 3000
b. Kata kunci kondisi pada soal nomer 2, memiliki gaji pada range 2500 – 3500 identik dengan salary
between 2500 and 3500
c. Kata kunci kondisi pada soal nomer 3, memiliki ID manajer 100, 101, atau 201 identik dengan
manager_id IN (100,101,201)
d. Kata kunci kondisi pada soal nomer 4, nama depannya dimulai dengan huruf S identik dengan
first_name like ‘S%’
e. Kata kunci kondisi pada soal nomer 5, memiliki pekerjaan selain IT_PROG identik dengan job_id <>
‘IT_PROG’
f. Kata kunci kondisi pada soal nomer 5, tidak memiliki manajer identik dengan manager_id IS NULL

1.2.1.3 SQL Command


1. Untuk menyelesaikan persoalan nomer 1, digunakan SQL Statement sebagai berikut:
SELECT first_name,salary FROM employees WHERE salary >= 3000
Hasil eksekusi SQL Command di atas adalah menyajikan record pada table “employees” yang memenuhi kondisi yang
disyaratkan pada klausa WHERE.
2. Untuk menyelesaikan persoalan nomer 2, digunakan SQL Statement sebagai berikut:
SELECT last_name,salary FROM employees WHERE salary between 2500 and
3500
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:

3. Untuk menyelesaikan persoalan nomer 3, digunakan SQL Statement sebagai berikut:


SELECT first_name,last_name,manager_id FROM employees WHERE manager_id
IN(100,101,201)
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:

4. Untuk menyelesaikan persoalan nomer 4, digunakan SQL Statement sebagai berikut:


SELECT first_name FROM employees WHERE first_name LIKE ‘S%’
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:

5. Untuk menyelesaikan persoalan nomer 5, digunakan SQL Statement sebagai berikut:


SELECT * FROM employees WHERE job_id <> ‘IT_PROG’
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:
6. Untuk menyelesaikan persoalan nomer 6, digunakan SQL Statement sebagai berikut:
SELECT * FROM employees WHERE manager_id IS NULL
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:
1.2.2 Single Row Function
Oracle menyediakan function yang dapat digunakan secara langsung tanpa harus mendefinisikannya terlebih dahulu.
Function dapat digunakan pada klausa SELECT untuk memanipulasi informasi yang disajikan atau digunakan pada klausa
WHERE menegaskan kondisi yang disyaratkan. Gambar berikut memberikan ilustrasi bagaimana sebuah function
bekerja.

Pada sebuah function, terdapat argument (parameter) yang harus diisikan sebagai masukan (input). Kemudian, melalui
algoritma yang sudah didefinisikan, function akan mengembalikan sebuah nilai sebagai keluarannya (output).
Kombinasi argument yang diisikan dapat menentukan perbedaan hasil yang dikembalikan oleh sebuah function.

SQL function memiliki dua tipe, yaitu: Single Row Function dan Multiple Row Function. Pada modul ini, hanya akan
dijelaskan satu tipe SQL function yaitu Single Row Function. Multiple Row Function akan dijelaskan pada modul
selanjutnya.

Karakteristik Single Row Function yaitu:

1. Dapat menggunakan beberapa argument dan menghasilkan sebuah nilai


2. Mengeksekusi tiap baris (row/record) dan mengembalikan sebuah nilai dari eksekusi baris (row/record)
tersebut
3. Memungkinkan untuk memodifikasi tipe data
4. Dapat berulang (nested)

Single Row Function dapat dikenakan pada semua tipe data dan dapat menghasilkan keluaran dengan tipe data yang
berbeda dengan tipe data masukannya. Pada modul ini akan dijelaskan penggunaan Single Row Function untuk tipe data
karakter (character function), number (number function), dan tanggal (date function).
1. Character Function
Character function digunakan untuk mengkonversi (mengubah) bentuk karakter atau digunakan untuk memanipulasi
karakter. Berikut adalah character function yang akan digunakan pada modul ini:
Character Function Kegunaan
LOWER Mengkonversi setiap karakter pada sebuah string menjadi huruf kecil (lowercase)
UPPER Mengkonversi setiap karakter pada sebuah string menjadi huruf capital (uppercase)
INITCAP Mengkonversi setiap karakter pada awal kata menjadi huruf capital (uppercase)
CONCAT Memanipulasi karakter dengan menggabungkan dua buah string menjadi sebuah string
SUBSTR Memanipulasi karakter dengan mengembalikan potongan string (sub string) dari sebuah
string
LENGTH Mengembalikan (mengitung) jumlah karakter pada sebuah string
INSTR Mengembalikan (menghitung) posisi sebuah karakter pada string
LPAD Menambahkan sejumlah karakter di sebelah kiri string
RPAD Menambahkan sejumlah katrakter di sebelah kanan string
TRIM Menghilangkan spasi di sebelah kanan dan kiri string
REPLACE Menggantikan sebuah karakter dengan karakter yang lain pada sebuah string

2. Number Function
Number function digunakan memanipulasi bilangan yang akan disajikan. Berikut adalah number function yang
digunakan pada modul ini:
Number Function Kegunaan
ROUND Membulatkan suatu bilangan pada decimal tertentu
TRUNC Memotong suatu bilangan pada decimal tertentu
MOD Menghitung hasil sisa pembagian suatu bilangan dengan bilangan yang lain

3. Date Function
Date function digunakan memanipulasi tanggal. Berikut adalah date function yang digunakan pada modul ini:
Date Function Kegunaan
MONTHS_BETWEEN Menghitung jumlah bulan diantara dua tanggal
ADD_MONTHS Menambahkan satu bulan pada tanggal tertentu
NEXT_DAY Menentukan tanggal selanjutnya sesuai dengan hari yang ditentukan
LAST_DAY Menentukan tanggal terakhir pada suatu bulan
ROUND Pembulatan tanggal sesuai dengan format tertentu
TRUNC Pemotongan tanggal sesuai dengan format tertentu

1.2.2.1 Soal
1. Tampilkan nama depan dan ID pekerjaan pegawai yang ID pekerjaannya adalah it_prog. Setiap karakter nama depan
disajikan dalam huruf kapital (uppercase).
2. Tampilkan nama lengkap pegawai (dengan menggabungkan nama depan dan nama belakang), alamat email
lengkap (dengan menambahkan domain oracle.com pada account email) untuk pegawai yang jumlah karakter pada
nama depannya adalah tiga.
3. Tampilkan nama depan pegawai, gaji, persentase komisi, pajak dan besarnya komisi (gaji dikali dengan persentase
komisi) untuk pegawai yang memiliki persentase komisi. Pajak didapatkan dengan menghitung sisa pembagian gaji
dengan bilangan 80. Penghitungan besaran komisi dibulatkan dengan menyisakan dua bilangan di belakang koma.
4. Tampilkan nama depan pegawai,jumlah bulan pegawai bekerja sampai dengan sekarang, tanggal menerima gaji
bulanan, dan tanggal menerima komisi mingguan. Pegawai menerima gaji bulanan pada tanggal terakhir setiap
bulan. Komisi mingguan diberikan kepada pegawai setiap hari Jumat.

1.2.2.2 Langkah Penyelesaian


1. Untuk menyelesaikan persoalan nomer 1, kita dapat membagi ke dalam beberapa sub penyelesaian:
a. Untuk menyajikan setiap karakter nama depan dalam huruf capital digunakan function upper pada klausa
SELECT.
b. Untuk menambahkan kondisi bahwa informasi yang ditampilkan adalah pegawai yang memiliki ID pekerjaan
adalah it_prog dapat digunakan function lower pada klausa WHERE. Function lower digunakan untuk
mengantisipasi ketidaktahuan bentuk huruf (case) yang tersimpan pada column JOB_ID.
2. Untuk menyelesaikan persoalan nomer 2, kita dapat membagi ke dalam beberapa sub penyelesaian:
a. Untuk menampilkan nama lengkap pegawai digunakan function concat pada klausa SELECT. Function concat
digunakan untuk menggabungkan nilai pada column first_name dan last_name.
b. Untuk menampilkan email lengkap pegawai digunakan function concat pada klausa SELECT. Function concat
digunakan untuk menggabungkan nilai pada colum email dan string ‘@oracle.com’.
c. Untuk menambahkan kondisi bahwa informasi yang ditampilkan adalah pegawai yang memiliki jumlah karakter
nama depannya sebanyak tiga, digunakan function length pada klausa WHERE.
3. Untuk menyelesaikan persoalan nomer 3, kita dapat membagi ke dalam beberapa sub penyelesaian:
a. Untuk menghitung dan menampilkan pajak digunakan function MOD pada klausa SELECT. Function MOD
digunakan untuk menghitung sisa pembangian nilai pada column salary dengan bilangan 80.
b. Untuk menghitung dan menampilkan komisi dengan membulatkan dua angka dibelakang koma digunakan
function round pada klausa SELECT. Function round digunakan untuk membulatkan hasil perkalian nilai yang
tersimpan pada column salary dan commission_pct.
c. Untuk menambahkan kondisi bahwa informasi yang ditampilkan adalah pegawai yang memiliki persentase
komisi, digunakan operator pembanding IS NOT NULL
4. Untuk menyelesaikan persoalan nomer 4, kita dapat membagi ke dalam beberapa sub penyelesaian:
a. Untuk menghitung jumlah bulan pegawai bekerja sampai dengan sekarang digunakan function
MONTHS_BETWEEN pada klausa SELECT. Function MONTHS_BETWEEN digunakan untuk menghitung jumlah
bulan mulai pegawai diangkat menjadi pegawai sampai dengan hari ini.
b. Untuk menampilkan tanggal menerima gaji bulanan, khususnya bulan berjalan, digunakan function LAST_DAY
pada klausa SELECT.
c. Untuk menampilkan tanggal menerima komisi mingguan digunakan function NEXT_DAY pada klausa SELECT.
Karena komisi mingguan diterima setiap hari Jumat, maka harus digunakan string ‘Friday’ sebagai bagian dari
argument function.
1.2.2.3 SQL Command
1. Untuk menyelesaikan persoalan nomer 1, digunakan SQL Statement sebagai berikut:
SELECT UPPER(first_name), job_id FROM employees
WHERE LOWER(job_id)='it_prog'
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:

2. Untuk menyelesaikan persoalan nomer 2, digunakan SQL Statement sebagai berikut:


SELECT CONCAT(first_name,last_name) as "Nama Lengkap",
CONCAT(email,'@oracle.com') as "Email Lengkap"
FROM employees
WHERE LENGTH(first_name) = 3
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:
3. Untuk menyelesaikan persoalan nomer 3, digunakan SQL Statement sebagai berikut:
SELECT first_name, commission_pct,
MOD(salary,80) as pajak,
ROUND(salary*commission_pct,2) as komisi
FROM employees
WHERE commission_pct is not null

Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:


4. Untuk menyelesaikan persoalan nomer 4, digunakan SQL Statement sebagai berikut:
SELECT MONTHS_BETWEEN(sysdate,hire_date) AS “Bulan Kerja”,
LAST_DAY(sysdate) AS “Gaji Bulanan”,
NEXT_DAY(sysdate,'Friday') AS “Komisi Mingguan”
FROM employees
Hasil eksekusi SQL Command di atas menyajikan record sebagai berikut:
Simpan dokumen ini dengan nama file : DBMS20222-M9-KELAS-NOABSEN-NAMA.docx
Email ke : gunawan@usbypkp.ac.id
Subject : DBMS20222-M9-KELAS-NOABSEN-NAMA

Anda mungkin juga menyukai