2. Kalkulus Relasional
Bahasa kueri Structured Query Language
Standardisasi SQL 99
Data Manipulation Language
Pemetaan dengan Aljabar Relasional
Relasi, Table name
Projection operator, SELECT
Selection operator, klausa WHERE
Join, klausa Inner Join dalam klausa WHERE
Kalkulus Relasional 2
3. SQL Statement
Statemen SQL tidak case sensitif
Statemen SQL dapat terdiri dari satu atau lebih baris
Keyword tidak boleh disingkat atau terpisah pada baris
yang berbeda
Klausa biasanya ditempatkan pada baris yang berbeda
Indentasi biasanya digunakan untuk memudahkan
pembacaan statemen
Kalkulus Relasional 3
4. SQL SELECT Statement
Operasi Projection dalam Kalkulus Relasional
Pernyataan paling sederhana
SELECT kolom1, kolom2, . . , kolom-n
FROM tabel
Contoh
SELECT last_name, salary, dept_id
FROM employees;
Kalkulus Relasional 4
5. SQL SELECT
Menghilangkan duplikasi baris dengan DISTINCT
SELECT department_id
FROM employees;
Bandingkan dengan
SELECT DISTINCT department_id
FROM employees;
Kalkulus Relasional 5
6. Klausa WHERE
Operasi Selection dalam Kalkulus Relasional
SELECT employee_id, last_name,
job_id, department_id
FROM employees
WHERE department_id = 90;
Tampilkan Nomor pegawai, Nama belakang, Jenis
pekerjaan, dan Nomor departemen bagi pegawai yang
bekerja di departemen nomor 90
Kalkulus Relasional 6
7. Tipe data Char dan Number
Atribut last_name diapit oleh 'single-quote'
Tipe data string (CHAR, VARCHAR2)
Atribut department_id tidak diapit 'single-quote'
NUMBER
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'King';
Kalkulus Relasional 7
8. Kondisi Perbandingan dalam
klausa WHERE
Operator perbandingan aritmatik (=, >=, <=, <, >)
berlaku seperti dalam bahasa pemrograman
Operator ketidaksamaan: <>
Bandingkan dengan != dalam Java atau C++
Operator tambahan
BETWEEN . . AND . .
IN
NOT
LIKE
Kalkulus Relasional 8
9. Operator BETWEEN . . AND . .
Tampilkan Nama belakang pegawai dan Gajinya bagi
mereka yang memiliki gaji dalam rentang di antara
2500 dan 3500
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500;
Bersifat inklusif (batas atas dan batas bawah
dimasukkan ke dalam hasil kueri)
Kalkulus Relasional 9
10. Operator IN
Tampilkan Nomor karyawan, Nama belakang, Gaji,
dan Nomor departemen untuk semua pegawai yang
bekerja di departemen 100, 101, dan 102
SELECT employee_id, last_name,
salary, department_id
FROM employees
WHERE department_id IN (100, 101, 102);
Setara dengan
WHERE department_id = 100 OR department_id =
101 OR department_id = 102;
Kalkulus Relasional 10
11. Operator LIKE
Berlaku untuk tipe data String
Bersifat case-sensitive
Tampilkan Nama depan pegawai yang diawali dengan
huruf 'S'
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%';
Bandingkan dengan klausa
WHERE first_name LIKE 's%';
Kalkulus Relasional 11
12. Operator LIKE
Tampilkan Nama belakang para pegawai yang
memiliki nama terdiri atas empat huruf, diawali
dengan huruf 'K'
SELECT last_name
FROM employees
WHERE last_name LIKE 'K___';
Karakter '%' mewakili nol, satu, atau lebih huruf
Karakter '_' mewakili satu huruf
Kalkulus Relasional 12
13. Operator Logika
Gunakan keyword AND, OR, NOT untuk
menggabungkan kondisi dalam klausa WHERE
Perhatikan prioritas (presedensi) operator dalam
klausa WHERE
SELECT employee_id, last_name,
job_id, salary
FROM employees
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK',
'SA_REP');
Kalkulus Relasional 13
14. Prioritas Evaluasi Operator
Urutan evaluasi Operator
1 Operator aritmatika
2 Operator konkatenation
3 Perbandingan kondisi
4 IS [NOT] NULL, LIKE, [NOT] IN
5 [NOT] BETWEEN
6 NOT kondisi lojik
7 AND kondisi lojik
8 OR kondisi lojik
Ketentuan dapat diabaikan dengan menggunakan tanda kurung ( )
Kalkulus Relasional 14
15. Contoh Presedensi Operator
Menampilkan pegawai yang menjabat sebagai
presiden perusahaan dan gajinya lebih dari 15000 atau
pegawai yang bertugas sebagai sales representatif
SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
Kalkulus Relasional 15
16. Contoh Presedensi Operator
Menampilkan pegawai yang menjabat sebagai
presiden perusahaan atau bertugas sebagai sales
representatif dan juga pegawai yang gajinya lebih
besar dari 15000
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP'
OR job_id = 'AD_PRES')
AND salary > 15000;
Kalkulus Relasional 16
17. Klausa ORDER BY
Mengurutkan baris dengan klausa ORDER BY
ASC (default) terurut dari kecil ke besar
DESC terurut dari besar ke kecil
Klausa ORDER BY terdapat dibagian akhir dari
statement SELECT
SELECT last_name, job_id
department_id, hire_date
FROM employees
ORDER BY hire_date DESC;
Kalkulus Relasional 17
18. Memperoleh data dari banyak
table
EMPLOYEE_ID LAST_NAME DEPARTMENT_ID
100 King 90
101 Kochar 90
...
...
205 Higgins 110
206 Giant 110
DEPARTMENT_ID DEPARTMENT_NAME LOCATION_ID
10 Administration 1700
20 Marketing 1900
50 Shipping 1500
.....
100 Contracting 1700
Kalkulus Relasional 18
19. Join dalam klausa WHERE
Operasi Join dalam Kalkulus Relasional
Atribut Nama departemen tidak tercantum di dalam
tabel employees
DESC employees;
Untuk menampilkan nama pegawai beserta nama
departemen, perlu merelasikan dua tabel
Natural Join
SELECT employees.last_name,
departments.depatment_name
FROM employees, department;
Kalkulus Relasional 19
20. Equijoin
Natural join merelasikan setiap baris di tabel pertama
dengan setiap baris di tabel kedua
Equijoin hanya menampilkan baris-baris yang Equal
Kesamaan atribut didasarkan pada rancangan ERD
SELECT employees.last_name,
departments.department_name
FROM employees, departments
WHERE employees.department_id =
departments.department_id;
Kalkulus Relasional 20
21. Equijoin
Biasanya atribut di dua tabel yang direlasikan melalui
Equijoin bernama sama
Employees.department_id
Departments.department_id
Bandingkan juga dengan
Departments.location_id
Locations.location_id
Belum tentu sama!
Akan dibahas dalam pertemuan berikutnya
Kalkulus Relasional 21
22. Penulisan Alias
SELECT e.last_name, d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id;
Lebih singkat daripada
SELECT employees.last_name,
departments.department_name
FROM employees, departments
WHERE employees.department_id =
departments.department_id;
Kalkulus Relasional 22
23. Kondisi Tambahan
Equijoin merelasikan dua tabel
Kondisi tambahan bisa disebutkan dengan operator
AND atau OR
SELECT e.last_name, e.department_id,
d.department_name
FROM employees e, departments d
WHERE e.department_id = d.department_id
AND e.last_name = 'King';
Klausa ORDER BY juga bisa ditambahkan jika perlu
Kalkulus Relasional 23
24. Join Tiga Tabel
Untuk melakukan join n tabel, kita memerlukan
paling sedikit n-1 kondisi join.
Contoh untuk melakukan join menggunakan 3 tabel,
diperlukan paling sedikit 2 buah join
Contoh melakukan join menggunakan tabel
EMPLOYEES, DEPARTMENTS dan LOCATIONS
SELECT e.employee_id, e.last_name, l.city
FROM employees e, departments d, locations l
WHERE e.department_id = d.department_id
AND d.location_id = l.location_id;
Kalkulus Relasional 24
25. Self Join
Relasi rekursif dalam Diagram ER
Tampilkan nama pegawai dan nama atasannya
SELECT worker.last_name || ' works for ' ||
manager.last_name
FROM employees worker, employees manager
WHERE worker.manager_id =
manager.employee_id;
Operator || digunakan untuk menggandengkan
(concatenate) data String
Kalkulus Relasional 25