Anda di halaman 1dari 33

Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

KAMUS ISTILAH

Field = atribut
Pernyataan = query
Record = data / baris data
Relasi = tabel

1
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

BAB 1. PERNYATAAN SQL

 Tujuan Instruksional Umum (TIU) : Mahasiswa mampu memahami dan membuat perintah
SQL

 Tujuan Instruksional Khusus :


Mahasiswa mampu :
1. Memahami konsep SQL
2. Membuat pernyataan SQL untuk menambah data, mencari, update dan hapus data
3. Menggunakan fungsi SQL

 Pokok Bahasan : Pernyataan SQL

 Sub Pokok Bahasan :


1. Pendahuluan
2. Pernyataan SQL
3. Kondisi pemilihan
4. Beberapa kondisi pemilihan tambahan
5. Fungsi dalam pernyataan SQL
6. Pernyataan saving dalam SQL
7. Updating database

2
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

1.1. SQL Database


Untuk mengilustrasikan perintah-perintah SQL dalam praktikum ini, akan dibangun
sebuah database StoreHouse yang salah satu kegiatannya adalah menyimpan data permintaan
barang oleh suatu lokasi cabang kantor dan rincian dari setiap barang tersebut. Data-data
tersebut akan disimpan dalam tabel Parts, tabel Requisitions, dan tabel ReqLines.

Tabel Warehouses
Warehouse Location Manager
sub1 south J. Black
sub2 west C. Clarence
center1 north J. Tran
center2 south B. Costello

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 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

3
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

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 22 15
6 jw3 90 0

Membuat Database Baru


Sintaks dasar :
CREATE DATABASE database_name;

Maka,
CREATE DATABASE StoreHouse;

Menghapus Database
Sintaks dasar :
DROP DATABASE database_name;

Membuat Tabel Baru


Sintaks dasar :
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,

);

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

CREATE TABLE Requisitions (


ReqNo int,
ProjNo varchar(255),
DateNeeded int,
WhereNeeded varchar(255)
);

CREATE TABLE ReqLines (


ReqNo int,
PartNo varchar(255),
QtyNeeded int,
QtyFilled int
);

Menghapus Data dalam Tabel


Pernyataan TRUNCATE TABLE digunakan untuk menghapus data yang ada di dalam tabel,
tetapi tidak menghapus tabel itu sendiri.
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;

Menambah, Mengubah, dan Menghapus Kolom


Penyataan ALTER TABLE digunakan untuk menambah, mengubah, dan menghapus kolom
dalam tabel yang sudah ada. Pernyataan ALTER TABLE juga digunakan untuk menambah dan
menghapus berbagai constraints (primary key, foreign key, index, unique, dan lainnya) pada
tabel yang sudah ada.
Sintaks ALTER TABLE – menambahkan kolom :
ALTER TABLE table_name
ADD column_name datatype;

Sintaks ALTER TABLE – menghapus kolom :


ALTER TABLE table_name
DROP COLUMN column_name;

5
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Sintaks ALTER TABLE – mengubah/memodifikasi kolom :


ALTER TABLE table_name
MODIFY|ALTER COLUMN column_name datatype;

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).
Contoh :
CREATE TABLE Parts (
PartNo varchar(255),
Description varchar(255),
Weight real,
MaxDim real,
Color varchar(255),
PRIMARY KEY (PartNo)
);

Contoh primary key yang terbentuk dari beberapa kolom tabel :


CREATE TABLE Requisitions (
ReqNo int,
ProjNo varchar(255),
DateNeeded int,
WhereNeeded varchar(255),
CONSTRAINT PK_Req PRIMARY KEY (ReqNo, ProjNo)
);

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,

6
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

ALTER TABLE Parts


ADD PRIMARY KEY (PartNo);

ALTER TABLE Requisitions


ADD PRIMARY KEY (ReqNo);

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
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);

ALTER TABLE ReqLines


ADD FOREIGN KEY (PartNo) REFERENCES Parts(PartNo);

1.2. Menambahkan (Memasukkan) Data Baru Ke Dalam Tabel


Pernyataan INSERT INTO digunakan untuk menambahkan atau memasukkan record
(baris data) baru ke dalam tabel. Ada dua cara penulisan sintaks (query) INSERT INTO.
Cara pertama, menentukan nama kolom dan nilai yang akan disisipkan :

7
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

