You are on page 1of 17

BAB V ALJABAR RELASIONAL

Yaitu sekumpulan operasi yang digunakan untuk melakukan proses manipulasi data dalam rangka
untuk mendapatkan informasi yang diperlukan dari database. Ajabar relasional Secara umum dibagi
menjadi 2:

 operasi himpunan (UNION, INTERSECTION, DIFFERENCE, dan CARTESIAN PRODUCT)

 operasi yang dikembangkan secara khusus untuk database relational. (SELECT, PROJECT dan
JOIN)

Istilah Relasi, dalam bahasan ini dipergunakan untuk penamaan tabel beserta datanya baik yang
murni maupun yang sudah dilakukan modifikasi dengan operasi-operasi aljabar relasional.

Contoh data base.


Operasi Project (Projection)
Untuk memilih attribut (kolom) tertentu dari himpunan / subhimpunan dan membuang yang lain

Notasi

π <daftar attribut> (<nama relasi>)

Jika <daftar attribut> tidak menyertakan primary key, maka dimungkinkan akan terjadi duplikasi.
Duplikasi ini akan dihilangkan sehingga hanya sekali yang muncul.

Contoh. Untuk memilih atribut JenisKel dan Gaji dari tabel Pegawai:

π JenisKel, Gaji (Pegawai)

Urutan Operasi

Sebuah operasi bisa dituliskan dalam bentuk beberapa ekspresi aljabar relasional dengan
mengelompokkan untuk tiap-tiap operasi dan memberi nama

π nmDepan, nmBlk, gaji (σ dep_nomor=5(PEGAWAI))

Mengambil informasi nama depan, nama belakang dan gaji dari pegawai-pegawai yang bekerja di
departemen nomor 5

bisa ditulis dalam bentuk:

PEG_DEP5 ß σ dep_nomor=5 (PEGAWAI)

(tabel pegawai dipilah dulu hanya dengan mengambil yg memenuhi dep_nomor=5 dan disimpan
dalam relasi dengan nama PEG_DEP5)

HASIL ß π nmDepan, nmBlk, gaji (PEG_DEP5)

(kemudian setelah itu, relasi PEG_DEP5 dipilah hanya diambil kolom-kolom nmDepan, nmBlk dan
gaji)

Perubahan Nama Atribut

Untuk mengubah nama attribut dari sebuah relasi yang merupakan hasil dari operasi aljabar
relasional, ditulis nama atribut baru dalam huruf besar

TEMP ß σ dep_nomor=5 (PEGAWAI)

RBARU (NAMADEPAN, NAMABELAKANG, GAJI) ß π nmdepan, nmblk, gaji (TEMP)


BAB VI Strctured Query Language
 Berikut adalah syntax dari SQL-SELECT

SELECT [DISTINCT] select_list

FROM table_source

[WHERE search_condition]

[GROUP BY group_by_expression]

[HAVING search_condition]

[ORDER BY order_expression [ASC |

DESC] ]

 SELECT, INTO, FROM, WHERE, GROUP BY, HAVING DAN ORDER BY à kata kunci
(keyword) yang harus disertakan jika kita membutuhkannya di dalam pengolahan data

 select_list, new_table_, table_source, search_condition, group_by_expression, order_expression


à isian yang bisa kita ubah berdasarkan kebutuhan kita

 Kurung kotak [ ] à bagian tersebut boleh disertakan atau tidak, tergantung dari kebutuhan

 Urutan syntax untuk kata kunci (keyword), misalnya ORDER BY terletak di setelah GROUP BY,
menunjukkan bahwa keyword harus disusun berdasarkan urutan tersebut, jika keduanya disertakan,
ORDER BY tidak boleh ditulis mendahului GROUP BY

Data base

select_list
adalah kolom-kolom yang didefinisikan sebagai hasil dari proses query

a. Menampilkan keseluruhan field

Untuk menampilkan keseluruhan field dari tabel-tabel yang didefinisikan, digunakan *.


Misalnya, untuk menampilkan seluruh field dari tabel Anggota, perintahnya:

SELECT * FROM Anggota

b. Menampilkan kolom-kolom tertentu

Kolom-kolom yang dipilih berupa ekspresi, yang mana ekspresi tersebut bisa berupa:

• field tabel (biasanya)

• konstanta

• operasi dan fungsi

