HALAMANFRANCIS
1. Imran,S.Kom.,M.Pd.,085242642377.imranlahami@gmail.com
KATA
SAMBUTAN
kompetensiguru(UKG)untukkompetensipedagogikdanprofesionalpadaakhir
tahun2015.HasilUKGmenunjukanpetakekuatandankelemahankompetensi
guru dalam penguasaan pengetahuan. Peta kompetensi guru tersebut
dikelompokan menjadi 10 (sepuluh) kelopok kompetensi. Tindak lanjut
pelaksanaanUKGdiwujudkandalambentukpelatihangurupaskaUKGmelalui
program Guru Pembelajar. Tujuannya untuk meningkatkan kompetensi guru
sebagaiagenperubahaandansumberbelajarutamabagipesertadidik.Program
Guru Pembelajar dilaksanakan melalui pola tatap muka, daring (online) dan
campuran(blended)tatapmukadengan online.
Pusat
Pengembangan
dan
Pemberdayaan
Pendidik
dan
Tenag
Kependidikan
(PPPPTK),
Lembaga
Pengembangan
dan
Pemberdayaan
PendidikdanTenagaKependidikanKelautanPerikananTeknologiInformasidan
Komunikasi (LP3TK KPTK) dan Lembaga Pengembangan dan Pemberdayaan
kompetensi.DenganmodulinidiharapkanprogramGPmemberikansumbangan
ii
yang sangat besar dalam peningkatan kualitas kompetensi guru. Mari kita
sukseskanprogramGPiniuntukmewujudkanGuruMuliaKarenaKarya.
Jakarta, Februari2016
DirekturJendral
SumarnaSurapranata,Ph.D
NIP.195908011985031002
iii
KATA
PENGANTAR
Profesigurudantenagakependidikanharusdihargaidandikembangkansebagai
profesiyangbermartabatsebagaimanadiamanatkanUndang-UndangNomor14
Tahun 2005 tentang Guru dan Dosen. Hal ini dikarenakan guru dan tenaga
kependidikanmerupakantenagaprofesionalyangmempunyaifungsi,peran,dan
kedudukan yang sangat penting dalam mencapai visi pendidikan 2025 yaitu
“MenciptakanInsanIndonesiaCerdasdanKompetitif”.Untukitugurudantenaga
kependidikan yang profesional wajib melakukan pengembangan keprofesian
berkelanjutan.
Buku
Pedoman
Penyusunan
Modul
Diklat
Pengembangan
Keprofesian
Berkelanjutan
Bagi
Guru
dan
Tenaga
Kependidikan
untuk institusi
penyelenggara program pengembangan keprofesian berkelanjutan merupakan
modul yang merupakan salah satu sumber belajar bagi guru dan tenaga
kependidikan.
Buku
ini
disajikan
untuk
memberikan
informasi
tentang
penyusunan modul sebagai salah satu bentuk bahan dalam kegiatan
pengembangankeprofesianberkelanjutanbagigurudantenagakependidikan.
Pada kesempatan ini disampaikan ucapan terima kasih dan penghargaan
kepada berbagai pihak yang telah memberikan kontribusi secara maksimal
dalammewujudkanbukuini, mudah-mudahanbukuinidapatmenjadiacuandan
sumber inspirasi bagi guru dan semua pihak yang terlibat dalam pelaksanaan
penyusunan modul untuk pengembangan keprofesian berkelanjutan. Kritik dan
saranyangmembangunsangatdiharapkanuntukmenyempurnakanbukuinidi
v
B. IndikatorPencapaianKompetensi... 7
C. UraianMateri... 7
D. AktivitasPembelajaran... 17
E. Latihan/Kasus/Tugas... 17
F. Rangkuman... 18
G. UmpanBalikdanTindakLanjut... 19
H. KunciJawaban... 19
KegiatanPembelajaran2: ... 23
A. Tujuan... 23
B. IndikatorPencapaianKompetensi... 23
C. UraianMateri... 23
D. AktivitasPembelajaran... 37
E. Latihan/Kasus/Tugas... 37
F. Rangkuman... 39
G. UmpanBalikdanTindakLanjut... 39
vi
KegiatanPembelajaran3:... 43
A. Tujuan... 43
B. IndikatorPencapaianKompetensi... 43
C. UraianMateri ... 43
D. AktivitasPembelajaran... 66
E. Latihan/Kasus/Tugas ... 66
B. IndikatorPencapaianKompetensi... 72
C. UraianMateri ... 72
D. AktivitasPembelajaran... 84
E. Latihan/Kasus/Tugas ... 85
B. IndikatorPencapaianKompetensi... 91
C. UraianMateri ... 91
D. AktivitasPembelajaran... 98
E. Lathan/Kasus/Tugas ... 98
B. IndikatorPencapaianKompetensi... 104
C. UraianMateri ... 104
D. AktivitasPembelajaran... 109
E. Latihan/Kasus/Tugas ... 109
F. Rangkuman... 110
G. UmpanBalikdanTindakLanjut... 111
H. KunciJawaban... 111
KegiatanPembelajaran7: ... 115
A. Tujuan... 115
B. IndikatorPencapaianKompetensi... 115
C. UraianMateri... 115
D. AktivitasPembelajaran... 117
E. Latihan/Kasus/Tugas... 117 Gambar1.1GambaranRelasionalDatabase... 8
Gambar1.3ModelHubunganEntitas(EntityRelationshipModel) ... 10
Gambar1.4GambarHubunganERMultiTabel... 12
Gambar1.5RecordpadaTabelEMPLOYEES ... 14
Gambar1.6KomunikasiDBMSMenggunakanSQL ... 16
Gambar2.1ContohPembatasanGarisdenganKriteriaTertentu ... 24
Gambar2.2MembatasiBarisYangDipilih... 25
Gambar2.3QuerydenganKlausa Where ... 25
Gambar2.4QuerydenganKasusCampuran ... 26
Gambar2.5OperatoryangTerdapatpadaQuery... 26
Gambar2.6HasilEksekusiQuerydenganKondisiPerbandingan ... 27
Gambar2.7HasilEksekusiQuerydenganKondisiBetween ... 28
Gambar2.8HasilEksekusiQuerydenganKondisiIN... 28
Gambar2.9HasilEksekusiQuerydenganKondisiLIKE... 29
Gambar2.10HasilEksekusiQuerydenganKondisiLIKE... 30
Gambar2.11HasilEksekusiQuerydenganKondisiNULL ... 30
Gambar2.12HasilEksekusiQuerydenganLogikaOR... 32
Gambar2.13HasilEksekusiQuerydenganLogikaNOT... 33
Gambar2.14HasilEksekusiQuery... 35
Gambar2.15HasilEksekusiQuerydenganKlausaORDERBY... 36
Gambar2.16ContohQuerydenganORDERBY... 37
Gambar3.1FungsiSQL ... 44
Gambar3.2IlustrasiFungsiSQL ... 44
Gambar3.3DeklarasiNamaFungsi ... 45
Gambar3.4Jenis-JenisFungsiSingleRow... 46
Gambar3.5KlasifikasiFungsiKarakter ... 46
Gambar3.6HasilKonversidenganFungsiString... 48
Gambar3.7HasilQueryMenggunakanFungsiManipulasiCase ... 49
ix Gambar3.8HasilQueryMenggunakanFungsiKarakterManipulasi... 50
Gambar3.9HasilQuerydenganFungsiNumerik ... 51
Gambar3.10HasilQueryFungsiROUND ... 52
Gambar3.11HasilQueryFungsiTRUNC... 52
Gambar3.12HasilQueryFungsiMOD... 53
Gambar3.13FormatTanggalpadaOracle... 53
Gambar3.14FungsiSYSDATEpadaQuery... 54
Gambar3.15HasilQuerySYSDATEdenganManipulasiTanggal... 55
Gambar3.16FungsiTRUNCdalamPemotonganTanggal... 56
Gambar3.17HasilQuerydenganManipulasiTanggal... 57
Gambar3.18HasilQuerydenganfungsiROUNDdanTRUNC... 57
Gambar3.19HasilQuerydenganKonversiTO_CHAR... 58
Gambar3.20QueryMenggunakanFungsiNVL... 60
Gambar3.22QueryMenggunakanFungsiNULLIF... 62
Gambar3.23HasilEksekusiQuerydenganFungsiCOALESCE ... 63
Gambar3.24QuerydenganKondisiCASE... 65
Gambar3.25QuerydenganFungsiDECODE ... 66
Gambar4.1Tabelyangakandimanipulasi... 73
Gambar4.2HasilQueryNATURALJOIN ... 74
Gambar4.3QueryNaturalJoindenganKlausaWHERE ... 75
Gambar4.4KlausaUSINGuntukEquijoin... 76
Gambar4.5QueryPenggunaanTabelAlias ... 76
Gambar4.6KlausaONpadaQuery... 77
Gambar4.7ContohSelfJoinpadaQuery... 78
Gambar4.8KlausaONdenganKombinasiSELFJOIN... 78
Gambar4.9KlausaJOINpadaQuery... 79
Gambar4.10TabelEMPLOYEESdanJOB_GRADES... 80
Gambar4.11ImplementasiNon-EquijoinspadaQuery... 80
Gambar4.12HasilQueryLeftOuterJoin... 81
Gambar4.13HasilQueryRightOuterJoinpada... 82
Gambar4.14HasilQueryFullOuterJoinpada... 83
Gambar4.15HasilQueryCartesianProduct... 84
x Gambar4.16HasilQueryCROSSJOIN... 84
Gambar5.1QuerydalammembuatTabel ... 92
Gambar5.2SebelumDatadiperbarui... 93
Gambar5.3SesudahDatadiperbarui... 93
Gambar5.4DataSebelumdiperbarui... 94
Gambar5.5DataSesudahdiperbarui... 95
Gambar5.6DataSebelumdiperbarui... 96
Gambar5.7DataSesudahdiperbarui... 96
Gambar5.8DataSebelumdihapus ... 97
Gambar5.9DataSesudahdihapus ... 97
Gambar6.1HasilEksekusiQueryMembuatTabel... 106
Gambar6.2StrukturAwalTabel ... 108
Gambar6.3StrukturSetelahTerjadiPenambahanKolom... 108
Gambar71Penggunaancommit... 116
xi
DAFTAR
TABEL
Tabel 1KebenaranLogikanAND... 31
Tabel 2KebenaranLogikan ...OR 32 Tabel 3KebenaranLogikanNOT... 33
Tabel 4AturanProtokoler... 34
Tabel 5FungsidanKegunaannya... 47
Tabel 6FungsiNumerik ... 51
Tabel 7OperasipadaTanggal... 55
xii
…
PENDAHULUAN
A. LatarBelakang
Gurudantenagakependidikanwajibmelaksanakankegiatanpengembangan
keprofesian
secara
berkelanjutan
agar
dapat
melaksanakan
tugas
diharapkandapatmenjamingurudantenagakependidikansehinggamampu
secara terus menerus
memelihara, meningkatkan, dan mengembangkan
kompetensinya sesuai dengan standar yang telah ditetapkan. Pelaksanaan
kegiatanGPakanmengurangikesenjanganantarakompetensi yang dimiliki
guru
dan
tenaga
kependidikan
dengan
tuntutan
profesional
yang
dipersyaratkan.
Program Diklat GP ini membutuhkan modul yang berfungsi sebagai salah
satu sumber belajar. Modul untuk GP Guru Rekayasa Perangkat Lunak
(RPL) Kelompok Kompetensi B “Sistem Manajemen Basis Data” ini dapat
digunakanolehgurudantenagakependidikandanberfungsisebagaiacuan
untuk
memenuhi
tuntutan
kompetensinya,
sehingga
guru
dapat
melaksanakan tugasnya secara professional sesuai dengan standar yang
telahditetapkan.
Modul untuk GP Guru RPL Kelompok Kompetensi B “Sistem Manajemen
BasisData”inimempelajaritentangpembuatanstrukturtabel,mengisidata
ke tabel, mengubah data dan menghapus data dari tabel dengan
menggunakan softwareRelationalDatabaseManagementSystem (RDBMS),
serta komunikasi Sistem Manajemen Basis Data menggunakan perintah
StructureQueryLanguage(SQL).
B. Tujuan
Tujuan disusunnyamodul diklat GPGuru RPLKelompok Kompetensi B ini
adalahmemberikanpengetahuandanketrampilankepadaguruataupeserta
diklat tentang pembuatan struktur tabel, mengisi data ke tabel, mengubah
datadanmenghapusdatadaritabeldenganbenarmelaluiaktifitasobservasi
dan praktikum. Setelah mempelajari modul ini diharapkan guru dapat :
“Merencanakan Database Management System yang mampu memfasilitasipenggunauntukmenyimpan,memperoleh,danmengubah datadidalambasisdata”.
Sedangkanindikatorpencapaiankompetensinyaadalah:
1.
Membuatbasisdatamenggunakan DataDefinitionLanguage.
2.
MembuatrelasiantartabelmenggunakanfiturvisualDBMS
3.
MemanipulasidatamenggunakanDataManipulationLanguage.
4.
MembuatpengaturanprivalagespadaDBMS
basisdata. 1.1.2.Membuat Entity
Relationship Diagram
1.1.3.Menganalisis teknik
normalisasi basis
materipokokpadamoduliniadalah:1)DatabaseRelasional,2)Membatasi
dan
Menyortir
Data;
3)
Menggunakan
Fungsi
Single-Baris
Untuk
MenyesuaikanKeluaran;4)MenampilkanDatadariBeberapaTabel;5)Data
ManipulationLanguage PadaSQL;6) DataDefinitionLanguage PadaSQL;
dan7) DataControl Language PadaSQL;
E. SaranCaraPenggunaanModul
Modul Sistem Manajemen Basis Data ini terdiri dari sebelas topik utama.
Peserta diklat dapat mempalajari sesui dengan urutan topik mulai topik 1
sampaitopik7.Ketujuhtopiktersebuttidakmemilikiketergantungansecara
penuh, sehingga peserta diklat dapat mempelajari tidak secara berurutan.
3
Akan tetapi untuk masing-masing topik setiap kegiatan pembelajaran
mempunyai keterkaitan secara penuh. Ini berarti untuk setiap topik materi
yangdipelajariharussecaraberurutansesuaiurutankegiatanpembelajaran.
Untuk setiap kegiatan pembelajaran urutan yang harus dilakukan oleh
pesertadiklatdalammempelajarimoduliniadalah:
1.Membacatujuanpembelajaransehinggamemahamitargetataugoaldari
kegiatanbelajartersebut.
2.Membaca indikator pencapaian kompetensi sehingga memahami obyek
pembelajaran.
3.Membaca uraian materi pembelajaran sehingga memiliki pengetahuan,
ketrampilandansikapterhadapkompetensiyangakandicapai
6
1. Memperolehpemahamantentangsistemmanajemendatabaserelasional
dansistemobjekmanajemendatabaserelasional.
2. Memperolehpemahamankonsepdasar database relasional.
3. Mengkomunikasikan gagasan database menggunakan model datayang
sesuai.
B. IndikatorPencapaianKompetensi
1. Menggambarkanstrukturtabelrelasional
2. Membuatmodelmenggunakankonvensientitas
3. BerkomunikasidenganRDBMSmenggunakanpernyataanSQL
4. Mengelompokkan pernyataan-pernyataan SQL dalam kelompok DML,
DDL,DCL,danTransactionControl
C. UraianMateri
1. KonsepDatabaseRelasional
Dr.E.F.Coddpadatahun1970telahmemperkenalkanmodelrelasional
sistem database yang merupakan dasar untuk Relational Database
dalambentukrelasiatautabelduadimensi,danantartabelsatudengan
tabelyanglainnyaterdapathubunganataurelationship.
Komponen-komponen model ralasional meliputi : Kumpulan objek yang
memiliki keterkaitan atau relasional antar penyimpan data, Set operator
yang dapat melakukan relasi untuk membuat relasi yang lainnya, dan
Integritas data untuk akurasi dan konsistensi. Untuk membuat struktur
tabel, mengisi data ke tabel, mengubah data dan menghapus data dari
tabel diperlukan software RDBMS, sedangkan perintah yang digunakan
disebut Structure Query Language (SQL) sehingga setiap software
RDBMSdapatdigunakanuntukmenjalankanperintahSQL
2. Definisi Database Relasional
Sebuah database relasional menggunakan hubungan atau tabel dua
dimensi untuk menyimpan informasi. Sebagai contoh: Kita ingin
menyimpaninformasitentangsemuakaryawanyangadapadasalahsatu
perusahaan.Dalamsebuahdatabaserelasional,kitamembuatbeberapa
tabel untuk menyimpan bagian-bagian informasi yang berbeda tentang
karyawan yang bekerja diperusahaan tersebut, misalnya tabel yang
menyimpaninformasitentangkaryawan,tabelyangmenyimpaninformasi
tentangdepartemen,tabelyangmenyimpaninformasitentanggaji.
Gambar1.1GambaranRelasional Database
model untuk mengeksplorasi ide-ide dan meningkatkan pemahaman
desain database. Tujuan sebuah model adalah membantu
mengkomunikasikan konsep-konsep yang ada dipikiran orang. Model
dapat digunakan untuk melakukan hal berikut:
menyampaikan/mengkomunikasikan,mengkategorikan,menggambarkan,
menentukan, menyelidiki, mengembangkan, menganalisis, dan meniru.
Model yang baik adalah model yang cocok dalam banyak kegunaan,
dapatdipahamiolehpenggunaakhir,danberisidetailyangcukupuntuk
pengembangdalammembangunsistem database.
Gambar1.2ContohSkenarioModelData
Commented [A2]:
Gambar
4. ModelHubunganEntitas(EntityRelationshipModel)
Dalam sistem yang efektif, data dibagi menjadi kategori diskrit atau
entitas. Sebuah model Entity Relationship (ER) adalah sebuah ilustrasi
dariberbagaientitasdalambisnisdanhubungandiantaramereka.Model
ERberasaldarispesifikasibisnisataunarasidandibangunselamatahap
analisis siklus hidup pengembangan sistem (System Development Life
Cycle).
4.1. ManfaatModelER
a. Informasidokumenbagiorganisasidalamformatyangjelasdantepat.
b. Memberikan gambaran yang jelas tentang ruang lingkup kebutuhan
diketahui.Contohnyaadalahdepartemen,karyawan,danpesanan.
entitas. Sebagai contoh, untuk entitas karyawan, atributnya adalah:
nomor
karyawan,
nama,
jabatan,
tanggal
perekrutan,
nomor
departemen,dansebagainya.Setiapatributyangbaikadalahatribut
yangdiperlukanatauopsional.
c. Hubungan: Hubungan atau relationship adalah sebuah asosiasi
antara entitas dan derajat. Contohnya adalah karyawan dan
departemen,danpesanandanitembarang.
Gambar1.3ModelHubunganEntitas(EntityRelationshipModel)
5. KonvensiModelHubunganEntitas
5.1. Entitas
d. Namasinonimopsionaldenganhurufbesardidalamtandakurung:().
5.2. Atribut
Garisputus-putus Elemenopsionalyangmenunjukkan"mungkin"
Garispenuh Elemenwajibyangmenunjukkan"harus"
Crow’sfoot Menunjukkan"satuataulebih"
6. HubunganMultiTabel
Setiaptabelberisidatayangmenggambarkansecaratepatsatuentitas.
Sebagai contoh, tabel EMPLOYEES berisi informasi tentang karyawan.
Kategori data yang tercantum di bagian atas setiap tabel, dan
kasus-kasus individu tercantum di bawah tabel. Dengan menggunakan format
tabel, dapat dengan mudah memvisualisasikan, memahami, dan
menggunakan informasi. Karena data tentang entitas yang berbeda
disimpan
dalam
tabel
yang
berbeda,
sehingga
perlu
untuk
menggabungkan
dua
atau
lebih
tabel
dalam
menyelesaikan
permasalahan tertentu. Sebagai contoh, untuk mengetahui lokasi pada
departemen mana seorang karyawan bekerja. Dalam skenario ini,
memerlukaninformasidaritabelEMPLOYEES(yangberisidatatentang
karyawan) dan tabel DEPARTMENTS (yang berisi informasi tentang
departemen). Dengan RDBMS, seseorang dapat menghubungkan data
yang berada dalam satu tabel dengan data yang berada di tabel lain
11
menggunakan foreign key. Foreign key adalah kolom (atau set kolom)
yangmengacupadaPrimarykeydalamtabelyangsamaatautabellain.
Datadalamduatabelyangterpisahdapatdiorganisasimenjadiinformasi
baruyangdapatdikelolasecaraterpisah.
Gambar1.4GambarHubunganERMultiTabel
7. TerminologiDatabaseRelasional
Sebuahdatabaserelasionaldapatberisisatuataubanyaktabel.Sebuah
tabel merupakan struktur penyimpanan dasar dari sebuah RDBMS.
Sebuah tabel memiliki semua data yang diperlukan tentang sesuatu di
dunianyata,sepertikaryawan,faktur,ataupelanggan.
Didalam
sistem
relasional
database
data
dinyatakan
dengan
menggunakantabel(relations).Sebuahtabelmempunyaistrukturseperti
12
Baris(record)
Sebuah tabel harus diberi nama secara unik sebagai identitasnya dan
terdiridaribeberapabarissebagaipenyimpananinformasi,dan
masing-masingbarisberisisatu record.Sebuahtabeldapatmempunyaisebuah
kolom atau lebih. Sebuah kolom memiliki sebuah nama dan tipe data
yangdiberlakukandanmerupakandeskripsiatributpada record.Struktur
tabel yang disebut juga relation schema, ditentukan oleh
atribut-atributnya.Tipeinformasiyangtersimpandidalamtabelditentukanoleh
tipedatayangterdapatpadaatribut-atributnyapadasaattabeldibuat.
Sebuah tabel dapat mempunyai lebih dari 254 kolom yang mempunyai
tipe data yang sama atau tipe data yang berbeda sesuai dengan
penempatan values (domain). Kemungkinan-kemungkinan domain yang
dipergunakan adalah alphanumeric data (strings), numbers, dan date
formats.ORACLEmenawarkantipe-tipedatadasarsepertidibawahini:
a. Char(n): Fixed-lenghtcharacterdata(strings),mendefinisikan string
sepanjangnkarakter.Nilaimaksimumuntuknadalah255byte(...
di ORACLE 9i). Bila n tidak dituliskan, maka panjang karakteryang
berlakuadalah1.
contoh:char(40).
b. Varchar2(n):Variable-lenghtcharacterstrings,mendefiniskanstring
yang panjangnya berubah-ubah sesuai dengan kebutuhan dan
dibatasisebanyakkaraktern.Nilainmaksimumadalah2000(... di
ORACLE 9i). Hanya banyaknya byte yang digunakan saja yang
tersimpanpadamemori.
contoh:varchar2(80).
c. Number(o,d): Numericdatatype ,mendefinisikanangkaintegerdan
riel,o=jumlahdigit,d=jumlahdigityangberadadibelakangkoma.
Nilaimaksimum:o=38,d=-84sampai+127.
contoh:number(8),number(5,2).
13
kolom1 kolom2 ……….. kolomn
Number(5,2)nilainyatidakdapatlebihdari999.99,jikamelebihinilai
maksimum tersebut maka akan menjadi kesalahan. Tipe data yang
berasaldarinumberadalahint[eger],dec[imal],smallintdanreal.
d. Date: Date data type untuk menempatkan atau mendefinisikan tanggal, bulan, tahun, hari, jam, menit dan detik. Format keadaan awal(default)untukdateadalah:DD-MMM-YY.
Contoh:’10-FEB-94’,’29-NOV-98’.
e. long:
mendefinisikan
tipe
data
binary,
panjangnya
karakter
maksimumadalah2GB.Setiaptabelhanyadiperbolehkansatukolom
sajayangmempunyaitipelong.
Catatan:
DidalamORACLE–SQLtidakadatipedataboolean,tetapidengandata
yangsamadapatmenggunakanchar(1)ataunumber(1).
Selama tidak terdapat ketentuan/hambatan lain yang membatasi
kemungkinan values pada atribut, dapat digunakan special value yaitu
null (untuk sesuatu yang tidak diketahui). Nilai ini tidak sama dengan
angka0,danjugatidaksamadengankosong.
Gambar1.5 RecordpadaTabelEMPLOYEES
Gambar 1.5 menunjukkan isi tabel atau relasi EMPLOYEES.
Angka-angkamenunjukkanhal-halsebagaiberikut:
1) Baristunggal(atautuple)mewakilisemuadatayangdibutuhkanuntuk
karyawan
tertentu.
Setiap
baris
dalam
sebuah
tabel
harus
diidentifikasi oleh primary key, yang memungkinkan tidak ada
duplikasibaris.Urutanbaristidaksignifikan;menentukanurutanbaris
saatdatadiambil.
2) Sebuah kolom atau atribut yang berisi nomor karyawan. Jumlah
karyawan
mengidentifikasi
karyawan
yang
unik
dalam
tabel
EMPLOYEES. Dalam contoh ini, kolom nomor karyawan yang
ditunjuksebagai primarykey.Sebuah primarykey harusmengandung
nilai,dannilaiharusunik.
3) Sebuahkolomyangbukankeyvalue.Sebuahkolommerupakanatau
merepresentasikansalah satu jenis data dalam tabel; dalam contoh
ini, data adalah gaji semua karyawan. Urutan kolom tidak signifikan
ketikamenyimpandata;menentukanurutankolomsaatdatadiambil.
4) Sebuahkolomyangberisinomordepartemen,yangjugamerupakan
foreign key. Foreign key adalah kolom yang mendefinisikan
bagaimanatabelberhubungansatusamalain.Foreignkeymengacu
pada primarykey ataukunciunikditabelyangsamaatauditabellain.
Dalam contoh, DEPARTMENT_ID secara unik mengidentifikasi
sebuahdepartemendalamtabelDEPARTMENTS.
5) Sebuahfielddapatditemukandipersimpangandaribarisdankolom.
Hanyaadasatunilaididalamnya.
6) Sebuahfieldmungkintidakmemilikinilaididalamnya.Inidisebutnilai
null.DalamtabelEMPLOYEES,hanyakaryawanyangmemilikiperan
perwakilanpenjualanmemilikinilaidiCOMMISSION_PCT(komisi).
8. Properti Database Relasional
Dalam sebuah relasional database, pengguna tidak menentukan rute
aksesketabel,dantidakperlutahubagaimanadatadiatursecarafisik.
Untuk mengakses database, cukup dengan mengeksekusi
perintah-perintah atau pernyataan SQL, yang merupakan American National
Standards Institute (ANSI) bahasa standar untuk operasi relasional
15
database.SQLberisisatusetoperator-operatoryangcukupbesaruntuk
membagi dan mempertautkan hubungan. Database dapat dimodifikasi
denganmenggunakanpernyataanSQL.
9. BerkomunikasidenganRDBMSmenggunakanSQL
9.1. StructuredQueryLanguage
Menggunakan SQL, pengguna dapat berkomunikasi dengan server
database. SQL memiliki beberapa keuntungan: efisien, mudah untuk
dipelajaridandigunakan,danmemilikifungsi-fungsiyangsangatlengkap
D. AktivitasPembelajaran
Aktivitaspadakegiatanpembelajaran1,mencakuptopik-topikberikut:
a. PengenalankonsepDBMSdanmodelhubunganentitasnya
b. PengenalanmetodekomunikasiDBMSmenggunakanSQL
c. PengenalanklasifikasiperintahSQLuntukberkomunikasidenganDBMS
E. Latihan/Kasus/Tugas
d. Hubunganmatrikskeduanya
2. Penggunaantandakurung“()”padaERModelmerepresentasikansuatu
ilustrasientitasyangmenunjukkan
a. Akronimsuatu database
b. Akronissuatutabel
c. Sinominsuatu database
d. Sinonimsuatutabel
3. TipedatabooleanpadaOracletidakdidukung,sebagaigantinyaOracle
menyediakanmodelrepresentasitipebooleandengancara
a. Menggunakantipedatavarhcar(n)
b. Menggunakantipedatanumber(1)
c. Menggunakantipedataint(1)
d. Menggunakantipedatalongint(1)
4. PerintahSQLCOMMENTtermasukkategoriperintahSQLdengantipe
a. DataDefinitionLanguage(DDL)
b. DataManipulationLanguage(DML)
c. TransactionControl
d. DataControlLanguage (DCL)
5. QueryberikutyangtidakmampumengelolaperubahanhasiloperasiDML
database relasional dan model data yang digunakan untuk menyampaikan
ataumengkomunikasikan,mengkategorikan,menggambarkan,menentukan,
memenyelidiki,mengembangkan,menganalisis,danmeniru.Modelyangbaik
adalah model yangcocok dalam banyak kegunaan,dapat dipahami oleh
oleh integrityconstraints.DenganserverOracle,penggunadapatmenyimpan
danmengelolainformasidenganmenggunakanbahasaSQL.
G. UmpanBalikdanTindakLanjut
1. Apakah Anda sudah mampu memahami sistem manajemen database
relasional (RDBMS) dan sistem objek manajemen database relasional
(ORDBMS),sertaberapaprosentingkatpencapaiankompetensinya?
2. Apakah Anda sudah mampu memahami konsep dasar database
relasionaldanberapaprosentingkatpencapaiankompetensinya?
22
datasertamenentukanurutanbarisyangakanditampilkan.
2. Menggunakankondisikomparasiuntukmenampilkandata
B. IndikatorPencapaianKompetensi
1. MembatasibarisyangdipilihmenggunakanklausaWHERE
2. Menggunakan
kondisi
BETWEEN,
IN,
LIKE,
dan
NULL
untuk
menampilkaninformasipadakeluaran.
3. Menggunakan operator logika AND, OR, dan NOT untuk menampilkan
informasipadakeluaran.
C. UraianMateri
Dalam contoh pada Gambar 2.1, anggaplah bahwa pengguna ingin
menampilkansemuakaryawandidepartemen90.Barisdengannilai90
pada kolom DEPARTMENT_ID adalah satu-satunya yang dikembalikan
atau ditampakkan. Metode pembatasan ini adalah dasar darik klausa
WHEREdidalamSQL.
23
Gambar2.1ContohPembatasanGarisdenganKriteriaTertentu
1.1. MembatasiBarisYangDipilih
Penggunadapatmembatasibarisyangdikembalikandari query dengan
menggunakan klausa WHERE. Sebuah klausa WHERE memuat suatu
kondisiyangharusdipenuhi,danlangsungmengikutiklausaFROM.Jika
kondisi benar, maka baris yang memenuhi kondisi yang dipersyaratkan
akandikembalikan.
Dalamsintak:
WHERE membatasi query kebarisyangmemenuhikondisi
condition terdiri dari nama kolom, ekspresi, konstanta, dan
operatorperbandingan.
Klausa WHERE dapat membandingkan nilai-nilai dalam kolom, nilai
literal,ekspresiaritmatika,ataufungsiyangterdiridaritigaunsur:
KondisiPerbandingan
NamaKolom,konstan,ataunilai
24
Gambar2.2MembatasiBarisYangDipilih
1.2. MenggunakanKlausa WHERE
Dalamcontoh,pernyataanSELECTmengambilemployeeID,name,job
ID,dan departmen ID dari semua karyawan yang berada didepartemen
90.
Gambar2.3QuerydenganKlausa Where
1.3. CharacterStringdanDate
Semua karakter dan tanggal diklausa WHERE harus diapit oleh tanda
kutiptunggal(''),sedangkankonstantatidakbolehdiapitolehtandakutip
tunggal.
Semua pencarian karakter adalah case-sensitive. Pada contoh berikut,
tidakadabarisyangdikembalikankarenatabelEMPLOYEESmenyimpan
semuanamabelakangdalamkasuscampuran:
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'WHALEN';
Gambar2.4QuerydenganKasusCampuran
2. MembandingkanBerdasarPadaKondisi
2.1. KondisiPerbandingan
Kondisi perbandingan digunakan untuk membandingkan satu ekspresi
dengannilailainatauekspresilain.
FormatpenggunaanklausaWHEREadalahsebagaiberikut:
... WHERE expr Operator value
Contoh
... WHEREhire_date = '01 -Jan-95'
... WHERE salary>= 6000
... WHERE last_name = 'Smith'
AliastidakdapatdigunakandalamklausaWHERE.
Catatan:Simbol!=dan^=dapatdiartika‘tidaksamadengankondisi’.
Gambar2.5OperatoryangTerdapatpadaQuery
2.2. MenggunakanKondisiPerbandingan
Dalamcontoh,pernyataanSELECTmengambilnamabelakangdangaji
daritabel EMPLOYEE untuk setiap karyawan yang gajinya kurang dari
atausamadengan$3.000.Perhatikanbahwaadanilaieksplisitdipasok
keklausaWHERE.Nilaieksplisit3000dibandingkandengannilaigajidi
kolomSALARYdaritabelEMPLOYEE.
Gambar2.6HasilEksekusiQuerydenganKondisiPerbandingan
2.3. MenggunakanKondisiBetween
Operator BETWEEN akan menguji apakah suatu nilai berada dalam
suatu range tertentuyangdapatdiartikan“lebihbesaratausamadengan
nilaiterkecildanlebihkecilatausamadengannilaiterbesar“.
Penggunadapatmenampilkanbarisberdasarkanrentangnilaijangkauan
menggunakan kondisi between. Jangkauan yang pengguna tentukan
berisibatasbawahdanbatasatas.PernyataanSELECTdalamGambar
2.7 mengembalikan baris dari tabel EMPLOYEEuntukkaryawanyang
2.4. MenggunakanKondisiIN
Untuk menguji nilai-nilai dalam satu kelompok keanggotaan tertentu,
pengguna dapat menggunakan operator IN. Kondisi IN juga dikenal
sebagaikondisikeanggotaan.KondisiINdapatdigunakandengansemua
jenisdata.ContohberikutmengembalikanbarisdaritabelEMPLOYEES
untuk setiap karyawan yang nama belakangnya termasuk dalam daftar
namadiklausaWHERE:
SELECT employee_id, manager_id, department_id
FROM employees
WHERE last_name IN ('Hartstein', 'Vargas');
Gambar2.8HasilEksekusiQuerydenganKondisiIN
Jika memuat karakter atau tanggal, maka harus diapit oleh tanda kutip
tunggal('').
2.5. MenggunakanKondisiLIKE
Pengguna mungkin tidak selalu tahu persis nilai yang akan dicari. Pengguna
dapat memilih baris yang cocok dengan pola karakter dengan menggunakan
operator LIKE. Operasi pencocokan pola karakter disebut sebagai pencarian
wildcard. Operator ini digunakan untuk membandingkan karakter atau
28
string atau CLOB dengan pola yang sudah ditetapkan dan akan
menghasilkannilai booleantrue jikapola yangdibandingkan cocokdan
akanmenghasilaknnilai booleanfalse jikapolatidakcocok dengannilai
yangdibandingkan.Polayangdianggapcocokpadaoperatorlikedapat
termasukpenggunaanduakarakterspesial yangbiasadisebut wildcards
yaitu underscore (_)yangsecara eksakhanyasatukarakteryangcocok
danpercent(%)zeroatau lebihkarakteryangcocok. Pernyataan SELECT
dalam Gambar 2.9 mengembalikan nama depan karyawan dari tabel
EMPLOYEES untuk setiap karyawan yang nama depannya dimulai
denganhurufS.
PerhatikanhurufbesarS.Namayangdiawalidenganhurufkecilstidak dikembalikan. Kondisi seperti ini dapat digunakan sebagai jalan pintas
untukbeberapaperbandinganBETWEEN.
Contoh berikut menampilkan last name dan menye wahire date semua
karyawan yang tanggal perekrutannya antara Januari 1995 dan
Desember1995:
SELECT last_name, hire_date
FROM employees
WHERE hire_date LIKE '%95';
29
Gambar2.10HasilEksekusiQuerydenganKondisiLIKE
2.6. MenggunakanKondisiNULL
Kondisi NULL termasuk kondisi IS NULL dan kondisi IS NOT NULL.
Kondisi IS NULL untuk menguji null. Sebuah nilai null berarti nilai tidak
tersedia,belum ditetapkan, tidak diketahui, atau tidak berlaku. Oleh
karenaitu,penggunatidakdapatmengujidengan=nullkarenatidakbisa
samaatautidaksamadengannilaiapapun.
ContohpadaGambar2.10mengambillastnamedanmanagerIDuntuk
semuakaryawanyangtidakmemilikimanagerID.
Berikutiniadalahcontohlain:Untukmenampilkanlastname,jobID,dan
komisi untuk semua karyawan yang tidak berhak menerima komisi,
menggunakanpernyataanSQLberikut:
SELECT last_name, job_id, commission_pct
FROM employees
Gambar2.11HasilEksekusiQuerydenganKondisiNULL
3. MembandingkanSecaraLogika
Sebuah kondisi logis menggabungkan hasil dari dua kondisi komponen
untuk menghasilkan hasil tunggal berdasarkan kondisi mereka, atau
30
membalikkan hasil dari suatu kondisi tunggal. Sebuah baris akan
dikembalikan hanya jika hasil keseluruhan kondisi adalah benar.
TigaoperatorlogikayangtersediadiSQL:
AND
Tabel 1KebenaranLogikanAND
Gambar2.11HasilEksekusiQuerydenganLogikaAND
31
AND TRUE FALSE NULL
TRUE TRUE FALSE NULL
FALSE FALSE FALSE FALSE
3.3. MenggunakanOperatorOR
Dalam contoh, hanya salah satu kondisi benar maka akan dipilih, oleh
karena itu, setiap karyawanyang memiliki job ID yang memuat string
'MAN'atauberpenghasilansebesar$10.000ataulebihakandipilih.
3.4. TabelKebenaranLogikaOR
Tabel berikut menunjukkan hasil gabungan dua ekspresi dengan logika
OR:
Tabel 2KebenaranLogikanOR
Gambar2.12HasilEksekusiQuerydenganLogikaOR
3.6. TabelKebenaranLogikaNOT
Tabel berikut menunjukkan hasil dari penerapan operator NOT untuk
kondisi:
Tabel 3KebenaranLogikanNOT
Operator NOT juga dapat digunakan dengan operator SQL lainnya,
sepertiBETWEEN,LIKE,danNULL.
... WHERE
job_idNOTIN ('AC_ACCOUNT', 'AD_VP')
... WHERE
salaryNOTBETWEEN10000 AND15000
... WHERE
last_name NOTLIKE '%A%'
... WHERE
commission_pctIS NOTNULL
Gambar2.13HasilEksekusiQuerydenganLogikaNOT
3.7. AturanProtokoler
Tabel 4AturanProtokoler
a. ContohPrioritasEksekusiOperatorAND
Dalamcontohini,adaduakondisi:
Kondisi pertama adalah bahwa job ID adalah AD_PRES
dansalarylebihbesardari$15.000.
KondisikeduaadalahbahwajobIDadalahSA_REP.
Olehkarenaitu,pernyataanSELECTberbunyisebagaiberikut:
"Pilih
baris
jika
seorang
karyawan
adalah
presiden
dan
berpenghasilan lebih dari $15.000, atau jika karyawan adalah
perwakilanpenjualan".
b. ContohMenggunakanKurung
Dalamcontohini,adaduakondisi:
1) Kondisi pertama adalah bahwa ID kerja adalah AD_PRES
atauSA_REP.
2) Kondisikeduaadalahbahwagajilebihbesardari$15.000.
Olehkarenaitu,pernyataanSELECTberbunyisebagaiberikut:
"Pilih baris jika seorang karyawan presiden atau perwakilan
penjualan,danjikakaryawanberpenghasilanlebihdari$15.000"
34
Gambar2.14HasilEksekusi Query
3.8. MenggunakanKlausaORDERBY
Urutan baris yang dikembalikan dalam hasil query tidak terdefinisi.
Klausa ORDER BY dapat digunakan untuk mengurutkan baris. Jika
penggunamenggunakanklausaORDERBY,klausainiharusmenjadi
kalimat terakhir dari pernyataan SQL. Pengguna dapat menentukan
ekspresi,alias,atauposisikolomsebagaikondisipilihanurutan.
Sintak:
FROM table
[WHERE condition(s)]
[ORDER BY {column, expr, numeric_position}
[ASC|DESC]];
dimana:
ORDERBY menentukan urutan di mana baris yang dapat
ditampilkan
ASC memerintahkan baris dalam urutan menaik (ini
adalahurutan default)
DESC memerintahkanbarisdalamurutanmenurun
JikaklausaORDERBYtidakdigunakan,urutantidakterdefinisi,dan
server Oracle mungkin tidak mengambil baris dalam urutan yang
samauntukpermintaanyangsama(permintaanpertamabelumtentu
mengambil urutan baris yang sama dengan urutan baris pada
permintaankedua).GunakanklausaORDERBYuntukmenampilkan
barisdalamurutantertentu.
35
Gambar2.15HasilEksekusi QuerydenganKlausaORDERBY
4. Penyortiran
Urutandatastandar(default)adalahmenaik:
a. Nilai-nilai numerik ditampilkan pertama dengan nilai terendah
(misalnya,1-999).
b. Tanggalditampilkanpertamadengannilaiawal(misalnya,01-JAN-92
sebelum01-JAN-95).
c. Nilai karakter yang ditampilkan dalam urutan abjad (misalnya, A
pertamadanterakhirZ).
d. NilaiNullditampilkanterakhiruntukurutanmenaikdanpertamauntuk
urutanmenurun.
e. Penggunadapatmengurutkandengankolomyangtidakdalamdaftar
SELECT.
Contoh
1) Untuk membalik urutan baris yang ditampilkan, gunakan kata kunci
DESC setelah nama kolom dalam klausa ORDER BY. Gambar
2.16(1)hasilpengurutankaryawanyangterbarudipekerjakan.
2) Pengguna dapat menggunakan kolom alias di klausa ORDER BY.
3) Pengguna dapat mengurutkan hasil query dengan lebih dari satu
kolom.Bataspengurutanadalahjumlahkolomyangdiberikandalam
tabel.DalamklausaORDERBY,menentukankolomdanmemisahkan
nama kolom menggunakan koma. Jika pengguna ingin membalik
urutan kolom, gunakan kata kunci DESC setelah nama kolom
Gambar2.16(3).
36
Gambar2.16Contoh QuerydenganORDERBY
D. AktivitasPembelajaran
Aktivitaspadakegiatanpembelajaran2,mencakuptopik-topikberikut:
1. Pemilihandatadanmengubahurutanbarisyangditampilkan.
2. MembatasibarisdenganmenggunakanklausaWHERE.
3. PenyortiranbarisdenganmenggunakanklausaORDERBY.
4. Menggunakan
variabel
substitusi
untuk
menambah
fleksibilitas
diurutkanberdasarkankolomtertentu.Manapernyataanyangtidakbenar
tentangklausaORDERBYdibawahini?
a. AscendingdanDescendingbisaditulisdenganASCdanDESCpada
klausaORDERBY
b. Hanyasatukolomyangbisadidefinisikansebagaidasarpengurutan
diklausaORDERBY
c. Beberapa kolom bisa digunakan sebagai dasar pengurutan data di
klausaORDERBY
d. KolomdiklausaORDERBYbisadigantidengannomorurutkolomdi
klausaSELECT
3. Andainginmenampilkan pegawai yang ada dibagian 30 dan namanya
diawalidengankarakter‘B’.Perintahyangbenaradalah:
a. SELECT nama_pegawai, gaji, kode_bag FROM pegawai WHERE
tabelpegawai.Manakahperintahyanggagaldieksekusi?
a. SELECT*FROMpegawai;
b. SELECT id_pegawai FROM pegawai WHERE nama_pegawai =
‘WIRAAULIA’;
c. SELECTid_pegawai,nama_pegawaiWHEREid_pegawai=1004;
d. SELECT*FROMORDERBYgaji;
5. Anda mengurutkan data pegawai berdasarkan gaji secara descending,
dalamkolomgajiterdapatpegawaiyangbelummemilikigajiataugajinya
NULL. Pada bagian mana pegawai yang gajinya NULL tesebut akan
ditampilkan?
a. Bagiantengahhasilquery
b. PegawaiyanggajinyaNULLtidakdimunculkan
c. Padabagianbawahhasil query
d. Padabagianatashasi query
F. Rangkuman
Padakegiatanpembelajaran2,telahdipelajaripenggunaanklausaWHERE
untukmembatasibarisyangakanditampilkanpadakeluaran.Penggunakan
kondisi perbandingan seperti BETWEEN, IN, LIKE, dan NULL serta
penggunaan operator logika AND, OR, dan NOT disamping penggunaan
ORDERBYuntukmengurutkanbarispadakeluaran.
G. UmpanBalikdanTindakLanjut
1. Apakah anda sudah mampu mengambil datadari database, dengan
melakukan pembatasan baris data serta menentukan urutan baris yang
akanditampilkan,danberapaprosentingkatkompetensinya?
2. Apakah anda sudah mampu menggunakan kondisi komparasi untuk
menampilkandatadanberapaprosentingkatkompetensinya?
42
Kegiatan
Pembelajaran
3
:
MenggunakanFungsiSingle-BarisUntukMenyesuaikanKeluaran
A. Tujuan
Setelah mengikuti kegiatan pembelajaran 3 ini diharapkan peserta diklat
dapat:
Mengeksplorasi fungsi single-baris yang berfokus fungsi karakter, numerik,
dan tanggal, serta fungsi-fungsi yang mengkonversi data dari tipe data
tertentuketipedatayanglain(misalnya,konversidaridatakarakterkedata
numerik).
B. IndikatorPencapaianKompetensi
1. MenjelaskanberbagaijenisfungsiyangtersediadalamSQL.
2. Menggunakan fungsi karakter, numerik, dan tanggal di pernyataan SELECT.
3. Menjelaskanpenggunaanfungsikonversi
C. UraianMateri
1. Fungsi-FungsiSQL
Fungsi merupakan ciri yang sangat menonjol dari SQL. Fungsi-fungsi
tersebutdapatdigunakanuntukmelakukanhal-halsebagaiberikut:
a. Melakukanperhitungandata
b. Memodifikasiitemdataindividu
c. Memanipulasikeluaranuntukkelompokbaris
d. Formattanggaldannomoruntuktampilan
e. Mengkonversitipedatakolom
Fungsi
SQL
kadang-kadang
mengambil
argumen
dan
selalu
mengembalikannilai.
Gambar3.1FungsiSQL
Adaduajenisfungsi:
FungsiSingle-baris
Fungsi Multiple-baris
1.1.FungsiSingle-Baris
Fungsi-fungsi ini beroperasi pada baris tunggal saja dan hasil
pengembaliannyaadalahsatuhasilperbaris.
1.2.
FungsiMultiple-Baris
Fungsi-fungsiinidapatmemanipulasikelompokbarisuntukmemberikan
satuhasilperkelompokbaris.
Gambar3.2IlustrasiFungsiSQL
Fungsi single-baris digunakan untuk memanipulasi item data. Fungsi ini
44
untuksetiapbaris.
Argumendapatberupasalahsatudariberikutini :
Nilaiataukonstantayangdisiapkanolehpengguna
NilaiVariabel
NamaKolom
Ekspresi
Ciri-cirifungsisingle-barismeliputi:
Bertindakpadasetiapbarisyangdikembalikandalam query
Satuhasilperbaris
Mungkinmengembalikan nilaidata dari tipe yang berbeda daripada
yangdireferensikan
Mungkinmengharapkansatuataulebihargumen
DapatdigunakandalamSELECT,WHERE,danORDERBY
Dalamsintak:
function_name adalahnamafungsi
arg1,arg2 adalahargumenyangakandigunakanoleh
fungsi. Hal ini dapat diwakili oleh nama
kolomatauekspresi.
Gambar3.3DeklarasiNamaFungsi
Character functions: Menerima masukan berupa karakter dan
pengembaliannyadapatberupanilaikarakterdannilainumber
Number functions: Menerima masukan numerik dan
mengembalikannilai-nilainumerik
Date functions: Beroperasi pada nilai-nilai dari tipe data DATE (Semua fungsi tanggal mengembalikan nilai tipe data DATE
kecuali fungsi MONTHS_BETWEEN, yang mengembalikan nilai
number.)
Gambar3.4Jenis-JenisFungsi Single-Baris
1.3.
FungsiKarakter
Gambar3.5KlasifikasiFungsiKarakter
Fungsi karakter single-baris menerima data karakter sebagai masukan
dandapatmengembalikankarakterdannilainumerik.
Fungsikarakterdibagimenjadiberikut:
FungsiKasus-manipulasi
FungsiKarakter-manipulasi
46
Tabel 5FungsidanKegunaannya
Fungsi Kegunaan
LOWER(columm/expression) Mengkonversi nilai-nilai karakter
alphabetmenjadihurufkecil
UPPER(columm/expression) Mengkonversi nilai-nilai karakter
alphabetmenjadihurufbesar
Pad nilaikarakterpadagaristepi
47
1.4. FungsiManipulasi Case
LOWER, UPPER, dan INITCAP adalah tiga fungsi untuk mengkonversi
ataumemanipulasi case.
LOWER Mengkonversikarakter string campuranhurufbesarke
hurufkecil
UPPER Mengkonversikarakterstringcampuranhurufkecilke
hurufbesar
INITCAP Mengubah huruf pertama dari setiap kata ke huruf
besardanhurufyangtersisamenjadiatautetaphuruf
kecil
SELECT 'The job id for
'||UPPER(last_name)||' is '
||LOWER(job_id) AS "EMPLOYEE DETAILS"
FROM employees;
Gambar3.6HasilKonversidenganFungsi String
1.5. MenggunakanFungsiManipulasiCase
Gambar 3.7 menampilkan jumlah karyawan, nama, dan nomor
departemenpadaperusahaanHiggins.KlausaWHEREpadapernyataan
SQLpertamamenentukannamakaryawanhiggins.Karenasemuadata
dalamtabelEMPLOYEESdisimpandalam case yangtepat,namahiggins
tidak dapat ditemukan kecocokannya dalam tabel, dan tidak ada baris
yang dipilih. Klausa WHERE pada pernyataan SQL kedua menentukan
bahwanamakaryawandalamtabelEMPLOYEESdibandingkandengan
48
higgins,mengubahkolomLAST_NAMEmenjadihurufkeciluntuktujuan
perbandingan. Karena kedua nama sekarang berhuruf kecil, kecocokan
ditemukan dan satu baris yang dipilih. Klausa WHERE dapat ditulis
dengancaraberikutuntukmenghasilkanhasilyangsama:
...WHERE last_name = 'Higgins'
Nama dalam keluaran muncul seperti yang disimpan pada database.
Untuk menampilkan nama dengan hanya huruf pertama dalam huruf
besar,gunakanfungsiUPPERdalampernyataanSELECT.
SELECT employee_id, UPPER(last_name),
department_id
FROM employees
WHERE INITCAP(last_name) = 'Higgins';
Gambar3.7Hasil QueryMenggunakanFungsiManipulasi Case
1.6. FungsiManipulasiKarakter
CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, dan TRIM
merupakanfungsikaraktermanipulasi.
CONCAT :Menggabung
nilai
bersama-sama (dibatasi untuk
menggunakanduaparameterdenganCONCAT)
SUBSTR :Ekstrak string berdasarpadapanjangyangditentukan
LENGTH :Menunjukkanpanjangstringsebagainilainumerik
INSTR :Menemukanposisinumerikdarikaraktertertentu
LPAD : Pad nilaikarakterpadagaristepisebelahkanan
RPAD :Padnilaikarakterpadagaristepisebelahkiri
TRIM :Memangkasataumenyisakankarakter(atauke-duanya) dari string karakter (Jika trim_character atau trim_source) adalah
karakterliteral,penggunaharusmengapitdalamtandakutiptunggal.
1.7. MenggunakanFungsiKarakterManipulasi
Gambar 3.8 menampilkan nama depan dan nama belakang karyawan
bergabungbersama-sama, panjangnama belakang, dan posisi numerik
dari huruf nama belakang karyawan untuk seluruh karyawan yang
memilikiREPyangadadalamjobIDdimulaipadaposisikeempatdarijob
ID. Contoh
Memodifikasi pernyataan SQL dalam Gambar 3.8 untuk menampilkan
datakaryawanyangnamanyadiakhiridenganhurufn.
SELECT employee_id, CONCAT (first_name, last_name)
NAME,LENGTH (last_name), INSTR(last_name, 'a')
"Contains 'a'?"
FROM employees
WHERE SUBSTR(last_name, -1, 1) = 'n';
Gambar3.8Hasil QueryMenggunakanFungsiKarakterManipulasi
Fungsi numerik menerima masukan numerik dan mengembalikan
nilai-nilainumerik.Bagianinimenjelaskanbeberapafungsinumerik.
Tabel 6FungsiNumerik
Gambar3.9Hasil QuerydenganFungsiNumerik
1.9. FungsiPembulatan(ROUND)
Fungsi pembulatan nilai pada kolom, ekspresi, atau nilai desimal ke-n.
Jikaargumenkeduaadalah0atauhilang,nilaidibulatkankenoldesimal.
Jika argumen kedua adalah 2, nilai dibulatkan ke dua tempat desimal.
Sebaliknya,jikaargumenkeduaadalah-2,nilaidibulatkankeduadesimal
ke kiri (dibulatkan ke unit terdekat dari 10). Fungsi ROUND juga dapat
digunakandenganfungsitanggal.
1.10.TabelDUAL
TabelDUALdimilikiolehpenggunaSYSdandapatdiaksesolehsemua
pengguna. Tabel ini berisi satu kolom, DUMMY, dan satu baris dengan
nilaiX.TabelDUALbergunaketikapenggunainginmengembalikannilai
sekalisaja(misalnya, nilaikonstan, pseudocolumn, atau ekspresiyang
tidak berasal dari tabel data pengguna). Tabel DUAL umumnya
digunakan untuk sintak SELECT dan klausa kelengkapannya, karena
51
SELECT dan klausa FROM keduanya adalah wajib, dan beberapa
Gambar3.10Hasil QueryFungsiROUND
1.11.
FungsiTRUNC
Fungsi TRUNC memotong nilai pada kolom, ekspresi, atau atau nilai
desimal ke-n. Fungsi TRUNC bekerja dengan argumen mirip dengan
fungsiROUND.Jikaargumenkeduaadalah0atauhilang,nilaidipotong
ke nol desimal. Jika argumen kedua adalah 2, nilai dipotong untuk dua
tempatdesimal.Sebaliknya,jikaargumenkeduaadalah-2,nilaidipotong
untuk dua desimal ke kiri. Jika argumen keduaadalah-1, nilai tersebut
dipotong ke satu tempat desimal ke kiri. Seperti fungsi ROUND, fungsi
TRUNCdapatdigunakandenganfungsitanggal.
Gambar3.11Hasil QueryFungsiTRUNC
52
1.12.
FungsiMOD
Fungsi MOD mendapatkan hasil sisa argumen pertama dibagi dengan
argumen kedua. Gambar 3.12 menghitung hasil sisa gaji setelah
membaginyadengan5.000untuksemuakaryawanyangjobIDtugasnya
adalahSA_REP.
Gambar3.12Hasil QueryFungsiMOD
2. BekerjadenganTanggal
2.1. FormatTanggal
Database menyimpan tanggal dalam format numerik internal yang
dan format masukan untuk setiap tanggal adalah DD-MON-RR. Oracle database memberlakukan tanggal valid adalah antara 1 Januari 4712
B.C.,dan31Desember9999A.D.
Gambar3.13FormatTanggalpadaOracle
Gambar 3.13, kolom keluaran HIRE_DATE ditampilkan secara default
dengan format DD-MON-RR. Namun, tanggal tidak disimpan dalam
database dalam format ini. Semua komponen tanggal dan waktu
disimpan. Jadi, meskipun HIRE_DATE seperti 17-Juni-87 ditampilkan
53
sebagaihari,bulan,dantahun,adajugawaktudaninformasiabadterkait
dengantanggal.Data lengkap17Juni1987, 05:10:43, disimpansecara
internalsebagaiberikut:
Abad Tahun Bulan Hari Jam Menit Detik
19 87 06 17 17 10 43
TipedataDATEselalumenyimpaninformasitahunsebagaiangkaempat
digit internal: dua digit untuk abad dan dua digit untuk tahun. Sebagai
contoh, database Oracle menyimpan tahun 1987 atau 2004, dan tidak
hanyasebagai87atau04.
2.3. FungsiSYSDATE
SYSDATEadalahfungsitanggalyangmengembalikantanggaldanwaktu
server database sekaramg. Pengguna dapat menggunakan SYSDATE
sepertimenggunakannamakolomlainnya.
Contoh :
SELECT SYSDATE
FROM DUAL;
Gambar3.14FungsiSYSDATEpada Query
2.4.PenambahandanPenguranganTanggal
penggunadapatmelakukanperhitungandenganmenggunakanoperator
aritmetika seperti penambahan dan pengurangan. Pengguna dapat
melakukanoperasiberikut:
54
Tabel 7OperasipadaTanggal
Gambar 3.15 menampilkan nama belakang dan jumlah minggu untuk
semua karyawan di departemen 90. Tanggal di mana karyawan mulai
dipekerjakan (hire-date) dikurangi dengan tanggal saat ini (SYSDATE)
danmembagihasilnyadengan7untukmenghitungjumlahminggubahwa
seorangkaryawansudahbekerja.
Catatan:SYSDATEadalahfungsiSQLyangmengembalikantanggaldan
waktu. Hasil eksekusi mungkin berbeda dari contoh, karena tenggal
sekarang dikurangi dengan tanggal karyawan mulai bekerja, diperoleh
angkanegatif(perbedaanadalahangkanegatif).
Gambar3.15Hasil QuerySYSDATEdenganManipulasiTanggal
2.5. FungsiDate
Fungsi Date mengembalikan nilai dari tipe data DATE kecuali
MONTHS_BETWEEN,yangmengembalikannilainumerik.
Menemukan jumlah bulan antara date1 dan date2. Hasilnya bisa
positif atau negatif. Jika date2 adalah lebih awal date1, hasilnya
positif;jikadate1lebihawaldaridate2,hasilnyanegatif.
b. ADD_MONTHS(date,n),
Menambahkan sejumlah n dari bulan kalender. Nilai harus integer
danbisanegatif.
c. NEXT_DAY(date,'char'),
Menemukan tanggal hari tertentu berikutnya dalam minggu ('char')
padatanggalsesuaidate.Nilaicharadalahsejumlahkarakterstring
yangmewakilihari.
d. LAST_DAY(date),
Menemukantanggalhariterakhirdaribulanyangberisitanggal
e. ROUND(date[,'fmt']),
Mengembalikan tanggal dibulatkan ke unit yang ditentukan oleh
format model fmt. Jika format model fmt dihilangkan, tanggal
dibulatkanketerdekathari.
f.
TRUNC(date [,'fmt']),
Pengembaliantanggaldenganporsiwaktuharidipotongkeunityang
ditentukanolehmodelformatfmt.Jikamodelformatfmtdihilangkan,
tanggaldipotongsatuhari.
Gambar3.16FungsiTRUNCdalamPemotonganTanggal
Misalnya,menampilkanIDkaryawan,tanggalmerekamulaibekerja,
jumlah bulan bekerja, enam bulan tanggal review, Hari Jum’at
pertamasetelahtanggalmerekamulaibekerja,danhariterakhirdari
bulan mereka mulai bekerja untuk seluruh karyawan yang telah
bekerjaselamakurangdari70bulan.
SELECT employee_id, hire_date,
Gambar3.17Hasil QuerydenganManipulasiTanggal
Fungsi ROUND dan TRUNC dapat digunakan untuk nilai numerik
dantanggal.Ketikadigunakandengantanggal,fungsi-fungsiinibulat
atau memotong dengan model format yang ditentukan.Oleh karena
ROUND(hire_date, 'MONTH'), TRUNC(hire_date,
'MONTH')
FROM employees
WHERE hire_date LIKE '%97';
Gambar3.18Hasil QuerydenganfungsiROUNDdanTRUNC
3. FungsiBersarang(NestingFunction)
Fungsi single-baris dapat bersarang ke dalam. Fungsi bersarang
dievaluasidaritingkatterdalamketingkatterluar.
57
Gambar3.19menampilkannamabelakangdarikaryawandidepartemen
60.EvaluasipernyataanSQLmelibatkantigalangkahyaitu:
a. Fungsibagiandalammengambildelapankarakterpertamadarinama
belakang.
Result1=substr(LAST_NAME, 1, 8)
b. Fungsibagianluarmerangkaihasildengan_us.
Result2=CONCAT(Result1, '_ US)
c. Fungsiterluarmengkonversihasilkehurufbesar.
Seluruh ekspresi menjadi judul kolom karena tidak ada kolom alias
Contoh :
Gambar3.19Hasil QuerydenganKonversiTO_CHAR
58
4. Fungsi-FungsiUmum
Fungsi ini bekerja dengan tipe data dan berhubungan dengan
penggunaannilainulldalamdaftarekspresi.
Tabel 8FungsiUmum
4.1. FungsiNVL
Untukmengkonversinilainulluntuknilaiyangsebenarnya,menggunakan
NVL(expr1, expr2)
dimana
expr1adalahnilaisumberatauekspresiyangmungkinberisi
null
expr2adalahnilaitargetuntukmengkonversinol
PenggunadapatmenggunakanfungsiNVLuntukmengkonversitipedata,
tetapi nilai kembali selalu sama dengan tipe data dari expr1.
KonversiNVLuntukberbagaijenisdata.
59
4.2. MenggunakanFungsiNVL
Untukmenghitungkompensasitahunandarisemuakaryawan,pengguna
perlu mengalikan gaji bulanan dengan 12 dan kemudian hasilnya
mendapatkankomisi.Jikaadakolomnilaidalamsebuahekspresiadalah
null, hasilnya adalah null. Untuk menghitung nilai semua karyawan,
penggunaharus mengubahnilai null untuk angkasebelum menerapkan
operator aritmetika. Dalam Gambar 3.20, fungsi NVL digunakan untuk
mengkonversinilainullkenol.
Gambar3.20QueryMenggunakanFungsiNVL
FungsiNVL2menelitiekspresipertama.Jikaekspresipertamatidaknull,
makafungsiNVL2mengembalikanekspresikedua.Jikaekspresipertama
adalahnull,makaekspresiketigadikembalikan.
Sintak
NVL2 (expr1, expr2, expr3)
60
dimana
a. expr1adalahnilaisumberatauekspresiyangmungkinberisinol b. expr2adalahnilaiyangdikembalikanjikaexpr1tidaknull
c. expr3adalahnilaiyangdikembalikanjikaexpr1adalahnull
Dalam
contoh
yang
ditunjukkan
pada
Gambar
3.21,
kolom
COMMISSION_PCT diperiksa. Jika sebuah nilai terdeteksi, ekspresi
kedua SAL + COMM dikembalikan. Jika kolom COMMISSION_PCT
memiliki atau menyimpan nilai null, ekspresi ketiga SAL dikembalikan.
Argumenexpr1dapatmemilikitipedata.Argumenexpr2danexpr3dapat
memilikitipedatakecualitipedataLONG.Jikajenisdataexpr2danexpr3
berbeda, server akan mengkonversi expr3 dengan jenis data expr2
sebelum membandingkan mereka kecuali expr3 adalah konstan null.
Dalamkasusterakhir,tipedatakonversitidakdiperlukan.Tipedatadari
nilai pengembalian selalu sama dengan tipe data dari expr2, kecuali
expr2 adalah data karakter, maka nilai pengembalian memilikitipe data
VARCHAR2.
Gambar3.21 QuerydenganFungsiNVL2
4.4. MenggunakanFungsiNULLIF
FungsiNULLIFmembandingkanduaekspresi.Jikamerekasama,fungsi
mengembalikan null. Jika mereka tidak sama, fungsi mengembalikan
ekspresipertama.PenggunatidakdapatmenentukanNULLliteraluntuk
ekspresipertama.
Sintak
NULLIF (expr1, expr2)
dimana
a. expr1adalahnilaisumberdibandingkandenganexpr2
b. expr2 adalah nilai sumber dibandingkan dengan expr1 (Jika tidak
samadenganexpr1,expr1dikembalikan.)
Gambar
3.22
panjang
nama
depan
dalam
tabel
EMPLOYEES
dibandingkan dengan panjang nama belakang dalam tabel
EMPLOYEES.Ketika panjang dari nama depan dan nama belakang
sama,nilai null ditampilkan tetapi jika tidak sama, maka panjang nama
depanditampilkan.
Catatan:FungsiNULLIFsecaralogissetaradenganekspresiCASE.
CASE WHEN expr1 = expr 2 THEN NULL ELSE
expr1 END
Gambar3.22QueryMenggunakanFungsiNULLIF
4.5. MenggunakanFungsiCOALESCE
a. expr1ekspresiinidikembalikanjikatidaknull
b. expr2mengembalikanekspresiinijikaekspresipertamaadalahnull
danekspresiinitidaknull
c. exprnmengembalikanekspresiinijikaekspresisebelumnyanull
Semuaekspresiharusmemilikitipedatayangsama.
DalamcontohyangditunjukkanpadaGambar3.23,jikanilai
MANAGER_IDtidaknull,iaditampilkan.JikanilaiMANAGER_IDadalah
null,makaCOMMISSION_PCTditampilkan.Jikanilai-nilaiMANAGER_ID
danCOMMISSION_PCTadalahnull,makanilai-1ditampilkan.
Gambar3.23HasilEksekusi QuerydenganFungsiCOALESCE
5. EkspresiBersyarat
Duametodeyangdigunakanuntukmelaksanakanpengolahanbersyarat
literalNULLuntuksemua return_exprs dan else_expr tersebut.
Semuaekspresi(expr,comparison_expr,danreturn_expr)harusmemiliki
tipe data yang sama, dapat berupa CHAR, VARCHAR2, NCHAR, atau
NVARCHAR2.
5.2. MenggunakanEkspresiCASE
Pernyataan SQL pada Gambar 3.24, nilai job_id telah diuraikan atau
diterjemahkan.Jika job_idadalahIT_PROG,kenaikan gajiadalah 10%;
jika job_id adalah ST_CLERK, kenaikan gaji 15%; jika job_id adalah
SA_REP,kenaikangajiadalah20%.Untuksemuaperanpekerjaanlain,
tidakadakenaikangaji.
PernyataanyangsamadapatditulisdenganfungsiDECODE.Contohdi
atas merupakan contoh pencarian yang menggunakan ekspresi CASE.
PencarianmenggunakanekspresiCASEterjadidarikirikekanansampai
pada kondisi yang dicari telah ditemukan, maka ekspresi pengembalian
akandikembalikan.Jikatidakadakondisiyangditemukan,tetapiklausa
ELSE ada, maka akan dikembalikan ekspresi pengembalian yang
terdapatdalamklausaELSE;jikatidak,makanilaiNULLdikembalikan.
SELECT last_name,salary,
Gambar3.24 QuerydenganKondisiCASE
5.4. MenggunakanFungsiDECODE
PernyataanSQLpadaGambar3.25,nilaijob_iddiuji.Jikajob_idadalah
IT_PROG, kenaikan gaji adalah 10%; jika job_id adalah ST_CLERK,
kenaikan gajia dalah 15%; jika job_id adalah SA_REP, kenaikan gaji
adalah20%.Untuksemuaperanpekerjaanlain,tidakadakenaikangaji.
Pernyataan yang sama dapat dinyatakan dalam pseudocode sebagai
Gambar3.25 QuerydenganFungsiDECODE
D. AktivitasPembelajaran
Aktivitaspadakegiatanpembelajaran3,mencakuptopik-topikberikut:
1. Pembuatan query yang memerlukan penggunaan fungsi numerik,
karakter,dantanggal.
2. Melakukanperhitungantahundanbulanuntukmemecahkanmasalah.
3. Menentukantanggalseseorangmulaibekerja
E. Latihan/Kasus/Tugas
1. Andaakanmengeksekusibeberapafungsimatematika.Tabelapayang
akanandagunakanuntukmelakukankalkulasimatematikadariekspresi
ataunilaiyangbukandiambildaritabeldidalamdatabase?
a. EMP
b. EMPLOYEES
c. DUAL
2. AndadimintamenulispernyataanSQLuntukmengeksekusikenaikangaji
4. Dariperintahtentangoperasidatatanggal,manayanggagalpadasa’at
dieksekusi?
Padakegiatanpembelajaran3,telahdipelajarifungsi single-barisyangdapat
digunakanuntukdapatmemanipulasiberikut:
DataCharacter :LOWER,UPPER,INITCAP,CONCAT,SUBSTR,
INSTR,danLENGTH.
DataNumerik :ROUND,TRUNC,danMOD
DataTanggal :MONTHS_BETWEEN,ADD_MONTHS,NEXT_
DAY,LAST_DAY,ROUND,danTRUNC
HalpentingyangperludiIngatadalah:
Nilai tanggal juga dapat menggunakanoperator aritmetika. Fungsi konversi
dapat mengkonversi karakter, tanggal, dan nilai-nilai numerik:
TO_CHAR,TO_DATE, TO_NUMBER. Ada beberapa fungsi yang
berhubungandengannulls,termasukNVL,NVL2,NULLIF,danCOALESCE.
Logika IF-THEN-ELSE dapat diterapkan dalam pernyataan SQL dengan
menggunakanekspresiCASEataufungsiDECODE.
SYSDATE adalah fungsi tanggal yang mengembalikan tanggal dan waktu.
Untuk melakukan kalkulasi matematika dari nilai yang bukan diambil dari
tabeldidalamdatabasedigunakantabeldummyyangdisebuttabelDUAL.
G. UmpanBalikdanTindakLanjut
ApakahandasudahmampumenulissubqueriesdiklausaWHEREpada
pernyataanSQLlainuntuk mendapatkannilai-nilaiyangkondisinyatidak
71
daribeberapatabel(lebihdarisatutabel).
2. MenggunakanJOINuntukmelihatinformasidaribeberapatabel.
3. Menampilkandatayangdiperolehdaribeberapatabel.
B. IndikatorPencapaianKompetensi
1. MenulispernyataanSELECTuntukmengaksesdatadaribeberapatabel
(lebihdarisatutabel)denganmenggunakanequijoindannonequijoin.
2. Jointabeluntukdirinyasendiridenganmenggunakanself-join.
3. Melihat data yang secara umum tidak memenuhi kondisi join dengan
menggunakan OuterJoin.
4. MenghasilkanprodukCartesiansemuabarisdariduatabelataulebih.
C. UraianMateri
1. PenggabunganTabelMenggunakanSQL
1.1. MendapatkanDatadariBeberapaTabel
Kadang-kadangpenggunaperlumenggunakandatalebihdarisatutabel.
PadaGambar4.1,ditampilkandatadariduatabelyangterpisah:
EmployeeIDadadalamtabelEMPLOYEES.
Department
ID
ada
di
tabel
EMPLOYEES dan
di
tabel
DEPARTMENTS.
NamaDepartmentadadalamtabelDEPARTMENTS.
Untuk menghasilkan laporan yang mencakup hal-hal di atas, maka
pengguna perlu untuk menghubungkan tabel EMPLOYEES dan tabel
72
Gambar4.1Tabelyangakandimanipulasi
1.2. PengertianJOIN
Untuk menggabung tabel, pengguna dapat menggunakan sintak JOIN
yangkompatibeldenganSQLStandar1999.
Dalamdatabaseterdiridaribeberapatabel,setiaptabelmenyimpandata
yang berbeda-beda. Jika pengguna ingin menampilkan informasi yang
datanyadiperolehdaribeberapatabel,makapenggunaharusmelakukan
join. Join antaraduatabelmemerlukankondisi join yangdigunakanuntuk
menghubungkandatadarisatutabelkedatayangberadapadatabellain.
Kondisi join didefinisikanpadaklausaWHERE.
1.3. KondisiJOINdanJenisJOIN
Berdasar pada tanda pembanding yang digunakan pada kondisi join di
klausaWHERE, join dibagikedalamduabagianyaitu:
Equi Join adalah join antara dua tabel yang kondisi join nya
menggunakanoperatorsamadengan(=)
Non-equi Join adalah join antara dua tabel yang kondisi join-nya
menggunakanselainoperatorsamadengan:<,>,BETWEEN,serta
tandapembandinglainnya.
Sedangkandaridatayangdihasilkanjenisjoinadatiga,yaitu: