Anda di halaman 1dari 61

TEKNIK INFORMATIKA

KODE MK : TIF19410
SKS : 2/2
Capaian Pembelajaran
Mahasiswa/i mampu menggunakan
perintah-perintah & fungsi-fungsi SQL
untuk mengelola, memanipulasi &
mendefinisi basis data untuk memperoleh
informasi penting spesifik yang
diinginkan.
Pernyataan Data Manipulation Language (DML)
meliputi:
• SELECT – untuk query data dalam basis data;
• INSERT – untuk menyisipkan data ke dalam
tabel;
• UPDATE – untuk memperbarui data dalam
tabel;
• DELETE – untuk menghapus data dari tabel.
Relational schema untuk contoh SQL DML:

Branch (branchNo, street, city, postcode)


Staff (staffNo, fName, lName, position, sex, DOB,
salary, branchNo)
PropertyForRent (propertyNo, street, city, postcode,
type, rooms, rent, ownerNo, staffNo, branchNo)
Client (clientNo, fName, lName, telNo, prefType,
maxRent)
PrivateOwner (ownerNo, fName, lName, address,
telNo)
Viewing (clientNo, propertyNo, viewDate, comment)
QUERY SEDERHANA
Perintah SELECT digunakan untuk menarik dan
menampilkan data dari satu atau lebih tabel database.

SELECT nama kolom


FROM nama tabel
WHERE kondisi;

Merupakan perintah utama yang dapat melakukan


operasi aljabar relational Selection, Projection, dan Join
dalam satu pernyataan tunggal.
1# mengambil semua baris dan kolom
SELECT semua nama kolom
FROM nama tabel;

Contoh:
Buatlah daftar lengkap detil semua staff.
SELECT staffNo, fName, lName, position, sex, DOB,
salary, branchNo
FROM Staff;
atau
SELECT *
FROM Staff;
2# mengambil semua baris dan kolom
tertentu
SELECT nama kolom yang dipilih
FROM nama tabel;

Contoh:
Buatlah daftar salary untuk semua staff,
dengan menampilkan hanya staff number,
first dan last name, serta detil salary.
SELECT staffNo, fName, lName, salary
FROM Staff;
3# menghilangkan duplikasi data pada
kolom
SELECT DISTINCT nama kolom
FROM nama tabel;

Contoh:
Buatlah daftar property numbers dari semua
property yang sudah pernah di-view.
SELECT DISTINCT propertyNo
FROM Viewing;
4# kolom hasil komputasi atau
perhitungan
SELECT rumus pada kolom tertentu AS nama kolom hasil
komputasi
FROM nama tabel;

Contoh:
Buatlah daftar salary bulanan untuk semua staff, dengan
menampilkan staff number, first dan last name, serta detil
salary.
SELECT staffNo, fName, lName, salary/12 AS monthlySalary
FROM Staff;
atau
SELECT staffNo, fName, lName, salary/12
FROM Staff;
5# membandingkan hasil query
SELECT nama kolom
FROM nama tabel
WHERE kondisi;

Contoh:
Buatlah daftar staff yang memiliki salary lebih besar
dari £10,000.
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary > 10000;
Dalam SQL, berlaku operator pembanding
berikut ini:
Simbol Arti
= Sama dengan
<> Tidak sama dengan (standar ISO)
!= Tidak sama dengan (untuk kasus tertentu)
< Lebih kecil dari
<= Lebih kecil sama dengan
> Lebih besar dari
>= Lebih besar sama dengan
Predikat kompleks dapat dihasilkan dengan
menggunakan operator logika AND, OR, dan
NOT, menggunakan tanda kurung (bila perlu)
untuk menunjukkan urutan evaluasi.
Aturan evaluasi untuk ekspresi conditional:
1. Ekspresi dievaluasi dari kiri ke kanan;
2. Sub-ekspresi dalam tanda kurung dievaluasi lebih
dulu;
3. NOT dievaluasi sebelum AND dan OR;
4. AND dievaluasi sebelum OR.
6# (kombinasi) membandingkan hasil
query
SELECT nama kolom
FROM nama tabel
WHERE kondisi OPERATOR kondisi;