• Antara kolom satu dengan lainnya dipisahkan dengan tanda koma (,). Jika merupakan field tabel,
maka judul kolom adalah nama field tersebut. Selain itu, jika tidak diberi nama, judul kolom akan kosong.

Contoh.

 menampilkan nama dan alamat Anggota

SELECT nama, alamat FROM Anggota

 Yang terdapat nilai konstanta, menampilkan nilai 1 untuk setiap baris pada kolom pertama dari
query sebelumnya

SELECT 1, nama, alamat FROM Anggota

 Yang terdapat ekspresi fungsi dari query sebelumnya, yakni menampilkan nama dalam bentuk
huruf kapital:

SELECT UPPER(nama), alamat FROM Anggota

c. Mengubah judul kolom

Kolom-kolom yang dipilih bisa diberi judul tertentu sesuai dengan keinginan kita.

 Ada 2 cara untuk mengubah judul kolom:

 Menggunakan syntax: ekspresi AS judul_kolom

Ini merupakan cara standar yang dipakai pada banyak sistem database.

 Menggunakan syntax: judul_kolom = ekspresi


Contoh

Beberapa query pada point b sebelumnya, diberi judul kolom sbb:

 menampilkan nama dan alamat Anggota

SELECT nama AS NamaAnggota, alamat AS AlamatAnggota FROM


Anggota

 menampilkan nama dalam bentuk huruf kapital dg judul kolom NamaKapital:

SELECT NamaKapital=UPPER(nama), alamat FROM Anggota

Menyertakan nama tabel atau aliasJika kita memasukkan sebuah field tabel di dalam sebuah ekspresi
kolom, kita bisa menyertakan nama tabel Sebelum nama fieldnya yang dipisah dengan tanda
titik:nama_tabel.nama_field

Untuk apa?

 Untuk mempermudah analisa pembuatan query

 Untuk membedakan kepemilikan sebuah field di dalam query yang menyertakan lebih dari satu
tabel. Sebab bisa saja terjadi dua buah tabel memiliki nama field yang sama

Contoh

untuk sebuah contoh query sebelumnya, jika disertakan nama tabel adalah sbb:

SELECT

NamaKapital=UPPER(Anggota.nama),

Anggota.alamat

FROM Anggota

DISTINCT
Digunakan apabila kita ingin menghilangkan duplikasi dari hasil query (hasil query yang sama
ditampilkan sekali)

SELECT [DISTINCT] select_list

FROM table_source

Contoh
untuk menampilkan nomor-nomor anggota yang sedang meminjam atau belum mengembalikan:

SELECT NoAnggota FROM Peminjaman

NoAnggota

ID001

ID002

ID001

ID003

padahasilquerytersebutterdapatNoAnggotayangditampilkanlebihdarisekali.Untuk
meniadakanduplikasi,querynyaadalah sbb:

SELECT DISTINCT NoAnggota FROM Peminjaman

NoAnggota
ID001
ID002
ID003

TABLE_SOURCE
 Adalah sumber data dari query

 Bisa merupakan tabel ataupun view

 Tabel yang disertakan bisa lebih dari satu. Jika lebih dari satu, dalam penulisan dipisah dengan
koma.
Pemberian nama lain (alias)
 Sebuah tabel bisa diberi nama lain (alias), yang mana hal ini digunakan untuk memperpendek
nama atau untuk membedakan field jika sebuah query mengambil tabel yang sama lebih dari satu

 Nama alias ditulis setelah nama tabel yang bersangkutan

Alias yang dipergunakan untuk Query dengan tabel sumber data yang sama. Query untuk mencari
Anggota yang tanggal lahirnya sama:

SELECT NamaKapital=UPPER(ang.nama), ang.alamat

FROM Anggota ang

Kasus diatas diperlukan dua buah alias untuk sebuah tabel yang sama, karena untuk proses tersebut,
diperlukan pembandingan terhadap tabel yang sama. Oleh karena itu, tabel anggota perlu dianggap
sebagai 2 sumber data yang berbeda dengan memberi nama alias ang1 dan ang2 yang kemudian
dibandingkan mana saja yang memiliki field tanggal lahir yang sama.

WHERE
 Klausa ini biasanya digunakan untuk:

• Filter (penyaringan) data.

• Merelasikan/menghubungkan query yang disusun lebih dari satu tabel.

 Penerapannya adalah dengan memasukkan suatu ekspresi kondisi setelah klausa WHERE:

WHERE <kondisi>

 Jika <kondisi> lebih dari satu, maka bisa ditambahkan dengan AND atau OR (sesuai dengan
kebutuhan).

WHERE <kondisi> UNTUK FILTER

Where untuk filter atau pencarian data di dalam SQL Server bisa dalam beberapa bentuk ekspresi,
yakni:

 operasi pembandingan

 operasi pendekatan pola

 operasi pembandingan dengan sekumpulan nilai


Operasi Pembandingan

Operasi:

= < <= >= > <> is

 Khusus untuk pembanding IS, nilai yang diisikan adalah null, yakni sebuah nilai yang belum
berisi nilai.

 nilai null tidak sama dengan nilai 0 pada tipe numerik ataupun string kosong pada tipe string

Contoh.

 menampilkan anggota yang berjenis kelamin laki-laki:

 SELECT * FROM Anggota WHERE JK="L"

 menampilkan Anggota yang tahun kelahirannya lebih dari 1985

SELECT * FROM Anggota

WHERE year(TglLahir) > 1985

 menampilkan idKoleksi yang belum dikembalikan (TglKembali belum terisi)

SELECT * FROM Peminjaman WHERE TglKembali IS NULL

Operasi LIKE (pendekatan pola)

 Operasi ini, hanya untuk pembandingan nilai bertipe string

 Digunakan untuk mengenali string-string yang memiliki pola tertentu.

 Di dalam operasi ini, digunakan simbol-simbol berikut:

• simbol % artinya mewakili 0 s/d tak terhingga dari sembarang karakter

• simbol _ artinya mewakili 1 sembarang karate

Control.

 menampilkan anggota yang nama depannya "Budi":

SELECT * FROM anggota WHERE Nama LIKE "Budi%"


 menampilkan Anggota yang huruf ketiga namanya adalah “d”:

SELECT * FROM anggota WHERE Nama LIKE "__d%"

 menampilkan koleksi yang judulnya terdapat kata “pemrograman”:

SELECT * FROM koleksi WHERE Judul LIKE

"%pemrograman%"

operasi IN atau NOT IN

 Ekspresi ini digunakan untuk membandingkan dengan sebuah kumpulan nilai

• Kumpulan nilai bisa berupa:

• nilai-nilai yang diisikan

• query tunggal query yg hasilnya hanya terdapat sebuah kolom saja

 Nilai-nilai yang diisikan, maksudnya kita sendiri yang mengisikan nilai-nilai tersebut di dalam
query kita.

Contoh.

 menampilkan koleksi yang jenisnya buku dan majalah (idTipeKoleksi=1 atau 2):

SELECT * FROM koleksi

WHERE idTipeKoleksi IN (1, 2)

 menampilkan anggota yang selain mahasiswa atau dosen (idJenisAnggota selain 2 dan 3)

SELECT * FROM anggota WHERE

IDJenisAnggota NOT IN (1, 3)

 Query tunggal, yakni nilai-nilai yang digunakan sebagai pembanding diambil dari sebuah query
tunggal yang hasilnya hanya satu kolom saja.

Contoh.

 menampilkan anggota yang belum pernah meminjam buku sama sekali:

SELECT * FROM anggota

WHERE id NOT IN (SELECT DISTINCT idAnggota FROM Peminjaman)

 menampilkan koleksi yang sedang dipinjam:

SELECT * FROM koleksi WHERE idKoleksi IN (SELECT idKoleksi


FROM Peminjaman WHERE TglKembali is NULL)

WHERE <KONDISI> UNTUK RELASI

 Jika kita mengambil informasi dari lebih dari sebuah tabel, maka kita perlu menambahkan
kondisi untuk relasi antara kedua tabel tersebut.

 Pada dasarnya mirip dengan filter, tapi fungsinya digunakan untuk merelasikan antara tabel-tabel
yang diambil informasinya.

Contoh.

 menampilkan idKoleksi, judul dan nama pengarang

idKoleksi dan judul bisa diambil dari tabel koleksi. Tetapi, di tabel koleksi tidak terdapat field
nama pengarang. Yang ada hanya idPengarang. Oleh sebab itu, supaya bisa menampilkan
informasi yang akurat, perlu direlasikan antara tabel Koleksi dg tabel Pengarang.

SELECT idKoleksi, Judul, Nama FROM Koleksi, Pengarang