INSERT INTO table_name (column1, column2, column3, ...)


VALUES (value1, value2, value3, ...);

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, ...);

Contoh penggunaan INSERT INTO :


INSERT INTO Requisitions (ReqNo, ProjNo, DateNeeded, WhereNeeded)
VALUES (3, ‘pr1’, 870620, ‘south’);

INSERT INTO Requisitions


VALUES (4, ‘pr3’, 870703, ‘north’);

INSERT INTO Requisitions (ReqNo, ProjNo, WhereNeeded)


VALUES (7, ‘pr3’, ‘east’);

1.3. Menampilkan Data Yang Terdapat Di Dalam Tabel


Pernyataan SELECT digunakan untuk memilih data dari database dan kemudian
menampilkannya. Data yang dikembalikan (hasil dari query SQL SELECT) disimpan dalam tabel
hasil (temporary), yang disebut kumpulan hasil.
Sintaks SELECT :
SELECT * FROM table_name;

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

Contoh SELECT column :


SELECT ReqNo, ProjNo, DateNeeded
FROM Requisitions;

1.4. Kondisi Pemilihan


Klausa WHERE digunakan untuk memfilter atau memilih record yang ingin diambil atau
ditampilkan. Klausa WHERE digunakan untuk mengekstrak record yang hanya memenuhi
kondisi tertentu.
Sintaks WHERE :
SELECT column1, column2, ...
FROM table_name
WHERE condition;

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’;

SELECT * FROM Parts


WHERE Weight <> 70.0;

SELECT PartNo, Weight, MaxDim, Color


FROM Parts
WHERE MaxDim BETWEEN 12.0 AND 17.0;

9
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

SELECT * FROM Parts


WHERE Description LIKE ‘D%’;

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.

SELECT * FROM Parts


WHERE Description IN (‘Hammer’, ‘Saw’);

SELECT * FROM Parts


WHERE Description NOT IN (‘Hammer’);

1.5. Kondisi AND dan OR


Operator AND dan OR digunakan untuk memfilter atau memilih record berdasarkan lebih
dari satu kondisi.
 Operator AND menampilkan record jika semua kondisi yang dipisahkan oleh AND adalah
TRUE.
 Operator OR menampilkan record jika salah satu kondisi yang dipisahkan oleh OR adalah
TRUE.
 Operator NOT menampilkan record jika kondisi NOT TRUE.

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;

10
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

SELECT PartNo
FROM Parts
WHERE Description = ’Saw’ OR Description = ‘Hammer’;

1.6. Pengurutan dan Duplikasi


a. Pengurutan (Sorting)
SQL memiliki metode untuk mengontrol urutan output dan mengeliminasi duplikat dari
output. ORDER BY digunakan untuk mengurutkan hasil dalam urutan naik atau turun. Secara
default, ORDER BY mengurutkan record dalam urutan menaik. Untuk mengurutkan record
dalam urutan menurun, gunakan kata kunci DESC.
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;

SELECT ReqNo, PartNo, QtyNeeded FROM ReqLines


WHERE QtyNeeded > 50
ORDER BY QtyNeeded ASC;

SELECT ReqNo, PartNo, QtyNeeded FROM ReqLines


WHERE QtyNeeded > 50
ORDER BY QtyNeeded DESC;

ORDER BY Dengan Beberapa Kolom


Contoh :
SELECT * FROM ReqLines
ORDER BY PartNo, 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.

11
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

SELECT * FROM ReqLines


ORDER BY PartNo ASC, QtyNeeded DESC;

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
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.

1.7. Memperbarui Data Dalam Tabel


Pernyataan UPDATE digunakan untuk mengubah data atau record yang ada di dalam suatu
tabel. Sintaks UPDATE :
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

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.

12
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Contoh penggunaan UPDATE :


UPDATE Requisitions
SET DateNeeded = 870720
WHERE ReqNo = 3;

UPDATE Requisitions
SET WhereNeeded = ‘west’;

UPDATE Requisitions
SET DateNeeded = 870703
WHERE ProjNo = ‘pr1’;

1.8. Menghapus Data Dalam Tabel


Pernyataan DELETE digunakan untuk menghapus data atau record yang ada di dalam
suatu tabel. Sintaks DELETE :
DELETE FROM table_name
WHERE condition;

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;

1.9. Aggregate Function (Fungsi Aggregate)