Contoh:
Buatlah daftar address semua kantor branch yang
ada di kota London atau Glasgow.
SELECT *
FROM Branch
WHERE city=‘London’ OR city=‘Glasgow’;
7# jangkauan kondisi hasil query
(BETWEEN/NOT BETWEEN)
SELECT nama kolom
FROM nama tabel
WHERE nama kolom BETWEEN kondisi OPERATOR kondisi;

Contoh:
Buatlah daftar semua staff yang memiliki salary antara £20,000 dan
£30,000
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary BETWEEN 20000 AND 30000;
atau
SELECT staffNo, fName, lName, position, salary
FROM Staff
WHERE salary >= 20000 AND salary <= 30000;
8# mengatur keanggotaan kondisi
query (IN/NOT IN)
SELECT nama kolom
FROM nama tabel
WHERE nama kolom IN (‘kondisi’, ‘kondisi’);
Kondisi yang ada pada (IN) menjadi faktor penentu apakah nilai data yang diquery
cocok/sesuai dengan nilai kondisi yang diinginkan

Contoh:
Buatlah daftar semua manager dan supervisor.
SELECT staffNo, fName, lName, position
FROM Staff
WHERE position IN (‘Manager’, ‘Supervisor’);
atau
SELECT staffNo, fName, lName, position
FROM Staff
WHERE position=‘Manager’ OR position=‘Supervisor’;
9# mencocokkan pola kondisi query
(LIKE/NOT LIKE)
SELECT nama kolom
FROM nama tabel
WHERE nama kolom LIKE ‘kondisi’;

Contoh:
Temukan semua owner yang memiliki unsur kata
‘Glasgow’ dalam address mereka.
SELECT ownerNo, fName, lName, address, telNo
FROM PrivateOwner
WHERE address LIKE ‘%Glasgow%’;
SQL memiliki dua simbol khusus untuk mencocokkan pola:
1. % (karakter persen) mewakili nol atau lebih banyak urutan karakter
(wildcard).
2. _ (karakter underscore) mewakili karakter tunggal.

Contoh:
• Address LIKE ‘H%’ artinya karakter pertama harus H, selanjutnya bisa apa
saja.
• Address LIKE ‘H_ _ _’ artinya harus ada empat karakter yang diawali
dengan H.
• Address LIKE ‘%e’ artinya apa saja yang diakhiri dengan e.
• Address LIKE ‘%Glasgow%’ artinya semua yang mengandung Glasgow.
• Address NOT LIKE ‘H%’ artinya karakter pertama tidak boleh H.
10# kondisi query NULL (IS NULL/IS
NOT NULL)
SELECT nama kolom
FROM nama tabel
WHERE kondisi OPERATOR nama kolom IS NULL;

Contoh:
Buatlah daftar pengunjung yang telah melakukan view
pada property PG4 dan tidak memberikan comment.
SELECT clientNo, viewDate
FROM Viewing
WHERE propertyNo=‘PG4’ AND comment IS NULL;
11# pengurutan kolom tunggal
SELECT nama kolom
FROM nama tabel
ORDER BY nama kolom DESC;

ASC adalah default dan tidak perlu ditulis

Contoh:
Buatlah daftar salary untuk semua staff, diurutkan secara
descending berdasarkan salary.
SELECT staffNo, fName, lName, salary
FROM Staff
ORDER BY salary DESC;
12# pengurutan multi-kolom
SELECT nama kolom
FROM nama tabel
ORDER BY nama kolom, nama kolom DESC;

Contoh:
Buatlah daftar untuk property diurutkan berdasar
property type, dan kemudia berdasarkan rent
dalam urutan descending.
SELECT propertyNo, type, rooms, rent
FROM PropertyForRent
ORDER BY type, rent DESC;
FUNGSI AGREGASI
Selain emngambil baris dan kolom dari database, kita
juga dapat melakukan penghitungan atau agregasi
data, misal total, jumlah, dll.