WHERE idPengarang=id

idPengarang=id adalah untuk relasi antara tabel Koleksi dan

tabel Pengarang. Tanpa relasi ini, hasil query akan menampilkan seluruh pasangan baris data
Koleksi di tiap baris Pengarang, yg tentu saja bukan informasi yang benar.

 Jika ada nama field yang sama dari tabel yang disertakan, maka sebelum nama field, berikan
nama tabel diikuti sebuah titik (.)

 Misal untuk query sebelumnya bisa juga ditulis sbb:

SELECT Koleksi.idKoleksi, Koleksi.Judul,

Pengarang.Nama

FROM Koleksi, Pengarang

WHERE Koleksi.idPengarang=Pengarang.id

Contoh.

 menampilkan daftar idKoleksi, judul koleksi dan harganya yang dipinjam dg nomor anggota:
551, diurutkan berdasarkan judul koleksi:

SELECT kl.idKoleksi, kl.judul, kl.harga

FROM koleksi kl, peminjaman pj, anggota ag

WHERE pj.idkoleksi=kl.idkoleksi
AND pj.idAnggota=ag.id

AND ag.idAnggota = 551

ORDER BY kl.judul

FUNGSI-FUNGSI AGREGATE

 Yaitu fungsi-fungsi yang hasilnya diambil dari proses tiap baris pada tabel.

 Proses tersebut akan mengolah nilai sebuah field atau lebih mulai baris pertama sampai seluruh
baris

 Fungsi-fungsi tersebut yakni:

- COUNT(*) à mendapatkan jumlah baris


- SUM(kolom) à mendapatkan hasil penjumlahan kolom
- MAX(kolom) à mendapatkan nilai tertinggi
- MIN(kolom) à mendapatkan nilai terendah
- AVG(kolom) à mendapatkan nilai rata-rata

Contoh.

 untuk menampilkan jumlah seluruh anggota:

 SELECT COUNT(*) FROM Anggota

 untuk menampilkan tahun kelahiran anggota tertua:

SELECT MIN(year(TglLahir))

FROM anggota

GROUP BY <kolom1> [,<kolom2>]

 Digunakan untuk pengelompokan dari fungsi-fungsi aggregate

 Yang penting untuk diperhatikan, kolom-kolom yang disertakan setelah GROUP BY harus sama
dengan kolom-kolom yang dipilih pada setelah klausa SELECT yg selain fungsi AGGREGATE

Contoh.

 untuk menampilkan jumlah anggota perjenis kelamin:

 SELECT JK, COUNT(*) FROM anggota

GROUP BY JK
 untuk menampilkan rata-rata harga koleksi per kode penerbit

SELECT idPenerbit, AVG(harga)

FROM koleksi

GROUP BY idPenerbit

HAVING <kondisiAgregate>

 Jika untuk filter query biasa kita menggunakan klause where, maka klausa having digunakan
untuk filter fungsi-fungsi aggregate.

Conto.

 untuk menampilkan jumlah buku per kode penerbit, tetapi hanya yang jumlahnya >10 saja yang
ditampilkan.

SELECT idPenerbit, COUNT(*) FROM koleksi

GROUP BY idPenerbit HAVING COUNT(*)>10

SQL JOIN
Contoh Data:

Tabel Mahasiswa

Tabel Dosen:
CROSS JOIN

 Hasil query dengan cross join merupakan hasil gabungan tiap baris pada masing-masing tabel.

 SELECT * FROM Mhs CROSS JOIN Dosen

INNER JOIN

 Hasil query dengan inner join hanya menampilkan baris-baris yang terdapat relasi antara
dua buah tabel.

 SELECT * FROM Mhs


 LEFT OUTER JOIN Dosen on NIPWali=NIP

hasilnya sama halnya jika tanpa menyertakan klausa OUTER:

SELECT * FROM Mhs

LEFT JOIN Dosen on NIPWali=NIP

 Menampilkan seluruh baris pada tabel yang disebut pada bagian kanan, tetapi menampilkan nilai
null untuk setiap kolom yang tidak terdapat relasinya pada tabel sisi kiri

SELECT * FROM Mhs

RIGHT OUTER JOIN Dosen on NIPWali=NIP

 hasilnya sama halnya jika tanpa menyertakan klausa OUTER:

SELECT * FROM Mhs

RIGHT JOIN Dosen on NIPWali=NIP

You might also like