Fungsi Aggregate adalah fungsi yang menerima koleksi nilai dan mengembalikan nilai
tunggal sebagai hasilnya, seperti jumlah data, nilai minimum, nilai maksimum dan nilai rata-rata.
Fungsi aggregate dapat digunakan untuk mencari jumlah data, nilai minimum, nilai maksimum,
nilai rata-rata dalam field yang terdapat pada tabel.

13
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Beberapa fungsi aggregate :


Fungsi Aggregate Keterangan
Min() Mencari nilai terkecil dari suatu kolom
Max() Mencari nilai terbesar dari suatu kolom
Count() Menghitung jumlah baris data (record)
Avg() Mencari nilai rata-rata dari suatu kolom numerik
Sum() Menghitung jumlah total dari suatu kolom numerik

a. MIN() Function
Sintaks dasar :
SELECT MIN(column_name)
FROM table_name;

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;

SELECT MIN(Weight) AS SmallestWeight


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 :

14
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

SELECT MAX(column_name)
FROM table_name
WHERE condition;

Contoh :
SELECT MAX(Weight)
FROM Parts;

SELECT MAX(Weight) AS LargestWeight


FROM Parts;

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;

15
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 AVG(column_name)
FROM table_name
WHERE condition;

Contoh :
SELECT AVG(MaxDim)
FROM Parts;

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

BAB 2. PERNYATAAN SQL: QUERY BANYAK TABEL

 Tujuan Instruksional Umum (TIU) : Mahasiswa mampu memahami SQL dengan banyak tabel.

 Tujuan Instruksional Khusus :


Mahasiswa mampu :
1. Memahami konsep pencarian bertingkat
2. Menggunakan perintah SQL untuk mengambil informasi dari banyak tabel
3. Menggunakan fungsi untuk banyak tabel

 Pokok Bahasan : Pernyataan SQL: query banyak tabel

 Sub Pokok Bahasan :


1. Pendahuluan
2. Join
3. Subquery
4. Fungsi dalam pernyataan join
5. Fungsi dalam kondisi

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 22 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 22 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;

2.2. Subquery : Sebuah Alternatif Untuk Join


SQL juga menyertakan sebuah alternative untuk menggabungkan tabel guna mengambil
data dari lebih dari satu tabel, yaitu dengan menggunakan subquery. Pernyataan SELECT dalam
sebuah subquery adalah bersarang (nested) untuk sejumlah level. Setiap level merincikan
terkait pengambilan data dari satu tabel. Pernyataan SQL berikut mengilustrasikan sebuah
subquery dua level :

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.

21
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Contoh :
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);

2.3. Mencampurkan (Mixing) Join dan Subquery


Disamping penggunaan subquery sebagai alternative untuk join, juga memungkinkan
untuk mencampurkan (mixing) join dan subquery dalam pernyataan SQL yang sama.
Contoh :
SELECT ProjNo
FROM Requisitions, ReqLines
WHERE Requisitions.ReqNo = ReqLines.ReqNo
AND ReqLines.PartNo IN
(SELECT PartNo
FROM Parts
WHERE Description = ‘Saw’);

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 (outer query).

EXISTS dan NOT EXISTS


Pernyataan SQL juga memungkinkan digunakan untuk perbandingan yang menguji
keberadaan baris yang memenuhi kondisi tertentu. Pernyataan EXISTS digunakan untuk
melakukan hal ini. EXISTS adalah alternative lain yang dapat digunakan dalam subquery SQL.
EXISTS berbeda dengan ANY atau IN karena EXISTS tidak mengecek nilai individu tapi
mengecek keberadaan baris data yang memenuhi kondisi tertentu.
Contoh :
SELECT ReqNo
FROM Requisitions
WHERE EXISTS
(SELECT *
FROM ReqLines
WHERE PartNo IN
(SELECT PartNo
FROM Parts
WHERE Description = ‘Saw’));

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);

Output dari pernyataan SQL tersebut adalah :


ReqNo
4

23
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

2.4. Fungsi Dalam Pernyataan Join


Tidak hanya untuk tabel tunggal, fungsi juga dapat diaplikasikan pada baris yang dihasilkan
dari penggabungan (join) dua tabel atau lebih. Pernyataan fungsi tersebut dapat menggunakan
konsep GROUP atau HAVING.
Sintaks dasar GROUP BY :
SELECT column_name
FROM table_name
WHERE condition
GROUP BY column_name
ORDER BY column_name;

