Top Banner
Kalkulus Relasional 16 Oktober 2012
27
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: ikd312-05-kalkulus-relasional

Kalkulus Relasional 16 Oktober 2012

Page 2: ikd312-05-kalkulus-relasional

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

Page 3: ikd312-05-kalkulus-relasional

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

Page 4: ikd312-05-kalkulus-relasional

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

Page 5: ikd312-05-kalkulus-relasional

SQL SELECT Menghilangkan duplikasi baris dengan DISTINCT

SELECT department_id

FROM employees;

Bandingkan dengan SELECT DISTINCT department_id

FROM employees;

Kalkulus Relasional 5

Page 6: ikd312-05-kalkulus-relasional

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

Page 7: ikd312-05-kalkulus-relasional

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

Page 8: ikd312-05-kalkulus-relasional

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

Page 9: ikd312-05-kalkulus-relasional

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

Page 10: ikd312-05-kalkulus-relasional

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

Page 11: ikd312-05-kalkulus-relasional

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

Page 12: ikd312-05-kalkulus-relasional

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

Page 13: ikd312-05-kalkulus-relasional

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

Page 14: ikd312-05-kalkulus-relasional

Prioritas Evaluasi Operator

Ketentuan dapat diabaikan dengan menggunakan tanda kurung ( )

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

14 Kalkulus Relasional

Page 15: ikd312-05-kalkulus-relasional

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

Page 16: ikd312-05-kalkulus-relasional

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

Page 17: ikd312-05-kalkulus-relasional

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;

17 Kalkulus Relasional

Page 18: ikd312-05-kalkulus-relasional

Memperoleh data dari banyak table

EMPLOYEE_ID LAST_NAME DEPARTMENT_ID

100

101

...

...

205

206

King

Kochar

Higgins

Giant

90

90

110

110

DEPARTMENT_ID DEPARTMENT_NAME LOCATION_ID

10

20

50

.....

100

Administration

Marketing

Shipping

Contracting

1700

1900

1500

1700

18 Kalkulus Relasional

Page 19: ikd312-05-kalkulus-relasional

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

Page 20: ikd312-05-kalkulus-relasional

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

Page 21: ikd312-05-kalkulus-relasional

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

Page 22: ikd312-05-kalkulus-relasional

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

Page 23: ikd312-05-kalkulus-relasional

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

Page 24: ikd312-05-kalkulus-relasional

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

Page 25: ikd312-05-kalkulus-relasional

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

Page 26: ikd312-05-kalkulus-relasional

Pustaka http://tjerdastangkas.blogspot.com/search/label/ikd312

26 Kalkulus Relasional

Page 27: ikd312-05-kalkulus-relasional

Kamis, 20 Oktober 2011