Standar ISO menentukan lima fungsi agregasi:


• COUNT – menghitung jumlah isi pada kolom
tertentu;
• SUM – menghitung total nilai pada kolom tertentu;
• AVG – menghitung rata-rata nilai pada kolom
tertentu;
• MIN – mencari nilai terkecil pada kolom tertentu;
• MAX – mencari nilai terbesar pada kolom tertentu.
13# COUNT
SELECT COUNT(*) AS nama kolom baru
FROM nama tabel
WHERE kondisi;

Contoh:
Berapa banyak property yang harga sewanya
lebih dari £350 per bulan?
SELECT COUNT(*) AS myCount
FROM PropertyForRent
WHERE rent > 350;
14# COUNT (DISTINCT)
SELECT COUNT(DISTINCT nama kolom) AS nama
kolom baru
FROM nama tabel
WHERE kondisi;

Contoh:
Berapa banyak property yang telah di-view pada bulan
May 2004?
SELECT COUNT(DISTINCT propertyNo) AS myCount
FROM Viewing
WHERE viewDate BETWEEN ‘1-May-04’ AND ‘31-May-
04’;
15# COUNT dan SUM
SELECT COUNT(nama kolom 1) AS nama kolom baru 1,
SUM(nama kolom 2) AS nama kolom baru 2
FROM nama tabel
WHERE kondisi;

Contoh:
Hitunglah berapa jumlah Manager dan total salary
mereka.
SELECT COUNT(staffNo) AS myCount, SUM(salary) AS
mySum
FROM Staff
WHERE position=‘Manager’;
16# MIN, MAX, AVG
SELECT MIN(nama kolom) AS nama kolom min,
MAX(nama kolom) AS nama kolom maks,
AVG(nama kolom) AS ama kolom rata2
FROM nama tabel;

Contoh:
Tentukan minimum, maksimum, dan rata-rata
salary seluruh staff.
SELECT MIN(salary) AS myMin, MAX(salary) AS
myMax, AVG(salary) AS myAvg
FROM Staff;
PENGELOMPOKAN HASIL
17# GROUP BY
Mengelompokkan data dari tabel hasil query SELECT dan
membuat baris ringkasan tunggal untuk setiap
kelompok/group data

Contoh:
Tentukan berapa jumlah staff yang bekerja di setiap branch dan
total salary mereka.

SELECT branchNo, COUNT (staffNo) AS myCount, SUM


(salary) AS mySum
FROM Staff
GROUP BY branchNo
ORDER BY branchNo;
18# HAVING
Menyaring/memfilter kelompok/group data sebelum menjadi
tabel hasil akhir.

Contoh:
Untuk setiap kantor branch yang memiliki staff lebih dari satu
orang, tentukan jumlah staff yang bekerja di setiap branch
dan total salary mereka.

SELECT branchNo, COUNT (staffNo) AS myCount, SUM


(salary) AS mySum
FROM Staff
GROUP BY branchNo
HAVING COUNT (staffNo) >1
ORDER BY branchNo;
SUB-QUERY
Ada 3 jenis subquery:
• Scalar subquery menghasilkan baris dan kolom
tunggal (nilai tunggal).
• Row subquery menghasilkan multi kolom, tetapi
hanya satu baris tunggal.
• Table subquery menghasilkan satu atau lebih
kolom dan multi baris.
19# subquery dengan equality
Contoh:
Buatlah daftar staff yang bekerja di branch yang beralamat di
jalan ‘163 Main St’.

SELECT staffNo, fName, lName, position


FROM Staff
WHERE branchNo = (SELECT branchNo
FROM Branch
WHERE street=‘163 Main St’);
yang nantinya akan menghasilkan
SELECT staffNo, fName, lName, position
FROM Staff
WHERE branchNo=‘B003’;
20# subquery dengan fungsi agregasi
Contoh:
Buatlah daftar semua staff yang salary lebih besar dari salary rata-rata,
dan tunjukkan selisih salary mereka dari rata-rata.