Sintaks dasar HAVING :


SELECT column_name
FROM table_name
WHERE condition
GROUP BY column_name
HAVING condition
ORDER BY column_name;

Contoh :
SELECT Inventory.PartNo, SUM(QtyInStore)
FROM Inventory, Parts
WHERE Inventory.PartNo = Parts.PartNo AND Parts.Description = ‘Saw’
GROUP BY Inventory.PartNo;

Query SQL diatas, pertama kali menggabungkan dua tabel dan mengambil seluruh baris data
dengan Description ‘Saw’. Kemudian mengelompokkan baris data berdasarkan PartNo, sehingga
memberikan sebuah list total dari setiap part dimana haruslah sebuah ‘Saw’. Praktekkan query
SQL diatas terhadap Database yang telah Anda buat agar terlihat outputnya. Amati output dengan
cermat dan analisa query SQL tersebut, apakah sesuai antara query SQL dan outputnya?
Juga dapat untuk menggunakan kombinasi atribut untuk mengelompokkan baris data.
Contoh :
SELECT Requisitions.ProjNo, ReqLines.PartNo, SUM(QtyNeeded)
FROM Requisitions, ReqLines
WHERE Requisitions.ReqNo = ReqLines.ReqNo
GROUP BY Requisitions.ProjNo, ReqLines.PartNo;

24
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Perhatikan query SQL diatas. Praktekkan query SQL tersebut terhadap Database yang telah Anda
buat agar terlihat outputnya. Amati output dengan cermat dan analisa query SQL tersebut,
apakah sesuai antara query SQL dan outputnya?

2.5. Fungsi Dalam Kondisi


Tidak hanya dalam pernyataan join, fungsi juga dapat digunakan dalam kondisi join atau
subquery. Fungsi yang digeneralisasikan dari satu tabel digunakan untuk membandingkan nilai
dalam tabel lain.

Subquery Dalam Perbandingan


Dalam case ini, subquery digunakan untuk menghitung yang dilakukan oleh sebuah fungsi
yang kemudian digunakan pada kondisi di query luar (outer).
Contoh :
SELECT Warehouse
FROM Inventory
query luar (outer query)
WHERE PartNo = ‘pc6’
AND QtyInStore > query
(SELECT SUM(QtyNeeded – QtyFilled)
FROM ReqLines subquery
WHERE PartNo = ‘pc6’);

Perhatikan. Query SQL tersebut mencari warehouse yang dapat men-supply seluruh keperluan
untuk part ‘pc6’. Subquery disini menghitung jumlah part yang masih dibutuhkan, dan totalnya
adalah 137 pcs. Output dari query SQL tersebut adalah list kosong karena tidak ada warehouse
yang memiliki 137 pcs untuk part ‘pc6’. Praktekkan query SQL diatas terhadap Database yang
telah Anda buat agar terlihat outputnya. Amati output dengan cermat dan analisa query SQL
tersebut, apakah sesuai antara query SQL dan outputnya?

Perbandingan Dengan Fungsi Dalam Subquery Berkorelasi


Dalam case ini, contoh pernyataan SQL cukup mirip dengan contoh pernyataan SQL yang
ada di sub sebelumnya (Subquery Dalam Perbandingan), hanya saja dalam case ini subquery
merujuk pada kolom/atribut di query luar (outer query), sebagaimana konsep subquery
berkorelasi yang telah dibahas pada subbab 2.3.

25
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Contoh :
SELECT PartNo, Warehouse
FROM Inventory
WHERE QtyInStore >
(SELECT SUM(QtyNeeded – QtyFilled)
FROM ReqLines
WHERE ReqLines.PartNo = Inventory.PartNo);

Perhatikan. Query SQL tersebut mencari part dan warehouse yang dapat men-supply seluruh
keperluan untuk part-part yang ada. Part tersebut dapat di-supply oleh satu warehouse.
Praktekkan query SQL diatas terhadap Database yang telah Anda buat agar terlihat outputnya.
Amati output dengan cermat dan analisa query SQL tersebut, apakah sesuai antara query SQL
dan outputnya?

Menemukan Baris Data Yang Memenuhi Maximum Atau Minimum


