Anda di halaman 1dari 5

PRAKTIKUM BASIS DATA LANJUT

PERTEMUAN KE-4
MATERI :
1. JOIN
2. SUBQUERY

PRAKTIKUM
1. JOIN
Dalam rancangan database yang sudah memenuhi kaidah NORMALISASI, pemecahan tabel
sudah pasti dilakukan. Untuk keperluan menampilkan data yang terpisah dalam relasi tersebut,
salah satu cara adalah dengan mempergunakan perintah JOIN. Dalam banyak kasus (tidak
selalu) perintah join biasanya melibatkan dua tabel yang memiliki field salaing berhubungan
sebagai primary key dan secondary key.

Langkah Praktikum :
1. Buatlah perintah SQL untuk menampilkan location ID, street address, city, state or
province, dan country. Catatan : tampilkan dulu struktur tabel Locations dan tabel
Countries agar mengetahui field-field yang terlibat relasi diantara keduanya.

SELECT location_id, street_address, city, state_province,


country_name
FROM locations
NATURAL JOIN countries;

2. Buatlah perintah SQL untuk menampilkan last_name, department_id dan


department_name untuk semua pegawai (employees).

SELECT last_name, department_id, department_name


FROM employees
JOIN departments
USING (department_id);

3. Buatlah perintah SQL untuk menampilkan pegawai yang lokasi kerjanya di toronto.
Tampilkan last_name, job_id, department_id, dan department_name untuk semua yang
bekerja di Toronto.

SELECT e.last_name, e.job_id, e.department_id,


d.department_name
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
JOIN locations l
ON (d.location_id = l.location_id)
WHERE LOWER(l.city) = 'toronto';
4. SELF-JOIN
Buatlah perintah SQL untuk menampilkan data karyawan beserta manager dari
karyawan tersebut. Tampilkan dengan nama kolom alias Pegawai, KodePeg, Manager,
dan KodeMgr

SELECT w.last_name "Pegawai", w.employee_id "KodePeg",


m.last_name "Manager", m.employee_id "KodeMgr"
FROM employees w join employees m
ON (w.manager_id = m.employee_id);

5. Buatlah perintah SQL untuk menampilkan data last_names, department_numbers dan


semua employees yang bekerja dalam departemen yang sama (kolega satu departemen)

SELECT e.department_id department, e.last_name employee,


c.last_name colleague
FROM employees e JOIN employees c
ON (e.department_id = c.department_id)
WHERE e.employee_id <> c.employee_id
ORDER BY e.department_id, e.last_name, c.last_name;

6. NONEQUIJOINS
Buat perintah tabel JOB_GRADES seperti berikut ini :

CREATE TABLE JOB_GRADES (grade_level char(1), lowest_sal


number,highest_sal number);

Isi tabel Job_Grades dengan isi sebagai berikut :

Dengan mempergunakan konsep NONEQUIJOINS, buatlah perintah SQL untuk


menampilkan range gaji pada tabel Employees berdasarkan pada tabel Job_grades. Field
yang ditampilkan adalah last_name, job, department name, salary, dan grade untuk
semua employees.

DESC JOB_GRADES
SELECT e.last_name, e.job_id, d.department_name,e.salary,
j.grade_level
FROM employees e JOIN departments d
ON (e.department_id = d.department_id) JOIN job_grades j
ON (e.salary BETWEEN j.lowest_sal AND j.highest_sal);
7. Buatlah perintah SQL yang akan menampilkan seluruh data karyawan yang masuk
kerjanya setelah ‘Davies’. Data masuk kerja ada di tabel hire_date.

SELECT e.last_name, e.hire_date


FROM employees e JOIN employees davies
ON (davies.last_name = 'Davies')
WHERE davies.hire_date < e.hire_date;

2. SUBQUERY
Sintaks umum :

SubQuery akan dieksekusi terlebih dahulu, kemudian hasilnya akan dipergunakan untuk
filtering main query.

