MODUL PEMBINAAN KARIER Mata Pelajaran Reakayasa Perangkat Lunak Sekolah Menengah Kejuruan (SMK) Kelompok Kompetensi B Penulis : Joko Pitono Direktorat Jenderal Guru dan Tenaga Kependidikan Kementrian Pendidikan dan Kebudayaan Tahun 2017 Penulis: 1. Joko Pitono Email : [email protected] Penelaah: 1. Siera Maulida Asrin, S.T [081562783394], Email: [email protected] 2. Abdul Haliq, S.Pd., M.Pd. [085341259862] Email : [email protected] 3. Hasrul Bakri, S.Pd, M.T. [081355723687] Email : [email protected] Ilustrator : 1. Siera Maulida Asrin, S.T [081562783394], Email: [email protected] 2. Faizal Reza Nurzeha, A.Md [085242177945] Email : [email protected] Layouter : 1. Janwar Fajrin, S.T [085299970328] Email : [email protected] Copyright ©2017 Lembaga Pengembangan dan Pemberdayaan Pendidikan Tenaga Kependidikan Bidang Kelautan Perikanan Teknologi Informasi dan Komunikasi. Hak Cipta Dilindungi Undang-Undang Dilarang mengkopi sebagian atau keseluruhan isi buku ini untuk kepentingan komersial tanpa izin tertulis dari Kementrian Pendidikan Kebudayaan. i ii KATA SAMBUTAN Peran guru profesional dalam proses pembelajaran sangat penting sebagai kunci keberhasilan belajar siswa. Guru profesional adalah guru yang kopeten membangun proses pembelajaran yang baik sehingga dapat menghasilkan pendidikan yang berkualitas. Hal ini tersebut menjadikan guru sebagai komponen yang menjadi fokus perhatian pemerintah pusat maupun pemerintah daerah dalam peningkatan mutu pendidikan terutama menyangkut kopetensi guru. Pengembangan profesionalitas guru melalui program Pembinaan karier (GP) merupakan upaya peningkatan kompetensi untuk semua guru. Sejalan dengan hal tersebut, pemetaan kopetensi guru telah dilakukan melalui uji kompetensi guru (UKG) untuk kompetensi pedagogik dan profesional pada akhir tahun 2015. Hasil UKG menunjukan peta kekuatan dan kelemahan kompetensi guru dalam penguasaan pengetahuan. Peta kompetensi guru tersebut dikelompokan menjadi 10 (sepuluh) kelopok kompetensi. Tindak lanjut pelaksanaan UKG diwujudkan dalam bentuk pelatihan guru pasca UKG melalui program Pembinaan karier. Tujuannya untuk meningkatkan kompetensi guru sebagai agen perubahaan dan sumber belajar utama bagi peserta didik. Program Pembinaan karier dilaksanakan melalui pola tatap muka, daring (online) dan campuran (blended) tatap muka dengan online. Pusat Pengembangan dan Pemberdayaan Pendidik dan Tenaga Kependidikan (PPPPTK), Lembaga Pengembangan dan Pemberdayaan Pendidik dan Tenaga Kependidikan Kelautan Perikanan Teknologi Informasi dan Komunikasi (LP3TK KPTK) dan Lembaga Pengembangan dan Pemberayaan Kepala Sekolah (LP2KS) merupakan Unit Pelaksana Teknis di lingkungan Direktorat Jendral Guru dan Tenaga Kependidikan yang bertanggung jawab dalam mengembangkan perangkat dan melaksanakan peningkaan kompetensi guru sesuai dengan bidangnya. Adapun perangkat pembelajaran yang dikembangkan tersebut adalah modul untuk program Pembinaan karier tatap muka dan pembinaan karier online untuk semua mata pelajaran dan kelompok iii kompetensi. Dengan modul ini diharapkan Pembinaan Karier memberikan sumbangan yang sangat besar dalam peningkatan kualitas kompetensi guru. Mari kita sukseskan Program Pembinaan Karier ini untuk mewujudkan Guru Mulia Karena Karya. Jakarta, Februari 2017 Direktur Jendral Guru dan Tenaga Kependidikan Sumarna Surapranata, Ph.D NIP. 195908011985031002 iv KATA PENGANTAR Profesi guru dan tenaga kependidikan harus dihargai dan dikembangkan sebagai profesi yang bermartabat sebagaimana diamanatkan Undang-Undang Nomor 14 Tahun 2005 tentang Guru dan Dosen. Hal ini dikarenakan guru dan tenaga kependidikan merupakan tenaga profesional yang mempunyai fungsi, peran, dan kedudukan yang sangat penting dalam mencapai visi pendidikan 2025 yaitu “Menciptakan Insan Indonesia Cerdas dan Kompetitif”. Untuk itu guru dan tenaga kependidikan yang profesional wajib melakukan pengembangan keprofesian berkelanjutan. Buku pedoman Pedoman Penyusunan Modul Diklat Pengembangan Keprofesian Berkelanjutan Bagi Guru dan Tenaga Kependidikan untuk institusi penyelenggara program pengembangan keprofesian berkelanjutan merupakan petunjuk bagi penyelenggara pelatihan di dalam melaksakan pengembangan modul yang merupakan salah satu sumber belajar bagi guru dan tenaga kependidikan. Buku ini disajikan untuk memberikan penyusunan modul sebagai salah satu bentuk bahan informasi tentang dalam kegiatan pengembangan keprofesian berkelanjutan bagi guru dan tenaga kependidikan. Pada kesempatan ini disampaikan ucapan terima kasih dan penghargaan kepada berbagai pihak yang telah memberikan kontribusi secara maksimal dalam mewujudkan buku ini, mudah-mudahan buku ini dapat menjadi acuan dan sumber inspirasi bagi guru dan semua pihak yang terlibat dalam pelaksanaan penyusunan modul untuk pengembangan keprofesian berkelanjutan. Kritik dan saran yang membangun sangat diharapkan untuk menyempurnakan buku ini di masa mendatang. Makassar, Februari 2017 Kepala LPPPTK KPTK Gowa Sulawesi Selatan, Dr. H. Rusdi, M.Pd, NIP 19650430 199103 1 004 v vi DAFTAR ISI Sampul ................................................................................................................. i KATA SAMBUTAN .............................................................................................iii KATA PENGANTAR ............................................................................................ v DAFTAR ISI ........................................................................................................ vii DAFTAR TABEL ................................................................................................ xv PENDAHULUAN ................................................................................................. 1 A. Latar Belakang ........................................................................................... 1 B. Tujuan ........................................................................................................ 2 C. Peta Kompetensi ........................................................................................ 2 D. Ruang Lingkup ........................................................................................... 3 E. Saran Cara Penggunaan Modul ................................................................. 4 Kegiatan Pembelajaran 1 .................................................................................... 7 A. Pengantar .................................................... Error! Bookmark not defined. B. Tujuan ........................................................................................................ 7 C. Indikator Pencapaian Kompetensi .............................................................. 7 D. Uraian Materi .............................................................................................. 7 E. Aktivitas Pembelajaran ............................................................................. 17 F. Latihan / Kasus / Tugas ............................................................................ 18 G. Rangkuman .............................................................................................. 19 H. Umpan Balik dan Tindak Lanjut ................................................................ 20 I. Kunci Jawaban ......................................................................................... 21 Kegiatan Pembelajaran 2 : ................................................................................ 25 A. Tujuan ...................................................................................................... 25 B. Indikator Pencapaian Kompetensi ............................................................ 25 C. Uraian Materi ............................................................................................ 25 D. Aktivitas Pembelajaran ............................................................................. 39 E. Latihan / Kasus / Tugas ............................................................................ 40 F. Rangkuman .............................................................................................. 41 G. Umpan Balik dan Tindak Lanjut ................................................................ 42 H. Kunci Jawaban ......................................................................................... 42 vii Kegiatan Pembelajaran 3 : ................................................................................. 46 A. Tujuan ...................................................................................................... 46 B. Indikator Pencapaian Kompetensi ............................................................ 46 C. Uraian Materi ............................................................................................ 46 D. Aktivitas Pembelajaran ............................................................................. 69 E. Latihan / Kasus / Tugas ............................................................................ 69 F. Rangkuman .............................................................................................. 71 G. Umpan Balik dan Tindak Lanjut ................................................................ 71 H. Kunci Jawaban ......................................................................................... 72 Kegiatan Pembelajaran 4 : ................................................................................. 76 A. Tujuan ...................................................................................................... 76 B. Indikator Pencapaian Kompetensi ............................................................ 76 C. Uraian Materi ............................................................................................ 76 D. Aktivitas Pembelajaran ............................................................................. 88 E. Latihan / Kasus / Tugas ............................................................................ 89 F. Rangkuman .............................................................................................. 90 G. Umpan Balik dan Tindak Lanjut ................................................................ 91 H. Kunci Jawaban ......................................................................................... 92 Kegiatan Pembelajaran 5: .................................................................................. 96 A. Tujuan ...................................................................................................... 96 B. Indikator Pencapaian Kompetensi ............................................................ 96 C. Uraian Materi ............................................................................................ 96 D. Aktivitas Pembelajaran ........................................................................... 103 E. Lathan / Kasus / Tugas ........................................................................... 104 F. Rangkuman ............................................................................................ 105 G. Umpan Balik dan Tindak Lanjut .............................................................. 105 H. Kunci Jawaban ....................................................................................... 106 Kegiatan Pembelajaran 6: ................................................................................ 110 A. Tujuan .................................................................................................... 110 B. Indikator Pencapaian Kompetensi .......................................................... 110 C. Uraian Materi .......................................................................................... 110 D. Aktivitas Pembelajaran ........................................................................... 115 E. Latihan / Kasus / Tugas .......................................................................... 116 F. Rangkuman ............................................................................................ 117 viii G. Umpan Balik dan Tindak Lanjut .............................................................. 118 H. Kunci Jawaban ....................................................................................... 118 Kegiatan Pembelajaran 7: ............................................................................... 122 A. Tujuan .................................................................................................... 122 B. Indikator Pencapaian Kompetensi .......................................................... 122 C. Uraian Materi .......................................................................................... 122 D. Aktivitas Pembelajaran ........................................................................... 124 E. Latihan / Kasus / Tugas .......................................................................... 125 F. Rangkuman ............................................................................................ 126 G. Umpan Balik dan Tindak Lanjut .............................................................. 127 H. Kunci Jawaban ....................................................................................... 127 EVALUASI ....................................................................................................... 129 KUNCI JAWABAN ........................................................................................... 134 PENUTUP ....................................................................................................... 135 DAFTAR PUSTAKA......................................................................................... 137 GLOSARIUM ................................................................................................... 139 ix x DAFTAR GAMBAR Gambar 1. 1 Gambaran Relasional Database ..................................................... 8 Gambar 1. 2 Contoh Skenario Model Data .......................................................... 9 Gambar 1. 3 Model Hubungan Entitas (Entity Relationship Model) .................... 10 Gambar 1. 4 Gambar Hubungan ER Multi Tabel ............................................... 12 Gambar 1. 5 Record pada Tabel EMPLOYEES ................................................. 14 Gambar 1. 6 Komunikasi DBMS Menggunakan SQL ......................................... 16 Gambar 2. 1 Contoh Pembatasan Garis dengan Kriteria Tertentu ..................... 26 Gambar 2. 2 Membatasi Baris Yang Dipilih ....................................................... 27 Gambar 2. 3 Query dengan Klausa Where ........................................................ 27 Gambar 2. 4 Query dengan Kasus Campuran ................................................... 28 Gambar 2. 5 Operator yang Terdapat pada Query ............................................ 28 Gambar 2. 6 Hasil Eksekusi Query dengan Kondisi Perbandingan .................... 29 Gambar 2. 7 Hasil Eksekusi Query dengan Kondisi Between ............................ 30 Gambar 2. 8 Hasil Eksekusi Query dengan Kondisi IN ...................................... 30 Gambar 2. 9 Hasil Eksekusi Query dengan Kondisi LIKE .................................. 31 Gambar 2. 10 Hasil Eksekusi Query dengan Kondisi LIKE ................................ 32 Gambar 2. 11 Hasil Eksekusi Query dengan Kondisi NULL ............................... 32 Gambar 2. 12 Hasil Eksekusi Query dengan Logika OR.................................... 34 Gambar 2. 13 Hasil Eksekusi Query dengan Logika NOT ................................. 35 Gambar 2. 14 Hasil Eksekusi Query .................................................................. 37 Gambar 2. 15 Hasil Eksekusi Query dengan Klausa ORDER BY ...................... 38 Gambar 2. 16 Contoh Query dengan ORDER BY ............................................. 39 Gambar 3. 1 Fungsi SQL ................................................................................... 47 Gambar 3. 2 Ilustrasi Fungsi SQL ...................................................................... 47 Gambar 3. 3 Deklarasi Nama Fungsi ................................................................. 48 Gambar 3. 4 Jenis-Jenis Fungsi Single Row ..................................................... 49 Gambar 3. 5 Klasifikasi Fungsi Karakter ............................................................ 49 Gambar 3. 6 Hasil Konversi dengan Fungsi String ............................................ 51 xi Gambar 3. 7 Hasil Query Menggunakan Fungsi ManipulasiCase ...................... 52 Gambar 3. 8 Hasil Query Menggunakan Fungsi KarakterManipulasi ................. 53 Gambar 3. 9 Hasil Query dengan Fungsi Numerik ............................................. 54 Gambar 3. 10 Hasil Query Fungsi ROUND ........................................................ 55 Gambar 3. 11 Hasil Query Fungsi TRUNC ........................................................ 55 Gambar 3. 12 Hasil Query Fungsi MOD............................................................. 56 Gambar 3. 13 Format Tanggal pada Oracle ....................................................... 56 Gambar 3. 14 Fungsi SYSDATE pada Query .................................................... 57 Gambar 3. 15 Hasil Query SYSDATE dengan Manipulasi Tanggal .................... 58 Gambar 3. 16 Fungsi TRUNC dalam Pemotongan Tanggal............................... 59 Gambar 3. 17 Hasil Query dengan Manipulasi Tanggal ..................................... 60 Gambar 3. 18 Hasil Query dengan fungsi ROUND dan TRUNC ........................ 60 Gambar 3. 19 Hasil Query dengan Konversi TO_CHAR .................................... 61 Gambar 3. 20 Query Menggunakan Fungsi NVL ............................................... 63 Gambar 3. 21 Query dengan Fungsi NVL2 ........................................................ 64 Gambar 3. 22 Query Menggunakan Fungsi NULLIF .......................................... 65 Gambar 3. 23 Hasil Eksekusi Query dengan Fungsi COALESCE ...................... 66 Gambar 3. 24 Query dengan Kondisi CASE ...................................................... 68 Gambar 3. 25 Query dengan Fungsi DECODE .................................................. 68 Gambar 4. 1 Tabel yang akan dimanipulasi ....................................................... 77 Gambar 4. 2 Hasil Query NATURAL JOIN ......................................................... 78 Gambar 4. 3 Query Natural Join dengan KlausaWHERE ................................... 79 Gambar 4. 4 Klausa USING untuk Equijoin........................................................ 80 Gambar 4. 5 Query Penggunaan Tabel Alias ..................................................... 80 Gambar 4. 6 Klausa ON pada Query ................................................................. 81 Gambar 4. 7 Contoh Self Join pada Query ........................................................ 82 Gambar 4. 8 Klausa ON dengan Kombinasi SELF JOIN .................................... 82 Gambar 4. 9 KlausaJOIN pada Query ............................................................... 83 Gambar 4. 10 Tabel EMPLOYEES dan JOB_GRADES ..................................... 84 Gambar 4. 11 Implementasi Non-Equijoins pada Query .................................... 84 Gambar 4. 12 Hasil Query Left Outer Join ......................................................... 85 Gambar 4. 13 Hasil Query Right Outer Join pada .............................................. 86 Gambar 4. 14 Hasil Query Full Outer Join pada................................................. 87 xii Gambar 4. 15 Hasil Query Cartesian Product .................................................... 88 Gambar 4. 16 Hasil Query CROSS JOIN........................................................... 88 Gambar 5. 1 Query dalam membuat Tabel ........................................................ 97 Gambar 5. 2 Sebelum Data diperbarui .............................................................. 98 Gambar 5. 3 Sesudah Data diperbarui .............................................................. 98 Gambar 5. 4 Data Sebelum diperbarui .............................................................. 99 Gambar 5. 5 Data Sesudah diperbarui ............................................................ 100 Gambar 5. 6 Data Sebelum diperbarui ............................................................ 101 Gambar 5. 7 Data Sesudah diperbarui ............................................................ 101 Gambar 5. 8 Data Sebelum dihapus ................................................................ 102 Gambar 5. 9 Data Sesudah dihapus ................................................................ 102 Gambar 6. 1 Hasil Eksekusi Query Membuat Tabel......................................... 113 Gambar 6. 2 Struktur Awal Tabel ..................................................................... 114 Gambar 6. 3 Struktur Setelah Terjadi Penambahan Kolom.............................. 114 Gambar 7 1 Penggunaan commit .................................................................... 123 Gambar 7 2 Penggunaan rollback ................................................................... 123 xiii xiv DAFTAR TABEL Tabel 1 Kebenaran Logikan AND ..................................................................... 33 Tabel 2 Kebenaran Logikan OR ....................................................................... 34 Tabel 3 Kebenaran Logikan NOT ..................................................................... 35 Tabel 4 Aturan Protokoler ................................................................................. 36 Tabel 5 Fungsi dan Kegunaannya .................................................................... 50 Tabel 6 Fungsi Numerik .................................................................................... 54 Tabel 7 Operasi pada Tanggal ......................................................................... 58 Tabel 8 Fungsi Umum ...................................................................................... 61 xv … xvi PENDAHULUAN A. Latar Belakang Guru dan tenaga kependidikan wajib melaksanakan kegiatan pengembangan keprofesian secara profesionalnya. berkelanjutan Program agar Pembinaan dapat karier melaksanakan adalah tugas pengembangan kompetensi Guru dan Tenaga Kependidikan yang dilaksanakan sesuai kebutuhan, bertahap, dan berkelanjutan untuk meningkatkan profesionalitasnya. Pembinaan karier sebagai salah satu strategi pembinaan guru dan tenaga kependidikan diharapkan dapat menjamin guru dan tenaga kependidikan sehingga mampu secara terus menerus mengembangkan memelihara, meningkatkan, dan kompetensinya sesuai dengan standar yang telah ditetapkan. Pelaksanaan kegiatan Pembinaan karier akan mengurangi kesenjangan antara kompetensi yang dimiliki guru dan tenaga kependidikan dengan tuntutan profesional yang dipersyaratkan. Program Diklat Pembinaan karier ini membutuhkan modul yang berfungsi sebagai salah satu sumber belajar. Modul Diklat Pembinaan karier Guru Rekayasa Perangkat Lunak (RPL) Kelompok Kompetensi B “Sistem Manajemen Basis Data” ini dapat digunakan oleh guru dan tenaga kependidikan dan berfungsi sebagai acuan untuk memenuhi tuntutan kompetensinya, sehingga guru dapat melaksanakan tugasnya secara professional sesuai dengan standar yang telah ditetapkan. Modul Diklat Pembinaan karier Guru RPL Kelompok Kompetensi B “Sistem Manajemen Basis Data ” ini mempelajari tentang pembuatan struktur tabel, mengisi data ke tabel, mengubah data dan menghapus data dari tabel dengan menggunakan softwareRelational Database Management System (RDBMS), serta komunikasi Sistem Manajemen Basis Data menggunakan perintah Structure Query Language (SQL). 1 B. Tujuan Tujuan disusunnya modul diklat Pembinaan karier Guru RPL Kelompok Kompetensi B ini adalah memberikan pengetahuan dan keterampilan kepada guru atau peserta diklat tentang pembuatan struktur tabel, mengisi data ke tabel, mengubah data dan menghapus data dari tabel dengan benar melalui aktifitas observasi dan praktikum. Setelah mempelajari modul ini diharapkan guru dapat : “Merencanakan Database Management System (DBMS) yang mampu memfasilitasi pengguna untuk menyimpan, memperoleh, dan mengubah data di dalam basis data”. Sedangkan indikator pencapaian kompetensinya adalah : 1. Membuat basis data menggunakan Data Definition Language. 2. Membuat relasi antar tabel menggunakan fitur visual DBMS 3. Memanipulasi data menggunakan Data Manipulation Language. 4. Membuat pengaturan privalages pada DBMS C. Peta Kompetensi 2 Peta Kompetensi Modul Diklat GP Guru RPL Grade 2 Standar kompetensi Kompetensi Kompetensi Kompetensi Guru Indikator pencapaian Utama Inti Guru (KIG) Keahlian (KGK) Kompetensi Profesional 1. Menguasai 1.1. Merencanakan materi, DBMS yang struktur, mampu konsep dan memfasilitasi pola pikir pengguna untuk keilmuan menyimpan, yang memperoleh, dan mendukung mengubah data di mata dalam basis data. pelajaran yang diampu 1.1.1. Menganalisis struktur hirarki dan bentuk diagram antar entitas dalam basis data. 1.1.2. Membuat Entity Relationship Diagram 1.1.3. Menganalisis teknik normalisasi basis data 1.1.4. Membuat basis data menggunakan fitur visual pada DBMS 1.1.5. Membuat basis data menggunakan Data Definition Language 1.1.6. Membuat relasi antar tabel menggunakan fitur visual pada DBMS. 1.1.7. Membuat manipulasi data menggunakan Data Manipulation Language. 1.1.8. Membuat pengaturan privilages pada DBMS D. Ruang Lingkup Modul ini terdiri dari tujuh (7) materi pokok. Setiap materi pokok dirancang dalam kegiatan pembelajaran. Setiap kegiatan pembelajaran terdiri dari tujuan pembelajaran, indikator essential, uraian materi, aktifitas pembelajaran, latihan/tugas/kasus, rangkuman dan umpan balik. Tujuh (7) materi pokok pada modul ini adalah : 1) Database Relasional, 2) Membatasi dan Menyortir Data; 3) Menggunakan Fungsi Single-Baris Untuk Menyesuaikan Keluaran; 4) Menampilkan Data Dari Beberapa Tabel; 5) Data 3 Manipulation Language Pada SQL; 6) Data Definition Language Pada SQL; dan 7) Data Control Language Pada SQL; E. Saran Cara Penggunaan Modul Modul Sistem manajemen Basis Data ini terdiri dari sebelas topik utama. Peserta diklat dapat mempalajari sesui dengan urutan topik mulai topik 1 sampai topik 7. Ketujuh topik tersebut tidak memiliki ketergantungan secara penuh, sehingga peserta diklat dapat mempelajari tidak secara berurutan. Akan tetapi untuk masing-masing topik setiap kegiatan pembelajaran mempunyai keterkaitan secara penuh. Ini berarti untuk setiap topik materi yang dipelajari harus secara berurutan sesuai urutan kegiatan pembelajaran. Untuk setiap kegiatan pembelajaran urutan yang harus dilakukan oleh peserta diklat dalam mempelajari modul ini adalah : 1. Membaca tujuan pembelajaran sehingga memahami target atau goals dari kegiatan belajar tersebut. 2. Membaca indikator pencapaian kompetensi sehingga memahami obyek yang akan dijadikan kriteria pengukuran untuk mencapai tujuan pembelajaran. 3. Membaca uraian materi pembelajaran sehingga memiliki pengetahuan, ketrampilan dan sikap terhadap kompetensi yang akan dicapai 4. Melakukan aktifitas pembelajaran dengan urutan atau kasus permasalahan sesuai dengan contoh. 5. Mengerjakan latihan/soal atau tugas dengan mengisi lembar kerja yang telah disediakan. 6. Menjawab pertanyaan dalam umpan balik yang akan mengukur tingkat pencapaian kompetensi melalui penilaian diri. 4 5 6 Kegiatan Pembelajaran 1 Database Relasional A. Tujuan Setelah mengikuti kegiatan pembelajaran 1 ini, peserta diklat diharapkan dapat: 1. Memperoleh pemahaman tentang sistem manajemen database relasional (Relational Database Management System/RDBMS) dan sistem objek manajemen database relasional (Relational Database Management System/ORDBMS). 2. Memperoleh pemahaman konsep dasar database relasional. 3. Mengkomunikasikan gagasan database menggunakan model data yang sesuai. B. Indikator Pencapaian Kompetensi Indikator pencapaian kompetensi pada kegiatan pembelajaran ini adalah: 1. Menggambarkan struktur tabel relasional 2. Membuat model menggunakan konvensi entitas 3. Berkomunikasi dengan RDBMS menggunakan pernyataan SQL 4. Mengelompokkan pernyataan-pernyataan SQL dalam kelompok DML, DDL, DCL, dan Transaction Control C. Uraian Materi 1. Konsep Database Relasional Dr. E.F. Codd pada tahun 1970 telah memperkenalkan model relasional sistem database yang merupakan dasar untuk Relational Database Management System (RDBMS). Sebelum konsep database relasional telah digunakan dua model database yaitu network dan hierarchical Database. RDMBS memiliki kemudahan dalam penggunaannya dan memiliki fleksibilitas dalam struktur, sehingga sangat cepat populer ditambah dengan beberapa vendor yang inovatif dalam membantu mengembangkan aplikasi-aplikasi yang powerful serta produk-produk yang menawarkan solusi. Dalam database relasional, data disimpan 7 dalam bentuk relasi atau tabel dua dimensi, dan antartabel satu dengan tabel yang lainnya terdapat hubungan atau relationship. 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 datauntuk akurasidan 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 RDBMS dapat digunakan untuk menjalankan perintah SQL 2. Definisi Database Relasional Sebuah database relasional menggunakan hubungan atau tabel dua dimensi untuk menyimpan informasi. Sebagai contoh: Kita ingin menyimpan informasi tentang semua karyawan yang ada pada salah satu perusahaan. Dalam sebuah database relasional, kita membuat beberapa tabel untuk menyimpan bagian-bagian informasi yang berbeda tentang karyawan yang bekerja diperusahaan tersebut, misalnya tabel yang menyimpan informasi tentang karyawan, tabel yang menyimpan informasi tentang departemen, tabel yang menyimpan informasi tentang gaji. Gambar 1. 1 Gambaran Relasional Database 8 Comment [A1]: Gambar blm 3. Model Data Model merupakan landasansebuah desain. Sebelum sebuah mobil diproduksi, terlebih dahalu para perancang membuat model mobil dan bekerja secara rinci dan detail pada model mobil tersebut.Dalam cara yang sama, perancang sistem mengembangkan model untuk mengeksplorasi ide-ide dan meningkatkan pemahaman desain database. Tujuan sebuah model adalah membantu mengkomunikasikan konsepkonsep yang ada dipikiran orang. Model dapat digunakan untuk melakukan hal mengkategorikan, berikut: menyampaikan/mengkomunikasikan, menggambarkan, menentukan, menyelidiki, mengembangkan, menganalisis, dan meniru. Model yang baik adalah model yang cocok dalam banyak kegunaan, dapat dipahami oleh pengguna akhir, dan berisi detail yang cukup untuk pengembang dalam membangun sistem database. Gambar 1. 2 Contoh Skenario Model Data Comment [A2]: Gambar 4. Model Hubungan Entitas (Entity Relationship Model) Dalam sistem yang efektif, data dibagi menjadi kategori diskrit atau entitas. Sebuah hubungan entitas (ER) model adalah sebuah ilustrasi dari berbagai entitas dalam bisnis dan hubungan diantara mereka. Model ER berasal dari spesifikasi bisnis atau narasi dan dibangun selama tahap 9 analisis siklus hidup pengembangan sistem (System Development Life Cycle). Berikut ini adalah manfaat model ER a. Informasi Dokumen bagi organisasi dalam format yang jelas tepat. b. Memberikan gambaran yang jelas tentang ruang lingkup kebutuhan informasi. c. Menyediakan peta bergambar yang mudah dipahami untuk desain database. d. Menawarkan kerangka kerja yang efektif untuk mengintegrasikan beberapa aplikasi. Komponen-komponen Kunci model ER adalah: a. Entitas: Suatu hal yang penting tentang informasi yang perlu diketahui. Contohnya adalah departemen, karyawan, dan pesanan. b. Atribut: Sesuatu yang menggambarkan atau memenuhi syarat suatu entitas. Sebagai contoh, untuk entitas karyawan, atributnya adalah: nomor karyawan, nama, jabatan, tanggal perekrutan, nomor departemen, dan sebagainya. Setiap atribut yang baik adalah diperlukan atau opsional. Pernyataan ini disebut optionality. c. Hubungan: Hubungan atau relationship adalah sebuah asosiasi antara entitas dan derajat. Contohnya adalah karyawan dan departemen, dan pesanan dan item barang. Gambar 1. 3 Model Hubungan Entitas (Entity Relationship Model) 5. Konvensi Model Hubungan Entitas 10 Konvensi Model ER Entitas Untuk mewakili entitas dalam model, menggunakan konvensi sebagai berikut : a. Singular, nama entitas yang unik b. Nama entitas dalam huruf besar c. Kotakdengan garis tipis. d. Nama sinonim opsional dengan huruf besar didalam tanda kurung: (). Atribut Untuk mewakili atribut dalam model, menggunakan konvensi sebagai berikut : a. Nama singular dalam huruf kecil. b. Asterisk (*) tanda untuk atribut wajib (yaitu, nilai-nilai yang harus diketahui). c. Karakter "o" tanda untuk atribut opsional (yaitu, nilai-nilai yang mungkin dikenal). Hubungan Simbol Deskripsi Garis putus-putus Elemenopsionalyang menunjukkan"mungkin" Garis penuh Elemenwajibmenunjukkan"harus" Crow‟s foot Menunjukkan"satu atau lebih" Single line Menunjukkan"satu dan hanya satu" 6. Hubungan Multi Tabel Setiap tabel berisi data yang menggambarkan secara tepat satu entitas. Sebagai contoh, tabel EMPLOYEES berisi informasi tentang karyawan. Kategori data yang tercantum di bagian atas setiap tabel, dan kasuskasus individu tercantum di bawah tabel. Dengan menggunakan formattabel, dapat dengan mudah memvisualisasikan, memahami, dan menggunakan informasi. Karena data tentang entitas yang berbeda disimpan dalam menggabungkan tabel dua yang atau berbeda, lebih tabel sehingga dalam perlu untuk menyelesaikan 11 permasalahan tertentu. Sebagai contoh, untuk mengetahui lokasi departemen mana seorang karyawan bekerja. Dalam skenario ini, memerlukan informasi dari tabel EMPLOYEES (yang berisi data tentang 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 menggunakan foreign key. Foreign key adalah kolom (atau set kolom) yang mengacu pada Primary key dalam tabel yang sama atau tabel lain. Data dalam dua tabel yang terpisah dapat diorganisasi menjadi informasi baru yang dapat dikelola secara terpisah. Gambar 1. 4 Gambar Hubungan ER Multi Tabel 7. Terminologi Database Relasional Sebuah database relasional dapat berisi satu atau banyak tabel. Sebuah table merupakan struktur penyimpanan dasar dari sebuah RDBMS. Sebuah table memiliki semuadata yang diperlukan tentang sesuatu di dunia nyata, seperti karyawan, faktur, atau pelanggan. Tabel Didalam sistem relasional database data dinyatakan dengan menggunakan tabel (relations). Sebuah tabel mempunyai struktur seperti di bawah ini, 12 kolom 1 kolom 2 ……….. ……… ……… kolom n Baris ( record ) Sebuah tabel harus diberi nama secara unik sebagai identitasnya dan terdiri dari beberapa baris sebagai penyimpanan informasi, dan masingmasing baris berisi satu record. Sebuah tabel dapat mempunyai sebuah kolom atau lebih. Sebuah kolom memiliki sebuah nama dan tipe data yang diberlakukan dan merupakan deskripsi atribut pada record. Struktur tabel yang disebut juga relation schema, ditentukan oleh atributatributnya. Tipe informasi yang tersimpan di dalam tabel ditentukan oleh tipe data yang terdapat pada atribut-atributnya pada saat tabel dibuat. 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. ORACLE menawarkan tipe-tipe data dasar seperti di bawah ini: a. Char (n): Fixed-lenght character data (strings), mendefinisikan string sepanjang n karakter. Nilai maksimum untuk n adalah 255 byte (....... di ORACLE 9i). Bila n tidak dituliskan, maka panjang karakter yang berlaku adalah 1. contoh: char(40). b. Varchar2 (n) : Variable-lenght character strings, mendefiniskan string yang panjangnya berubah-ubah sesuai dengan kebutuhan dan dibatasi sebanyak karakter n. Nilai n maksimum adalah 2000 (....... di ORACLE 9i). Hanya banyaknya byte yang digunakan saja yang tersimpan pada memori. contoh: varchar2(80). c. Number (o,d) : Numeric data type , mendefinisikan angka integerdan riel, o = jumlah digit, d = jumlah digit yang berada dibelakang koma. Nilai maksimum: o = 38, d = -84 sampai +127. contoh: number (8), number (5,2). 13 Number (5,2) nilainya tidak dapat lebih dari 999.99 , jika melebihi nilai maksimum tersebut maka akan menjadi kesalahan. Tipe data yang berasal dari number adalah int[eger], dec[imal], smallint dan real. d. Date: Date data type untuk menempatkan atau mendefinisikan tanggal, bulan, tahun, hari, jam, menit dan detik. Format keadaan awal ( default ) untuk date adalah : DD-MMM-YY. Contoh : ‟10-FEB-94’,’29-NOV-98’. e. long: mendefinisikan tipe data binary, panjangnya karakter maksimum adalah 2GB. Setiap tabel hanya diperbolrhkan satu kolom saja yang mempunyai tipe long. Catatan: Di dalam ORACLE–SQL tidak ada tipe data boolean, tetapi dengan data yang sama dapat menggunakan char(1) atau number(1). Selama tidak terdapat ketentuan/hambatan lain yang membatasi kemungkina values pada atribut, dapat digunakan special value yaitu null (untuk sesuatu yang tidak diketahui). Nilai ini tidak sama dengan angka 0, dan juga tidak sama dengan angka kosong. Gambar 1. 5 Record pada Tabel EMPLOYEES 14 Gambar 1.5 menunjukkan isi tabel atau relasi EMPLOYEES. Huruf-huruf menunjukkan hal-hal sebagai berikut: a. Baris tunggal (atau tuple) mewakili semua data yang dibutuhkan untuk karyawan tertentu. Setiap baris dalam sebuah tabel harus diidentifikasi oleh primary key, yang memungkinkan tidak ada duplikasi baris. Urutan baris tidak signifikan; menentukan urutan baris saat data diambil. b. Sebuah kolom ataua tribut yang berisi nomor karyawan. Jumlah karyawan mengidentifikasi karyawan yang unik dalam tabel EMPLOYEES. Dalam contoh ini, kolom nomor karyawan yang ditunjuk sebagai primary key. Sebuah primary key harus mengandung nilai, dan nilai harus unik. c. Sebuah kolom yang bukan key value. Sebuah kolom merupakan atau merepresentasikan salah satu jenis data dalam tabel; dalam contoh ini, data adalah gaji semua karyawan. Urutan kolom tidak signifikan ketika menyimpan data; menentukan urutan kolom saat data diambil. d. Sebuah kolom yang berisi nomor departemen, yang juga merupakan foreign key. Foreign key adalah kolom yang mendefinisikan bagaimana tabel berhubungan satu sama lain. Foreign key mengacu pada primary key atau kunci unik di tabel yang sama atau di tabel lain. Dalam contoh, DEPARTMENT_ID secara unik mengidentifikasi sebuah departemen dalam tabel DEPARTMENTS. e. Sebuah field dapat ditemukan di persimpangan dari baris dan kolom. Hanya ada satu nilai di dalamnya. f. Sebuah field mungkin tidak memiliki nilai di dalamnya. Ini disebut nilai null. Dalam tabel EMPLOYEES,hanya karyawan yang memiliki peran perwakilan penjualan memiliki nilai di COMMISSION_PCT (komisi). 8. Properti Database Relasional Dalam sebuah relasional database, pengguna tidak menentukan rute akses ke tabel, dan tidak perlu tahu bagaimana data diatur secara fisik. Untuk mengakses database, cukup dengan mengeksekusi perintahperintah atau pernyataan SQL, yang merupakan American National 15 Standards Institute (ANSI) bahasa standar untuk operasi relasional database. SQL berisi satu set operator-operator yang cukup besar untuk membagi dan mempertautkan hubungan. Database dapat dimodifikasi dengan menggunakan pernyataan SQL. 9. Berkomunikasi dengan RDBMS menggunakan SQL Structured Query Language Menggunakan SQL, pengguna dapat berkomunikasi dengan server data base. SQL memiliki beberapa keuntungan: efisien, mudah untuk dipelajari dan digunakan, dan memiliki fungsi-fungsi yang sangat lengkap (menentukan, mengambil, dan memanipulasi data dalam tabel). Gambar 1. 6 Komunikasi DBMS Menggunakan SQL Pernyataan-pernyataanSQL SELECT INSERT UPDATE DELETE MERGE CREATE ALTER DROP RENAME TRUNCATE COMMENT GRANT REVOKE 16 Data Manipulation Language (DML) Data Definition Language (DDL) Data Control Language (DCL) COMMIT ROLLBACK SAVEPOINT Transaction Control Pernyataan Deskripsi SELECT Mengambil datadari database, mengisi baris INSERT baru, merubah baris yang ada, dan menghapus UPDATE baris yang tidak diinginkan dari tabel dalam DELETE database secara berturut-turut, dikenal sebagai MERGE data manipulation language (DML). CREATE ALTER Membuat, merubah, dan menghapus struktur DROP data dari tabel, dikenal sebagai data definition RENAME language (DDL). TRUNCATE COMMENT GRANT Memberika natau menghilangkan hak akses ke REVOKE data base maupun struktur didalamnya. COMMIT Mengelola ROLLBACK pernyataan SAVEPOINT dikelompokkan bersama ke dalam transaksilogis. perubahan DML. yang Perubahan dibuat oleh data bisa D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 1, mencakup topik-topik berikut: a. Pengenalan konsep DBMS dan model hubungan entitasnya b. Pengenalan metode komunikasi DBMS menggunakan SQL c. Pengenalan klasifikasi perintah SQL untuk berkomunikasi dengan DBMS Modul ini disusun agar dapat dijadikan sebagai panduan pembelajaran peserta pelatihan untuk menambah wawasan dan pemahaman tentang kompetensi yang ingin dicapai dalam kegiatan pembelajaran 1. Pada prinsipnya peserta pelatihan harus mengikuti kegiatan belajar tatap muka 17 dan aktif dalam setiap kegiatan pembelajaran yang dilakukan. Adapun aktivitas dalam kegiatan pembelajaran 1 tertuang ke dalam tabel berikut ini: No Aktivitas Pembelajaran Keterlaksanaan 1 Apersepsi tentang pengenalan Ya Tidak Ya Tidak database relasional 2 Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan pembelajaran 1 6 Bertanya tentang pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan E. Latihan / Kasus / Tugas 1. ER (hubungan entitas) Model merepresentasikan suatu ilustrasi dari berbagai entitas dalam hal a. Hubungan di antara mereka b. Komponen entitas c. Hubungan antar DBMS d. Hubungan matriks keduanya 2. Penggunaan tanda kurung “()” pada ER Model merepresentasikan suatu ilustrasi entitas yang menunjukkan…. 18 a. Akronim suatu database b. Akronis suatu tabel c. Sinomin suatu database d. Sinonim suatu tabel 3. Tipe data boolean pada Oracle tidak didukung, sebagai gantinya Oracle menyediakan model representasi tipe boolean dengan cara….. a. Menggunakan tipe data varhcar(n) b. Menggunakan tipe data number(1) c. Menggunakan tipe data int(1) d. Menggunakan tipe data long int(1) 4. Perintah SQL COMMENT termasuk kategori perintah SQL dengan tipe a. Data Definition Language (DDL) b. Data Manipulation Language (DML) c. Transaction Control d. Data Control Language (DCL) 5. Query berikut yang tidak mampu mengelola perubahan hasil operasi DML adalah a. COMMIT b. ROLLBACK c. SAVEPOINT d. SELECT F. Rangkuman Pada kegiatan pembelajaran 1, telah dipelajari tentang konsep dasar database relasional dan model data yang digunakan untuk menyampaikan atau mengkomunikasikan, mengkategorikan, menggambarkan, menentukan, memenyelidiki, mengembangkan, menganalisis, dan meniru. Model yang baik adalah model yangcocok dalam banyak kegunaan,dapat dipahamioleh pengguna akhir, dan berisidetail yang cukupuntuk pengembangdalam membangun sistem database. Poin penting yang telah dipelajari pada kegiatan pembelajaran 1 ini adalah pengelompokan pernyataan SQL kedalam kelompok DML, DDL, DCL, dan Transaction Control. Database didasarkan pada objek relasional sistem manajemen database. Database relasional terdiri dari relasional,dikelola oleh operasi relasional, dan diaturoleh 19 integrity constraints. Dengan server Oracle, pengguna dapat menyimpan dan mengelola informasi dengan menggunakan bahasa SQL. G. Umpan Balik dan Tindak Lanjut 1. Apakah Anda sudah mampu memahami sistem manajemen database relasional (RDBMS) dan sistem objek manajemen database relasional (ORDBMS), serta berapa prosen tingkat pencapaian kompetensinya? 2. Apakah Anda sudah mampu memahami konsep dasar database relasional dan berapa prosen tingkat pencapaian kompetensinya? 3. Apakah Anda sudah mampu menyajikan gagasan database (sesuai gagasan sendiri) menggunakan model data yang sesuai dan berapa prosen tingkat pencapaian kompetensinya? Untuk mengukur pencapaian kompetensi Anda, silakan mengisi tabel berikut ini: IPK Menggambarkan struktur tabel relasional Membuat model menggunakan konvensi entitas Berkomunikasi dengan RDBMS menggunakan pernyataan SQL Mengelompokkan pernyataan-pernyataan SQL dalam kelompok DML, DDL, DCL, dan Transaction Control 20 Hasil yang didapat Rencana Tindak lanjut H. Kunci Jawaban 1. a 2. d 3. b 4. a 5. d 21 22 23 24 Kegiatan Pembelajaran 2 : Membatasi dan Menyortir Data A. Tujuan Setelah mengikuti kegiatan pembelajaran 2 ini diharapkan peserta diklat dapat: 1. Mengambil data dari database, dengan melakukan pembatasan baris data serta menentukan urutan baris yang akan ditampilkan. 2. Menggunakan kondisi komparasi untuk menampilkan data B. Indikator Pencapaian Kompetensi Indikator pencapaian kompetensi pada kegiatan pembelajaran ini adalah: 1. Membatasi baris yang dipilih menggunakan klausa WHERE 2. Menggunakan kondisi BETWEEN, IN, LIKE, dan NULL untuk menampilkan informasi pada keluaran. 3. Menggunakan operator logika AND, OR, dan NOT untuk menampilkan informasi pada keluaran. C. Uraian Materi 1. Membatasi Baris Menggunakan Selection Dalam contoh pada Gambar 2.1, anggaplah bahwa pengguna ingin menampilkan semua karyawan di departemen 90. Baris dengan nilai 90 pada kolom DEPARTMENT_ID adalah satu-satunya yang dikembalikan atau ditampakkan. Metode pembatasan ini adalah dasar darik lausa WHERE di dalam SQL. 25 Gambar 2. 1 Contoh Pembatasan Garis dengan Kriteria Tertentu Membatasi Baris Yang Dipilih Pengguna dapat membatasi baris yang dikembalikan dari query dengan menggunakan klausa WHERE. Sebuah klausa WHERE memuat suatu kondisi yang harus dipenuhi, dan langsung mengikuti klausa FROM. Jika kondisi benar, maka baris yang memenuhi kondisi yang dipersyaratkan akan dikembalikan. Dalamsintak: WHERE membatasi query kebaris yang memenuhi kondisi condition terdiri dari nama kolom, ekspresi, konstanta, dan operator perbandingan. Klausa WHERE dapat membandingkan nilai-nilai dalam kolom, nilai literal, ekspresi aritmatika, atau fungsi yang terdiri dari tiga unsur: 26 Nama Kolom Kondisi Perbandingan Nama Kolom, konstan, atau nilai Gambar 2. 2 Membatasi Baris Yang Dipilih Menggunakan Klausa WHERE Dalam contoh, pernyataan SELECT mengambil employee ID, name, job ID,dan departmen ID dari semua karyawan yang berada didepartemen 90. Gambar 2. 3 Query dengan Klausa Where Character String dan Date Semua karakter dan tanggal diklausa WHERE harus diapit oleh tanda kutip tunggal (''), sedangkan konstanta tidak boleh diapit oleh tanda kutip tunggal. Semua pencarian karakter adalah case-sensitive. Pada contoh berikut, tidak adabaris yang dikembalikan karena tabel EMPLOYEES menyimpan semua nama belakang dalam kasus campuran: SELECT last_name, job_id, department_id FROM employees WHERE last_name = 'WHALEN'; 27 Gambar 2. 4 Query dengan Kasus Campuran 2. Membandingkan Berdasar Pada Kondisi Kondisi Perbandingan Kondisi perbandingan digunakan untuk membandingkan satu ekspresi dengan nilai lain atau ekspresi lain. Format penggunaan klausa WHERE adalah sebagai berikut: ... WHERE expr Operator value Contoh ... WHEREhire_date = '01 -Jan-95' ... WHERE salary>= 6000 ... WHERE last_name = 'Smith' Alias tidak dapat digunakan dalam klausa WHERE. Catatan: Simbol != dan ^ = dapat diartika „tidak sama dengan kondisi‟. Gambar 2. 5 Operator yang Terdapat pada Query 28 Menggunakan Kondisi Perbandingan Dalam contoh, pernyataan SELECT mengambil nama belakang dan gaji daritabel EMPLOYEE untuk setiap karyawan yang gajinya kurang dari atau sama dengan $ 3.000. Perhatikan bahwa ada nilai eksplisit dipasok ke klausa WHERE. Nilai eksplisit 3000 dibandingkan dengan nilai gaji di kolom SALARY dari tabel EMPLOYEE. Gambar 2. 6 Hasil Eksekusi Query dengan Kondisi Perbandingan Menggunakan Kondisi Between Operator BETWEEN akan menguji apakah suatu nilai berada dalam suatu range tertentu yang dapat diartikan “lebih besar atau sama dengan nilai terkecil dan lebih kecil atau sama dengan nilai terbesar“. Pengguna dapat menampilkan baris berdasarkan rentang nilai jangkauan menggunakan kondisi between. Jangkauan yang pengguna tentukan berisib atas bawah dan batas atas. Pernyataan SELECT dalam Gambar 2.7 mengembalikan baris dari tabel EMPLOYEEuntukkaryawanyang gajinyaantara $2.500 dan $3.500.Nilai-nilai yang ditentukan dengan kondisi between secara inklusif. Pengguna harus menentukan pertama kali adalah batas bawah. Pengguna juga dapat menggunakan kondisi between pada nilai karakter: 29 Gambar 2. 7 Hasil Eksekusi Query dengan Kondisi Between Menggunakan Kondisi IN Untuk menguji nilai-nilai dalam satu kelompok keanggotaan tertentu, pengguna dapat menggunakan operator IN. Kondisi IN juga dikenal sebagai kondisi keanggotaan. Kondisi IN dapat digunakan dengan semua jenis data. Contoh berikut mengembalikan baris dari tabel EMPLOYEES untuk setiap karyawan yang nama belakangnya termasuk dalam daftar nama pada klausa WHERE: SELECT employee_id, manager_id, department_id FROM employees WHERE last_name IN ('Hartstein', 'Vargas'); Gambar 2. 8 Hasil Eksekusi Query dengan Kondisi IN Jika memuat karakter atau tanggal, makaharus diapit oleh tanda kutip tunggal (''). Menggunakan Kondisi LIKE 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 30 pencarian wildcard. Operator ini digunakan untuk membandingkan karakter atau string atau CLOB dengan pola yang sudah ditetapkan dan akan menghasilkan nilai boolean true jika pola yang dibandingkan cocok dan akan menghasilakn nilai boolean false jika pola tidak cocok dengan nilai yang dibandingkan. Pola yang dianggap cocok pada operator like dapat termasuk penggunaan dua karakter spesial yang biasa disebut wildcards yaitu underscore (_) yang secara eksak hanya satu karakter yang cocok dan percent ( % ) zero atau karakter yang cocok. Pernyataan SELECT dalam Gambar lebih 2.9 mengembalikan nama depan karyawan dari tabel EMPLOYEES untuk setiap karyawan yang nama depannya dimulai dengan huruf S. Gambar 2. 9 Hasil Eksekusi Query dengan Kondisi LIKE Perhatikan huruf besar S. Nama yang diawali dengan huruf kecil s tidak dikembalikan. Kondisi seperti ini dapat digunakan sebagai jalan pintas untuk beberapa perbandingan BETWEEN. Contoh berikut menampilkan last name dan menye wahire date semua karyawan yang tanggal perekrutannya antara Januari 1995 dan Desember 1995 : SELECT last_name, hire_date FROM employees WHERE hire_date LIKE '%95'; 31 Gambar 2. 10 Hasil Eksekusi Query dengan Kondisi LIKE Menggunakan Kondisi NULL 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 karena itu, pengguna tidak dapat menguji dengan = null karena tidak bisa sama atau tidak sama dengan nilai apapun. Contoh pada Gambar 2.10 mengambil last name dan manager ID untuk semua karyawan yang tidak memiliki manager ID. Berikut ini adalah contoh lain: Untuk menampilkan last name, job ID, dan komisi untuk semua karyawan yang tidak berhak menerima komisi, menggunakan pernyataan SQL berikut: SELECT last_name, job_id, commission_pct FROM employees WHERE commission_pct IS NULL; Gambar 2. 11 Hasil Eksekusi Query dengan Kondisi NULL 3. Membandingkan Secara Logika Sebuah kondisi logis menggabungkan hasil dari dua kondisi komponen untuk menghasilkan hasil tunggal berdasarkan kondisi mereka, atau 32 membalikkan hasil dari suatu kondisi tunggal. Sebuah baris akan dikembalikan hanya jika hasil keseluruhan kondisi adalah benar. Tiga operator logika yang tersedia di SQL: AND OR NOT Menggunakan Operator AND Dalam contoh ini, kedua kondisi harus benar, oleh karena ituhanya karyawan yang memiliki job ID yang memuat string 'MAN' danberpenghasilan sebesar $10.000 atau lebih yang akan dipilih. Semua pencarian karakter adalah case-sensitive. Tidak ada baris yang dikembalikan jika 'MAN' bukan huruf besar. String karakter harus diapit oleh tanda kutip. Tabel Kebenaran Logika AND Tabel berikut menunjukkan hasil gabungan dua ekspresi dengan logika AND: Tabel 1 Kebenaran Logikan AND AND TRUE FALSE NULL TRUE TRUE FALSE NULL FALSE FALSE FALSE FALSE NULL NULL FALSE NULL Gambar 2.11 Hasil Eksekusi Query dengan Logika AND 33 Menggunakan Operator OR Dalam contoh, hanya salah satu kondisi benar maka akan dipilih, oleh karena itu, setiap karyawanyang memiliki job ID yang memuat string 'MAN' atau berpenghasilan sebesar $10.000 atau lebih akan dipilih. Tabel Kebenaran Logika OR Tabel berikut menunjukkan hasil gabungan dua ekspresi dengan logika OR : Tabel 2 Kebenaran Logikan OR OR TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NULL TRUE NULL NULL Gambar 2. 12 Hasil Eksekusi Query dengan Logika OR Menggunakan Operator NOT Contoh pada Gambar 2.13 menampilkan last name dan job ID dari semua karyawan yang job ID-nya tidak IT_PROG, ST_CLERK, atau SA_REP. 34 Tabel Kebenaran Logika NOT Tabel berikut menunjukkan hasil dari penerapan operator NOT untuk kondisi: Tabel 3 Kebenaran Logikan NOT NOT TRUE FALSE NULL FALSE TRUE NULL Operator NOT juga dapat digunakan dengan operator SQL lainnya, seperti BETWEEN, LIKE, danNULL. ... ... ... ... WHERE WHERE WHERE WHERE job_id NOT IN ('AC_ACCOUNT', 'AD_VP') salary NOT BETWEEN 10000 AND 15000 last_name NOT LIKE '%A%' commission_pct IS NOT NULL Gambar 2. 13 Hasil Eksekusi Query dengan Logika NOT Aturan Protokoler Aturan protokoler menentukan urutan eksekusi dari operator yang digunakan. Tabel daftar urutan prioritas yang dieksekusi secara default. Pengguna dapat mengganti urutan default dengan menggunakan tanda kurung di sekitar ekspresi yang ingindi dahulukan atau diprioritaskan dalam eksekusi. 35 Tabel 4 Aturan Protokoler Arti Operator Aritmetika Operator Concatenation Comparison condition IS [NOT] NULL, LIKE, [NOT] IN NOT BETWEEN Not equal to Not logical condition AND logical condition OR logical condition Operator 1 2 3 4 5 6 7 8 9 a. ContohPrioritas Eksekusi Operator AND Dalam contoh ini, ada dua kondisi: Kondisi pertama adalah bahwa job ID adalah AD_PRES dan salary lebih besar dari $15.000. Kondisi kedua adalah bahwajob ID adalah SA_REP. Oleh karena itu, pernyataan SELECT berbunyi sebagai berikut: "Pilih baris jika seorang karyawan adalah presiden dan berpenghasilan lebih dari $15.000, atau jika karyawan adalah perwakilan penjualan". b. Contoh Menggunakan Kurung Dalam contoh ini, ada dua kondisi: 1) Kondisi pertama adalah bahwa ID kerja adalah AD_PRES atau SA_REP. 2) Kondisi kedua adalah bahwa gaji lebih besar dari$ 15.000. Oleh karena itu, pernyataan SELECT berbunyi sebagai berikut: "Pilih baris jika seorang karyawan presiden atau perwakilan penjualan, dan jika karyawan berpenghasilan lebih dari $15.000" 36 Gambar 2. 14 Hasil Eksekusi Query Menggunakan Klausa ORDER BY Urutan baris yang dikembalikan dalam hasil query tidak terdefinisi. Klausa ORDER BY dapat digunakan untuk mengurutkan baris. Jika pengguna menggunakan klausa ORDER BY, klausa ini harus menjadi kalimat terakhir dari pernyataan SQL. Pengguna dapat menentukan ekspresi, alias, atau posisi kolom sebagai kondisi pilihan urutan. Sintak: SELECT expr FROM table [WHERE condition(s)] [ORDER BY {column, expr, numeric_position} [ASC|DESC]]; di mana : ORDER BY menentukan urutan di mana baris yang didapat ditampilkan ASC memerintahkan baris dalam urutan menaik (ini adalah urutan default) DESC memerintahkan baris dalam urutan menurun Jika klausa ORDER BY tidak digunakan, urutan tidak terdefinisi, dan server Oracle mungkin tidak mengambil baris dalam urutan yang sama untuk permintaan yang sama (permintaan pertama belum tentu mengambil urutan baris yang sama dengan urutan baris pada permintaan kedua). Gunakan klausa ORDER BY untuk menampilkan baris dalam urutan tertentu. 37 Gambar 2. 15 Hasil Eksekusi Query dengan Klausa ORDER BY 4. Penyortiran Default Pengurutan Data Urutan data standar adalah menaik: a. Nilai-nilai numerik ditampilkan pertama dengan nilai terendah (misalnya, 1-999). b. Tanggal ditampilkan pertama dengan nilaiawal (misalnya, 01-JAN-92 sebelum 01-JAN-95). c. Nilai karakter yang ditampilkan dalam urutan abjad (misalnya, Apertama dan terakhir Z). d. Nilai Null ditampilkan terakhir untuk urutan menaik dan pertama untuk urutan menurun. e. Pengguna dapat mengurutkan dengan kolom yang tidak dalam daftar SELECT. Contoh a. Untuk membalik urutan baris yang ditampilkan, gunakan kata kunci DESC setelah nama kolom dalam klausa ORDER BY. Gambar 2.16 (1) hasil pengurutan karyawan yang terbaru dipekerjakan. b. Pengguna dapat menggunakan kolom alias di klausa ORDER BY. Gambar Gambar 2.16(2) mengurutkan data dengan gaji tahunan. c. Pengguna dapat mengurutkan hasil query dengan lebih dari satu kolom. Batas pengurutan adalah jumlah kolom yang diberikan dalam tabel. Dalam klausa ORDER BY, menentukan kolom dan memisahkan 38 nama kolom menggunakan koma. Jika pengguna ingin membalik urutan kolom, gunakankata kunci DESC setelah nama kolom. Gambar 2. 16 Contoh Query dengan ORDER BY D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 2, mencakup topik-topik berikut: 1. Pemilihan data dan mengubah urutan baris yang ditampilkan. 2. Membatasi baris dengan menggunakan klausa WHERE. 3. Penyortiran baris dengan menggunakan klausa ORDER BY. 4. Menggunakan variabel substitusi untuk menambah fleksibilitas pernyataan SQL SELECT. No Aktivitas Pembelajaran Keterlaksanaan 1 Apersepsi tentang Pengenalan Ya Tidak Ya Tidak perintah untuk membatasi dan menyortir data 2 Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan pembelajaran 1 39 6 Bertanya tentang materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan E. Latihan / Kasus / Tugas 1. Anda ingin menuliskan query untuk menampilkan data pegawai dengan memilih data tertentu berdasarkan kriteria. Pada klausa apa kriteria tersebut didefinisikan? a. WHERE b. FROM c. ORDER BY d. SELECT 2. Anda ingin menulis perintah query untuk menampilkan data yang diurutkan berdasarkan kolom tertentu. Mana pernyataan yang tidak benar tentang klausa ORDER BY di bawah ini? a. Ascending dan Descending bisa ditulis dengan ASC dan DESC pada klausa ORDER BY b. Hanya satu kolom yang bisa didefinisikan sebagai dasar pengurutan di klausa ORDER BY c. Beberapa kolom bisa digunakan sebagai dasar pengurutan data di klausa ORDER BY d. Kolom di klausa ORDER BY bisa diganti dengan nomor urut kolom di klausa SELECT 3. Anda ingin menampilkan pegawai yang ada di bagian 30 dan namanya diawali dengan karakter „B‟. Perintah yang benar adalah: a. SELECT nama_pegawai, gaji, kode_bag FROM pegawai WHERE kode_bag=30 AND nama_pegawai=‟B%‟ 40 b. SELECT nama_pegawai, gaji, kode_bag FROM pegawai WHERE kode_bag=30 OR nama_pegawa LIKE („B_) c. SELECT nama_pegawai, gaji, kode_bag FROM pegawai WHERE kode_bag=30 AND nama_pegawai LIKE ‟B%‟ d. SELECT nama_pegawai, gaji, kode_bag FROM pegawai WHERE kode_bag=30 OR nama_pegawai LIKE ‟B%‟ 4. Di bawah ini terdapat perintah-perintah untuk menampilkan data dari tabel pegawai. Manakah perintah yang gagal dieksekusi? a. SELECT * FROM pegawai; b. SELECT id_pegawai FROM pegawai WHERE nama_pegawai = „WIRA AULIA‟; c. SELECT id_pegawai, nama_pegawai WHERE id_pegawai = 1004; d. SELECT * FROM ORDER BY gaji; 5. Anda mengurutkan data pegawai berdasarkan gaji secara descending, dalam kolom gaji terdapat pegawai yang belum memiliki gaji atau gajinya NULL. Pada bagian mana pegawai yang gajinya NULL tesebut akan ditampilkan? a. Bagian tengah hasil query b. Pegawai yang gajinya NULL tidak dimunculkan c. Pada bagian bawah hasil query d. Pada bagian atas hasi query F. Rangkuman Pada kegiatan pembelajaran 2, telah dipelajari penggunaan klausa WHERE untuk membatasi baris yang akan ditampilkan pada keluaran. Penggunakan kondisi perbandinngan seperti BETWEEN, IN, LIKE, dan NULL serta penggunaan operator logika AND, OR, dan NOT disamping penggunaan ORDER BY untuk mengurutkan baris pada keluaran. 41 G. Umpan Balik dan Tindak Lanjut 1. Apakah anda sudah mampu mengambil data dari database, dengan melakukan pembatasan baris data serta menentukan urutan baris yang akan ditampilkan, dan berapa prosen tingkat kompetensinya? 2. Apakah anda sudah mampu menggunakan kondisi komparasi untuk menampilkan data dan berapa persen tingkat kompetensinya? Setelah menyelesaiakan lembar kerja dan menjawab latihan, isilah tabel berikut ini: Tabel 3.2. Umpan Balik dan Rencana Tindak Lanjut IPK Membatasi dipilih baris yang menggunakan klausa WHERE Menggunakan BETWEEN, dan kondisi IN, NULL menampilkan LIKE, untuk informasi pada keluaran Menggunakan operator logika AND, OR, dan NOT untuk menampilkan informasi pada keluaran. H. Kunci Jawaban 1. a 2. b 3. c 4. c 5. d 42 Hasil Yang Rencana Tindak Diperoleh Lanjut 43 44 45 Kegiatan Pembelajaran 3 : Menggunakan Fungsi Single-Baris Untuk Menyesuaikan Keluaran A. Tujuan Setelah mengikuti kegiatan pembelajaran 3 ini, peserta diklat dapat: Mengeksplorasi fungsi single-baris yang berfokus fungsi karakter, numerik, dan tanggal, serta fungsi-fungsi yang mengkonversi data dari tipe data tertentu ke tipe data yang lain (misalnya, konversi dari data karakter ke data numerik). B. Indikator Pencapaian Kompetensi Indikator pencapaian kompetensi pada kegatan pembelajaran ini adalah: 1. Menjelaskan berbagai jenis fungsi yang tersedia dalam SQL. 2. Menggunakan fungsi karakter, numerik, dan tanggal pada pernyataan SELECT. 3. Menjelaskan penggunaan fungsi konversi C. Uraian Materi 1. Fungsi-Fungsi SQL Fungsi merupakan ciri yang sangat menonjol dari SQL. Fungsi-fungsi tersebut dapat digunakan untuk melakukan hal-hal sebagai berikut: a. Melakukan perhitungan data b. Memodifikasi item data individu c. Memanipulasi keluaran untuk kelompok baris d. Format tanggal dan nomor untuk tampilan e. Mengkonversi tipe data kolom Fungsi SQL kadang-kadang mengembalikan nilai. 46 mengambil argumen dan selalu Gambar 3. 1 Fungsi SQL Ada dua jenis fungsi: Fungsi Single-baris Fungsi Multiple-baris Fungsi Single-Baris Fungsi-fungsi ini beroperasi pada baris tunggal saja dan hasil pengembaliannya adalah satu hasil per baris. Fungsi Multiple-Baris Fungsi-fungsi ini dapat memanipulasi kelompok baris untuk memberikan satu hasil per kelompok baris. Gambar 3. 2 Ilustrasi Fungsi SQL Fungsi single-baris digunakan untuk memanipulasi item data. Fungsi ini 47 menerima satu atau lebih argumen dan oleh query dikembalikan satu nilai untuk setiap baris. Argumen dapat berupa salah satu dari berikut ini : Nilai atau konstanta yang disiapkan oleh pengguna Nilai Variabel Nama Kolom Ekspresi Ciri-ciri fungsi single-baris meliputi: Bertindak pada setiap baris yang dikembalikan dalam query Satu hasil per baris Mungkin mengembalikan nilai data dari tipe yang berbeda daripada yang direferensikan Mungkin mengharapkan satu atau lebih argumen Dapat digunakan dalam SELECT, WHERE, dan ORDER BY Dalam sintak: function_name adalah nama fungsi arg1, arg2 adalah argumen yang akan digunakan oleh fungsi. Hal ini dapat diwakili oleh nama kolom atau ekspresi. Gambar 3. 3 Deklarasi Nama Fungsi Character functions: Menerima masukkan berupa karakter dan pengembaliannya dapat berupa nilai karakter dan nilai number Number functions: Menerima masukkan numerik dan mengembalikan nilai-nilai numerik 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.) Conversion functions: Konversi nilai dari satu tipe data tipe yang lain General functions: - NVL 48 - NVL2 - NULLIF - COALESCE - CASE - DECODE Gambar 3. 4 Jenis-Jenis Fungsi Single Row Fungsi Karakter Gambar 3. 5 Klasifikasi Fungsi Karakter Fungsi karakter single-baris menerima data karakter sebagai masuk-kan dan dapat mengembalikan karakter dan nilai numerik. Fungsi karakter dibagi menjadi berikut: Fungsi Kasus-manipulasi Fungsi Karakter-manipulasi 49 Tabel 5 Fungsi dan Kegunaannya Fungsi LOWER (columm / expression) UPPER (columm / expression) INITCAP (columm / expression) CONCAT(columm1 / expression1, columm2 / expression2) SUBSTR (columm / expression, [m,n] LENGTH (columm / expression) INST (columm ’string’, [,m], [n]) / expression, LPAD ( columm / expression, n, ‘string’ ) Kegunaan Mengkonversi nilai-nilai karakter alpha menjadi huruf kecil Mengkonversi nilai-nilai karakter alpha menjadi huruf besar Mengkonversi nilai karakter alpha ke huruf besar untuk huruf pertama dari setiap kata; hurufhuruf lainnya dalam huruf kecil Merangkai nilai karakter pertama dengan nilai karakter kedua; setara dengan operator (||) Pengembalian karakter dari nilai karakter mulai dari posisi karakter m, n (Jika m adalah negatif, hitungan dimulai dari akhir nilai karakter. Jika n dihilangkan, semua karakter dari awal hingga akhir string dikembalikan.) Mengembalikan jumlah karakter dalam ekspresi Mengembalikan posisi numerik dari karakter string yang telah ditentukan. Nilai m dan n secara default adalah 1, yang berarti memulai pencarian pada awal pencarian dan melaporkan kejadian pertama. Pads nilai karakter pada garis tepi sebelah kanan untuk lebar total posisi n karakter RPAD ( columm / expression, n, Pads nilai karakter pada garis ‘string’ ) tepi sebelah kiri untuk lebar total posisi n karakter TRIM (leading / trailing / both, Memungkinkan pengguna untuk memangkas leading atau trailing trim_character FROM karakter (atau keduanya) dari trim_source) string karakter. Jika trim_character atau trim_source adalah karakter literal, pengguna harus mengapit dalam tanda kutip tunggal. REPLACE (text, search_string, Mencari ekspresi teks untuk string karakter dan jika replacement_string) ditemukan, menggantinya 50 Fungsi Kegunaan dengan pengganti string yang ditentukan Fungsi ManipulasiCase LOWER, UPPER, dan INITCAP adalah tiga fungsi untuk mengkonver-si atau memanipulasi case. LOWER Mengkonversi karakter string campuran huruf besar ke huruf kecil UPPER Mengkonversi karakter string campuran huruf kecil kehuruf besar INITCAP Menguba hhuruf pertama dari setiap kata ke huruf besardan huruf yang tersisa menjadi atau tetap huruf kecil SELECT 'The job '||UPPER(last_name)||' is ' ||LOWER(job_id) AS DETAILS" FROM employees; id for "EMPLOYEE Gambar 3. 6 Hasil Konversi dengan Fungsi String Menggunakan Fungsi Manipulasi Case Gambar 3.7 menampilkan jumlah karyawan, nama, dan nomor departemen pada perusahaan Higgins. Klausa WHERE pada pernyataan SQL pertama menentukan nama karyawan higgins. Karena semua data dalam tabel EMPLOYEES disimpan dalam case yang tepat, nama higgins tidak dapat ditemukan kecocokannya dalam tabel, dan tidak ada baris yang dipilih.Klausa WHERE pada pernyataan SQL kedua menentukan bahwa nama karyawan dalam tabel EMPLOYEES dibandingkan dengan higgins, mengubah kolom LAST_NAME menjadi huruf kecil untuk tujuan perbandingan. Karena kedua nama sekarang berhuruf kecil, kecocokan 51 ditemukan dan satu baris yang dipilih. Klausa WHERE dapat ditulis dengan cara berikut untuk menghasilkan hasil yang sama: ...WHERE last_name = 'Higgins' Nama dalam keluaran muncul seperti yang disimpan pada database. Untuk menampilkan nama dengan hanya huruf pertama dalam huruf besar, gunakan fungsi UPPER dalam pernyataan SELECT. SELECT employee_id, UPPER(last_name), department_id FROM employees WHERE INITCAP(last_name) = 'Higgins'; Gambar 3. 7 Hasil Query Menggunakan Fungsi ManipulasiCase Fungsi Manipulasi Karakter CONCAT, SUBSTR, LENGTH, INSTR, LPAD, RPAD, dan TRIM merupakan fungsi karakter manipulasi. CONCAT :Menggabung nilai bersama-sama (dibatasi untuk menggunakan dua parameter dengan CONCAT) SUBSTR : Ekstrak string berdasar pada panjang yang ditentukan LENGTH : Menunjukkan panjang string sebagai nilai numerik INSTR : Menemukan posisi numerik dari karakter tertentu LPAD : Pad nilai karakter pada garis tepi sebelah kanan RPAD : Pad nilai karakter pada garis tepi sebelah kiri TRIM : Memangkas atau menyisakan karakter (atau ke-duanya) dari string karakter (Jikatrim_character atau trim_source adalah karakter literal, pengguna harus mengapit dalam tanda kutip tunggal. 52 Menggunakan Fungsi Karakter Manipulasi Gambar 3.8 menampilkan nama depan dan nama belakang karyawan bergabung bersama-sama, panjang nama belakang, dan posisi numerik dari huruf nama belakang karyawan untuk seluruh karyawan yang memiliki REP yang ada dalam job ID dimulai pada posisi keempat dari job ID. Contoh Memodifikasi pernyataan SQL dalam Gambar 3.8 untuk menampilkan data karyawan yang namanya diakhiri dengan huruf n. 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'; Gambar 3. 8 Hasil Query Menggunakan Fungsi KarakterManipulasi Fungsi Numerik Fungsi numerik menerima masukkan numerik dan mengembalikan nilainilai numerik. Bagian ini menjelaskan beberapa fungsi numerik. 53 Tabel 6 Fungsi Numerik Fungsi ROUND(columm I expression, n) TRUNC(column I expression, n) MOD (m,n) Kegunaan Pembulatan nilai pada kolom, ekspresi, atau nilai desimal kenatau, jika n dihilangkan, tidak ada tempat desimal. Pemotongan nilai pada kolom, ekspresi, atau nilai decimal kenatau, jika n dihilangkan, n default ke nol. Mengembalikan sisa hasil m dibagi dengan n. Gambar 3. 9 Hasil Query dengan Fungsi Numerik Fungsi Pembulatan (ROUND) Fungsi pembulatan nilai pada kolom, ekspresi, atau nilai desimal ke-n. Jika argumen kedua adalah 0 atau hilang, nilai dibulatkan ke nol desimal. Jika argumen kedua adalah 2, nilai dibulatkan ke dua tempat desimal. Sebaliknya, jika argumen kedua adalah -2, nilai dibulatkan ke dua desimal ke kiri (dibulatkan ke unit terdekat dari 10). Fungsi ROUND juga dapat digunakan dengan fungsi tanggal. Tabel DUAL Tabel DUAL dimiliki oleh pengguna SYS dan dapat diakses oleh semua pengguna. Tabel ini berisi satu kolom, DUMMY, dan satu baris dengan nilai X. Tabel DUAL berguna ketika pengguna ingin mengembalikan nilai sekali saja (misalnya, nilai konstan, pseudocolumn, atau ekspresi yang tidak berasal dari tabel data pengguna). Tabel DUAL umumnya digunakan untuk sintak SELECT dan klausa kelengkapannya, karena SELECT dan klausa FROM keduanya adalah wajib, dan beberapa perhitungan tidak perlu memilih tabel yang sebenarnya. 54 Gambar 3. 10 Hasil Query Fungsi ROUND Fungsi TRUNC Fungsi TRUNC memotong nilai pada kolom, ekspresi, atau atau nilai desimal ke-n. Fungsi TRUNC bekerja dengan argumen mirip dengan fungsi ROUND. Jika argumen kedua adalah 0 atau hilang, nilai dipotong ke nol desimal. Jika argumen kedua adalah 2, nilai dipotong untuk dua tempat desimal. Sebaliknya, jika argumen kedua adalah -2, nilai dipotong untuk dua desimal ke kiri. Jika argumen kedua adalah -1, nilai tersebut dipotong ke satu tempat desimal ke kiri. Seperti fungsi ROUND, fungsi TRUNC dapat digunakan dengan fungsi tanggal. Gambar 3. 11 Hasil Query Fungsi TRUNC 55 Fungsi MOD Fungsi MOD mendapatkan hasil sisa argumen pertama dibagi dengan argumen kedua. Gambar 3.12 menghitung hasil sisa gaji setelah membaginya dengan 5.000 untuk semua karyawan yang job ID tugasnya adalah SA_REP. Gambar 3. 12 Hasil Query Fungsi MOD 2. Bekerja dengan Tanggal Format Tanggal Database menyimpan tanggal dalam format numerik internal yang mewakili abad, tahun, bulan, hari, jam, menit, dan detik.Tampilan default dan format masukkan untuk setiap tanggal adalah DD-MON-RR. Oracle database memberlakukan tanggal valid adalah antara1 Januari 4712 SM, dan 31 Desember 9999 AD. Gambar 3. 13 Format Tanggal pada Oracle Gambar 3.13, kolom keluaran HIRE_DATE ditampilkan secara default dengan format DD-MON-RR. Namun, tanggal tidak disimpan dalam data base dalam format ini. Semua komponen tanggal dan waktu disimpan. Jadi, meskipun HIRE_DATE seperti17-Juni-87 ditampilkan sebagai hari, bulan, dan tahun, ada juga waktu dan informasi abad terkait dengan 56 tanggal. Data lengkap 17 Juni 1987, 05:10:43, disimpan secara internal sebagai berikut : Abad 19 Tahun 87 Bulan 06 Hari 17 Jam 17 Menit 10 Detik 43 Abad dan Tahun 2000 Ketika rekor dengan kolom tanggal dimasukkan ke dalam tabel, informasi abad diambil dari fungsi SYS DATE. Namun, ketika kolom tanggal ditampilkan di layar, komponen abad tidak ditampilkan (secara default). Tipe data DATE selalu menyimpan informasi tahun sebagai angka empat digit internal: dua digit untuk abad dan dua digit untuk tahun. Sebagai contoh, database Oracle menyimpan tahun 1987 atau 2004, dan tidak hanya sebagai 87 atau 04. Fungsi SYSDATE SYS DATE adalah fungsi tanggal yang mengembalikan tanggal dan waktu server database sekaramg. Pengguna dapat menggunakan SYSDATE seperti menggunakan nama kolomlainnya. Contoh : SELECT SYSDATE FROM DUAL; Gambar 3. 14 Fungsi SYSDATE pada Query Penambahan dan Pengurangan Tanggal Karena tanggal tersimpan dalam database sebagai angka, maka pengguna dapat melakukan perhitungan dengan menggu-nakan operator aritmetika seperti penambahan dan pengurang-an. Pengguna dapat melakukan operasi berikut: 57 Tabel 7 Operasi pada Tanggal Operasi Hasil Deskripsi date + angka Date Menambahkan jumlah hari dari tanggal date - angka Date Mengurangi jumlah hari dari tanggal date – date Nilai hari Mengurangi tanggal dengan tanggal yang lain date + angka/24 Date Menambahkan sejumlah jam Gambar 3.15 menampilkan nama belakang dan jumlah minggu untuk semua karyawan pada departemen 90. Tanggal dimana karyawan mulai dipekerjakan (hire-date) dikurangi dengan tanggal saat ini (SYSDATE) dan membagi hasilnya dengan 7 untuk menghitung jumlah minggu bahwa seorang karyawan sudah bekerja. Catatan: SYSDATE adalah fungsi SQL yang mengembalikan tanggal dan waktu. Hasilnya eksekusi mungkin berbedadari contoh, karena tenggal sekarang dikurangi dengan tanggal karyawan mulai bekarja, diperoleh angka negatif (perbedaan adalah angka negatif). Gambar 3. 15 Hasil Query SYSDATE dengan Manipulasi Tanggal Fungsi Date Fungsi Date mengembalikan nilai dari tipe data DATE kecuali MONTHS_BETWEEN, yang mengembalikan nilai numerik. a. MONTHS_BETWEEN (date1, date2), Menemukan jumlah bulan antara date1 dan date2. Hasilnya bisa positif atau negatif. Jika date2 adalah lebih awal date1, hasilnya positif; jika date1 lebih awal dari date2, hasilnya negatif. 58 b. ADD_MONTHS (date, n), Menambahkan sejumlah n dari bulan kalender. Nilain harus integer dan bisa negatif. c. NEXT_DAY (date, 'char'), Menemukan tanggal hari tertentu berikutnya dalam minggu('char') pada tanggal sesuai date. Nilai char adalah sejumlah karakter string yang mewakili hari. d. LAST_DAY (date), Menemukan tanggal hari terakhir dari bulan yang berisi tanggal e. ROUND (date [, 'fmt']), Mengembalikan tanggal dibulatkan ke unit yang ditentukan olehformat model fmt. Jika format model fmt dihilangkan, tanggal dibulatkan ke terdekat hari. f. TRUNC (tanggal [, 'fmt']), Pengembalian tanggal dengan porsi waktu hari dipotong ke unit yang ditentukan oleh model format fmt. Jika model formatfmt dihilangkan, tanggal dipotong satu hari. Gambar 3. 16 Fungsi TRUNC dalam Pemotongan Tanggal Misalnya, menampilkan ID karyawan, tanggal mereka mulai bekerja, jumlah bulan bekerja, enam bulan tanggal review, Hari Jum‟at pertama setelah tanggal mereka mulai bekerja, dan hari terakhir dari bulan mereka mulai bekerja untuk seluruh karyawan yang telah bekerja selama kurang dari 70 bulan. SELECT employee_id, hire_date, MONTHS_BETWEEN (SYSDATE, hire_date) TENURE, ADD_MONTHS (hire_date, 6) REVIEW, NEXT_DAY (hire_date, 'FRIDAY'), LAST_DAY(hire_date) 59 FROM employees WHERE MONTHS_BETWEEN (SYSDATE, hire_date) < 70; Gambar 3. 17 Hasil Query dengan Manipulasi Tanggal Fungsi ROUND dan TRUNC dapat digunakan untuk nilai numerik dan tanggal. Ketika digunakan dengan tanggal, fungsi-fungsi ini bulat atau memotong dengan model format yang ditentukan.Oleh karena itu, pengguna dapat menggenapkan tanggal untuk tahun atau bulanterdekat. Contoh: Bandingkan tanggal mulai merekai bekerja untuk semua karyawan yang dimulai pada tahun 1997. Tampilan ID karyawan, tanggal dan bulanmereka mulai bekerja menggunakan fungsi ROUND dan TRUNC. SELECT employee_id, hire_date, ROUND(hire_date, 'MONTH'), TRUNC(hire_date, 'MONTH') FROM employees WHERE hire_date LIKE '%97'; Gambar 3. 18 Hasil Query dengan fungsi ROUND dan TRUNC 3. Fungsi Bersarang (Nesting Function) Fungsi single-baris dapat bersarang ke kedalaman. Fungsi bersarang dievaluasi dari tingkat terdalam ke tingkat terluar. Gambar 3.19 menampilkan nama belakang dari karyawan didepartemen 60. Evaluasi pernyataan SQL melibatkan tiga langkah yaitu : a. Fungsi bagian dalam mengambil delapan karakter pertama dari nama belakang. 60 Result1=substr(LAST_NAME, 1, 8) b. Fungsi bagian luar merangkai hasil dengan_us. Result2=CONCAT(Result1, '_ AS) c. Fungsi terluar mengkonversi hasil ke huruf besar. Seluruh ekspresi menjadi judul kolom karena tidak ada kolom aliasyang diberikan. Contoh : Menampilkan tanggal Jumat depan enam bulan dari tanggal mereka mulai bekerja.Tanggal yang dihasilkan harus muncul sebagai Jumat 13 Agustus1999. Orde hasil berdasarkan tanggal mereka mulai bekerja. SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS (hire_date, 6), 'FRIDAY'), 'fmDay, Month DDth, YYYY') "Next 6 Month Review" FROM employees ORDER BY hire_date; Gambar 3. 19 Hasil Query dengan Konversi TO_CHAR 4. Fungsi-Fungsi Umum Fungsi ini bekerja dengan tipe data dan berhubungan dengan penggunaan nilai null dalam daftar ekspresi. Tabel 8 Fungsi Umum Fungsi NVL Deskripsi Mengkonversi nilai null ke nilai yang sebenarnya 61 Jika expr1 tidak null, NVL2 kembali expr2 Jika expr1 adalah null, NVL2 kembali expr3. Argumen expr1 dapat memiliki tipe data. Membandingkan dua ekspresi dan mengembalikan null jika mereka sama; pengembalian ekspresi pertama jika mereka tidak sama Mengembalikan ekspresi pertama nonnull dalam daftar ekspresi NVL2 NULLIF COALESCE Fungsi NVL Untuk mengkonversi nilai null untuk nilai yang sebenarnya, menggunakan fungsi NVL. Sintak NVL(expr1, expr2) di mana expr1 adalah nilai sumber atau ekspresi yang mungkin berisi null expr2 adalah nilai target untuk mengkon versinol Pengguna dapat menggunakan fungsi NVL untuk mengkonversi tipe data, tetapi nilai kembali selalu sama dengan tipe data dari expr1. Konversi NVL untuk berbagai jenis data. Tipe Data NUMBER DATE CHAR or VARCHAR2 Contoh Konversi NVL(number_column,9) NVL(date_column, ‟01-Jan-2016‟) NVL(character_column, „Tidak tersedia‟) Menggunakan Fungsi NVL Untuk menghitung kompensasi tahunan dari semua karyawan, pengguna perlu mengalikan gaji bulanan dengan 12 dan kemudian hasilnya ditambah dengan persentasekomisi : SELECT last_name, salary, commission_pct, (salary*12) + (salary*12*commission_pct) AN_SAL FROM employees; 62 Perhatikan bahwa kompensasi tahunan dihitung hanya karyawan yang mendapatkan komisi. Jika ada kolom nilai dalam sebuah ekspresi adalah null, hasilnya adalah null. Untuk menghitung nilai semua karyawan, pengguna harus mengubah nilai null untuk angka sebelum menerapkan operator aritmetika. Dalam Gambar 3.20, fungsi NVL digunakan untuk mengkonversi nilai null ke nol. Gambar 3. 20 Query Menggunakan Fungsi NVL Menggunakan Fungsi NVL2 Fungsi NVL2 meneliti ekspresi pertama. Jika ekspresi pertama tidak null, maka fungsi NVL2 mengembalikan ekspresi kedua. Jika ekspresi pertama adalah null, maka ekspresi ketiga dikembalikan. Sintaks NVL2 (expr1, expr2, expr3) di mana: expr1 adalah nilai sumber atau ekspresi yang mungkin berisi nol expr2 adalah nilai yang dikembalikan jika expr1 tidak null expr3 adalah nilai yang dikembalikan jika expr1 adalah null Dalam contoh yang ditunjukkan olah Gambar 3.21, kolom COMMISSION_PCT diperiksa. Jika sebuah nilai terdeteksi, ekspresi 63 kedua SAL + COMM dikembalikan. Jika kolom COMMISSION_PCT memiliki atau menyimpan nilai null, ekspresi ketiga SAL dikembalikan. Argumen expr1 dapat memiliki tipe data. Argumen expr2 dan expr3 dapat memiliki tipe data kecuali tipe data LONG. Jika jenis data expr2 dan expr3 berbeda, server akan mengkonversi expr3 dengan jenis data expr2 sebelum membandingkan mereka kecuali expr3 adalah konstan null. Dalam kasus terakhir, tipe data konversi tidak diperlukan. Tipe data dari nilai pengembalian selalu sama dengan tipe data dari expr2, kecuali expr2 adalah data karakter, maka nilai pengembalian memiliki tipe data VARCHAR2. Gambar 3. 21 Query dengan Fungsi NVL2 Menggunakan Fungsi NULL IF Fungsi NULLIF membandingkan dua ekspresi. Jika mereka sama, fungsi mengembalikan null. Jika mereka tidak sama, fungsi mengembalikan ekspresi pertama. Pengguna tidak dapat menentukan NULL literal untuk ekspresi pertama. Sintak NULLIF (expr1, expr2) Dimana: 64 expr1 adalah nilai sumber dibandingkan dengan expr2 expr2 adalah nilai sumber dibandingkan dengan expr1 (Jika tidak sama dengan expr1, expr1 dikembalikan.) Gambar 3.22 dibandingkan panjang dengan nama depan panjang nama dalam tabel belakang EMPLOYEES dalam tabel EMPLOYEES.Ketika panjang dari nama depan dan nama belakang sama nilai null ditampilkan tetapi jika tidak sama, maka panjang nama depan ditampilkan. Catatan: Fungsi NULLIF secara logis setara dengan ekspresi CASE. CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END Gambar 3. 22 Query Menggunakan Fungsi NULLIF Menggunakan Fungsi COALESCE Fungsi COALESSCE mengembalikan ekspresi non-null pertama dalam daftar. Sintak COALESCE(expr1, expr2, ...exprn) di mana expr1 ekspresi ini dikembalikan jika tidak null 65 expr2 mengembalikan ekspresi ini jika ekspresi pertama adalah null dan ekspresi ini tidaknull exprn mengembalikan ekspresi ini jika ekspresi sebelumnya null Semua ekspresi harus memiliki tipe data yang sama. Dalam contoh yang ditunjukkan pada Gambar 3.23, jika nilai MANAGER_ID tidak null, ia ditampilkan. Jika nilai MANAGER_ID adalah null, maka COMMISSION_PCT ditampilkan. Jika nilai-nilai MANAGER_ID dan COMMISSION_PCT adalah null, maka nilai -1 ditampilkan. Gambar 3. 23 Hasil Eksekusi Query dengan Fungsi COALESCE 5. Ekspresi Bersyarat Dua metode yang digunakan untuk melaksanakan pengolahan bersyarat (logika IF-THEN-ELSE) pada pernyataaan SQLadalah ekspresi CASE dan fungsi DECODE. Catatan: Ekspresi CASE sesuai dengan ANSI SQL, sedangkanfungsi DECODE khusus untuk Oracle sintak. Ekspresi CASE Ekspresi CASE menggunakan logika IF-THEN-ELSE dalam pernyataan SQL tanpa harus memanggil prosedur. Dalam ekspresi CASE sederhana, Oracle server pertama kali mencari pasangan WHEN ...THEN dimana jika exprsama dengan comparison_expr maka akan dikembalikan return_expr. Jika tidak ada pasangan WHEN... THEN yang memenuhi kondisi ini, dan jika klausa 66 ELSE ada, maka server Oracle mengembalikan else_expr. Jika tidak, server Oracle mengembalikan null. Pengguna tidak dapat menentukanliteral NULL untuk semua return_exprs dan else_expr tersebut. Semua ekspresi (expr, comparison_expr, danreturn_expr) harus memiliki tipe data yang sama, dapat berupa CHAR, VARCHAR2, NCHAR, atau NVARCHAR2. Menggunakan Ekspresi CASE Pernyataan SQL dalam Gambar 2-56, nilai job_id telah diuraikan atau diterjemahkan. Jika job_id adalah IT_PROG, kenaikan gaji adalah 10%; jika job_id adalah ST_CLERK, kenaikan gaji 15%; jika job_id adalah SA_REP, kenaikan gaji adalah 20%. Untuk semua peran pekerjaan lain, tidak ada kenaikan gaji. Pernyataan yang sama dapat ditulis dengan fungsi DECODE. Contoh di atas merupakan contoh pencarian yang menggunakan ekspresi CASE. Pencarian menggunakan ekspresi CASE terjadi dari kiri ke kanan sampai pada kondisi yang dicari telah ditemukan, maka ekspresi pengembalian akan dikembalikan. Jika tidak ada kondisi yang ditemukan, tetapi klausa ELSE ada, maka akan dikembalikan ekspresi pengembalian yang terdapat dalam klausa ELSE; jika tidak, maka nilai NULL dikembalikan. SELECT last_name,salary, (CASE WHEN salary<5000 THEN 'Low' WHEN salary<10000 THEN 'Medium' WHEN salary<20000 THEN 'Good' ELSE 'Excellent' END) qualified_salary FROM employees; 67 Gambar 3. 24 Query dengan Kondisi CASE Fungsi DECODE Fungsi DECODE menerjemahkan ekspresi dalam cara yang mirip denganl ogika IF-THEN-ELSE yang digunakan dalam berbagai bahasa. Fungsi DECODE menerjemahkan ekspresi setelah membandingkannya dengan nilai masing-masing yang dicari atau nilai pencarian. Jika ekspresi adalah sama dengan nilai pencarian, hasilnya akan dikembalikan. Menggunakan Fungsi DECODE Pernyataan SQL dalam Gambar 3.25, nilai job_id diuji. Jika job_id adalah IT_PROG, kenaikan gaji adalah 10%; jika job_id adalah ST_CLERK, kenaikan gajia dalah 15%; jika job_id adalah SA_REP, kenaikan gaji adalah 20%. Untuk semua peran pekerjaan lain, tidak ada kenaikan gaji. Pernyataan yang sama dapat dinyatakan dalam pseudocode sebagai pernyataan IF-THEN-ELSE: IF job_id = IF job_id = IF job_id = ELSE salary 'IT_PROG' 'ST_CLERK' 'SA_REP' = salary THEN THEN THEN salary = salary*1.10 salary = salary*1.15 salary = salary*1.20 Gambar 3. 25 Query dengan Fungsi DECODE 68 D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 3, mencakup topik-topik berikut: 1. Pembuatan query yang memerlukan penggunaan fungsi numerik, karakter, dan tanggal. 2. Melakukan perhitungan tahun dan bulan untuk memecahkan masalah. 3. Menentukantanggalseseorang mulai bekerja No Aktivitas Pembelajaran 1 Apersepsi Keterlaksanaan tentang Ya Tidak Ya Tidak Menggunakan Fungsi SingleBaris Untuk Menyesuaikan 2 Keluaran Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan pembelajaran 1 6 Bertanya tentang pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan E. Latihan / Kasus / Tugas 1. Anda akan mengeksekusi beberapa fungsi matematika. Tabel apa yang akan anda gunakan untuk melakukan kalkulasi matematika dari ekspresi atau nilai yang bukan diambil dari tabel di dalam database? 69 a. EMP b. EMPLOYEES c. DUAL d. DUMMY 2. Anda diminta menulis pernyataan SQL untuk mengeksekusi kenaikan gaji pegawai dengan ketentuan bahwa setiap bagian mempunyai nilai kenaikan yang berbeda-beda. Misal bagan Administrasi naik 10% , Bagian Sales naik 15% , dan Bagian Akunting naik 12 %, selai ketiga bagian tersebut tidak terjadi kenaikan. Fungsi apa yang akan anda gunakan ? pilih semua fungsi yang dapat digunakan. a. DECODE b. NVL c. COALESCE d. CASE e. NVL2 3. Di bawah ini, mana yang bukan fungsi untuk tipe data numerik ? a. ROUND ( ) b. MOD ( ) c. TO_NUMBER ( ) d. CEIL ( ) e. TRUNC ( ) 4. Dari perintah tentang operasi data tanggal, mana yang gagal pada sa‟at dieksekusi? a. SELECT sysdate + 2 FROM DUAL; b. SELECT sysdate + TO_DATE (‟02-JAN-2015‟,‟DD-MON-YYYY‟) FROM DUAL; c. SELECT to_date (‟02-JAN-15‟,‟DD-MON-RR‟) – to_date (‟01-JAN15‟,‟DD-MON-RR‟) FROM DUAL; d. SELECT to_date (‟02-JAN-15‟,‟DD-MON-RR‟) – sysdate FROM DUAL; e. SELECT to_date (‟02-JAN-15‟,‟DD-MON-RR‟) + 12/24 FROM DUAL; 70 F. Rangkuman Pada kegiatan pembelajaran 3, telah dipelajari fungsi single-baris yang dapat digunakan untuk dapatmemanipulasiberikut: DataCharacter : LOWER, UPPER, INITCAP, CONCAT, SUBSTR, INSTR, dan LENGTH. DataNumerik : ROUND, TRUNC, dan MOD Data Tanggal :MONTHS_BETWEEN,ADD_MONTHS, NEXT_ DAY, LAST_DAY,ROUND, dan TRUNC Hal penting yang perlu diIngat adalah : Nilai tanggaljuga dapat menggunakanoperatoraritmetika.Fungsikonversidapat mengkonversikarakter, tanggal, dan –nilai nilai numerik: TO_CHAR,TO_DATE, TO_NUMBER. Ada beberapafungsiyang berhubungan dengannulls, termasukNVL, NVL2, NULLIF, dan COALESCE. Logika IFTHEN-ELSEdapat diterapkandalampernyataanSQLdengan menggunakanekspresi CASEataufungsiDECODE. SYSDATEadalah fungsitanggalyang mengembalikantanggal dan waktu. Untuk melakukan kalkulasi matematika dari nilai yang bukan diambil dari tabel di dalam database digunakan tabel dummy yang disebut tabel DUAL. G. Umpan Balik dan Tindak Lanjut 1. Apakah anda sudah mampu menulis sub queries di klausa WHERE pada pernyataan SQL lain untuk mendapatkan nilai-nilai yang kondisinya tidak diketahui, dan berapa prosen tingkat kompetensinya? Setelah menyelesaiakan lembar kerja dan menjawab latihan, isilah tabel berikut ini: IPK Melakukan Hasil Yang Rencana Tindak Diperoleh Lanjut perhitungan data Memodifikasi item data individu 71 Memanipulasi keluaran untuk kelompok baris Menformat tanggal dan nomor untuk tampilan Mengkonversi tipe data kolom H. Kunci Jawaban 1. c 2. a, d 3. c 4. b 72 73 74 75 Kegiatan Pembelajaran 4 : Menampilkan Data Dari Beberapa Tabel A. Tujuan Setelah mengikuti kegiatan pembelajaran 4 ini diharapkan peserta diklat dapat: 1. Menjelaskan bagaimanacara untuk mendapatkan data yang diperoleh dari beberapa tabel (lebih dari satu tabel). 2. Menggunakan JOIN untuk melihat informasidari beberapa tabel. 3. Menampilkan data yang diperoleh dari beberapa tabel. B. Indikator Pencapaian Kompetensi Indikator pencapaian pada kegiatan pembelajaran ini adalah: 1. Menulis pernyataan SELECTuntuk mengakses data dari beberapa tabel (lebih dari satu tabel) dengan menggunakan equijoin dan none quijoin. 2. Join tabel untuk dirinya sendiri dengan menggunakan self-join. 3. Melihatdata yang secara umum tidak memenuhi kondisi join dengan menggunakan Outer Join. 4. Menghasilkan produk Cartesian semua baris dari dua tabel atau lebih. C. Uraian Materi 1. Penggabungan Tabel Menggunakan SQL Mendapatkan Data dari Beberapa Tabel Kadang-kadang pengguna perlu menggunakan data lebih dari satu tabel. Dalam Gambar 4.1, ditampilkan data dari dua tabel yang terpisah: Employee ID ada dalam tabel EMPLOYEES. Department ID ada di tabel EMPLOYEES dan di tabel DEPARTMENTS. Nama Department ada dalam tabel DEPARTMENTS. Untuk menghasilkan laporan yang mencakup hal-hal di atas, maka pengguna perlu untuk menghubungkan tabel EMPLOYEES dan tabel DEPARTMENTS serta data akses dari keduanya. 76 Gambar 4. 1 Tabel yang akan dimanipulasi Pengertian JOIN Untuk menggabung tabel, pengguna dapat menggunakan sintak JOIN yang kompatibel dengan SQL Standar 1999. Database terdiri dari beberapa tabel, setiap tabel menyimpan data yang berbeda-beda. Jika pengguna ingin menampilkan informasi yang datanya diperoleh dari beberapa tabel, maka pengguna harus melakukan join. Join antara dua tabel memerlukan kondisi join yang digunakan untuk menghubungkan data dari satu tabel ke data yang berada pada tabel lain. Kondisi join didefinisikan pada klausa WHERE. Kondisi JOIN dan Jenis JOIN Berdasar pada tanda pembanding yang digunakan pada kondisi join di klausa WHERE, join dibagi kedalam dua bagian yaitu: Equi Join adalah join antara dua tabel yang kondisi join-nya menggunakan operator sama dengan ( = ) Non-equi Join adalah join antara dua tabel yang kondisi joinnya menggunakan selain operator sama dengan : < , >, BETWEEN, serta tanda pembanding lainnya. Sedangkan dari data yang dihasilkan jenis join ada tiga, yaitu: Inner Join adalah join yang menghasilkan data yang bersesuaian atau data yang memenuhi kondisi join saja, sedangkan data yang 77 tidak sesuai atau tidak mempunyai pasangan tidak akan dimunculkan. Outer Join adalah join yang hasilnya merupakan gabungan data yang bersesuaian atau data yang memenuhi kondisi join dan data yang tidak mempunyai pasangan. Outer Join digolongkan menjadi Left Outer Join, Right Outer Join, dan Full Outer Join. Self Join adalah join yang dilakukan antar kolom dalam satu tabel. Join yang kompatibel dengan SQLStandar1999, adalah : Cross Join, Natural Join, Klausa USING, Full outer join. Membuat Natural Join Pengguna dapat menggabung tabel secara otomatis berdasarkan pada kolom di dua tabel yang memiliki tipe data dan nama yang sama. Catatan: Natural Join hanya menggabung kolom pada dua tabel yang memiliki nama dan tipe data yang sama. Jika kolom memiliki nama yang sama tetapi tipe data berbeda, maka sintak Natural Join akan menyebabkan kesalahan. Mengambil Records dengan Natural Join Gambar 4.2, Tabel LOCATIONS digabung dengan table DEPARTMENT berdasar pada kolom LOCATION_ID, yang merupakan satu-satunya kolom dengan nama yang sama dikedua tabel. Gambar 4. 2 Hasil Query NATURAL JOIN 78 Natural Join dengan Klausa WHERE Pembatasan tambahan pada Natural Join diimplementasikan dengan menggunakan klausa WHERE. Contoh berikut membatasi baris keluaran untuk mereka dengan department ID 20 atau 50. SELECT department_id, department_name, location_id, city FROM departments NATURAL JOIN locations WHERE department_id IN (20, 50); Gambar 4. 3 Query Natural Join dengan Klausa WHERE Klausa USING Natural Join menggunakan semua kolom dengan nama dan tipe data yang sama untuk digabung. Klausa USING juga dapat digunakan untuk menentukan kolom yang harus digabung dengan menggunakan Equi join. Contoh : SELECT l.city, d.department_name FROM locations l JOIN departments (location_id) WHERE location_id = 1400; d USING 2. Penggabungan Nama Kolom Klausa USING untuk Equijoin Untuk menentukan karyawan pada sebuah departemen, pengguna membandingkan nilai pada kolom DEPARTMENT_ID dalam tabel EMPLOYEES dengan nilai pada kolom DEPARTMENT_ID dalam tabel DEPARTMENTS. Hubungan antara tabel EMPLOYEES dan tabel DEPARTMENS departemen tabel adalah Equijoin; yaitu, nilai-nilai di 79 kolom DEPARTMENT_ID di kedua tabel harus sama. Dalam beberapa kasus, join ini melibatkan primary key dan foreign key, Equijoin juga disebut simple join atau inner join. Gambar 4. 4 Klausa USING untuk Equijoin Menggunakan Tabel Alias Kualifikasi nama kolom dengan nama tabel dapat memakan waktu dalam eksekusinya, terutama jika nama tabel yang panjang. Pengguna dapat menggunakan tabel alias sebagai ganti nama tabel. Sama seperti kolom alias yang memberikan nama kolom dengan nama yang lain, tabel alias memberikan tabel dengan nama tabel yang lain. Penggunaan tabel alias dapat membantu memperkecil kode SQL, karena penggunaan lokasi memori yang lebih sedikit. Perhatikan bagaimana tabel alias diidentifikasi dalam klausa FROM dalam contoh. Nama tabel ditentukan secara penuh, diikuti dengan spasi dan kemudian tabel alias. Tabe lEMPLOYEES telah diberikan aliase, dan tabel DEPARTMENTS diberikan alias d. Gambar 4. 5 Query Penggunaan Tabel Alias 80 Klusa ON Pada dasarnya kondisi join yang digunakan pada Natural Join adalah Equijoin dengan menggunakan kolom yang namanya sama. Dengan klausa ON pengguna dimungkinkn untuk melakukan join pada dua tabel walaupun pada kedua tabel tersebut tidak memiliki kolom yang namanya sama untuk dijadikan sebagai kondisi join, tetapi data pada data pada kolom-kolom tersebut memiliki data yang sama sehingga dimungkinkan untuk dilakukan join. Gambar 4. 6 Klausa ON pada Query Self Join Kadang-kadang pengguna harus mengabungkan tabel untuk dirinya sendiri. Untuk menemukan nama manajer setiap karyawan, pengguna perlu menggabung tabel EMPLOYEES untuk dirinya sendiri, atau melakukan gabungan diri. Sebagai contoh, untuk menemukan nama manajer Lorentz, pengguna perlu: a. Mencari Lorentz dalam tabel EMPLOYEES dengan melihat kolom LAST_NAME. b. Mencari manajer ID untuk Lorentz dengan melihat kolom MANAGER_ID. Manajer ID Lorentz adalah 103. c. Mencari nama manajer yang memiliki EMPLOYEE_ID103 dengan melihat kolom LAST_NAME. EMPLOYEE_ID Hunold adalah 103, jadi Hunold adalah manajer Lorentz. 81 Pada Gambar 4.7, terlihat tabel yang sama sebanyak 2 kali. Pertama, terlihat tabel untuk menemukan Lorentz di kolom LAST_NAME dan nilai MANAGER_ID yaitu 103. Kedua ,terlihat di kolom EMPLOYEE_ID untuk menemukan 103 dan kolom LAST_NAME untuk menemukan Hunold. Gambar 4. 7 Contoh Self Join pada Query Klausa ON juga dapat digunakan untuk menggabung kolom yang memiliki nama yang berbeda, dalam tabel yang sama atau di tabel yang berbeda. Contoh yang ditampilkan adalah self join dari tabel EMPLOYEES, berdasar pada kolom EMPLOYEE_ID dan MANAGER_ID. Gambar 4. 8 Klausa ON dengan Kombinasi SELF JOIN 82 Kondisi Tambahan untuk JOIN Pengguna dapat menerapkan kondisi tambahan untuk Join. Contoh pada Gambar 4.9, ditampilkan perlakuan join pada tabel EMPLOYEES dan tabel DEPARTEMENTS dan hanya menampilkan karyawan yang memiliki manajer ID 149. Untuk menambahkan kondisi tambahan untuk klausa ON, Pengguna dapat menambahkan AND, atau dapat juga menggunakan klausa WHERE untuk menerapkan kondisi tambahan sebagai alternatif: SELECT e.employee_id, e.last_name, e.department_id, d.department_id, d.location_id FROM employees e JOIN departments d ON (e.department_id = d.department_id) WHERE e.manager_id = 149; Gambar 4. 9 KlausaJOIN pada Query Non-Equijoins Sebuah non-Equijoin adalah kondisi bergabung yang menggunakan operator selain operator sama dngan (=). Hubungan antara tabel EMPLOYEES dan tabel JOB_GRADES adalah contoh dari non-Equijoin. Hubungan antara dua tabel adalah bahwa kolom SALARY dalam tabel EMPLOYEES harus memiliki nilai antara kolom LOWEST_SALARY dan kolom HIGHEST_SALARY dari tabel JOB_GRADES. Hubungan tersebut diperoleh dengan menggunakan operator selain operator sama dengan (=). Contoh pada Gambar 4.10 dan 4.11 membuat non-Equijoin untuk mengevaluasi kelas gaji karyawan. Gaji harus berada antara setiap pasangan dari rentang gaji terendah dan gaji tertinggi. Ketika query dijalankan semua karyawan gajinya berada diantara gaji terendah dan gaji tertinggi akan dimunculkan dan tidak ada karyawan yang 83 dimunculkan sebanyak 2 kali, karena semua gaji karyawan terletak dalam batas-batas yang disediakan oleh tabel job_grades. Artinya, tidak ada karyawan yang mendapatkan gaji kurang dari nilai terendah yang ada pada kolom LOWEST_SAL atau lebih dari nilai tertinggi yang ada pada kolomHIGHEST_SAL. Kondisi lain (seperti <= dan> =) dapat digunakan, tetapi BETWEEN adalah yang paling sederhana. Gambar 4. 10 Tabel EMPLOYEES dan JOB_GRADES Gambar 4. 11 Implementasi Non-Equijoins pada Query 84 Outer Join Menggabung tabel dengan NATURAL JOIN, Klausa USING, atau Klausa ON hasilnya berada di dalam Inner Join, sedangkan setiap baris yang tak bersesuaian atau tidak cocok tidak akan ditampilkan pada keluaran. Untuk mengembalikan atau menampilkan baris yang tak bersesuaian atau tidak cocok, pengguna dapat menggunakan Outer Join. Outer Join mengembalikan semua baris yang memenuhi kondisi join dan juga mengembalikan beberapa atau semua baris dari satu tabel baik yang memiliki pasangan ataupun yang tidak memiliki pasangan pada tabel lain. Ada tiga jenis Outer Join : LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN Left Outer Join Query pada Gambar 4.12 akan mengembalikan semua baris dalam tabel EMPLOYEES yang merupakan tabel kiri, termasuk juga baris yang nilaianya tidak cocok dengan baris yang berada di tabel DEPARTMENTS. Gambar 4. 12 Hasil Query Left Outer Join 85 Right Outer Join Query pada Gambar 4.13, akan mengembalikan semua baris dalam tabel DEPARTMENTS, yang merupakan tabel kanan, termasuk juga baris yang nilainya tidak cocok dengan baris yang berada di tabel EMPLOYEES. Gambar 4. 13 Hasil Query Right Outer Join pada Full Outer Join Query pada Gambar 4.14 akan mengembalikan semua baris dalam tabel EMPLOYEES, termasuk juga baris yang nilainya tidak cocok dengan baris yang berada di tabel DEPARTMENTS. Selain itu Query juga akan mengambilkan semua baris dalam tabel DEPARTMENTS, termasuk juga baris yang nilainya tidak cocok dengan baris yang berada di tabel EMPLOYEES. 86 Gambar 4. 14 Hasil Query Full Outer Join pada Produk Cartesian Ketika kondisi join tidak valid atau kondisi join dihilangkan atau tanpa menggunakan kondidsi join, maka akan menghasilkan produk Cartesian, di mana semua kombinasi baris ditampilkan. Semua baris dalam tabel pertama digabung dengan semua baris dalam tabel kedua.Sebuah produk Cartesian cenderung menghasilkan sejumlah besar baris, dan hasilnya adalah jarang berguna. Pada Gambar 4.15, ditampilkan nama belakang karyawan dan nama departemen dari tabel EMPLOYEES dan tabel DEPARTMENTS. Karena tidak ada kondisi join yang ditetapkan atau dinyatakan, semua baris (20 baris) dari tabel EMPLOYEES digabung dengan semua baris (8 baris) dalam tabel DEPARTMENTS, sehingga menghasilkan keluaran 160 baris. 87 Gambar 4. 15 Hasil Query Cartesian Product Cross Join Cross Join akan menghasilkan produk Cartesian dari dua buah tabel. Jumlah data yang dihasilkan merupakan perkalian jumlah data pada tabel pertama dengan jumlah data pada tabel kedua seperti ditunjukkan pada Gambar 4.16. Gambar 4. 16 Hasil Query CROSS JOIN D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 4, mencakup topik-topik berikut: 88 1. Menggabung tabel menggunakan Equi join 2. Melakukan penggabungan tabel menggunakan Outer Join dan Self Join 3. Menambah kondisi Join No Aktivitas Pembelajaran 1 Apersepsi Keterlaksanaan tentang cara data dari menampilkan Ya Tidak Ya Tidak beberapa tabel 2 Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan pembelajaran 1 6 Bertanya tentang pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan E. Latihan / Kasus / Tugas 1. User ingin melakukan join antara tabel pegawai dan bagian. Di dalam tabel pegawai masih terdapat beberapa pegawai yang belum ditempatkan ke bagian tertentu. Jika user tersebut ingin menampilkan semua pegawai, baik yang sudah ditempatkan maupun yang belum ditempatkan ke bagian tertentu, maka query yang tepat adalah: a. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a, bagian b WHERE a.kode_bagian=b.kode_bagian(+); 89 b. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a RIGHT OUTER JOIN bagian b ON (a.kode_bagian=b.kode_bagian); c. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a FULL OUTER JOIN bagian b ON (a.kode_bagian=b.kode_bagian); d. SELECT a.nama_pegawai, b.nama_bagian FROM pegawai a, bagian b WHERE a.kode_bagian(+)=b.kode_bagian; 2. Pilih 2 pernyataan klausa USING pada JOIN antartabel yang benar adalah: a. Klausa USING digunakan jika ada beberapa kolom yang namanya sama di tabel yang akan di-join b. Klausa USING digunakan jika tidak ada kolom yang namanya sama di kedua tabel c. Klausa USING hanya akan menampilkan data-data yang namanya sama di kedua tabel yang di-join d. Nama kolom yang disebutkan pada klausa USING tidak boleh diawali dengan nama tabel atau tabel alias 3. Anda ingin membuat laporan dengan melibakan empat buah tabel. Agar tidak terjadi cartesian product, minimal berapa kondisi join yang diperlukan untuk mengantisipasi hal tersebut? a. 1 kondisi join b. 2 kondisi join c. 3 kondisi join d. 4 kondisi join 4. Penggunaan natural join yang paling tepat adalah a. Jika hanya satu kolom yang namanya sama di tabel yang di-join b. Jika hanya 2 kolom atau lebih yang namanya sama di tabel yang dijoin c. Jika tidak ada kolom yang namanya sama di tabel yang di-join d. Jika hanya satu record yang sama dari tabel yang di-join F. Rangkuman Ada beberapa cara untuk menggabung tabel. Jenis untuk menggabung tabel yaitu: Equijoin, Non-equijoin, Outer join, Self-join, Cross join, Natural join, dan 90 Full (or two-sided) outer join. Hasil produk Cartesian akan menampilkan semua kombinasi dari baris, yang dapat dilakukan dengan menghilangkan klausa WHERE atau dengan klausa CROSS JOIN. Tabel Alias dapat mempercepat akses ke database dan memori yang digunakan relatif lebih sedikit. Hal penting yang harus diperhatikan adalah: 1. Join memerlukan kondisi join. Tanpa kondisi join maka join akan menghasilkan produk Cartesian. 2. Kondisi pembanding Equijoin menggunakan tanda sama dengan (=). Join yang menggunakan selain tanda sama dengan dikondisi join disebut nonequijoin. 3. Inner join menampilkan data yang punya pasangan pada kedua tabel 4. Outer join menampilkan data yang ada pasangannya maupun data yang tidak memiliki pasangan pada kedua tabel. Ada 3 Outer join yaitu : LEFT OUTER JOIN, RIGHT OUTER JOIN, dan FULL OUTER JOIN. 5. NATURAL JOIN digunakan jika terdapat satu dan hanya satu kolom yang namanya sama pada kedua tabel. G. Umpan Balik dan Tindak Lanjut 1. Apakah anda sudah mampu menjelaskan bagaimana cara untuk mendapatkan data yang diperoleh dari beberapa tabel (lebih dari satu tabel) dan berapa prosen tingkat kompetensinya? 2. Apakah anda sudah mampu menggunakan JOIN untuk melihat informasi dari beberapa tabel dan berapa prosen tingkat kompetensinya? 3. Apakah anda sudah mampu menampilkan data yang diperoleh dari beberapa tabel dan berapa prosen tingkat kompetensinya? Setelah menyelesaiakan lembar kerja dan menjawab latihan, isilah tabel berikut ini: 91 Hasil Yang Diperoleh IPK Menulis pernyataan SELECT untuk mengakses data dari beberapa tabel (lebih dari satu tabel) dengan menggunakan Join tabel untuk equijoin dirinya dan none quijoin. dengan sendiri menggunakan self-join. Melihat data yang secara umum tidak memenuhi kondisi join dengan menggunakan Menghasilkan Join. Outer produk Cartesian semua baris dari dua tabel atau lebih. H. Kunci Jawaban 1. a 2. a 3. c 4. a 92 Rencana Tindak Lanjut 93 94 95 Kegiatan Pembelajaran 5: Data Manipulation Language Pada SQL A. Tujuan Setelah mengikuti kegiatan pembelajaran 5 ini peserta diklat diharapkan dapat: Menulis query dengan mengimplementasikan syntax Data Manipulation Language pada SQL B. Indikator Pencapaian Kompetensi Indikator pencapaian kompetensi pada kegiatan pembelajaran ini adalah: 1. Menjelaskan syntax DML dalam memasukkan data (insert data). 2. Menjelaskan syntax DML dalam mengubah data (update data) 3. Menjelaskan syntax DML dalam menghapus data (delete data) 4. Menjelaskan syntax DML dalam menampilkan data (select data) C. Uraian Materi Data Manipulation Language (DML) akan membahas cara memanipulasi data pada suatu tabel yang pernah dibuat sebelumnya. Kegiatan manipulasi data meliputi, 1. Memasukan data ke dalam tabel (insert) 2. Memperbaharui data (update) 3. Menghapus data (delete) 4. Memilih atau menyeleksi data (select) 1. Memasukan Data (Insertions) Cara yang mudah dan sederhana untuk memasukan data ke dalam tabel ialah dengan menggunakan stetemen insert. insert into <tabel>[(<kolom i, ...... , kolom j>)] values (<value i , ........ , value j>); Untuk setiap kolom yang dituliskan, harus memiliki hubungan dengan value yang sesuai. Pada kegiatan insert tidak menjadi suatu keharusan untuk megikuti susunan atribu-atribut seperti dalam pembuatan tabel (create table). Apabila ada kolom yang disertakan dalam penulisan, 96 maka akan ditambahkan dengan nilai null pada kolom yang bersangkutan. Contoh : insert into PROJECT (PNO, PNAME, PERSON, BUDGET, PSTART) values (313, ‘DBS’ , 4 , 150000.42, ’10-OCT-94’); atau insert into PROJECT values (313, ‘DBS’ ,7411, null , 150000.42 , ’10OCT-94’ , null ); Jika sudah ada beberapa data pada tabel lain, data-data ini dapat digunakan sebagia data masukan pada tabel yang baru. Untuk keperluan ini, digunakan stetemen insert seperti form dibawah ini, insert into <tabel> [(<kolom i, ..... , kolom j>)] <query> Contoh : Tabel baru create table OLDEMP( ENO number(4) not null, HDATE date); Gambar 5. 1 Query dalam membuat Tabel Sekarang kita dapat menggunakan tabel EMP yang sudah ada sebagai masukan pada tabel OLDEMP, insert into OLDEMP (ENO, HDATE) select EMPNO, HIREDATE from EMP where HIREDATE < ’31-DEC-60’; 97 2. Memperbaharui Data ( Updates ) Kegiatan update pada prinsipnya memperbaharui data lama dengan data yang terbaru. Kegiatan ini dilakukan apabila sudah terdapat dua atau record, tetapi data yang ada tersebut ternyata tidak berlaku lagi karena dianggap sudah usang atau bahkan data yang ada ternyata salah akibat kekurangtelitian saat melakukan pengisian atau akibat yang lain. Untuk memodifikasi/memperbarui data yang telah ada digunakan statemen update seperti di bawah ini, Update <tabel>set <kolom i> = <ekspresi i> , ........ , <kolom j> = <ekspresi j> [where <kondisi>]; Suatu ekspresi dapat terdiri dari salah satu diantara konstanta (nilai baru), operasi arithmatik atau operasi string, atau suatu SQL query. Stetemen update tanpa klausa where menghasilkan perubahan pada atribut yang sesuai pada seluruh baris. Contoh: a. Seorang pegawai yang departemen 20 sebagai bernama JONES dipindahkan manager dan pendapatannya dinaikan 1000, Update EMP set JOB = ‘MANAGER’, DEPTNO = 20, SAL = SAL + 1000 Where ENAME = ‘JONES‘; Gambar 5. 2 Sebelum Data diperbarui Gambar 5. 3 Sesudah Data diperbarui 98 ke b. Semua pegawai yang bekerja dilingkungan departemen 10 dan 30 memperoleh Kenaikan gaji sebesar 15% update EMP set SAL = SAL * 1.15 where DEPTNO in (10,30); Gambar 5. 4 Data Sebelum diperbarui 99 Gambar 5. 5 Data Sesudah diperbarui Sama seperti pada stetemen insert, tabel yang lain juga dapat digunakan untuk memperbaharui data sebagai masukan baru, Contoh: Semua salesman yang bekerja di lingkungan departemen 30 memperoleh gaji yang sama seperti manager yang berpenghasilan terendah diantara seluruh manager yang ada, Update EMP set SAL = (select min ( SAL ) from EMP Where JOB = ‘MANAGER’) Where JOB = ‘SALESMAN’ and DEPTNO = 30; 100 Gambar 5. 6 Data Sebelum diperbarui Gambar 5. 7 Data Sesudah diperbarui 101 Penjelasan: query mengambil kembali pendapatan minimum dari seluruh manager nilai ini kemudian diserahkan ke seluruh salesman yang bekerja di departemen 23. 3. Menghapus Data ( Deletions ) Semua baris atau baris yang dipilih pada sebuah tabel dapat dihapus dengan menggunakan perintah delete , seperti sintak dibawah ini : Delete from <tabel> [where<kondisi>]; Contoh: Menghapus karyawan yang memiliki nama „MILLER‟ Delete from EMP WHERE ENAME=’MILLER’; Gambar 5. 8 Data Sebelum dihapus Gambar 5. 9 Data Sesudah dihapus Jika tidak menggunakan klausa where, maka semua baris akan terhapus dari tabel. Kejadian ini akan menghasilkan hasil yang sama jika kita menggunakan perintah (sebagai alternatif) truncate table <tabel>, tetapi kegiatan penghapusan yang menggunakan perintah truncate table tidak dapat dianulir (undo). 4. Memiliki atau Menyeleksi Data (Selection) Sintak SQL select, menampilkan kembali sekelompok data terpilih yang sudah ada pada sebuah tabel. Select biasanya juga disebut query yang telah diuraikan pada awal pembahasan. Untuk mendapatkan informasi 102 Comment [A3]: Contoh program secara detail pada standard ORACLE 10g tentang tabel-tabel yang telah ada dapat digunakan query. select table_name from user_tables; D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 5, mencakup topik-topik berikut: 1. Membuat query untuk memasukkan data (insert data) 2. Membuat query untuk mengubah data (update data) 3. Membuat query untuk menghapus data (delete data) 4. Membuat query untuk menampilkan data (select data) No Aktivitas Pembelajaran 1 Apersepsi Keterlaksanaan tentang cara data dari menampilkan Ya Tidak Ya Tidak beberapa tabel 2 Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan pembelajaran 1 6 Bertanya tentang pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan 103 E. Lathan / Kasus / Tugas 1. Query yang tepat untuk memasukkan data pada tabel EMP yang memiliki 2 kolom (ID_NUMBER,NAME) adalah a. INSERT INTO EPM (ID_NUMBER,ENAME) VALUES (1,‟Alqodri‟); b. INSERTINTO EMP (ID_NUMBER,NAME) VALUES (1,‟Alqodri‟); c. INSERT INTO EMP (ID_NUMBER,NAME) VALUE (1,‟Alqodri‟); d. INSERT INTO EMP (ID_NUMBER,NAME) VALUES (1,‟Alqodri‟); 2. Query yang tepat untuk mengubah data tabel EMP yang memiliki gaji 1000 menjadi 15000, dimana tabel tersebut hanya memiliki 2 kolom yaitu ID_NUMBER dan SALadalah a. UPDATE SET sal=15000 where SAL=1000 from EMP; b. UPDATE SET sal=15000 where ID_NUMBER=1000 from EMP; c. UPDATE SET sal=15000 where ID_NUMBER=1 from EMP; d. UPDATE SET sal=1000 where ID_NUMBER=15000 from EMP; 3. User SCOUT ingin mengubah salah satu data pada tabel EMP yang memiliki 3 kolom (ID_NUMBER, NAME dan SAL). User tersebut ingin mengubah nama karyawan yang memiliki ID_NUMBER 15. Query yang tepat adalah a. UPDATE SET NAME=‟ALQODRI‟ where ID_NUMBER =15 from EMP; b. UPDATE SET ENAME=ALQODRI‟ where ID_NUMBER =15 from EMP; c. UPDATE SET NAME=‟ALQODRI‟ where ID_NUMBER =15 from SCOUT; d. UPDATE SET ID_NUMBER =15 where NAME=‟ALQODRI‟ from EMP; 4. Hal yang terjadi jika dalam pembuatan query delete user lupa menggunakan klausa FROM adalah a. Data dalam tabel terhapus semua b. Query error c. Tidak terdapat data yang terhapus d. Semua tabel terhapus 104 F. Rangkuman Data Manipulation Language (DML) membahas cara memanipulasi data pada suatu tabel yang pernah dibuat sebelumnya. Kegiatan manipulasi data meliputi, 1. Memasukan data ke dalam tabel (insert), Sintak dasar untuk memasukkan data adalah: insert into <tabel>[(<kolom i, ...... , kolom j>)] values (<value i , ........ , value j>); 2. Memperbaharui data (update), Sintak dasar untuk memperbarui data adalah: Update <tabel>set <kolom i> = <ekspresi i> , ........ , <kolom j> = <ekspresi j> [where <kondisi>]; 3. Menghapus data (delete), Sintak dasar untuk memperbarui data adalah: Delete from <tabel> [where<kondisi>]; Comment [A4]: Contoh program secara detail 4. Memilih atau menyeleksi data (select) G. Umpan Balik dan Tindak Lanjut 1. Apakah anda sudah mampu menulis query dengan mengimplementasikan syntax Data Manipulation Language pada SQL, dan berapa prosen tingkat kompetensinya? Setelah menyelesaiakan lembar kerja dan menjawab latihan, isilah tabel berikut ini: IPK Hasil Yang Diperoleh Rencana Tindak Lanjut Menjelaskan syntax DML dalam memasukkan data (insert data). 105 Menjelaskan syntax DML dalam mengubah data (update data) Menjelaskan syntax DML dalam menghapus data (delete data) Menjelaskan syntax DML dalam menampilkan data (select data) H. Kunci Jawaban 1. d 2. a 3. a 4. a 106 107 108 109 Kegiatan Pembelajaran 6: Data Definition Language Pada SQL A. Tujuan Setelah mengikuti kegiatan pembelajaran 6 ini, peserta diklat diharapkan dapat: Menulis query dengan mengimplementasikan syntax Data Definiton Language pada SQL B. Indikator Pencapaian Kompetensi Indikator pencapaian pada kegiatan pembelajaran ini adalah: 1. Menjelaskan syntax DDL dalam membuat tabel baru (create table) 2. Menjelaskan syntax DDL dalam mengubah struktur tabel (alter table) 3. Menjelaskan syntax DDL dalam menghapus tabel (drop table). C. Uraian Materi Data Difinitions Language (DDL) mambahas tentang hal-hal yang berhubungan dengan struktur tabel yang meliputi, 1. Cara membuat tabel baru (create table) , 2. Mengubah struktur tabel (alter table) dan 3. Menghapus tabel (drop table). 1. Membuat Tabel ( Create Table ) Sintak untuk membuat sebuah tabel kosong baru adalah seperti dibawah ini, create table <table>( <kolom 1><tipe data> [not null] [unique] [<kolom [not null] [unique] [<kolom constraint>], ...................... <kolom n><tipe constraint>], data> [<table constraint>] ); Setiap kolom, harus ditetapkan nama dan type data, sedangkan nama kolom harus unique atau tidak boleh ada dua nama atribut yang sama di 110 dalam sebuah tabel. Difinisi antara kolom satu dengan kolom yang lain dipisah dengan menggunakan koma. Penulisan nama tidak membedakan penggunaan huruf besar maupun huruf kecil. Contoh : Stetemen create table untuk tabel EMP2 adalah create table EMP2 ( EMPNO ENAME number(4) not null , varchar2(30) not null, JOB MGR varchar2(10) , number(4) , HIREDATE SAL date number (7,2), DEPTNO ); number(2) , Catatan :selain kolom EMPNO dan ENAME berlaku nilai null. Penamaan Constraints Definisi suatu tabel dapat mencakup beberapa rincian termasuk didalamnya adalah constraints. Constraints atau batasan nilai merupakan suatu usaha untuk mengelompokkan nilai dalam himpunan yang berlaku. Pada dasarnya ada dua tipe constraints yang disediakan yaitu : column constraints yang berhubungan dengan satu kolom, sedangkan yang lainnya adalah table constraints yang dapat berhubungan dengan lebih dari satu kolom atau beberapa kolom. Dalam sesi ini kita hanya konsentrasi pada constraints yang sangat sederhana. Spesifikasi constraints (yang sederhana) adalah seperti dibawah ini, [constraints <nama>] primary key | unique | not null Suatu constraints dapat berupa nama yang sangat disarankan agar nama yang digunakan berupa informasi yang berarti. Jika di dalam constraint tidak disertakan nama, maka ORACLE secara otomatis akan memberikan nama SYS_C<number> pada constraint. Constraint yang sangat penting di dalam database adalah constraint primary key. Constraint primary key memungkinkan identifikasi pada setiap baris didalam tabel secara unique. Berdasar pada hal di atas, maka sistim database yang kita buat 111 dapat menjamin tidak akan terjadi duplikasi di dalam sebuah tabel. Sebagai contoh pada tabel EMP yang kita miliki, create table EMP ( EMPNO number(4) constraint pk _emp primary key ............ ); Mendefinisikan bahwa atribut EMPNO sebagai primary key, sehingga setiap nilai untuk atribut EMPNO hanya terdapat satu kali (tidak ada duplikasi nilai) pada tabel EMP. Contoh : Kita akan membuat tabel yang diberi nama PROJECT untuk menyimpan informasi tentang keproyekan. Setiap proyek, kita ingin menyimpan nomor dan nama proyeknya, nama pegawai manager proyek, budget dan jumlah personil yang yang ikut bekerja pada proyek tersebut serta tanggal proyek dimulai dan tanggal proyek selesai. Kondisi-kondisi lain yang harus diperhatikan antara lain, 1. Proyek diidentifikasi oleh nomor proyek, 2. Nama proyek harus unique, 3. Manager dan budget proyek harus didefinisikan. Definisi tabel yang dimaksud adalah, create table PROJECT ( PNO number(3) constraint key, PNAME varchar2(60) unique, PMGR number(4) not null, PERSONS BUDGET number(5), number(8,2) not null, PSTART date, PEND date ); 112 prj_pk primary Gambar 6. 1 Hasil Eksekusi Query Membuat Tabel Constraint unique dapat memiliki lebih dari satu atribut, tetapi tata tulisnya harus dirubah menjadi unique (<kolom i, ..... , <kolom j>) sebagai contoh bahwa tidak ada dua proyek yang mempunyai tanggal selesainya sama, constraint tgl_tdk_sama unique (PEND.PSTART) Di bawah ini adalah checklist sederhana yang harus diperhatikan sebelum membuat tabel, a. Atribut-atribut apa saja yang akan disimpan?, tipe data apa yang dipergunakan pada atribut-atribut?, apakah harus menggunakan varchar2 atau malah menggunakan char . b. Kolom yang mana yang akan dijadikan primary key? c. Kolom yang mana menggunakan nilai null?, dan kolom yang mana yang tidak boleh duplikasi? d. Apakah ada nilai default untuk kolom tertentu? 2. Mengubah Tabel ( Alter Tabel ) Mengubah tabel dapat disamakan dengan kegiatan memodifikasi suatu tabel yang sudah ada sebelumnya dengan menggunakan statemen ALTER TABLE. Kegiatan memodifikasi dapat berarti juga merubah struktur tabel dalam artian menghapus atau bahkan menambah satu atau beberapa kolom. Sintak dari stetemen ALTER TABLE adalah sebagai berikut, Alter table <tabel> Add (<kolom><tipe data>[default<value>]<kolom constraint>]); 113 Untuk sintak yang lain akan didiskusikan pada sesi berikutnya. Contoh: Jika ingin menambah kolom pada tabel PROJECT yang telah dibuat, maka query yang digunakan adalah ALTER TABLE PROJECT ADD customer_name varchar2(45); Gambar 6. 2 Struktur Awal Tabel Gambar 6. 3 Struktur Setelah Terjadi Penambahan Kolom 3. Menghapus Tabel (Drop Table) Terkadang kita harus menghapus tabel yang pernah dibuat karena sudah tidak dibutuhkan lagi atau karena salah, untuk keperluan ini kita dapat menggunakan perintah atau sintak SQL drop table yang secara lengkap dapat dituliskan sbb, drop table <tabel> 114 Contoh: Jika ingin menghapus tabel PROJECT yang telah dibuat, maka query yang digunakan adalah DROP TABLE PROJECT; Gambar 6.3 Hasil Query Menghapus Tabel Perintah drop table <tabel> akan sukses dilakukan jika tabel yang dihapus adalah tabel yang berdiri sendiri (tidak mempunyai relasi dengan tabel yang lain) atau jika menghapus tabel relasi (tabel yang mengacu pada tabel yang lain) harus dilakukan dengan aturan yang benar. D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 6, mencakup topik-topik berikut: 1. Membuat query untuk membuat tabel 2. Membuat query untuk mengubah struktur tabel 3. Membuat query untuk menghapus tabel No Aktivitas Pembelajaran 1 Apersepsi tentang Keterlaksanaan Data Ya Tidak Ya Tidak Definition Language pada SQL 2 Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan 115 pembelajaran 1 6 Bertanya tentang materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan E. Latihan / Kasus / Tugas 1. Query yang digunakan untuk menghapus tabel EMP2 adalah a. Delete table EMP2 b. Drop table EMP2 c. Backspace table EMP2 d. Clear table EMP2 2. Query yang digunakan untuk menambahkan kolomnama dengan tipe varchar2 dengan panjang karakter 20 pada tabel tabel EMP2 adalah a. b. c. d. ALTER ALTER ALTER ALTER TABLE TABLE TABLE TABLE EMP2 ADD EMP2 ADD nama ADD EMP2(20) nama varchar2(20); nama varchar2(2); EMP2 varchar2(20); ADD nama varchar2; 3. Query yang digunakan untuk membuat tabel EMP2 dengan 2 kolom adalah a. create table EMP2 (PNO number(3) constraint prj_pk primary key, PNAME varchar2(60) unique); b. create table EMP2 unique (PNO number(3) constraint prj_pk primary key, PNAME varchar2(60)); c. create table EMP2 (PNO number(3) constraint unique prj_pk primary key, PNAME varchar2(60)); 116 d. create table EMP2 unique (PNO number(3) unique constraint prj_pk primary key, PNAME varchar2(60)); 4. Hal yang terjadi jika dalam query drop tabel, user lupa menambahkan nama tabel yang dihapus adalah a. Data dalam tabel terhapus semua b. Query error c. Tidak terdapat data yang terhapus d. Semua tabel terhapus F. Rangkuman Data Defiinition Language (DDL) mambahas tentang hal-hal yang berhubungan dengan struktur tabel yang meliputi, 1. Cara membuat tabel baru (create table) , Struktur query yang digunakan adalah create table <table>( <kolom 1><tipe data> [not null] [unique] [<kolom constraint>], ...................... <kolom n><tipe data> [not null] [unique] [<kolom constraint>], [<table constraint>] ); 2. Mengubah struktur tabel (alter table) Struktur query yang digunakan adalah Alter table <tabel> Add (<kolom><tipe data>[default<value>]<kolom constraint>]); 3. Menghapus tabel (drop table). Struktur query yang digunakan adalah drop table <tabel> 117 G. Umpan Balik dan Tindak Lanjut 1. Apakah Anda sudah mampu menulis query dengan mengimplementasikan syntax Data Definiton Language pada SQL, dan berapa prosen tingkat kompetensinya? Setelah menyelesaiakan lembar kerja dan menjawab latihan, isilah tabel berikut ini: Hasil Yang Diperoleh IPK Menjelaskan syntax DDL dalam membuat tabel baru (create table) Menjelaskan syntax DDL dalam mengubah struktur tabel (alter table) Menjelaskan syntax DDL dalam menghapus tabel (drop table). H. Kunci Jawaban 1. b 2. a 3. a 4. b 118 Rencana Tindak Lanjut 119 120 121 Kegiatan Pembelajaran 7: Data Control Language Pada SQL A. Tujuan Setelah mengikuti kegiatan pembelajaran 7 ini diharapkan pesertad iklat dapat: Menulis query dengan mengimplementasikan syntax Data Control Language pada SQL B. Indikator Pencapaian Kompetensi Indikator pencapaian pada kegiatan pembelajaran ini adalah: 1. Menjelaskan syntax DCL dalam menyimpan transaksi yang telah dilakukan (commit) 2. Menjelaskan syntax DCL dalam membatalkan transaksi yang pernah dilakukan (rollback) 3. Menjelaskan syntax DCL dalam memberikan hak akses user (grant) 4. Menjelaskan syntax DCL dalam mencabut hak akses user (revoke) C. Uraian Materi Kegiatan memodifikasi database yang memanfaatkan stetemen insert, update, dan delete adalah suatu kegiatan yang biasanya disebut tansaksi (transaction). Kegiatan transaksi ini disimpan secara sementara dalam database system. Ada beberapa kegiatan yang tergolong dalam Data Control Language (DCL) ini diantaranya adalah, 1. Menyimpan transaksi yang telah dilakukan (commit) 2. Membatalkan transaksi yang telah terjadi (rollback) 3. Memberi hak akses (grant) 4. Mencabut hak akses (revoke) Selama kegiatan transaksi yang kita lakukan belum diakhiri dengan stetemen commit, maka masih dimungkinkan untuk menganulir (undo) semua modifikasi yang telah kita lakukan dengan menggunakan stetemen rollback. 122 1. Commit dan Rollback Secara teoritis, commit adalah syntax untuk menjadikan transaksi menjadi permanen, sedangkan rollback adalah pembatalan transaksi. Contoh penggunaan commit: Gambar 7 1 . Penggunaan commit Contoh penggunaan rollback: Gambar 7 2 Penggunaan rollback 123 2. Grant dan Revoke Untuk memberikan hak/izin akses oleh administrator (pemilik utama) server kepada user. Hak akses tersebut berupa hak membuat (CREATE), mengambil (SELECT), menghapus (DELETE), mengubah (UPDATE), dan hak khusus berkenaan dengan sistem databasenya.Perintah GRANT digunakan untuk memberikan hak akses menampilkan, menambah, memodifikasi dan menghapus data pada pada suatu table.Secara umum, syntax Grant adalah sebagai berikut: GRANT [akses / privileges] ON [table] FROM [user]; Contoh: Perintah berikut digunakan untuk memberikan hak akses pada tabel departmens user anakwadung. GRANT select, insert, update, delete ON departmens TO anakwadung; REVOKE, merupakan perintah yang digunakan untuk mencabut suatu hak aksesseorang user pada tabel dalamdatabase tertentu. Secara umum, syntax Grant adalah sebagai berikut: REVOKE [akses / privileges] ON [table] FROM [User]; Contoh: Perintah berikut digunakan untuk mencabut hak akses pada tabel departmens user anakwadung. REVOKE select, insert, departmens TO anakwadung; update, delete D. Aktivitas Pembelajaran Aktivitas pada kegiatan pembelajaran 7, mencakup topik-topik berikut: 1. Menyimpan transaksi yang telah dilakukan (commit ), 2. Membatalkan transaksi yang telah terjadi (rollback ), 3. Memberi hak akses (grant) dan 124 ON 4. Mencabut hak akses (revoke) No Aktivitas Pembelajaran Keterlaksanaan 1 Apersepsi tentang Data Control Ya Tidak Ya Tidak Language (DCL) 2 Penyampaian materi 3 Membaca uraian materi Ya Tidak uraian materi Ya Tidak kegiatan- Ya Tidak materi Ya Tidak teman Ya Tidak materi Ya Tidak latihan/tugas Ya Tidak pembelajaran 4 Memahami pembelajaran 5 Melaksanakan kegiatan pada kegiatan pembelajaran 1 6 Bertanya tentang pembelajaran 1 7 Berdiskusi dengan tentang materi pembelajaran 8 Mengembangkan pembelajaran 9 Mengerjakan yang diberikan E. Latihan / Kasus / Tugas 1. Berikut ini mana yang bukan merupakan kondisi setelah COMMIT? a. Semua SAVEPOINT dihapus b. Semua ROLLBACK dihapus c. Perubahan data disimpan permanen di dalam database d. Semua user bisa melihat peribahan data yang sudah dilakukan 2. ROLLBACK dapat diartikan dengan; a. Menganulir perintah b. Memulai dari awal konfigurasi c. Membuat seperti sedia kala 125 d. Membatalkan insert data 3. Perintah berikut digunakan untuk memberikan hak akses CREATE, READ, UPDATE dan DELETE pada tabel dep user anakwadung adalah a. GRANT select, anakwadung; insert, update, drop ON dep TO b. GRANT select, anakwadung; create, update, delete ON dep TO c. GRANT select, anakwadung; insert, update, delete ON dep TO dep TO d. GRANT read, anakwadung; insert, update, delete ON 4. Perintah berikut digunakan untuk melepas hak akses CREATE, READ, UPDATE dan DELETE pada tabel dep user anakwadung adalah a. REVOKE select, anakwadung; insert, update, drop ON dep TO b. REVOKE select, create, update, delete ON dep TO anakwadung; c. REVOKE select, insert, update, delete ON dep TO anakwadung; d. REVOKE read, anakwadung; insert, update, delete ON dep TO F. Rangkuman Kegiatan memodifikasi database yang memanfaatkan stetemen insert, update, dan delete adalah suatu kegiatan yang biasanya disebut tansaksi (transaction). Kegiatan transaksi ini disimpan secara sementara di dalam database system. Ada beberapa kegiatan yang tergolong dalam Data Control Language (DCL) ini diantaranya adalah, a. Menyimpan transaksi yang telah dilakukan ( commit ), b. Membatalkan transaksi yang telah terjadi ( rollback ), c. Memberi hak akses ( grant ) dan d. Mencabut hak akses (revoke). Selama kegiatan transaksi yang kita lakukan belum diakhiri dengan statemen commit, maka masih dimungkinkan untuk menganulir (undo) 126 semua modifikasi yang telah kita lakukan dengan menggunakan stetemen rollback. G. Umpan Balik dan Tindak Lanjut 1. Apakah anda sudah mampu menulisquerydengan mengimplementasikan syntax Data Control Language pada SQL, dan berapa persen tingkat kompetensinya? Setelah menyelesaiakan lembar kerja dan menjawab latihan, isilah tabel berikut ini: Hasil Yang Diperoleh IPK Rencana Tindak Lanjut Menjelaskan syntax DCL dalam transaksi menyimpan yang telah dilakukan (commit) Menjelaskan syntax DCL dalam transaksi membatalkan yang pernah dilakukan (rollback) Menjelaskan syntax DCL dalam memberikan hak akses user (grant) Menjelaskan syntax DCL dalam mencabut hak akses user (revoke) H. Kunci Jawaban 1. b 2. a 3. c 4. c 127 128 EVALUASI 1. Setelah mendeskripsikan table PEGAWAI, Anda menemukan bahwa kolom GAJI memiliki tipe data NUMBER (8,2). Nilai GAJI manakah yang tidak diperbolehkan dikolom ini? A. GAJI=12345678 B. GAJI=123456.78 C. GAJI=123456 D. GAJI=12.34 2. Bila SYSDATE = 07-JUN-1996 12:05 pm, nilai manakah yang dikembalikan setelah mengeksekusi pernyataan berikut? SELECT ADD_MONTHS (SYSDATE,-1) FROM DUAL; A. 07-MAY-1996 12:05 pm B. 06-JUN-1996 12:05 pm C. 07-JUL-1996 12:05 pm D. 06-MAY-1996 12:05 pm 3. Nilai manakah yang dikembalikan setelah mengeksekusi pernyataan berikut? Ingatlah bila 01-JAN-2009 terjadi padaThursday. SELECT NEXT_DAY ('01-JAN-2009','wed') FROM DUAL; A. 07-JAN-2009 B. 31-JAN-2009 C. Wednesday D. Thursday 4. Jika perintah DELETE memiliki klausal WHERE yang memberikan lingkup beberapa baris, apa yang akan terjadi jika terdapat bagian error ketika dieksekusi? A. Perintah akan melewatkan baris yang menyebabkan kesalahan dan terus mengeksekusi perintah berikutnya. B. Perintah akan berhenti dikesalahan, dan baris yang telah dihapus akan terhapus secara permanen. 129 C. Perintah yang telah dilakukan sebelum baris yang menyebabkan kesalahan akan di batalkan. D. Seluruh transaksi akan dibatalkan. 5. Anda memiliki beberapa indek pada tabel yang ingin dihapus. Namun Anda ingin menghindari penghapusan indek yang terkait dengan constraint. Pilih pernyataan berikut yang tidak akan menghapus indek yang terkait dengan constraint? A. DROP INDEX B. ALTER TABLE DROP PRIMARY KEY CASCADE C. ALTER TABLE DROP CONSTRAINT D. DROP TABLE 6. User NOVITA dapat mengelola hak istimewa CREATESESSION. NOVITA memberikan hak istimewa CREATE SESSION yang sama kepada YONO. YONO kemudian memberikan hak istimewa kepada SUPRI. NOVITA menemukan YONO memberikan hak istimewa kepada SUPRI, sehingga hak istimewa YONO dicabut oleh NOVITA. Siapa yang tidak dapat terhubung ke database? A. Hanya YONO B. Hanya SUPRI dan YONO C. NOVITA, YONO dan SUPRI D. Hanya NOVITA dan SUPRI 7. Grup function banyak digunakan untuk melakukan kalkulasi data numerik. Tetapi ada beberapa grup function yang bisa digunakan pada data karakter dan tanggal. Di bawah ini, pilih grup function yang bisa digunakan untuk data numerik, karakter, dan tanggal. A. MAX() B. SUM() C. AVG() D. DECODE() 130 8. Pilih pernyataan WHERE yang dapat mengekstrak nilai DEPARTMENT_NAME yang terdapat karakter literal "er" dari tabel DEPARTMENTS. Pernyataan SELECT dan FROM adalah : SELECT DEPARTMENT_NAME FROM DEPARTMENTS: A. WHERE DEPARTMENT_NAME IN ('%e%r'); B. WHERE DEPARTMENT_NAME LIKE '%er%'; C. WHERE DEPARTMENT_NAME BETWEEN 'e' AND 'r'; D. WHERE DEPARTMENT_NAME CONTAINS 'e%r'; 9. Di bawah ini, mana yang bukan fungsi untuk tipe data numerik? A. ROUND() B. MOD() C. TO_NUMBER() D. CEIL() 10. Perhatikan statment di bawah ini : create table tab1 (c1 number(1), c2 date); alter session set nls_date_format='dd-mm-yy'; insert into tab1 values (1.1,‟28-09-15‟); Apakah insert akan berhasil ? A. insertakan gagal, sebab nilai 1.1 terlalu panjang B. insertakan gagal, sebab ‟28-09-15‟ adalah STRING bukan DATE C. insertakan gagal karena nilai 1.1 dan ‟28-09-15‟ D. insertakan berhasil 11. Perhatikan struktur tabel siswa dan tabel copy_siswa --Tabel siswa Kolom Tipe_data ---------------------ID NUMBER (6) Primary Key NAMA VARCHAR2 (30) TGL_LHR DATE KLS VARCHAR2 (5) -- Tabel copy_siswa Kolom Tipe_data ---------------------ID NUMBER (6) Primary Key NAMA VARCHAR2 (30) 131 TGL_LHR KLS DATE VARCHAR2 (5) Anda inigin melakukan penggabungan data dari tabel copy_siswa ke tabel siswa Perintah yang benar adalah : A. MERGE siswa s ON copy_siswa c USING (s.id = c.id) WHEN MATCHED THEN UPDATE set s.id=c.id, s.nama=c.nama, s.tgl_lhr = c.tgl_lhr s.kls=c.kls WHEN NOT MATCHED THEN INSERT values (c.id, c.nama, c.tgl_lhr, c.kls); B. MERGE siswa s USING copy_siswa c ON (s.id = c.id) WHEN MATCHED THEN UPDATE set s.id=c.id, s.nama=c.nama, s.tgl_lhr = c.tgl_lhr s.kls=c.kls WHEN NOT MATCHED THEN INSERT values (c.id, c.nama, c.tgl_lhr, c.kls); C. MERGE siswa s USING copy_siswa c ON (s.id = c.id) WHEN MATCHED THEN UPDATE siswa set s.id=c.id, s.nama=c.nama, s.tgl_lhr = c.tgl_lhr s.kls=c.kls WHEN NOT MATCHED THEN INSERT values (c.id, c.nama, c.tgl_lhr, c.kls); D. MERGE siswa s USING copy_siswa c ON (s.id = c.id) WHEN MATCHED THEN UPDATE siswa set s.id=c.id, s.nama=c.nama, s.tgl_lhr = c.tgl_lhr s.kls=c.kls WHEN NOT MATCHED THEN INSERT INTO siswa (c.id, c.nama, c.tgl_lhr, c.kls); 132 12. Perhatikan pernyataan berikut, create table t1 as select * from regions where 1=2; Akan menghasilkan : A. Akan adakesalahankarena kondisitidak mungkin. B. Tidak ada tabel yangdibuatkarena nilai balikannya FALSE. C. Tabel t1 akan dibuat tetapi tidak ada baris yang dimasukkan karena nilai balikannya FALSE. D. Tabel t1 akan dibuat dan setiap baris dalam REGIONS dimasukkan karena nilai balikannya NULL sebagai filter baris. 13. Anda diminta untuk melakukan modifikasi tabel siswa dengan menjadikan kolom ID_SISWA sebagai primary key. Pilih pernyataan yang benar. A. ALTER TABLE siswa ADD PRIMARY KEY id_siswa; B. ALTER TABLE siswa ADD CONSTRAINT PRIMARY KEY (id_siswa); C. ALTER TABLE siswa ADD CONSTRAINT stud_id_pk PRIMARY KEY id_siswa; D. ALTER TABLE siswa ADD CONSTRAINT stud_id_pk PRIMARY KEY (id_siswa); 14. Anda telah menghapus 870 baris dari sebuah tabel. Untuk menyimpan perubahan database yang telah Anda lakukan, perintah manakah yang digunakan? A. SAVEPOINT B. COMMIT C. ROLLBACK D. SET TRANSACTION 15. Anda ingin memberikan user DIMAS kemampuan untuk memperbarui data dalam table PEGAWAI serta kemampuan untuk mengelola akses bagi orang lain. Perintah manakah yang digunakan ? A. GRANT update TO DIMAS; B. GRANT update ON pegawai TO DIMAS; C. GRANT update ON pegawai TO DIMAS WITH GRANT OPTION; D. GRANT update ON pegawai TO DIMAS WITH ADMIN OPTION; 133 KUNCI JAWABAN 1. A 2. A 3. A 4. C 5. A 6. A 7. A 8. B 9. C 10. D 11. B 12. C 13. D 14. B 15. C 134 PENUTUP Desain sistem basis data merupakan salah satu modul diklat PKB level dasar yang harus dikuasai oleh guru produktif Rekayasa perangkat Lunak. Melalui modul ini peserta diklat diharapkan mampu memiliki kompetensi dalam merancang sistem basis data. Proses perancangan sistem basis data diawali dengan pemahaman konsep ragam model struktur dan arsitektur aplikasi sistem basis data melalui aktifitas observasi dan analisis. Hasil dari perancangan bertujuan untuk mendapatkan sistem basis data yang baik dan benar dengan menerapkan teknik normalisasi data dan perancangan ERD. Pendekatan yang dilakukan dalam merancang sistem basis data ini adalah pendekatan praktek dengan mengambil studi kasus sistem database perusahaan. Diakhir modul dengan menggunakan DBMS Oracle database XE peserta dapat mengimplementasikan rancangan basis data (level konseptual) ke dalam aplikasi sistem basis data (level fisik). Dalam mengimplementasikan sistem basis data menitikberatkan kepada penggunaan perangkat GUI yang telah disediakan oleh Oracle database XE. 135 136 DAFTAR PUSTAKA Watson, John.2008.SQL Fundamental I Exam Guide, Mc.Graw Hill Greenberg, Nancy. 2004 Oracle Database 10g: SQL Fundamentals 1, Volume I – Student Guide, Jobi Varghese Greenberg, Nancy. 2004 Oracle Database 10g: SQL Fundamentals 1, Volume I II– Student Guide (Additoinal Practices), Jobi Varghese Sutejo, Bambang. 2002 Sukses Sertifiksi Oracle Certified Professional (OCP), Elex Media Komputindo 137 138 GLOSARIUM Istilah Alias Atribut Definisi Nama lain dari suatu kolom Sesuatu yang menggambarkan atau memenuhi syarat suatu entitas. Commit syntax untuk menjadikan transaksi menjadi permanen CONCAT(colum Merangkai nilai karakter pertama dengan nilai karakter kedua; m1 / setara dengan operator (||) expression1, columm2 / expression2) Delete kegiatan menghapus data Entitas Suatu hal yang penting tentang informasi yang perlu diketahui. Entity sebuah ilustrasi dari berbagai entitas dalam bisnis dan Relationship hubungan di antara mereka Model Fungsi Suatu modul yang memiliki tugas teetentu GRANT memberikan hak akses menampilkan, menambah, memodifikasi dan menghapus data pada pada suatu table Hubungan Hubungan atau relationship adalah sebuah asosiasi antara entitas dan derajat INITCAP Mengkonversi nilai karakter alpha ke huruf besar untuk huruf (columm / pertama dari setiap kata; huruf-huruf lainnya dalam huruf kecil expression) INST (columm / Mengembalikan posisi numerik dari karakter string yang telah expression, ditentukan. Nilai m dan n secara default adalah 1, yang berarti ’string’, [,m], [n]) memulai pencarian pada awal pencarian dan melaporkan kejadian pertama. JOIN klausa untuk menggabungkan tabel Joining Membawa data bersama yang disimpan dalam tabel yang berbeda dengan menentukan gabungan diantara tabel. Karakter Literal karakter, angka, atau tanggal yang termasuk dalam daftar SELECT dan yang bukan nama kolom atau kolom alias LENGTH Mengembalikan jumlah karakter dalam ekspresi (columm / expression) LOWER Mengkonversi nilai-nilai karakter alpha menjadi huruf kecil (columm / expression) LPAD ( columm Pads nilai karakter pada garis tepi sebelah kanan untuk lebar / expression, n, total posisi n karakter ‘string’ ) MOD (m,n) Mengembalikan sisa hasil m dibagi dengan n. 139 Istilah model Operator Projection Record Relational Database Management System (RDBMS) REPLACE (text, search_string, replacement_stri ng) REVOKE Definisi landasan sebuah desain Simbol yang mampu melakukan operasi matematis pada query Memilih kolom dalam tabel yang dikembalikan oleh query Isi/rekaman data dari database Sistem Manajemen Basis data relasional Mencari ekspresi teks untuk string karakter dan jika ditemukan, menggantinya dengan pengganti string yang ditentukan perintah yang digunakan untuk mencabut suatu hak akses seorang user pada tabel dalam database tertentu rollback pembatalan transaksi ROUND(columm Pembulatan nilai pada kolom, ekspresi, atau nilai desimal keI expression, n) n atau, jika n dihilangkan, tidak ada tempat desimal. RPAD ( columm Pads nilai karakter pada garis tepi sebelah kiri untuk lebar / expression, n, total posisi n karakter ‘string’ ) SELECT Perintah Query untuk menampilkan data dengan kriteria tertentu Selection Memilih baris dalam tabel yang dikembalikan oleh query. Sortir Usaha mengurutkan data Subquery suatu pernyataan query didalam pernyataan query (select didalam select) SUBSTR Pengembalian karakter dari nilai karakter mulai dari posisi (columm / karakter m, n (Jika m adalah negatif, hitungan dimulai dari expression, akhir nilai karakter. Jika n dihilangkan, semua karakter dari [m,n] awal hingga akhir string dikembalikan.) TRIM (leading / Memungkinkan pengguna untuk memangkas leading atau trailing / both, trailing karakter (atau keduanya) dari string karakter. trim_character FROM trim_source) Jika trim_character atau trim_source adalah karakter literal, pengguna harus mengapit dalam tanda kutip tunggal. TRUNC(column Pemotongan nilai pada kolom, ekspresi, atau nilai decimal keI expression, n) n atau, jika n dihilangkan, n default ke nol. Update Kegiatan memperbarui data UPPER Mengkonversi nilai-nilai karakter alpha menjadi huruf besar (columm / expression) Where klausa yang digunakan untuk memberikan syarat saat seleksi data 140