Menggunakan fungsi dalam subquery untuk menemukan baris data dalam tabel dengan
nilai kolom maksimum. Contoh :
SELECT Warehouse, QtyInStore
FROM Inventory
WHERE PartNo = ‘pc6’
AND QtyInStore =
(SELECT MAX(QtyInStore)
FROM Inventory
WHERE PartNo = ‘pc6’);

Pernyataan SQL tersebut mencari warehouse dengan jumlah part ‘pc6’ terbesar. Output-nya
adalah warehouse ‘sub1’. Praktekkan query SQL diatas terhadap Database yang telah Anda buat
agar terlihat outputnya. Amati output dengan cermat dan analisa query SQL tersebut, apakah
sesuai antara query SQL dan outputnya? Lalu, praktekkan pula query SQL dibawah ini. Apakah
menghasilkan output atau syntax error?
Contoh :
SELECT Warehouse, MAX(QtyInStore)
FROM Inventory
WHERE PartNo = ‘pc6’;

Fungsi juga dapat muncul di salah satu dari sejumlah subquery dalam pernyataan SQL. Contoh,
pernyataan SQL berikut mencari request paling awal yang dibuat atas part ‘pc6’ :

26
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

SELECT ReqNo
FROM Requisitions query luar (outer query)
WHERE ReqNo IN
(SELECT ReqNo
FROM ReqLines subquery
WHERE PartNo = ‘pc6’)
AND DateNeeded = query
(SELECT MIN(DateNeeded)
FROM Requisitions subquery
WHERE ReqNo IN
(SELECT ReqNo
FROM ReqLines subquery
WHERE PartNo = ‘pc6’));

Praktekkan query SQL diatas terhadap Database yang telah Anda buat agar terlihat outputnya.
Amati output dengan cermat dan analisa query SQL tersebut, apakah sesuai antara query SQL
dan outputnya?

Penggunaan Fungsi Dalam Klausa WHERE Untuk Menguji Grup Atau Baris Data
Menggabungkan fungsi subquery dengan pengelompokan di tingkat luar (outer).
Membandingkan nilai-nilai yang ditemukan melalui pengelompokkan baris data dalam query
luar (outer) dengan fungsi-fungsi melakukan perhitungan dalam subquery.
Contoh :
SELECT PartNo
FROM Inventory
GROUP BY PartNo
HAVING SUM(QtyInStore)
< (SELECT SUM(QtyNeeded – QtyFilled)
FROM ReqLines
WHERE Inventory.PartNo = ReqLines.PartNo);

Query SQL tersebut mencari part yang total jumlahnya dalam inventori dibawah dari jumlah yang
dibutuhkan dalam seluruh permintaan. Output dari query SQL tersebut adalah part ‘pc6’, karena
total jumlah part ‘pc6’ yang dibutuhkan adalah 137 sedangkan total jumlah part ‘pc6’ dalam
seluruh warehouse hanya 119. Praktekkan query SQL diatas terhadap Database yang telah Anda
buat agar terlihat outputnya. Amati output dengan cermat dan analisa query SQL tersebut,
apakah sesuai antara query SQL dan outputnya?

27
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

BAB 3. LINGKUNGAN RELASIONAL

 Tujuan Instruksional Umum (TIU) : Mahasiswa mampu memahami lingkungan relasi.

 Tujuan Instruksional Khusus :


Mahasiswa mampu :
1. Memahami konsep view
2. Menggunakan pernyataan SQL untuk view data

 Pokok Bahasan : Environment relasi

 Sub Pokok Bahasan :


1. Pendahuluan
2. Data sharing
3. View update
4. Mengambil data katalog

28
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

3.1. Pendahuluan
Bahasa SQL yang telah dijelaskan dalam bab sebelumnya sudah cukup untuk aplikasi
single-user yang mengizinkan single-user untuk mengisi data ke dalam database, dan mengambil
data tersebut sesuai kebutuhan. Lingkungan multi-user membutuhkan lebih banyak fasilitas.
Mereka memerlukan pendukung untuk berbagi data antar user dan ketika user mengubah
struktur database tanpa mempengaruhi user lainnya. Mereka juga harus mengizinkan user untuk
memeriksa struktur data dengan mengakses katalog sistem (system catalog).

3.2. Data Sharing