Langkah Praktikum :
1. Contoh sederhana pemakaian sub query :

SELECT last_name, salary FROM employees


WHERE salary >
(SELECT salary
FROM employees
WHERE last_name = 'Abel');

2. Dua buah SubQuery sebagai filter main query

SELECT last_name, job_id, salary FROM employees


WHERE job_id =
(SELECT job_id FROM employees
WHERE last_name = 'Taylor')
AND salary >
(SELECT salary FROM employees
WHERE last_name = 'Taylor');

3. Buatlah perintah SQL untuk menampilkan data karyawan dengan kriteria besar gaji yang
diterima diatas rata-rata gaji yang diterima.

SELECT employee_id, last_name, salary FROM employees


WHERE salary > (SELECT AVG(salary) FROM employees)
ORDER BY salary;
4. Buatlah perintah SQL untuk menampilkan data karyawan yang last_name mengandung
huruf “u” :

SELECT employee_id, last_name FROM employees


WHERE department_id IN (SELECT department_id FROM employees
WHERE last_name like '%u%');

5. Buatlah perintah SQL yang akan menampilkan semua data karyawan yang terdiri dari
last_name, department_id dan job_id :

SELECT last_name, department_id, job_id FROM employees


WHERE department_id IN (SELECT department_id FROM departments
WHERE location_id = 1700);

6. Buatlah perintah SQL yang akan menampilkan data karyawan yang menjadi anak buah
king.

SELECT last_name, salary FROM employees


WHERE manager_id = (SELECT employee_id FROM employees
WHERE last_name = 'King');

7. Buatlah perintah SQL untuk membuat tabel emp01 yang berisi first_name, last_name
dan salary dengan tipe data dan lebar tipe data serta isinya sama dengan tabel
employees.

CREATE TABLE emp01


AS
SELECT first_name, last_name, salary FROM employees;

8. Hapus seluruh data yang ada dalam emp01. Selanjutnya tambahkan data yang ada
dalam tabel employees ke dalam tabel emp01.

INSERT INTO emp01(first_name,last_name,salary)


SELECT first_name,last_name,salary FROM employees;

9. Buatlah tabel emp sal dengan perintah berikut ini :

CREATE TABLE emp_sal


AS
SELECT employee_id, last_name, salary, commission_pct FROM
employees WHERE 1=0;

10. Buatlah tabel emp_dept dengan perintah berikut ini :

CREATE TABLE emp_dept


AS
SELECT employee_id, last_name, department_id,manager_id FROM
employees where 1=0;
11. Tambahkan data yang ada dalam tabel Employees kedalam tabel emp_sal dan
Emp_dept dengan format berikut ini :

INSERT ALL
INTO emp_sal VALUES(employee_id, last_name, salary,
commission_pct)
INTO emp_dept VALUES(employee_id, last_name, department_id,
manager_id)
SELECT employee_id, last_name, salary, commission_pct,
department_id, manager_id FROM employees;

12. Buatlah perintah SQL untuk menampilkan tiga besar perolehan gaji tertinggi.
SELECT ROWNUM, last_name, salary
FROM (SELECT last_name, salary FROM employees ORDER BY salary
DESC)
WHERE ROWNUM<=3;

LATIHAN SOAL Pertemuan 4:


1. Tampilkan nomor pegawai, nama pegawai (last name), nama departemen serta kota
departemen dari pegawai yang bernama “King”.
2. Munculkan semua nama pegawai (gabungan first name serta last name) serta nama
departemen. CATATAN: pegawai yang tidak ditempatkan dalam departemen tertentu
juga dimunculkan datanya. Gunakan LEFT OUTER JOIN.
3. Tampilkan nama manager dari pegawai yang bernama “King”.
4. Buatlah table baru dengan nama bc_emp untuk memback_up data employees

-- Asisten Basis Data Lanjut --

Anda mungkin juga menyukai