Upload
udienz
View
223
Download
0
Embed Size (px)
Citation preview
8/18/2019 Modul 4 Basdat 2015
1/13
MODUL V
DML (DATA MANIPULATION LANGUAGE)
Dasar Teori
Perintah SELECT adalah perintah untuk menampilkan data yang ada didalam suatu tabel, yang mana dalam pengembangannya perintah ini akan menjadi
sebuah perintah yang sangat penting dan berpengaruh hingga saat pemrograman di
stored procedures dan triggers. Selain perintah-perintah SELECT yang dibahas
dalam modul V dan V, masih ada banyak perintah-perintah SELECT lain yang
lebih luas lagi dalam penggunaan perintah SELECT.
Praktikum
Coba semua contoh operasi !"L di ba#ah ini $
1. JOIN dan UN!ITerkadang kita harus memilih data dari dua tabel atau lebih untuk
mendapatkan hasil yang komplit. %leh karena itu, kita harus melakukan sebuah
&%'. &oin merupakan operasi yang digunakan untuk menggabungkan dua tabel
atau lebih dengan hasil berupa gabungan dari kolom-kolom yang berasal dari tabel-
tabel tersebut. Pada join sederhana, tabel-tabel digabungkan dan didasarkan pada
pencocokan antara kolom pada tabel yang berbeda.
Tabel-tabel dalam sebuah basisdata dapat dihubungkan satu sama lain
menggunakan kunci. (unci utama adalah sebuah kolom dengan nilai unik untuk
masing-masing baris. Tujuannya adalah menggabungkan data antartabel tanpamengulangi semua data pada setiap tabel.
"isalnya kita memilih data dari dua tabel )tabel "ahasis#a dan &urusan* dengan
mengacu pada kedua tabel sebagai berikut $
SELECT "++SS+.'ama!epan, &/S+'.'ama&urusan
0/%" "++SS+, &/S+'
E/E "++SS+.(ode&urusan 1 &/S+'.(ode&urusan
ntuk mengetahui siapa yang mengambil jurusan Teknik ndustri, gunakan
pernyataan S2L berikut $
SELECT "++SS+.'ama!epan
3
Tu"uan #
Praktikan dapat memahami dan memanipulasi data dalam database dengan
lebih luas lagi.
8/18/2019 Modul 4 Basdat 2015
2/13
0/%" "++SS+, &/S+'
E/E "++SS+.(ode&urusan 1 &/S+'.(ode&urusan
+'! &/S+'.'ama&urusan 1 4Teknik ndustri4
(ita pun bisa menggunakan kata kunci &%' untuk memilih data. +da tiga macam
kunci &%', yaitu ''E/ &%', LE0T &%', dan /5T &%'.
INNE$ JOIN
nner join digunakan untuk menampilkan data dari dua tabel yang
berisi data sesuai dengan syarat di belakang on )tidak boleh null*, dengan kata lain
semua data dari tabel kiri mendapat pasangan data dari tabel sebelah kanan.
Sintaks untuk ''E/ &%' $
SELECT 6ield3, 6ield7, 8
0/%" tabel3 ''E/ &%' tabel7
%' tabel3.kunci9utama 1 tabel7.kunci9asing"isalnya, untuk mengetahui siapa yang telah mengambil jurusan dan jurusan apa
yang diambil, kita dapat menggunakan pernyataan berikut $
SELECT "++SS+.'ama!epan, &/S+'.'ama&urusan
0/%" "++SS+ ''E/ &%' &/S+'
%' "++SS+.(ode&urusan 1 &/S+'.(ode&urusan
''E/ &%' akan memunculkan semua baris kedua tabel jika ada pasangannya.
&ika ada baris pada Tabel "ahasis#a yang tidak memiliki pasangan, maka baris
tidak akan dimunculkan pada Tabel &urusan.
LE%T JOIN
Le6t join digunakan untuk menampilkan semua data dari tabel sebelah kiri
perintah le6t join beserta pasangannya dari tabel sebelah kanan. "eskipun terdapat
data dari sebelah kiri tidak memiliki pasangan, tetap akan ditampilkan dengan
pasangannya berupa nilai 'LL.
Sintaks untuk LE0T &%' $
SELECT 6ield3, 6ield7, 8
0/%" tabel3 LE0T &%' tabel7
%' tabel3.kunci9utama 1 tabel7.kunci9asing"isalkan, kita ingin menampilkan semua mahasis#a dan jurusan yang diambil,
jika ada. (ita dapat menggunakan pernyataan berikut $
SELECT "++SS+.'ama!epan, &/S+'.'ama&urusan
0/%" "++SS+ LE0T &%' &/S+'
%' "++SS+.(ode&urusan 1 &/S+'.(ode&urusan
LE0T &%' akan memunculkan semua baris tabel pertama )"ahasis#a*, bahkan
jika tidak ada pasangannya di tabel kedua )&urusan*. &ika ada baris pada tabel
"ahasis#a yang tidak ada pasangannya pada tabel &urusan, maka ia pun akan
dimunculkan.
7
8/18/2019 Modul 4 Basdat 2015
3/13
$IG&T JOIN
/ight join digunakan untuk menampilkan semua data dari tabel sebelah kanan
perintah right join beserta pasangannya dari tabel sebelah kiri. "eskipun terdapat
data dari sebelah kanan tidak memiliki pasangan, tetap akan ditampilkan dengan
pasangannya berupa nilai 'LL.
Sintaks untuk /5T &%' $
SELECT 6ield3, 6ield7, 8
0/%" tabel3 /5T &%' tabel7
%' tabel3.kunci9utama 1 tabel7.kunci9asing
"isalkan, kita ingin menampilkan semua nama dari tabel "ahasis#a dan &urusan
yang diambil, jika ada. (ita dapat menggunakan pernyataan berikut $
SELECT "++SS+.'ama!epan, &/S+'.'ama&urusan
0/%" "++SS+ /5T &%' &/S+'
%' "++SS+.(ode&urusan 1 &/S+'.(ode&urusan/5T &%' akan memunculkan semua baris tabel kedua )&urusan*, bahkan jika
tidak ada pasangannya di tabel pertama )"ahasis#a*. &ika ada baris pada tabel
&urusan yang tidak ada pasangannya pada tabel "ahasis#a, maka ia pun akan
dimunculkan.
ntuk mengetahui siapa yang mengambil jurusan Teknik ndustri, kita
menggunakan pernyataan berikut $
SELECT "++SS+.'ama!epan
0/%" "++SS+ ''E/ &%' &/S+'%' "++SS+.(ode&urusan 1 &/S+'.(ode&urusan
E/E &/S+'.'ama&urusan 1 :Teknik ndustri;
'. UNION dan UNION ALL
UNION
Perintah '%' digunakan untuk memilih in6ormasi yang berhubungan dari
dua tabel, mirip dengan perintah &%'. 'amun, ketika menggunakan perintah
'%', tipe data semua kolom yang dipilih harus sama. '%' hanya
memunculkan nilai unik.Sintaks $
Pernyataan 3
'%'
Pernyataan 7
"isalkan, kita mempunyai tabel baru bernama "ahasis#a7 dimana 6ield-6ieldnya
adalah sama dengan 6ield di tabel "ahasis#a yaitu '/P, 'ama!epan,
'ama
8/18/2019 Modul 4 Basdat 2015
4/13
'%'
SELECT 'ama!epan 0/%" "++SS+7
Perintah tidak dapat digunakan untuk menampilkan semua mahasis#a pada tabel
"ahasis#a dan "ahasis#a7. Pada contoh, kita mempunyai dua mahasis#a dengan
nama sama )yaitu asan "artono* dan dua mahasis#a dengan nama depan sama
)yaitu (iki*, maka hanya satu yang dimunculkan karena perintah '%' hanya
memilih nilai unik.
UNION ALL
Perintah '%' +LL sama dengan perintah '%', kecuali bah#a '%'
+LL memilih semua nilai.
Sintaks $
Pernyataan 3
'%' +LLPernyataan 7
!engan menggunakan tabel "ahasis#a dan "ahasis#a7, kita dapat menggunakan
pernyataan berikut untuk menampilkan semua mahasis#a dari dua tabel $
SELECT 'ama!epan 0/%" "++SS+
'%' +LL
SELECT 'ama!epan 0/%" "++SS+7
. Pernataan *ELE!T INTO
Pernyataan SELECT 'T% digunakan untuk membuat backup suatu tabel.Sintaks $
SELECT nama9kolom 'T% nama9tabel9baru
' basisdata9baru 0/%" Sumber
Contoh berikut adalah membuat backup Tabel "ahasis#a.
SELECT > 'T% "ahasis#a9
8/18/2019 Modul 4 Basdat 2015
5/13
E/E Tempat9Lahir 1 :?ogyakarta;
(ita pun dapat memilih data lebih dari satu tabel.
Contoh berikut adalah membuat tabel baru "ahasis#a9&urusan9
8/18/2019 Modul 4 Basdat 2015
6/13
'%'
SELECT 'ama!epan, Tempat9Lahir
0/%" "ahasis#a
E/E Tempat9Lahir 1 4Surabaya4
Perintah di atas identik dengan $
SELECT 'ama!epan, Tempat9Lahir
0/%" "ahasis#a
E/E Tempat9Lahir 1 D?ogyakarta %/ Tempat9Lahir 1 DSurabaya
'amun tidak semua penggabungan dapat dilakukan dengan %/, yaitu jika bekerja
pada dua tabel atau lebih.
INTE$*E!T
'TE/SECT merupakan operator yang digunakan untuk memperoleh data
dari dua buah query dimana data yang ditampilkan adalah yang memenuhi keduaquery tersebut dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing
tabel yang akan ditampilkan datanya harus sama.
SyntaF $
SELECT > 0/%" namatabel3
'TE/SECT
SELECT > 0/%" namatabel7
Pada "yS2L tidak terdapat operator 'TE/SECT namun sebagai gantinya dapat
menggunakan operator ' yang bisa diperdalam di bagian 'ested 2ueries.
E!EPT 2 *et Di33eren-e
EGCEPT merupakan operator yang digunakan untuk memperoleh data dari
dua buah query dimana data yang ditampilkan adalah data yang ada pada hasil
query 3 dan tidak terdapat pada data dari hasil query 7 dengan ketentuan jumlah,
nama dan tipe kolom dari masing-masing tabel yang akan ditampilkan datanya
harus sama.
SyntaF $
SELECT > 0/%" namatabel3
EGCEPTSELECT > 0/%" namatabel7
Pada "yS2L tidak terdapat operator EGCEPT namun sebagai gantinya dapat
menggunakan operator '%T ' yang bisa diperdalam di bagian 'ested 2ueries.
H
8/18/2019 Modul 4 Basdat 2015
7/13
Modu4 VII
VIE5 1
1. Teori
Vie6
Vie# adalah Iuery SELECT yang disimpan dalam database untuk menampilkan
data dari satu atau beberapa table. Vie# juga disebut sebagai table Jirtual yang
digunakan untuk membungkus suatu Iuery SELECT yang kompleks menjadi lebih
sederhana. !ata-data yang termasuk kategori rahasia dapat diamankan dengan
menggunakan Jie#.
(egunaan Jie# antara lain$3. 0okus pada data atau tabel tertentu
7. Penyederhanaan manipulasi data
=. "enyesuaikan data dengan kebutuhan user
@. EFport dan impor data
B. "engkombinasikan data terpartisi
Sebelum Iuery SELECT yang akan disimpan ke dalam Jie#. Penamaan Jie#
memiliki aturan yang sama dengan penamaan table. 'ama Jie# harus unik artinya
nama Jie# tidak diperkenankan sama dengan nama Jie# yang sudah ada
sebelumnya.
3
Tu"uan #
"embuat Vie# untuk menampilkan data dari satu atau beberapa table dengan
membungkus suatu Iuery SELECT yang kompleks menjadi lebih sederhana.
SyntaF
C/E+TE VE Jie#9name +S select9statement
8/18/2019 Modul 4 Basdat 2015
8/13
Pesan di atas akan tampil jika terjadi pembuatan Jie# dengan menggunakan nama
yang sama dengan nama Jie# yang lain.
'ama kolom dari base table bisa diubah menjadi nama lain saat disimpan ke dalam
Jie# dengan menggunakan C%L"' +L+S
'. e7iatan Praktikum
Buat tabel-tabel berikut ini :
3. Tabel +rtikel dengan struktur
7. Tabel guestbook dengan struktur
=. Tabel "ateri dengan struktur
7
8/18/2019 Modul 4 Basdat 2015
9/13
@. nsert data pada masing-masing tabel
B. Tampilkan data judulartikel, author dan tanggal dari tabel artikel
H.
8/18/2019 Modul 4 Basdat 2015
10/13
tidak mungkin diselesaikan dengan cara biasa, Jie# dapat digunakan untuk
menyimpan data rahasia karena tidak muncul pada database a#al.
.
8/18/2019 Modul 4 Basdat 2015
11/13
MODUL VIII
Vie6 '
I. Teori1.1 Vie6
Vie# dalam sIl juga merupakan suatu table yang diturunkan dari table
yang lain. Table ini bias berupa table dasar dari yang dide6inisikan
sebelumnya.suatu Jie# yang tidak perlu dalam bentuk 6isiknya, bias berupa table
bayangan )Jirtual table*, sehingga table dasar yang mempunyai tupel-tupel pada
dasarnya tersimpan dalam database. Pembatasan ini memungkinkan untuk
mengupdate operasi yang bias digunakan dalam Jie#, tetapi tidak membatasi
dalam Jie# Iueri.
1.'. Men78a,us Vie6
2ueri yang sama juga bias didapatkan dengan menentukan dua hubungan
yang telah ada dalam relasi dasarnya, keuntungan utama Jie# tersebut adalah
untuk menyederhanakan ketentuan tentang Iueri yang diperlukan, dan juga bias
digunakan untuk perangkat keamanan data.
Suatu Jie# dari Iueri selalu menampilkan data yang terbaru, sebagai contoh bila
kita memodi6ikasi sebagaian tupel dalam table dasarnya dimana Jie# tersebutdide6inisikan, maka secara otomatis akan berpengaruh pada Jie# di Iueri
&ika tidak membutuhkan penampakan Iueri lagi, kita bisa menggunakan perintah
!/%P VE untuk menghapusnya.
syntaF $
!/%P VE )nama Jie#*
1.. Men7u,date 9ie6 dan Im,4ementasi 9ie6
"engupdate Jie# merupakan suatu hal yang kompleks. Secara umum
suatu update dari suatu Jie# dide6inisikan pada suatu table tunggal tanpa 6ungsi-6ungsi pendukung )aggregate* yang bias dimapping kedalam suatu table dasar
3
Tu"uan #
"embuat Vie# untuk menampilkan data dari satu atau beberapa
table dengan membungkus suatu Iuery SELECT yang kompleks
menjadi lebih sederhana.
8/18/2019 Modul 4 Basdat 2015
12/13
pembentuknya dengan berbagai cara. Topic tentang update Jie# ini masih terus
diuji coba. ntuk menggambarkan masalah yang potensial dengan mengupdate
Jie# yang telah dide6inisikan dalam beberapa table, misal table ork9%'3 dan
mendukung perintah untuk mengupdate attribute pname dari :john smith; dan dari
:productG; ke :product?;. Vie# ini ditunjukkan sebagai berikut $
pdate #ork9on3
Set pname 1;product?;
here Lname 1 :smith;and 0name1 :john; and
Pname 1 :productG;
Secara umum kita tidak dapat menjamin bah#a setiap tampilan bisa diupdate.
Suatu tampilan yang diupdate hanya memungkinkan untuk satu kali update pada
relasi dasarnya yang dapat menghubungkan update tersebut pada tampilannya.Sebagai kesimpulan dapat ditentukan $
• Suatu tampilan dengan de6inisi tunggal itu dapat diupdate bila attribute
tampilan berisi primary key atau beberapa candidate key dari relasi dasar,
sebab inilah yang menghubungkan antara Jie# tupel dengan tupel dasar
tunggal.
• Tampilanm yang dide6inisikan dengan menggunakan beberapa table yang
berhubungan umumnya tidak dapat diupdate
• Tampilan yang menggunakan group dan 6ungsi aggregate tidak dapat
diupdate
'. e7iatn ,raktikum
3.
8/18/2019 Modul 4 Basdat 2015
13/13
Tablepega#ai
7.