Berbagi data memiliki dua tujuan. Tujuan pertama yaitu berbagi data. Prinsip ini
menyatakan bahwa pengguna database bersama (shared database) hanya boleh mengakses
bagian database yang mereka perlukan untuk tugas khusus mereka. Mereka tidak boleh
mengakses bagian database yang bukan kepentingan mereka. Database yang besar mungkin
berisi hampir semua data dalam suatu organisasi. Mungkin berisi catatan kepegawaian, pesanan
ke pemasok (supplier), anggaran proyek (budgeting), dan sebagainya. Dalam lingkungan seperti
itu, orang yang bertanggung jawab, misalnya, menyiapkan pesanan, tidak perlu mengakses ke
catatan kepegawaian. Demikian pula, orang-orang yang berurusan dengan catatan kepegawaian
tidak memerlukan akses ke data pemesanan (ordering data). Tujuan kedua adalah agar pengguna
dapat melihat data mereka dalam bentuk yang paling nyaman bagi mereka dan bukan dalam
bentuk yang dibuat-buat oleh pengguna lain. Contoh paling jelas mengenai data yang tersebar di
sejumlah tabel. Jauh lebih nyaman untuk melihat semua data ini hanya sebagai satu tabel.
Pengambilan data lebih mudah karena pengguna tidak perlu menyibukkan diri dengan join.
SQL mendukung data sharing melalui view. Database terdiri dari sejumlah tabel yang
disimpan, dimana tabel-tabel ini didefinisikan dalam proses perancangan dan dibuat
menggunakan perintah SQL, yaitu CREATE. Database juga menyajikan sejumlah view. View
tersebut juga muncul sebagai tabel ke pengguna tapi mereka bukan tabel yang tersimpan. View
adalah tabel yang tidak disimpan tapi tabel yang diturunkan (berasal) dari tabel yang tersimpan
di database. Pengguna dapat mengakses data dalam database yang tersimpan melalui view.
Pengguna menggunakan bahasa SQL yang sama untuk mengakses view seperti bahasa yang
digunakan untuk mengakses tabel yang tersimpan di database.
View dapat digunakan untuk mengontrol akses data. Jika pengguna diberikan akses untuk
view, maka pengguna hanya dapat melihat informasi yang tersedia melalui view tersebut. View
juga dapat digunakan untuk mengontrol akses ke database. Database administrator dapat

29
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

membuat view yang hanya berisi data yang dibutuhkan pengguna untuk mengerjakan tugas
mereka.

View Tables

Translation of stored
tables to view tables

Stored Tables

Gambar 3-1. Ilustrasi view

a. Pendefinisian View
View didefinisikan menggunakan pernyataan SQL. Pernyataan pendefinisian view terdiri
dari dua bagian berikut.
CREATE VIEW <view-name> (<column-name> ... <column-name>)
AS <SQL statement>

Bagian pertama adalah klausa CREATE VIEW, dimana mendefinisikan nama tabel view beserta
atribut-atributnya. Bagian kedua adalah klausa AS, mendefinisikan bagaimana view diturunkan
dari tabel yang tersimpan. Bagian kedua ini adalah pernyataan SELECT. View didefinisikan
sebagai bagian (subset) dari tabel (relasi).

View Sebagai Bagian (Subset) Dari Tabel (Relasi)


Contoh sebuah view yang mengizinkan akses ke semua daftar permintaan yang dibuat oleh
project ‘pr1’ :
CREATE VIEW PROJ1REQUESTS (Request, DataWanted, WhereWanted)
AS SELECT ReqNo, DateNeeded, WhereNeeded
FROM Requisitions
WHERE ProjNo = ‘pr1’;

Silahkan dipraktekkan query SQL diatas untuk melihat view tabel PROJ1REQUESTS yang
dihasilkan. Tabel view tersebut hanya berisi tiga kolom yaitu, ReqNo, DateNeeded, dan
WhereNeeded dimana penamaan kolomnya diubah menjadi Request, DateWanted, dan

30
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

WhereWanted dalam view. Pengguna yang mendapatkan akses ke view tersebut hanya dapat
memperoleh informasi terkait daftar permintaan yang dibuat oleh project ‘pr1’, tidak project
lainnya. Informasi dari view tersebut dapat diambil dengan cara :
SELECT * FROM PROJ1REQUESTS

View Dari Join Tabel