SELECT staffNo, fName, lName, position, salary – (SELECT


AVG(salary) FROM Staff) AS salDiff
FROM Staff
WHERE salary > (SELECT AVG(salary)
FROM Staff);
yang nantinya akan menghasilkan
SELECT staffNo, fName, lName, position, salary – 17000 AS salDiff
FROM Staff
WHERE salary > 17000;
21# subquery bersarang: IN
Contoh:
Buatlah daftar property yang ditangani oleh staff yang bekerja di
branch yang beralamat di jalan ‘163 Main St’.

SELECT propertyNo, street, city, postcode, type, rooms, rent


FROM PropertyForRent
WHERE staffNo IN (SELECT staffNo
FROM Staff
WHERE branchNo = (SELECT branchNo
FROM Branch
WHERE street=‘163
Main St’));
22# ANY/SOME
Contoh:
Temukan semua staff yang salary lebih besar dari
salary setidaknya satu orang staff pada branch
nomor B003.

SELECT staffNo, fName, lName, position, salary


FROM Staff
WHERE salary > SOME (SELECT salary
FROM Staff
WHERE branchNo =
‘B003’);
23# ALL
Contoh:
Temukan semua staff yang salary lebih besar
daripada salary setiap staff yang ada pada branch
nomor B003.

SELECT staffNo, fName, lName, position, salary


FROM Staff
WHERE salary > ALL (SELECT salary
FROM Staff
WHERE branchNo=‘B003’);
QUERY MULTI-TABEL
24# simple join
Contoh:
Buatlah daftar name semua client yang telah
me-view sebuah property dan meninggalkan
comment.

SELECT c.clientNo, fName, lName,


propertyNo, comment
FROM Client c, Viewing v
WHERE c.clientNo = v.clientNo;
25# mengurutkan join
Contoh:
Untuk setiap kantor branch, buatlah daftar nomor
dan name staff yang mengelola property dan
daftar property yang mereka kelola.

SELECT s.branchNo, s.staffNo, fName, lName,


propertyNo
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
ORDER BY s.branchNo, s.staffNo, propertyNo;
26# join 3 tabel
Contoh:
Untuk setiap branch, buatlah daftar nomor dan name
staff yang mengelola property, termasuk city dimana
branch berlokasi dan property yang dikelola oleh staff
tersebut.

SELECT b.branchNo, b.city, s.staffNo, fName, lName,


propertyNo
FROM Branch b, Staff s, PropertyForRent p
WHERE b.branchNo = s.branchNo AND s.staffNo =
p.staffNo
ORDER BY b.branchNo, s.staffNo, propertyNo;
27# kolom multi grouping
Contoh:
Temukan nomor property yang ditangani oleh
setiap staff.

SELECT s.branchNo, s.staffNo, COUNT(*) AS


myCount
FROM Staff s, PropertyForRent p
WHERE s.staffNo = p.staffNo
GROUP BY s.branchNo, s.staffNo
ORDER BY s.branchNo, s.staffNo;
31# EXISTS dan NOT EXISTS
Contoh:
Temukan semua staff yang bekerja di kantor branch
di kota London.

SELECT staffNo, fName, lName, position


FROM Staff s
WHERE EXISTS (SELECT *
FROM Branch b
WHERE s.branchNo =
b.branchNo AND city =
‘London’);
MENGGABUNGKAN TABEL
HASIL QUERY
Dalam SQL, kita dapat menggunakan operasi Union,
Intersection, dan Difference untuk menggabungkan
hasil dari dua atau lebih query ke dalam satu tabel
hasil tunggal:
1) Union dari 2 tabel A dan B, adalah sebuah tabel berisi
semua baris yang ada pada tabel A atau tabel B atau
keduanya.
2) Intersection dari 2 tabel A dan B, adalah sebuah tabel
berisi semua baris yang ada pada tabel A dan B.
3) Difference dari 2 tabel A and B, adalah sebuah tabel
berisi semua baris yang ada pada tabel A tetapi tidak
ada pada tabel B.
32# UNION
Menggabungkan tabel hasil query pertama dan tabel hasil query kedua
menjadi satu tabel tunggal dimana tidak ada duplikasi baris.

