KAMUS ISTILAH
Field = atribut
Pernyataan = query
Record = data / baris data
Relasi = tabel
1
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Tujuan Instruksional Umum (TIU) : Mahasiswa mampu memahami dan membuat perintah
SQL
2
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Tabel Parts
PartNo Description Weight MaxDim Color
px1 Drill 70.0 7.0 blue
pc6 Saw 50.0 12.0 black
mx7 Hammer 90.0 7.0 gray
bb11 Saw 60.0 17.0 brown
jw3 Drill 30.0 15.0 blue
Tabel Requisitions
ReqNo ProjNo DateNeeded WhereNeeded
3 pr1 870620 south
4 pr3 870703 north
5 pr1 870612 east
6 pr2 870702 west
Tabel ReqLines
ReqNo PartNo QtyNeeded QtyFilled
3 pc6 90 10
4 mx7 100 20
5 bb11 70 0
5 pc6 22 15
6 jw3 90 0
Maka,
CREATE DATABASE StoreHouse;
3
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Menghapus Database
Sintaks dasar :
DROP DATABASE database_name;
Maka,
CREATE TABLE Parts (
PartNo varchar(255),
Description varchar(255),
Weight real,
MaxDim real,
Color varchar(255)
);
4
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Sintaks dasar :
TRUNCATE TABLE table_name;
Menghapus Tabel
Pernyataan DROP TABLE digunakan untuk menghapus tabel yang ada di dalam database.
Sintaks dasar :
DROP TABLE table_name;
Catatan. Key MODIFY digunakan pada MySQL dan Oracle, sedangkan key ALTER digunakan
pada SQL Server dan MS Access.
Primary Key
PRIMARY KEY secara unik mengidentifikasi setiap record dalam tabel. Primary key harus
berisi nilai unik, dan tidak boleh berisi nilai NULL. Sebuah tabel hanya dapat memiliki satu
primary key. Primary key dapat dibentuk dari satu kolom atau gabungan beberapa kolom (field).
5
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Contoh :
CREATE TABLE Parts (
PartNo varchar(255),
Description varchar(255),
Weight real,
MaxDim real,
Color varchar(255),
PRIMARY KEY (PartNo)
);
Query SQL di atas, menunjukkan pendefinisian satu primary key untuk tabel Requisitions, yaitu
PK_Req dimana nilai dari primary key tersebut dibentuk dari dua kolom yaitu kolom ReqNo +
ProjNo.
Karena sebelumnya kalian telah membuat tabel Parts dan Requisitions, maka kalian perlu
memodifikasi tabel-tabel tersebut untuk menentukan primary key dari masing-masing tabel.
Maka,
ALTER TABLE Parts
ADD PRIMARY KEY (PartNo);
Foreign Key
FOREIGN KEY adalah kunci yang digunakan untuk menghubungkan dua tabel bersama-
sama. Foreign key adalah sebuah kolom (atau kumpulan beberapa kolom) dalam satu tabel yang
merujuk ke primary key di tabel lain.
Kolom PartNo dalam tabel Parts adalah Primary Key pada tabel Parts. Kolom ReqNo dalam
tabel Requisitions adalah Primary Key pada tabel Requisitions. Kolom PartNo dan kolom ReqNo
6
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
dalam tabel ReqLines adalah Foreign Key yang masing-masing merujuk ke tabel Parts dan tabel
Requisitions.
Contoh :
CREATE TABLE Requisitions (
ReqNo int,
ProjNo varchar(255),
DateNeeded int,
WhereNeeded varchar(255),
FOREIGN KEY (ReqNo) REFERENCES Requisitions(ReqNo),
FOREIGN KEY (PartNo) REFERENCES Parts(PartNo)
);
Karena sebelumnya kalian telah membuat tabel ReqLines, maka kalian perlu memodifikasi
tabel tersebut untuk menentukan foreign key dari tabel tersebut.
Maka,
ALTER TABLE ReqLines
ADD FOREIGN KEY (ReqNo) REFERENCES Requisitions(ReqNo);
Jika akan menambahkan nilai untuk semua kolom tabel, maka tidak perlu menentukan nama
kolom dalam query SQL seperti cara pertama di atas. Namun, pastikan urutan nilainya dalam
urutan yang sama dengan kolom di tabel.
Cara penulisan kedua, sintaks INSERT INTO adalah :
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
7
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Sintaks diatas digunakan jika kalian ingin memilih semua field yang tersedia di tabel untuk
ditampilkan datanya. Tanda asterik (*) menentukan semua field menjadi output.
Namun, jika kalian ingin memilih beberapa field saja dari tabel yang datanya akan ditampilkan,
maka sintaks SELECT yang digunakan sebagai berikut :
SELECT column1, column2, ...
FROM table_name;
Contoh SELECT * :
SELECT * FROM Requisitions;
8
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Klausa WHERE tidak hanya digunakan dalam pernyataan SELECT, tetapi juga digunakan dalam
pernyataan UPDATE, DELETE, dan lainnya.
Operator berikut dapat digunakan di klausa WHERE :
Operator Keterangan
= Sama dengan
> Lebih besar dari
< Lebih kecil dari
>= Lebih besar atau sama dengan
<= Lebih kecil atau sama dengan
<> Tidak sama dengan / !=
BETWEEN Antara rentang tertentu
LIKE Mencari pattern (pola) (% atau _ )
IN Untuk menentukan beberapa nilai yang mungkin untuk kolom
Contoh :
SELECT ReqNo, DateNeeded, WhereNeeded FROM Requisitions
WHERE ProjNo = ‘pr1’;
Query terakhir akan memilih baris data dimana Description dimulai dengan huruf ‘D’.
Pencocokkan string dapat dinyatakan pada awal, akhir atau sembarang tempat dalam string.
Dengan demikian, %D akan menemukan nilai berakhiran dengan ‘D’ dan %D% akan menemukan
nilai yang memasukkan ‘D’ pada sembarang tempat dalam string.
9
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Sintaks AND / OR :
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND|OR condition2 AND|OR condition3 ...;
Sintaks NOT :
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
Contoh :
SELECT PartNo
FROM Parts
WHERE Weight > 55 AND MaxDim > 10;
SELECT PartNo
FROM Parts
WHERE Description = ’Saw’ OR Description = ‘Hammer’;
10
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Sintaks ORDER BY :
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
Contoh ORDER BY :
SELECT ReqNo, PartNo, QtyNeeded FROM ReqLines
WHERE QtyNeeded > 50
ORDER BY QtyNeeded;
Query SQL di atas menampilkan seluruh data dari tabel ReqLines, data diurutkan berdasarkan
kolom PartNo dan kolom QtyNeeded. Ini artinya bahwa data akan diurutkan berdasarkan PartNo,
tapi jika beberapa baris data mempunyai PartNo yang sama, maka akan diurutkan berdasarkan
QtyNeeded.
Query SQL di atas menampilkan seluruh data dari tabel ReqLines, data diurutkan menaik
berdasarkan kolom PartNo dan diurutkan menurun berdasarkan kolom QtyNeeded.
b. Duplikasi
Pernyataan SELECT DISTINCT digunakan untuk mengembalikan hanya nilai yang
berbeda. Di dalam tabel, sebuah kolom sering kali mengandung banyak nilai duplikat dan
11
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
terkadang kalian hanya ingin me-list-kan nilai yang berbeda. Kata kunci DISTINCT menentukan
nilai atribut tidak boleh duplikasi pada output.
Sintaks SELECT DISTINCT :
SELECT DISTINCT column1, column2, ...
FROM table_name;
Contoh :
SELECT DISTINCT ProjNo
FROM Requisitions;
Dari query SQL di atas, sebuah nomor project hanya akan keluar satu kali jika terdapat lebih dari
satu permintaan untuk project tersebut. Jika terdapat lebih dua kolom dalam klausa SELECT
maka DISTINCT diberlakukan pada kombinasi nilai dari kolom-kolom.
Perhatikan klausa WHERE dalam pernyataan UPDATE. Klausa WHERE menentukan record
(baris data) mana yang harus di-update. Jika klausa WHERE dihilangkan, semua record dalam
tabel akan diperbarui.
Contoh penggunaan UPDATE :
UPDATE Requisitions
SET DateNeeded = 870720
WHERE ReqNo = 3;
UPDATE Requisitions
SET WhereNeeded = ‘west’;
UPDATE Requisitions
SET DateNeeded = 870703
WHERE ProjNo = ‘pr1’;
12
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Perhatikan klausa WHERE dalam pernyataan DELETE. Klausa WHERE menentukan record
mana yang harus dihapus. Jika klausa WHERE dihilangkan, semua record dalam tabel akan
dihapus.
Contoh penggunaan DELETE :
DELETE FROM Requisitions
WHERE ProjNo = ‘pr3’;
Perintah diatas akan menghapus semua baris yang ditentukan pada kondisi WHERE. Kalian juga
dapat menghapus semua baris data dalam tabel tanpa menghapus tabel. Artinya struktur tabel,
atribut, dan indeks akan utuh.
Contoh :
DELETE FROM Requisitions;
a. MIN() Function
Sintaks dasar :
SELECT MIN(column_name)
FROM table_name;
13
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Jika menggunakan suatu kondisi tertentu, maka gunakan klausa WHERE untuk memfilter record
dari tabel :
SELECT MIN(column_name)
FROM table_name
WHERE condition;
Contoh :
SELECT MIN(Weight)
FROM Parts;
Catatan. AS adalah akronim dari ALIASES. Aliases digunakan untuk memberi nama sementara
pada tabel atau kolom dalam tabel. Alias sering digunakan untuk membuat nama kolom lebih
mudah dibaca. Alias hanya berlaku selama proses query.
b. MAX() Function
Sintaks dasar :
SELECT MAX(column_name)
FROM table_name;
Jika menggunakan suatu kondisi tertentu, maka gunakan klausa WHERE untuk memfilter record
dari tabel :
SELECT MAX(column_name)
FROM table_name
WHERE condition;
Contoh :
SELECT MAX(Weight)
FROM Parts;
14
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
c. COUNT() Function
Sintaks dasar :
SELECT COUNT(column_name)
FROM table_name;
Jika menggunakan suatu kondisi tertentu, maka gunakan klausa WHERE untuk memfilter record
dari tabel :
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
Contoh :
SELECT COUNT(PartNo)
FROM Parts;
SELECT COUNT(*)
FROM Parts;
SELECT COUNT(PartNo)
FROM Parts
WHERE Description = ‘Drill’;
d. AVG() Function
Sintaks dasar :
SELECT AVG(column_name)
FROM table_name;
Jika menggunakan suatu kondisi tertentu, maka gunakan klausa WHERE untuk memfilter record
dari tabel :
SELECT AVG(column_name)
FROM table_name
WHERE condition;
Contoh :
SELECT AVG(MaxDim)
FROM Parts;
15
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
e. SUM() Function
Sintaks dasar :
SELECT SUM(column_name)
FROM table_name;
Jika menggunakan suatu kondisi tertentu, maka gunakan klausa WHERE untuk memfilter record
dari tabel :
SELECT SUM(column_name)
FROM table_name
WHERE condition;
Contoh :
SELECT SUM(QtyNeeded)
FROM ReqLines
WHERE PartNo = ‘pc6’;
16
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Tujuan Instruksional Umum (TIU) : Mahasiswa mampu memahami SQL dengan banyak tabel.
17
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Sebelumnya telah dibahas bagaimana data diambil dari sebuah relasi/tabel tunggal. Tetapi,
terdapat banyak kejadian ketika data harus diambil dari lebih dari satu tabel untuk menjawab
sejumlah query. Salah satu cara untuk mengambil data dari lebih dari satu tabel adalah pertama
dengan menggabungkan dua atau lebih tabel menjadi satu relasi, dan kemudian menggunakan
pernyataan/query SQL untuk mengambil data dari tabel yang digabungkan tersebut.
Penggabungan tabel disebut dengan join. Hal ini tentu saja memungkinkan untuk menciptakan
dan menyimpan tabel baru yang terbentuk dalam sistem. Akan tetapi, SQL tidak membutuhkan
tabel yang digabungkan seperti itu untuk benar-benar dibuat. Sebagai gantinya, cara kedua, ada
konstruk yang menerapkan penggabungan yang seperti demikian, dan pernyataan SQL dapat
digunakan untuk menyatakan hal ini atau penggabungan secara virtual tanpa tabel yang sebenar-
benarnya yang disimpan selama pemrosesan pernyataan SQL. Dan data diambil seolah-olah dari
tabel gabungan yang nyata ada.
2.1. Join
Join dua tabel, misalkan tabel ReqLines dan Parts, diilustrasikan pada tabel NewReqLines
berikut.
Tabel Inventory
Warehouse PartNo QtyInStore
sub1 pc6 100
sub1 mx7 200
sub2 jw3 120
sub2 bb11 83
sub2 pc6 19
center1 mx7 205
center1 jw3 111
Tabel ReqLines
ReqNo PartNo QtyNeeded QtyFilled
3 pc6 90 10
3 jw3 30 0
4 pc6 50 0
4 mx7 100 20
5 jw3 40 10
5 bb11 70 0
5 pc6 12 15
6 jw3 90 0
18
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Tabel Parts
PartNo Description Weight MaxDim Color
px1 Drill 70.0 7.0 blue
pc6 Saw 50.0 12.0 black
mx7 Hammer 90.0 7.0 gray
bb11 Saw 60.0 17.0 brown
jw3 Drill 30.0 15.0 blue
Tabel NewReqLines
ReqNo PartNo QtyNeeded QtyFilled Weight Description MaxDim Color
3 pc6 90 10 50.0 Saw 12.0 black
3 jw3 30 0 30.0 Drill 15.0 blue
4 pc6 50 0 50.0 Saw 12.0 black
4 mx7 100 20 90.0 Hammer 7.0 gray
5 jw3 40 10 30.0 Drill 15.0 blue
5 bb11 70 0 60.0 Saw 17.0 brown
5 pc6 12 15 50.0 Saw 12.0 black
6 jw3 90 0 30.0 Drill 15.0 blue
Perhatikan tabel NewReqLines, proses join dua tabel mempunyai sebuah kondisi join. Kondisi
tersebut merincikan kriteria yang digunakan untuk menggabungkan (join) dua baris dari masing-
masing kedua tabel. Pada tabel tersebut, kondisi join adalah nilai PartNo dalam baris yang
digabungkan harus sama. Lalu, informasi dapat diambil dari tabel yang digabungkan dengan
menggunakan pernyataan SELECT.
Penggabungan (join) dinyatakan dalam pernyataan SQL dengan memasukkan semua tabel
untuk digabungkan dalam klausa FROM dan membuat suatu kondisi join dalam klausa WHERE.
Contoh pernyataan SELECT yang menjelaskan tentang join adalah :
SELECT ReqLines.ReqNo, ReqLines.PartNo, Parts.Weight
FROM ReqLines, Parts
WHERE ReqLines.PartNo = Parts.PartNo;
Outputnya adalah :
ReqNo PartNo Weight
3 pc6 50.0
3 jw3 30.0
4 pc6 50.0
4 mx7 90.0
5 jw3 30.0
5 bb11 60.0
19
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
5 pc6 50.0
6 jw3 30.0
Untuk memperoleh join tabel seperti tabel NewReqLines, dapat menuliskan query SQL seperti
berikut :
SELECT *
FROM ReqLines, Parts
WHERE ReqLines.PartNo = Parts.PartNo;
Atau
SELECT ReqLines.*, Parts.*
FROM ReqLines, Parts
WHERE ReqLines.PartNo = Parts.PartNo;
Join tidak hanya dilakukan kepada dua tabel saja, tetapi juga dapat dilakukan kepada lebih dari
dua tabel. Contoh query SQL untuk join yang melibatkan tiga tabel dalam menemukan seluruh
project yang mengorder Saw :
SELECT ProjNo, ReqLines.PartNo
FROM Requisitions, ReqLines, Parts
WHERE Requisitions.ReqNo = ReqLines.ReqNo AND ReqLines.PartNo = Parts.PartNo
AND Parts.Description = ‘Saw’;
Sejauh ini telah diasumsikan bahwa semua contoh join dibuat untuk menemukan baris
yang mempunyai nilai sama dari beberapa atribut. Join juga dapat dibuat untuk menggabungkan
baris yang mempunyai atribut yang memenuhi kondisi selain sama. Contoh join :
SELECT ReqNo, Warehouse, Inventory.PartNo, QtyNeeded - QtyFilled, QtyInStore
FROM ReqLines, Inventory
WHERE ReqLines.PartNo = Inventory.PartNo
AND QtyNeeded – QtyFilled < Inventory.QtyInStore;
20
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
SELECT ReqNo
FROM ReqLines
WHERE PartNo IN
(SELECT PartNo
FROM Parts subquery
WHERE Description = ‘Saw’);
Subquery tersebut akan mengevaluasi pernyataan SQL yang bagian dalam terlebih dahulu.
Pernyataan SQL bagian dalam untuk menemukan PartNo dari tabel Parts dimana Description
adalah ‘Saw’. Diperoleh PartNo-nya adalah {‘pc6’, ‘bb11’}. Nilai-nilai ini sekarang menggantikan
untuk pernyataan SQL bagian dalam tersebut dan kemudian pernyataan SQL di bagian luar
dievaluasi. Pernyataan SQL bagian luar sekarang menjadi :
SELECT ReqNo
FROM ReqLines
WHERE PartNo IN (‘pc6’, ‘bb11’);
Informasi yang diambil dengan menggunakan subquery seperti tersebut dapat juga diperoleh
dengan menggunakan join. Dengan demikian informasi terkait ReqNo dari seluruh permintaan
dapat juga ditemukan dengan menggunakan pernyataan join berikut :
SELECT ReqLines.ReqNo
FROM ReqLines, Parts
WHERE ReqLines.PartNo = Parts.PartNo AND Parts.Description = ‘Saw’;
Terdapat satu perbedaan antara subquery dan join. Pada subquery, tidak mungkin untuk
menyertakan atribut dari tabel bersarang (dalam contoh tersebut adalah atribut dari tabel Parts,
yaitu PartNo) ke bagian output (pada klausa SELECT tabel ReqLines).
Contoh subquery lainnya :
SELECT PartNo
FROM Parts
WHERE Weight >
(SELECT Weight
FROM Parts
WHERE PartNo = ‘pc6’);
Level Subquery
Adalah hal yang mungkin untuk memiliki subquery yang bersarang pada level manapun.
Juga memungkinkan untuk memiliki lebih dari satu subquery pada level yang sama.
Contoh :
21
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
SELECT ReqNo
FROM ReqLines
WHERE PartNo IN
(SELECT PartNo
FROM Parts
WHERE Description = ‘Drill’)
AND ReqNo IN
(SELECT ReqNo
FROM Requisitions
WHERE ProjNo = ‘pr1’);
Perhatikan pernyataan SQL diatas, terdapat dua subquery pada level yang sama. Keduanya
dievaluasi sebelum query bagian luar dievaluasi. Sehingga query luar (outer) menjadi :
SELECT ReqNo
FROM ReqLines
WHERE PartNo IN (‘px1’, ‘jw3’) AND ReqNo IN (3, 5);
Subquery Berkorelasi
Terdapat kasus dimana kondisi WHERE dalam subquery harus merujuk ke sebuah kolom
pada query level atas. Perumusan yang demikian disebut dengan subquery berkorelasi.
Contoh :
SELECT ReqNo, PartNo
FROM ReqLines
WHERE PartNo IN
(SELECT PartNo
FROM Inventory
WHERE QtyInStore > ReqLines.QtyNeeded - ReqLines.QtyFilled);
22
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
Namun demikian, harus dicatat bahwa ada satu batasan subquery berkorelasi, yaitu masih tidak
memungkinkan untuk mencetak nilai kolom dari kolom dalam subquery. Dengan demikian,
atribut Warehouse tidak dapat ditampilkan karena bukan atribut dari tabel klausa SELECT di
bagian luar (query).
Tidak adanya baris data ditentukan dengan menggunakan NOT EXISTS. Contohnya :
SELECT ReqNo
FROM Requisitions
WHERE NOT EXISTS
(SELECT *
FROM ReqLines
WHERE PartNo = ‘jw3’ AND Requisitions.ReqNo = ReqLines.ReqNo);
23
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi
DAFTAR PUSTAKA
24