View dapat mencakup informasi dari lebih dari satu tabel (relasi). Contoh, misalkan Anda
butuh sebuah view untuk mengambil informasi terkait daftar permintaan yang belum
terisi/terpenuhi terhadap project tertentu. View tersebut dapat didefinisikan sebagai berikut.
CREATE VIEW UNFILLEDPARTS (Request, Project, Part, QtyToBeFilled)
AS SELECT Requisitions.ReqNo, Requisitions.ProjNo, PartNo, QtyNeeded -
QtyFilled
FROM Requisitions, ReqLines
WHERE Requisitions.ReqNo = ReqLines.ReqNo AND QtyNeeded > QtyFilled;

Silahkan dipraktekkan query SQL diatas untuk melihat view tabel UNFILLEDPARTS yang
dihasilkan. Tabel UNFILLEDPARTS tersebut dapat digunakan pengguna untuk memperoleh
detail informasi terkait part untuk satu project tertentu melalui pernyataan SELECT seperti
berikut.
SELECT Request, Part, QtyToBeFilled
FROM UNFILLEDPARTS
WHERE Project = ‘pr1’;

Query SQL diatas akan menampilkan semua part yang belum terisi/terpenuhi untuk project ‘pr1’.
Silahkan dipraktekkan query SQL tersebut untuk melihat output yang diperoleh.
View UNFILLEDPARTS terdiri dari dua tabel yang di-join. View juga mungkin untuk di-
create atas join dari banyak tabel. Contoh, sebuah view untuk mengambil informasi terkait
warehouse yang mempunyai jumlah yang cukup untuk mengisi daftar permintaan oleh project
didefinisikan sebagai berikut.
CREATE VIEW PARTLOCATION (Request, Part, QtyToBeFilled, WhereAvailable,
QtyAvailable, Project)
AS SELECT Requisitions.ReqNo, ReqLines.PartNo, QtyNeeded – QtyFilled,
Inventory.Warehouse, Inventory.QtyInStore, Requisitions.ProjNo
FROM Requisitions, ReqLines, Inventory
WHERE Requisitions.ReqNo = ReqLines.ReqNo AND QtyNeeded > QtyFilled AND
Inventory.PartNo = ReqLines.PartNo AND Inventory.QtyInStore > QtyNeeded
- QtyFilled;

31
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

Silahkan dipraktekkan query SQL diatas untuk melihat view tabel PARTLOCATION yang
dihasilkan. Tabel PARTLOCATION tersebut dapat digunakan pengguna untuk memperoleh
detail informasi misalkan terkait lokasi part untuk project tertentu. Contoh :
SELECT Request, Part, WhereAvailable
FROM PARTLOCATION
WHERE Project = ‘pr1’;

View Di-create Dari Function


View dapat juga berisi fungsi. Contoh, sebuah view yang menampilkan jumlah total part dalam
seluruh warehouse :
SELECT HOLDINGS (Part, Quantity)
AS SELECT PartNo, SUM(QtyInStore)
FROM Inventory
GROUP BY PartNo;

Silahkan dipraktekkan query SQL diatas untuk melihat output.

b. Manfaat Penggunaan View


View dapat menyederhanakan akses ke database relasional. Pengguna disajikan sebuah
tabel view tunggal yang berisi semua data yang penting bagi pengguna. Oleh sebab itu, pernyataan
SQL yang digunakan untuk mengakses data melalui view akan lebih sederhana daripada
pernyataan SQL yang setara yang diperlukan untuk mengakses data yang sama secara langsung
dari tabel yang disimpan dalam database. Pengguna tidak perlu konsep-konsep seperti join dalam
merumuskan query mereka untuk dapat mengakses data. Keuntungan lain dari view adalah
bahwa view membatasi akses hanya ke sebagian dari database. Dengan demikian, setiap
pengguna hanya diberikan kemampuan untuk mengakses data yang mereka butuhkan, dan tidak
ada data tambahan.
View juga memiliki satu kelemahan dalam hal pembaruan (updating). Banyak view tidak
dapat diperbarui. Pembaruan tersebut tidak didukung oleh sebagian besar sistem DBMS.

32
Modul Praktikum Basis Data II | Rizqa Raaiqa Bintana – Universitas Jambi

DAFTAR PUSTAKA

Hawryszkiewycz, I. T. 1990. Relational database design: an introduction. Prentice-Hall, Inc.


https://www.w3schools.com/ [diakses, 01 September 2020]

33

Anda mungkin juga menyukai