Contoh:
Buatlah daftar semua city yang memiliki branch office atau property.

(SELECT city
FROM Branch
WHERE city IS NOT NULL)
UNION
(SELECT city
FROM PropertyForRent
WHERE city IS NOT NULL);
33# INTERSECT
Membuat tabel hasil tunggal berisi baris yang ada tabel hasil
query pertama dan juga ada di tabel hasil query kedua.

Contoh:
Buatlah daftar semua city yang memiliki branch office dan
property.

(SELECT city
FROM Branch)
INTERSECT
(SELECT city
FROM PropertyForRent);
34# EXCEPT
Membuat tabel hasil tunggal berisi baris yang ada tabel hasil
query pertama tetapi tidak ada di tabel hasil query kedua.

Contoh:
Buatlah daftar semua city yang memiliki branch office tetapi
tidak memiliki property.

(SELECT city
FROM Branch)
EXCEPT
(SELECT city
FROM PropertyForRent);
UPDATE DATABASE
Pernyataan SQL yang digunakan untuk
memodifikasi isi tabel dalam database:
• INSERT – menambah baris data baru ke
dalam tabel;
• UPDATE – mengubah data yang ada
dalam tabel;
• DELETE – membuang baris data dari
tabel.
Menyisipkan/menambahkan data ke dalam
database (INSERT)

INSERT INTO nama tabel (daftar kolom)


VALUES (daftar nilai/isi data)
35# INSERT...VALUES
Contoh:
Sisipkan sebuah baris baru ke tabel Staff
dengan data untuk semua kolom.

INSERT INTO Staff


VALUES (‘SG16’, ‘Alan’, ‘Brown’,
‘Assistant’, ‘M’, DATE‘1957-05-25’, 8300,
‘B003’);
36# INSERT dengan default
Contoh:
Sisipkan sebuah baris baru ke dalam tabel Staff dengan data
untuk kolom: staffNo, fName, lName, position, salary, dan
branchNo.

INSERT INTO Staff (staffNo, fName, lName, position, salary,


branchNo)
VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, 8100, ‘B003’);
atau
INSERT INTO Staff
VALUES (‘SG44’, ‘Anne’, ‘Jones’, ‘Assistant’, NULL, NULL,
8100, ‘B003’);
Mengubah data dalam database (UPDATE)

UPDATE nama tabel


SET nama kolom 1 = isi data 1 …dst
WHERE kondisi
38# UPDATE semua baris
Contoh:
Berikan semua staff kenaikan salary 3%.

UPDATE Staff
SET salary = salary*1.03;
39# UPDATE baris tertentu
Contoh:
Berikan kepada semua Managers kenaikan
salary 5%.

UPDATE Staff
SET salary = salary*1.05
WHERE position = ‘Manager’;
40# UPDATE multi-kolom
Contoh:
Promosikan David Ford (staffNo=‘SG14’)
untuk menjadi Manager dan naikkan
salary menjadi £18,000.

UPDATE Staff
SET position = ‘Manager’, salary = 18000
WHERE staffNo=‘SG14’;
Menghapus data dari database (DELETE)

DELETE FROM nama tabel


WHERE kondisi
41# DELETE baris tertentu
Contoh:
Hapus semua data viewing yang berkaitan
dengan property nomor PG4.

DELETE FROM Viewing


WHERE propertyNo = ‘PG4’;
42# DELETE semua baris
Contoh:
Hapuslah semua baris dari tabel Viewing.

DELETE FROM Viewing;

Anda mungkin juga menyukai