Modul SBD Baru 20180409 - 2047 [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Sistem Basis Data



Hanya dipergunakan di lingkungan Jurusan Teknik Informatika UB



LABORATORIUM PEMBELAJARAN SISTEM BASIS DATA



DAFTAR PENYUSUN • • • • • • •



Diperbaiki Oleh •



Achmad Arwan, S.Kom, M.Kom Djoko Pramono, S.T., M.Kom Faizatul Amalia, S.Pd., M.Pd Tri Arifianto, S.T., M.T Welly Purnomo, S.T., M.Kom Putra Pandu Adikara, S.Kom., M.Kom Faiza Alif Fakhrina, S.Kom., M.T



LEMBAR REVISI Yang bertanda tangan dibawah ini : Nama



: ……………………………



NIK



: …………………………….



Jabatan



: …………………………….



Dengan ini menyatakan pelaksanaan Revisi Modul ……………………………. untuk Prodi …………………., telah dialksanakan dengan penjelasan sebagai berikut:



N



Keterangan Revisi



Tanggal Revisi Terakhir



1



Revisi Bagian Pertama



…………………………….



o



LEMBAR PERNYATAAN



Yang bertanda tangan dibawah ini : Nama



: …………………………….



NIK



: …………………………….



Jabatan



: …………………………….



Menerangkan dengan sesungguhnya bahwa modul praktikum ini telah direview dan akan digunakan untuk pelaksanaan praktikum di Semester ………………….. Tahun Akademik …………………….. di Laboratorium …………………………….



Malang, …………………………….



Mengetahui, Koordinator KJFD



Ka.Lab. …………………………….



PERATURAN LABORATORIUM



Setiap Mahasiswa Analisis dan Perancangan Sistem yang akan menggunakan Fasilitas Laboratorium, WAJIB mematuhi Aturan sebagai berikut : 1. Tidak berambut gondrong untuk mahasiswa 2. Dilarang merokok dan makan minum didalam ruangan, dan membuang sampah pada tempatnya 3. Dilarang menyimpan barang-barang milik pribadi di Laboratorium/Kelas tanpa seijin Fakultas 4. Dilarang menginap di Laboratorium/Kelas tanpa seijin Fakultas 5. Jam Kerja Laboratorium dan Ruang Riset adalah 07.30 WIB sampai 16.00WIB 6. Mahasiswa yang akan menggunakan Laboratorium dan atau ruang riset diluar jam kerja, harus mengajukan ijin kepada Fakultas



Dekan Malang, 22 Januari 2018



DAFTAR ISI DAFTAR PENYUSUN



2



LEMBAR REVISI



3



LEMBAR PERNYATAAN



4



DAFTAR ISI



6



DAFTAR GAMBAR



12



DAFTAR TABEL



14



Bab 0 : Running Modul



15



0.1



Tujuan



15



0.2



Peraturan Praktikum



15



0.3



Penilaian Praktikum



16



Modul 1 :



Pengantar dan Instalasi SQL Server



17



1.1



Waktu Pelaksanaan Praktikum



17



1.2



Tujuan



17



1.3



Alat & Bahan



17



1.4



Dasar Teori



17



1.5 Prosedur Praktikum 1.5.1 Instalasi Sql Server



17 17



1.6



25



Hasil Percobaan



1.7 Tugas 1.7.1 Install SQL Server pada laptop masing-masing, dan jelaskan langkah-langkahnya Modul 2 :



Konsep Entity Relational Model,



25 25 27



2.1



Waktu Pelaksanaan Praktikum



27



2.2



Tujuan



27



2.3



Alat & Bahan



27



2.4 Dasar Teori 2.4.1 Entitas (Entity) 2.4.2 Atribut (Attributes) 2.4.3 Hubungan/Relasi (Relationship) 2.4.4 Jenis-Jenis Relationship 2.4.5 Atribut Pada Relationship



27 27 28 29 29 30



2.5 Diagram Entitas Relasional (Entity Relationship Diagram) 2.5.1 Notasi Diagram ER (ERD) 2.5.2 Langkah-Langkah Membuat Diagram ER



30 30 31



Modul 3 :



Entity Relatioship Diagram,



32



3.1



Waktu Pelaksanaan Praktikum



32



3.2



Tujuan



32



3.3



Alat & Bahan



32



3.4



Dasar Teori



32



3.5



Prosedur Praktikum



32



3.6



Hasil Percobaan



35



3.7 Tugas 3.7.1 Lengkapi E-R Diagram diatas sehingga menjadi seperti pada gambar berikut. Modul 4 :



Data Definition Language,



35 35 37



4.1



Waktu Pelaksanaan Praktikum



37



4.2



Tujuan



37



4.3



Alat & Bahan



37



4.4



Dasar Teori



37



4.5 Prosedur Praktikum 4.5.1 Membuat Database dengan CREATE 4.5.2 Membuat Table dengan CREATE 4.5.3 Table Sederhana 4.5.4 Table dengan Default Value 4.5.5 Table dengan NOT NULL Value 4.5.6 Table dengan Constraint 4.5.7 Melihat Data Pada Table 4.5.8 Membuat View dengan CREATE 4.5.9 Memodifikasi Objek Database dengan ALTER 4.5.10 Menambah Kolom/Field Baru 4.5.11 Mengubah Tipe Data Dari Kolom/Field 4.5.12 Menghapus Kolom/Field 4.5.13 Menambah Constraint 4.5.14 Mengubah Nama Objek Database 4.5.15 Menghapus Objek Database dengan DROP 4.5.16 Menghapus Table 4.5.17 Menghapus Database



38 38 38 39 39 39 39 41 41 42 42 42 42 42 43 43 43 43



4.6



43



Tugas



Modul 5 :



Dasar Query Select



45



5.1



Waktu Pelaksanaan Praktikum



45



5.2



Tujuan



45



5.3



Alat & Bahan



45



5.4



Dasar Teori



45



SQL Select



45



5.5 Prosedur Praktikum 5.5.1 Mengambil Data dengan SELECT 5.5.2 Mengambil Data dengan SELECT-WHERE 5.5.3 Mengambil Data Top-N dengan TOP 5.5.4 Mengambil Data Unik dengan DISTINCT 5.5.5 Mengambil Data Terurut dengan ORDER BY



45 45 46 46 47 48



5.6



48



Latihan



Modul 6 :



Data Manipulation Language



49



6.1



Waktu Pelaksanaan Praktikum



49



6.2



Tujuan



49



6.3



Alat & Bahan



49



6.4 Dasar Teori Data Manipulation Language (DML)



49 49



6.5 Prosedur Praktikum 6.5.1 Menambahkan Baris Data dengan INSERT 6.5.2 Menambahkan Baris Data Bernilai NULL 6.5.3 Memodifikasi Data dengan UPDATE 6.5.4 Menghapus Baris Data dengan DELETE 6.5.5 Menggunakan Subquery Dalam INSERT



49 49 49 50 51 52



6.6



52



Modul 7 :



Tugas Menampilkan Data Dari Banyak Tabel



53



7.1



Waktu Pelaksanaan Praktikum



53



7.2



Tujuan



53



7.3



Alat & Bahan



53



7.4



Dasar Teori



53



Penggabungan Tabel dengan JOIN 7.4.1 INNER JOIN 7.4.2 OUTER JOIN 7.4.3 SELF JOIN



53 53 55 57



7.5



58



Modul 8 :



Tugas Operator



59



8.1. Waktu Pelaksanaan Praktikum



59



8.2. Tujuan



59



8.3. Alat Dan Bahan



59



8.4. Dasar Teori 8.4.1 Operator 8.4.2. Operator Aritmetika 8.4.3. Precedence dari Operator 8.4.4. Penggunaan Tanda Kurung 8.4.5. Operator Compound 8.4.6. Operator Pembandingan 8.4.7. Operator Logika 8.4.8. Syarat Dengan Satu Kondisi 8.4.9. Syarat Lebih Dari Satu Kondisi 8.4.10. Conditional Operator Bertipe Array (IN, BETWEEN) 8.4.11. Predicate 8.4.12. Fungsi 8.4.13. Fungsi Karakter/String 8.4.14. Fungsi Bilangan 8.4.15. Fungsi Tanggal



59 59 59 60 60 61 61 62 63 64 64 65 66 66 67 67



8.4.16. Fungsi COALESCE 8.5. Latihan Modul 9 :



68 68



Column Ffunction dan Grouping



70



9.1. Waktu Pelaksanaan Praktikum



70



9.2. Tujuan



70



9.3. Alat Dan Bahan



70



9.4. Dasar Teori 9.4.1. Fungsi Group 9.4.2. Fungsi COUNT 9.4.3. Fungsi AVG dan SUM 9.4.4. Fungsi MIN dan MAX 9.4.5. Mengelompokkan Data dengan GROUP BY 9.4.6. Klausa HAVING 9.4.7. Fungsi Karakter/String 9.4.8. Fungsi Bilangan 9.4.9. Fungsi Tanggal



70 70 70 70 71 71 72 73 73 73



9.5. Latihan



74



Modul 10 :



Union, Intersection, Difference



75



10.1. Waktu Pelaksanaan Praktikum



75



10.2. Tujuan



75



10.3. Alat Dan Bahan



75



10.4. Dasar Teori 10.4.1. Operasi Union 10.4.1.1 UNION 10.4.1.2. UNION ALL 10.4.2. Operasi Intersection 10.4.2.1. INTERSECT 10.4.3. Operasi Difference 10.4.4. Operasi Gabungan Dari UNION, INTERSECTION, dan DIFFERENCE



75 75 75 76 77 77 78 78



10.5. Latihan



79



Modul 11 :



Subquery SQL



80



11.1. Waktu Pelaksanaan Praktikum



80



11.2. Tujuan



80



11.3. Alat Dan Bahan



80



11.4. Dasar Teori 11.4.1. Sub Query Untuk Menyelesaikan Masalah 11.4.2. Sub Query 11.4.3. Penempatan Sub Query 11.4.3.1. Sub Query di Klausa SELECT 11.4.3.2. Sub Query di Klausa FROM 11.4.3.3. Sub Query di Klausa WHERE 11.4.4. Petunjuk Penggunaan Sub Query 11.4.5. Tipe-Tipe Sub Query



80 80 80 81 81 81 81 81 81



11.4.5.1. Sub Query Baris Tunggal 11.4.5.2. Sub Query Baris Ganda 11.4.5.3. Sub Query dengan Operator IN/ NOT IN 11.4.5.4. Sub Query dengan Operator EXISTS/NOT EXISTS 11.4.5.5. Correlated Sub Query 11.5. Latihan Modul 12 :



81 81 81 82 82 82



Transaction



83



12.1. Waktu Pelaksanaan Praktikum



83



12.2. Tujuan



83



12.3. Alat Dan Bahan



83



12.4. Dasar Teori 12.4.1. Transaction 12.4.2. Membuat Transaksi Dengan BEGIN TRANSACTION 12.4.3. Membatalkan Transaksi Dengan ROLLBACK TRANSACTION 12.4.5. Menjalankan Transaksi Dengan COMMIT TRANSACTION 12.4.6. Nested Transaction 12.4.7. Penanganan Kesalahan (Error) 12.4.8. Penanganan Kesalahan (Error) Dalam Transaksi



83 83 83 84 85 86 87 88



12.5.



89



Latihan



Modul 13 :



Dasar Pemrograman T-SQL



90



13.1. Waktu Pelaksanaan Praktikum



90



13.2. Tujuan



90



13.3. Alat Dan Bahan



90



13.4. Dasar Teori 13.4.1. Dasar Pemrograman T-SQL 13.4.2. Deklarasi Variabel 13.4.3.Penugasan/Pengisian Variabel 13.4.4.Mencetak Variabel di Console/Messages 13.4.5. Mengonversi tipe data dengan CAST/CONVERT 13.4.6. Seleksi Kondisi 13.4.7.Iterasi 13.4.8. STORED PROCEDURE 13.4.8.1. Pembuatan Stored Procedure 13.4.8.2. Pemanggilan Stored Procedure 13.4.8.3. Parameter 13.4.9. User Defined Function (UDF) 13.4.9.1. Pemanggilan UDF



90 90 90 90 90 91 91 92 93 93 93 94 95 96



13.5. Latihan



97



Modul 14 :



Dasar Pemrograman Database



98



14.1. Waktu Pelaksanaan Praktikum



98



14.2. Tujuan



98



14.3. Alat Dan Bahan



98



14.4. Dasar Teori



98



14.4.1. Membuka Koneksi ke Database. 14.4.2. Menampilkan Data dari Tabel. 14.4.3. Memodifikasi Data Dalam Tabel. 14.4.4. Menggunakan Prepared Statement.



98 99 99 99



14.5. Prosedur Praktikum



100



14.6. Latihan



101



Lampiran



103



Lampiran 1. Struktur Format Laporan



103



Lampiran 2. Contoh Format Laporan



104



DAFTAR GAMBAR Gambar 1.1Instalasi Sql Server ............................................................................................................ 18 Gambar 1.2 Pilih Free Edition .............................................................................................................. 18 Gambar 1.3 Accept............................................................................................................................... 19 Gambar 1.4 Global Role ....................................................................................................................... 19 Gambar 1.5 Install Rule ........................................................................................................................ 20 Gambar 1.6 Fitur .................................................................................................................................. 20 Gambar 1.7 Seleksi Fitur ...................................................................................................................... 21 Gambar 1.8 Default Instance ............................................................................................................... 21 Gambar 1.9 Konfigurasi........................................................................................................................ 22 Gambar 1.10 Konfigurasi Database Engine .......................................................................................... 22 Gambar 1.11 Current User ................................................................................................................... 23 Gambar 1.12 Reporting ........................................................................................................................ 23 Gambar 1.13 Replay ............................................................................................................................. 24 Gambar 1.14 Replay Client................................................................................................................... 24 Gambar 1.15 Siap Instal ....................................................................................................................... 25 Gambar 1.16 Hasil Instalasi .................................................................................................................. 25 Gambar 2.1 Representasi Entitas (Entity) ............................................................................................. 27 Gambar 2.2 Representasi Hubungan (Relationship) ............................................................................. 29 Gambar 2.3 Contoh representasi relasi biner ....................................................................................... 29 Gambar 2.4 Contoh representasi relasi ternier .................................................................................... 30 Gambar 2.5 Contoh representasi relasi rekursif/uner (unary) ............................................................. 30 Gambar 2.6 Contoh representasi atribut pada relasi ........................................................................... 30 Gambar 2.7 Notasi Entity Relationship Diagram (ERD) ........................................................................ 31 Gambar 3.1 Login dengan akun google ................................................................................................ 32 Gambar 3.2 Membuat E-R Diagram ...................................................................................................... 33 Gambar 3.3 Membuat E-R Diagram ...................................................................................................... 33 Gambar 3.4 Membuat E-R Diagram ...................................................................................................... 33 Gambar 3.5 Membuat Atribut .............................................................................................................. 34 Gambar 3.6 Hasil Entity Employee dan Atributnya. ............................................................................. 34 Gambar 3.6 Tekan Connect................................................................................................................... 34 Gambar 3.6 Relationship Manage_by .................................................................................................. 35 Gambar 3.6 Relationship Manage_by dan works_for .......................................................................... 35 Gambar 3.10 E-R Diagram Company .................................................................................................... 36 Gambar 5.1 Contoh mengambil data keseluruhan isi table ................................................................. 45 Gambar 5.2 Contoh mengambil data dari sebagian kolom dari suatu table ........................................ 46 Gambar 5.3 Contoh mengambil data dengan klausa WHERE............................................................... 46 Gambar 5.4 Contoh mengambil data dengan klausa TOP N=10 .......................................................... 47 Gambar 5.5 (a) Contoh mengambil data tanpa klausa DISTINCT didapatkan 2000 record duplikasi. (b) Contoh mengambil data dengan klausa DISTINCT didapatkan 20 record unik. ................................... 47 Gambar 5.6 (a) Contoh mengambil data secara terurut dengan ORDER BY. ....................................... 48 Gambar 6.1 Contoh menambahkan baris dengan NULL secara implisit. ............................................. 50 Gambar 6.2 Contoh menambahkan baris dengan NULL secara eksplisit. ............................................ 50 (a) (b) .............................................................................................................................................. 51 Gambar 6.3 Contoh hasil dari query UPDATE (1). (a) sebelum diubah (b) sesudah diubah. ................ 51 (a) (b) .............................................................................................................................................. 51 Gambar 6.4 Contoh hasil dari query UPDATE (1). (a) sebelum diubah (b) sesudah diubah. ................ 51 Gambar 7.1 Contoh record pada relasi student dan department......................................................... 53



Gambar 7.2 Hasil equi-join yang berasal dari relasi student dan department ..................................... 54 Gambar 7.3 Hasil join on ....................................................................................................................... 54 Gambar 7.4 Hasil join 3 tabel ................................................................................................................ 55 Gambar 7.5 Hasil cross join ................................................................................................................... 55 Gambar 7.6 Perbedaan tipe outer join ................................................................................................. 56 Gambar 7.7 Hasil Left Outer Join .......................................................................................................... 56 Gambar 7.8 Hasil right outer join .......................................................................................................... 57 Gambar 7.9 Hasil full outer join ............................................................................................................ 57 Gambar 7.10 Contoh hasil self join ....................................................................................................... 58



DAFTAR TABEL



Bab 0 : Running Modul 0.1



Tujuan Setelah mengikuti Running Modul mahasiswa diharapkan dapat:



1. Memahami peraturan kegiatan praktikum. 2. Memahami Hak dan Kewajiban praktikan dalam kegiatan praktikum. 3. Memhami komponen penilaian kegiatan praktikum.



0.2



Peraturan Praktikum



1. Praktikum diampu oleh Dosen Mata Kuliah Praktikum dan dibantu oleh Asisten Laboratorium dan Asisten Praktikum. 2. Praktikum dilaksanakan di Ruang ……………………………. sesuai jadwal yang ditentukan. 3. Praktikan wajib membawa modul praktikum, alat tulis, ……………………………. (dapat diisi sesuai kebutuhan keperluan praktikum)



4. Praktikan wajib mengisi daftar hadir. 5. Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): a. 15 menit untuk pengerjaan Tes Awal atau wawancara Tugas Pendahuluan b. 60 menit untuk penyampaian materi c. 45 menit untuk pengerjaan jurnal, tes akhir atau tugas d. 50 menit Pengayaan 6. Praktikan wajib hadir minimal 75% dari seluruh pertemuan praktikum di lab. Jika total kehadiran kurang dari 75% maka nilai Mata Praktikum = 0. 7. Praktikan yang datang terlambat : • 30 menit : tidak diperbolehkan mengikuti praktikum 8. Saat praktikum berlangsung, asisten praktikum dan praktikan: • Wajib menggunakan seragam sesuai aturan Institusi. • Wajib mematikan/ men-silent semua alat komunikasi(smartphone, tab, iPad, dsb). • Dilarang membuka aplikasi yang tidak berhubungan dengan praktikum yang berlangsung. • Dilarang mengubah setting software maupun hardware komputer tanpa ijin. • Dilarang membawa makanan maupun minuman di ruang praktikum. • Dilarang memberikan jawaban ke praktikan lain (pre-test, TP, jurnal, dan post-test). • Dilarang menyebarkan soal pre-test, jurnal, dan post-test. • Dilarang membuang sampah/sesuatu apapun di ruangan praktikum. 9. Setiap praktikan dapat mengikuti praktikum susulan maksimal 1 modul untuk satu praktikum. • Praktikan yang dapat mengikuti praktikum susulan hanyalah praktikan yang memenuhi syarat sesuai ketentuan Institusi, yaitu rawat inap di Rumah Sakit



(menunjukkan bukti rawat inap dan resep obat dari RS), tugas dari Institusi (menunjukkan surat dinas dari Institusi), atau mendapat musibah (menunjukkan surat keterangan dari orangtua/ wali mahasiswa). 10. Pelanggaran terhadap peraturan praktikum ini akan ditindak secara tegas secara berjenjang di lingkup Kelas, Laboratorium, Program Studi, Fakultas, hingga Institusi.



0.3



Penilaian Praktikum



1. Komponen Nilai Praktikum terdiri dari : Tugas Pendahuluan, Tes Awal, Keaktifan Praktikum, dan Jurnal/Tugas Besar. 2. Seluruh komponen penilaian beserta pembobotannya ditentukan oleh dosen Mata Praktikum 3. Penilaian permodul dilakukan oleh asisten praktikum, sedangkan nilai seluruh modul diserahkan kepada Dosen Mata Praktikum. 4. Baik praktikan maupun asisten tidak diperkenankan meminta atau memberikan tugas tambahan untuk perbaikan nilai. 5. Standar indeks dan range nilai ditentukan oleh Dosen Mata Praktikum atas sepengetahuan Ketua Kelompok Keahlian



Modul 1 : Pengantar dan Instalasi SQL Server 1.1



Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): a. 10 menit untuk penjelasan singkat tentang modul b. 100 menit untuk pengayaan c. 60 menit pembahasan



1.2



Tujuan



Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Mahasiswa mampu melakukan instalasi Mssql Server. 2. Mahasiswa mampu memahami tahapan-tahapan persiapan server.



1.3



Alat & Bahan



1. Komputer 2. Software Ms Sql Server 2014 3. Software Browser



1.4



Dasar Teori



Untuk dapat mengimplementasikan sebuah database, maka diperlukan sebuah software yang disebut Database Management System(DBMS). DBMS adalah sebuah sistem yang didalamnya terdiri dari Data, sekumpulan software yang dapat memudahkan memanajemen data dan pengguna, serta relasi antar data itu sendiri. DBMS juga mengatur bagaimana pengguna dapat mengakses data dalam waktu yang sama. SQL Server 2014 adalah DBMS karya Microsoft yang hingga kini masih digunakan diindustri TI terutama yang menggunakan bahasa pemrograman yang berbasis Microsoft seperti Visual Studio. SQL Server menyediakan cukup banyak fitur dan pengaturan yang mudah bagi pengguna pemula untuk dapat memahami DBMS sebagai implementasi dari database yang digunakan. Sql Server yang boleh digunakan secara bebas adalah versi Express, sehingga pada praktikkum basis data ini menggunakan Sql Server Express Edition.



1.5



Prosedur Praktikum



1.5.1



Instalasi Sql Server 1. Klik installer SQL Server 2014 2. Kemudian pilih menu Installation > New SQL Server stand -alone installation or add features to an existing installation



Gambar 1.1Instalasi Sql Server



3. Masukkan Product Key lalu klik Next



Gambar 1.2 Pilih Free Edition



4. Pada menu Licencence Terms, Centang I accept the license terms lalu Next



Gambar 1.3 Accept



5. Selanjutnya muncul proses Global Role, jika tidak ada masalah, maka lanjut pada bagian Microsoft Update, bisa dicentang atau tidak, saya pilih tidak dicentang, lalu next



Gambar 1.4 Global Role



6. Muncul proses pengecheckan Instal Setup Files, jika tidak ada masalah maka lanjut ke proses selanjutnya. 7. Proses selanjutnya adalah pengecheckan Install Rules, jika tidak ada masalah atau hanya warning langsung aja Next



Gambar 1.5 Install Rule



8. Proses selanjutnya adalah Setup Role, pilih SQL Server Feature Installation, lalu Next



Gambar 1.6 Fitur



9. Selanjutnya proses Feature Selection. Untuk Features pilih Select All agar terpilih semua, lalu Next



Gambar 1.7 Seleksi Fitur



11. Proses selanjutnya pilih Default Instance, lalu Next



Gambar 1.8 Default Instance



12. Proses selanjutnya klik Next saja



Gambar 1.9 Konfigurasi



13. Proses selanjutnya adalah Database Engine Configuration , pada Authentication Mode, Pilih Windows Authentication Mode, lalu klik Add Curent User, maka akan keluar user pc anda. Lalu klik Next



Gambar 1.10 Konfigurasi Database Engine



14. Proses selanjutnya klik Add Curent User, maka akan kluar user pc anda Lalu klik Next



Gambar 1.11 Current User



15. Pada Proses Reporting Services Configuration, pilih Instal and configure, selanjutnya Next aja.



Gambar 1.12 Reporting



16. Proses selanjutnya klik Add Curent User, maka akan keluar user pc anda. Lalu klik Next



Gambar 1.13 Replay



17. Proses selanjutnya pada Control Name, ketik aja sesuai nama atau terserah anda, lalu Next



Gambar 1.14 Replay Client



18. Setelah proses semua pengecheckan tidak ada yang eror, langsung saja klik Install



Gambar 1.15 Siap Instal



1.6



Hasil Percobaan Hasilnya adalah sebagai berikut.



Gambar 1.16 Hasil Instalasi



1.7



Tugas



1.7.1



Install SQL Server pada laptop masing-masing, dan jelaskan langkah-langkahnya



Modul 2 : Konsep Entity Relational Model, 2.1



Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): d. 10 menit untuk penjelasan singkat tentang modul e. 100 menit untuk pengayaan f. 60 menit pembahasan



2.2



Tujuan



Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Memahami konsep dalam Model Entitas Hubungan (Entity Relationship Model)



2.3



Alat & Bahan 1. Komputer



2.4



Dasar Teori



Basis data dapat dimodelkan sebagai: • • 2.4.1



Himpunan entitas Relasi antar entitas Entitas (Entity)



Definisi Entitas adalah: • “sesuatu” atau “objek” di dunia nyata yang dapat dibedakan dari objek lain • kelompok objek independen yang dapat diidentifikasi dan memiliki kesamaan properti. Entitas dapat berupa objek nyata atau objek konseptual. 1. Obyek nyata. Contohnya: Buku, Mahasiswa, Dosen, Barang, Kendaraan 2. Obyek konseptual. Contohnya: Matakuliah, Transaksi Contoh entitas yang ada pada sistem informasi di bengkel adalah: Kendaraan, Pegawai/Montir, Kendaraan, SparePart, Servis Representasi Entitas Entitas digambarkan dalam bentuk persegi panjang dengan label yang menunjukkan nama entitas, umumnya berupa kata benda tunggal.



Kendaraan Gambar 2.1 Representasi Entitas (Entity)



Jenis Entitas 1. Entitas kuat (strong entity)



• • •



Entitas yang mandiri, yang keberadaannya tidak bergantung pada keberadaan entitas yang lainnya. Entitas kuat selalu memiliki karakteristik yang unik disebut identifier (sebuah atribut tunggal atau gabungan atribut-atribut yang secara unik dapat digunakan untuk membedakannya dari entitas kuat yang lain). Disebut juga entitas parent, owner, entitas domain Contoh: Kendaraan, Montir



2. Entitas lemah (weak entity) • Entitas yang keberadaannya sangat bergantung pada keberadaan entitas yang lainnya. • Entitas lemah tidak memiliki arti apa-apa dan tidak dikehendaki kehadirannya dalam diagram ER tanpa kehadiran entitas di mana mereka bergantung. • Entitas yang tidak mempunyai primary key (PK) • Disebut juga child, dependent, atau subordinat Contoh: Keluarga 2.4.2



Atribut (Attributes)



Definisi Setiap entitas memiliki atribut yang mendeskripsikan karakteristik (properti) dari entitas tersebut. • • •



Contoh atribut dari kendaraan adalah: Kendaraan = (Jenis_Kendaraan, Merk, No_STNK, No_Mesin) Setiap atribut akan memiliki nilai (values) Domain (value set): Batas-batas nilai yang diperbolehkan bagi suatu atribut



Tipe-Tipe Atribut 1. Atribut Sederhana (Simple) dan Komposit (Composite) Atribut Sederhana (simple)/Atomik: •



Atribut yang terdiri atas komponen tunggal yang tidak dapat dibagi menjadi komponen yang lebih kecil; Contoh: atribut Jenis_Kendaraan, Merk, No_STNK, No_Mesin pada entitas kendaraan



Atribut Komposit (Composite): • •



Atribut yang dapat dibagi lagi dalam beberapa bagian; Atribut yang terdiri atas beberapa komponen independen (dapat berdiri sendiri). Contoh: Atribut Alamat pada entitas Pelanggan (Jalan Veteran no 8, Malang, 65145). Atribut ini dapat dibagi menjadi Jalan (Jalan Veteran no 8), Kota (Malang), dan KodePos (65145).



2. Single-valued dan multi-valued attributes Single-valued (tunggal) attributes: atribut yang memuat nilai tunggal. Contoh: atribut nama pada entitas pelanggan. Setiap Pelanggan hanya punya 1 nama Multi-valued attributes: atribut yang memuat beberapa nilai. Contoh: atribut NomorTelepon pada entitas Pelanggan. Pelanggan bisa mempunyai nomor telepon lebih dari 1 3. Atribut Turunan (Derived)



Atribut yang menyatakan suatu nilai yang berkaitan dengan atribut-atribut lain Atribut yang diperoleh dari pengolahan dari atribut lain yang berhubungan. Contoh: atribut masa studi yang diperoleh dari TanggalLulus dikurangi TanggalDaftar 4. Primary Key (PK) • PK adalah atribut yang mengidentifikasi entitas secara unik. Setiap strong entity/entitas kuat harus mempunyai Primary Key. Contoh: PK pada entitas kendaraan adalah No_STNK • PK bisa berasal dari satu atau gabungan dari beberapa atribut 2.4.3



Hubungan/Relasi (Relationship)



Definisi Relasi adalah hubungan antar entitas yang dapat diidentifikasi dan bermakna. Relasi dinyatakan dengan nama yang menunjukkan fungsinya. Contoh: memiliki yang menghubungkan entitas Pelanggan dan Kendaraan Relasi dimungkinkan memiliki atribut. Representasi Relasi Relasi digambarkan dalam bentuk belah ketupat (diamond) dengan label yang menunjukkan nama relasi, umumnya berupa kata kerja.



Nama relationship



e Gambar 2.2 Representasi Hubungan (Relationship)



Derajat Relasi Derajat relasi menunjukkan jumlah entitas yang terhubung dalam suatu relasi. Entitas-entitas yang terhubung dalam suatu relasi disebut partisipan. 2.4.4



Jenis-Jenis Relationship



2.4.4.1 Relasi Biner (Binary Relationship) Relasi berderajat dua dinamakan relasi biner (binary), yakni relasi yang melibatkan dua himpunan entitas. Secara umum himpunan relasi dalam sistem basis data adalah biner.



Dosen



membimbing



Mahasiswa



Gambar 2.3 Contoh representasi relasi biner



2.4.4.2 Relasi Ternier (Ternary Relationship) Relasi berderajat tiga dinamakan relasi ternier (ternary). Relasi antara lebih dari dua entitas jarang terjadi. Terdapat tiga entitas yang berpartisipasi dalam relasi ternier. Contoh: relasi Mendaftar yang menghubungkan entitas Staf, KantorCabang, dan Klien. Relasi ini menyatakan seorang staf mendaftar klien di suatu kantor cabang.



Gambar 2.4 Contoh representasi relasi ternier



2.4.4.3 Relasi Rekursif/Uner (Unary) • Relasi rekursif adalah tipe relasi yang menghubungkan satu entitas tunggal dengan dirinya sendiri (uner/unary). Relasi rekursif Mengaudit yang merepresentasikan relasi dosen dengan auditor, seorang auditor merupakan bagian entitas dosen. Dengan kata lain, relasi ini menyatakan seorang dosen melakukan pemeriksaan (mengaudit) dosen lain. • Relasi ini dapat ditambahkan nama peran untuk menunjukkan posisi partisipasinya, pada contoh di atas: relasi Mengaudit menghubungkan entitas Dosen yang berperan sebagai Auditor dengan dosen lain yang berperan sebagai Auditee.



Gambar 2.5 Contoh representasi relasi rekursif/uner (unary)



2.4.5



Atribut Pada Relationship



Relasi juga bisa mempunyai atribut. Atributnya muncul karena adanya relasi. Contoh atribut pada relasi adalah atribut Quantity yang ada pada relasi SUPPLY muncul karena supplier melakukan pasokan PART pada PROJECT



Gambar 2.6 Contoh representasi atribut pada relasi



2.5



Diagram Entitas Relasional (Entity Relationship Diagram)



Definisi Diagram ER merupakan model konseptual untuk menggambarkan struktur logis dari basis data berbasis grafis. 2.5.1



Notasi Diagram ER (ERD)



Gambar 2.7 Notasi Entity Relationship Diagram (ERD)



2.5.2 1. 2. 3. 4. 5. 6.



Langkah-Langkah Membuat Diagram ER Mengidentifikasi dan menetapkan seluruh entitas yang terlibat. Menentukan atribut dari setiap entitas. Menentukan key dari setiap entitas. Mengidentifikasi dan menetapkan relasi antar entitas yang ada. Menentukan kardinalitas/derajat relasi untuk setiap relasi yang ada. Melengkapi entitas dan relasi dengan atribut-atribut deskriptif.



Modul 3 : Entity Relatioship Diagram, 3.1



Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): a. 10 menit untuk penjelasan singkat tentang modul b. 100 menit untuk pengayaan c. 60 menit pembahasan



3.2



Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Memahami dan mampu membuat Entity Relationship Diagram)



3.3



Alat & Bahan 1. Komputer



3.4



Dasar Teori E-R diagram merupakan representasi hubungan antar entity yang menggambarkan bagaimana sebuah entity dapat digunakan oleh entity lain sehingga dapat meminimalisir perulangan data. E-R diagram menggunakan notasi seperti pada modul 2 untuk bisa menjelaskan konsep pada E-R Model.



3.5



Prosedur Praktikum



Studi kasus perusahaan Perusahaan ini dikelompokkan ke dalam beberapa departemen. Setiap departemen memiliki nama unik, nomor unik, dan karyawan tertentu yang mengelola departemen tersebut. Sistem juga melacak tanggal mulai ketika karyawan itu mulai mengelola departemen. Sistem juga akan menyimpan nama masing-masing karyawan, nomor Jaminan Sosial, 2 alamat, gaji, jenis kelamin, dan tanggal lahir serta departemen masuk ke dalam departemen mana. 1. Buka web site https://erdplus.com/#/login lalu pilih login dengan akun google yang anda miliki.



Gambar 3.1 Login dengan akun google



2. Klik tombol New lalu E-R diagram untuk membuat baru



Gambar 3.2 Membuat E-R Diagram



3. Klik dua kali pada New diagram yang sudah dibuat sampai masuk tampilan editor seperti pada gambar berikut.



Gambar 3.3 Membuat E-R Diagram



4. Klik tombol entity lalu beri nama Departemen



Gambar 3.4 Membuat E-R Diagram



5. Klik tombol add attribute dan beri nama dengan DeptNo



Gambar 3.5 Membuat Atribut



6. Ulangi langkah 5 untuk membuat atribut DeptName pada entity Departemen 7. Ulangi langkah no 4 untuk membuat entity Employee 8. Ulangi langkah no 5 untuk membuat atribut pada entity Employee yaitu name, Social Security number,address, salary, sex (gender), and birth date. Hasil dapat dilihat pada gambar 3.6.



Gambar 3.6 Hasil Entity Employee dan Atributnya.



9. Buat Relationship antar Departmen dan Employee dengan menekan tombol connect.



Gambar 3.7 Tekan Connect.



10. Hubungkan antara Departmen dan Employee dengan klik dan drag dari departement dan employee, lalu beri nama relationship dengan nama manage_by. Beri cardinality one to one dan mandatory. Lihat gambar berikut ini.



Gambar 3.8 Relationship Manage_by



11. Ulangi langkah 12 untuk membuat relation works_for



3.6



Hasil Percobaan Hasilnya adalah sebagai berikut.



Gambar 3.9 Relationship Manage_by dan works_for



3.7



Tugas



3.7.1



Lengkapi E-R Diagram diatas sehingga menjadi seperti pada gambar berikut.



Gambar 3.10 E-R Diagram Company



Modul 4 : Data Definition Language, 4.1



Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): a. 10 menit untuk penjelasan singkat tentang modul b. 100 menit untuk pengayaan c. 60 menit pembahasan



4.2



Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Memahami tipe data yang di dukung oleh DBMS 2. Memahami dan menerapkan sintaks DDL 3. Memahami dan menerapkan constraint



4.3



Alat & Bahan 1. Komputer



4.4



Dasar Teori



Tipe-tipe data yang didukung oleh basis data tidak jauh berbeda dengan yang telah dikenal dalam pemrograman pada umumnya. Namun, antara satu Database Management System (DBMS) dengan DBMS yang lain bisa memiliki perbedaan, meskipun memiliki standardisasi SQL. Berikut ini adalah beberapa tipe data yang digunakan di SQL Server. Tipe data String: Tipe data



Keterangan



Tipe data



Keterangan



CHAR(N)



String dengan panjang tetap n (maks. 8000 karakter)



NTEXT



String Unicode dengan panjang tidak tetap hingga 2 GB



VARCHAR(N)



String dengan panjang tidak tetap maks n (maks. 8000 karakter)



BIT



Berisi 0, 1, dan NULL



TEXT



String dengan panjang tidak tetap



BINARY(N)



String biner dengan panjang tetap n



NCHAR



String Unicode dengan panjang tetap (maks. 4000 karakter)



VARBINARY



String biner dengan panjang tidak tetap n



NVARCHAR



String Unicode dengan panjang tidak tetap (maks. 4000 karakter)



IMAGE



String biner dengan panjang tidak tetap untuk menyimpan image



Tipe data angka: Tipe data



Keterangan



Tipe data



Keterangan



TINYINT



Bilangan bulat 0..255 (8 bit/1 byte)



FLOAT



Bilangan desimal 4 (bernilai aproksimasi)



bytes



SMALLINT



Bilangan bulat 16 bit/2 byte



REAL



Bilangan desimal 8 (bernilai aproksimasi)



INT



Bilangan bulat 32 bit/4 byte



MONEY



Menyimpan bilangan untuk uang 8 bytes



BIGINT



Bilangan bulat 64 bit/8 byte



SMALLMONEY



Menyimpan bilangan untuk uang 4 bytes



DECIMAL(P, S)



Bilangan desimal 5-17 bytes (tergantung ketelitian desimal) – bernilai pasti (exact) hingga 38 digit



NUMERIC(P, N)



bytes



Tipe data tanggal/waktu: Tipe data



Keterangan



Tipe data



Keterangan



DATETIME



Dari 1 January 1753 s.d. 31 December 9999 dengan akurasi 3,33 milidetik



DATETIMEOFFSET



Sama dengan datetime2 tetapi menyimpan offset zona waktu



DATETIME2



Dari 1 January 0001 s.d. 31 December 9999 dengan akurasi 100 nanodetik



TIME



Menyimpan waktu dengan akurasi nanodetik



SMALLDATETIME



Dari 1 January 1900 s.d. 31 December 9999 dengan akurasi 1 menit



TIMESTAMP



DATE



Menyimpan tanggal saja dari 1 January 1753 s.d. 31 December 9999



Menyimpan angka unik yang diperbarui tiap kali baris record dibuat/ dimodifikasi berdasarkan internal clock



saja 100



SQL Server juga mendukung beberapa tipe data yang lain misalkan uniqeidentifier berupa globally unique identifier (GUID) sebagai kode unik yang dibuat secara acak, xml untuk menyimpan data berupa XML, dan masih ada yang lain



4.5



Prosedur Praktikum



4.5.1



Membuat Database dengan CREATE



Untuk membuat basis data digunakan sintaksis CREATE DATABASE diikuti nama database. Contoh pembuatan basis data sebagai berikut: CREATE DATABASE mydatabase



Maka akan membuat basis data bernama mydatabase. Untuk memilih dan menggunakan basis data mydatabase, gunakan sintaksis sebagai berikut. use mydatabase



4.5.2



Membuat Table dengan CREATE



Setelah kita memilih basis data yang akan digunakan, maka kita bisa membuat tabel di dalam basis data tersebut. Untuk membuat tabel maka digunakan sintaksis CREATE TABLE.



4.5.3



Table Sederhana



CREATE TABLE mytable( col int )



Contoh di atas digunakan untuk membuat tabel mytable dengan satu atribut bernama col dengan tipe data int (integer 32 bit) 4.5.4



Table dengan Default Value



Pada tabel Users berikut, field profession diisi dengan nilai default yaitu berupa string "Student". Nantinya saat penambahan record baru, apabila field profession ini tidak diisi secara eksplisit maka secara otomatis isinya adalah "Student". CREATE TABLE Users ( name



CHAR(20),



age



INTEGER,



profession VARCHAR(30) default 'Student' ) CREATE TABLE Department ( deptno



SMALLINT



NOT NULL



deptname



VARCHAR(36)



NOT NULL,



mgrno



CHAR(6),



admrdept



SMALLINT



location



CHAR(30)



IDENTITY (100, 1),



NOT NULL,



)



Pada tabel Department, field deptno diberi nilai default mulai dari angka 100 dan apabila ada record baru maka record berikutnya memiliki deptno dengan penambahan (increment) 1. Misalnya apabila tabel masih kosong, apabila ada record baru (baris pertama), maka deptno secara otomatis bernilai 100. Apabila ada record baru lagi (baris kedua), maka deptno dari record baru bernilai 101, deptno baris ketiga bernilai 102, dst. 4.5.5



Table dengan NOT NULL Value



Pada tabel users dan department di atas, NOT NULL mengindikasikan bahwa field tersebut tidak boleh bernilai kosong/tidak berisi. Berbeda apabila tidak ada NOT NULL, misalnya field age pada tabel users, bila tidak diisi nilainya secara eksplisit maka bernilai NULL. 4.5.6



Table dengan Constraint



Contraint pada suatu tabel mendefinisikan aturan-aturan yang membatasi suatu field. Ada beberapa constraint antara lain: a. UNIQUE



Fungsinya adalah menjaga suatu field pada suatu tabel tidak boleh berisi nilai yang sama (duplikasi). Namun NULL diperbolehkan menjadi nilai suatu field yang UNIQUE. Contoh tabel dengan UNIQUE: CREATE TABLE Persons ( P_Id int NOT NULL UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) ) CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), UNIQUE (P_Id) ) CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT uc_PersonID UNIQUE (P_Id, LastName) )



b. PRIMARY KEY Fungsinya menjaga suatu field tidak boleh berisi sama dan tidak boleh berisi NULL. Fungsi dari primary key adalah sebagai pembeda antara satu record (entitas) dengan record yang lainnya (sebagai suatu identifier) CREATE TABLE Persons ( P_Id int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), )



c. REFERENTIAL



Fungsinya untuk menjaga hubungan (relationship) antar tabel. Tabel yang dirujuk memiliki primary key, sedangkan tabel yang merujuk memiliki foreign key, dimana primary key dan foreign key memiliki domain nilai yang sama. CREATE TABLE Orders ( O_Id int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, P_Id int FOREIGN KEY REFERENCES Persons(P_Id) )



Pada contoh di atas, field P_Id tabel Orders akan merujuk ke primary key P_Id pada tabel Persons. Pada referential integrity ini, nilai field pada foreign key P_id tabel Orders harus ada nilainya di primary key P_Id tabel Persons. d. CHECK CHECK berfungsi membatasi nilai/data apa saja yang bisa dimasukkan pada suatu field. Selain itu juga berfungsi menjaga supaya data yang dimasukkan pada suatu field sesuai dengan aturan yang dibuat. CREATE TABLE Employee ( ID



INTEGER



NOT NULL



PRIMARY KEY,



Name



VARCHAR(9),



ZipCode



CHAR(5)



CHECK (ZipCode



Dept



SMALLINT



CHECK (Dept BETWEEN 10 AND 100),



Job



CHAR(5)



CHECK (Job IN ('Sales','Manager','Clerk')),



HireDate



DATE,



Salary



DECIMAL(7,2),



CONSTRAINT



YEARSAL



LIKE '[0-9][0-9][0-9][0-9][0-9]'),



CHECK ( YEAR(HireDate) > 1986 OR Salary > 40500 )



)



4.5.7



Melihat Data Pada Table



Untuk melihat data yang sudah kita masukkan pada tabel, maka digunakan perintah SELECT. Misalnya untuk melihat seluruh baris data pada seluruh field yang ada di tabel Employee, query-nya: SELECT * FROM Employee



Apabila ingin mengambil data pada sebagian field saja (operasi project) dari tabel Employee, contohnya: SELECT Name, Dept, HireDate FROM Employee



4.5.8



Membuat View dengan CREATE



View adalah tabel virtual yang berisi result-set (hasil query berisi 1 atau banyak baris dengan banyak kolom) dari suatu statement SQL. View seperti halnya tabel juga terdiri dari kolom dan baris, namun kolom dan isi data pada view sebenarnya berasal dari tabel. View ini bisa dibuat dengan statement SQL yang sederhana hingga kompleks, yang nantinya bisa berisi klausa WHERE, JOIN, dll yang akan dibahas pada bab-bab berikutnya. Contoh pembuatan view bernama Employee2010 yang mana datanya berasal dari tabel Employee yang menampilkan semua pegawai yang dipekerjakan setelah tahun 2010:



CREATE VIEW Employee2010 AS SELECT ID, Name, HireDate FROM Employee WHERE YEAR(HireDate) > 2010



Cara untuk mengambil data dari view Employee2010 sama seperti pada tabel, misalnya: SELECT * FROM Employee2010



4.5.9



Memodifikasi Objek Database dengan ALTER



Basis data yang telah dibuat masih bisa dimodifikasi. Untuk memodifikasi objek basis data dan tabel yang telah dibuat digunakan sintaksis ALTER. 4.5.10 Menambah Kolom/Field Baru Sintaksis untuk menambah kolom/field baru pada tabel adalah: ALTER TABLE [nama_tabel] ADD [nama_kolom] [tipe_data] (constraint);



Contoh penambahan field baru State pada tabel Persons: ALTER TABLE Persons ADD State varchar(20);



4.5.11 Mengubah Tipe Data Dari Kolom/Field Sintaksis untuk mengubah kolom/field yang sudah ada adalah: ALTER TABLE [nama_tabel] ALTER COLUMN [nama_kolom] [tipe_data];



Contoh pengubahan tipe data pada tabel Persons: ALTER TABLE Persons ALTER COLUMN City VARCHAR(75) NOT NULL;



4.5.12 Menghapus Kolom/Field Sintaksis untuk menghapus kolom/field adalah: ALTER TABLE [nama_tabel] DROP COLUMN [nama_kolom]



Contoh penghapusan kolom: ALTER TABLE Persons DROP COLUMN DateOfBirth



4.5.13 Menambah Constraint Sintaksis penambahan constraint: ALTER TABLE Persons ADD CONSTRAINT [nama_kolom] [jenis_constraint] [kondisi_constraint];



Contoh penambahan constraint primary key: ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id, LastName)



4.5.14 Mengubah Nama Objek Database Sintaksis pengubahan nama basis data adalah: ALTER DATABASE [nama_basisdata] MODIFY NAME = [nama_basisdata_baru]; GO



Contoh pengubahan nama basis data mydatabase ke my_newdatabase: use master; GO ALTER DATABASE mydatabase MODIFY NAME = my_newdatabase; GO



Pada contoh di atas, apabila basis data mydatabase masih digunakan/terkoneksi maka aktifkan basis data yang lain, dalam hal ini adalah master. Setelah dijalankan melalui perintah GO (sebagai pembatas suatu blok baris perintah, GO bisa dikustomisasi) maka jalankan pengubahan nama sebenarnya. 4.5.15 Menghapus Objek Database dengan DROP Sintaksis penghapusan objek basis data menggunakan DROP. Penghapusan bisa dilakukan untuk basis data, tabel, atau objek lainnya. CATATAN: Hati-hati untuk melakukan penghapusan objek, tabel, basis data, karena apabila suatu objek dihapus maka: a. b. c. d.



Semua data dan struktur tabel akan dihapus Semua indeks akan dihapus Semua transaksi pending akan di-commit Perintah drop tidak bisa di-rollback (dikembalikan atau undo/undrop) secara permanen



4.5.16 Menghapus Table Sintaksis menghapus tabel adalah: DROP TABLE [nama_tabel]



Contoh menghapus tabel Persons adalah: DROP TABLE Persons



4.5.17 Menghapus Database Sintaksis menghapus basis data adalah: DROP DATABASE [nama_basisdata]



Contoh menghapus tabel mydatabase adalah: DROP DATABASE mydatabase



4.6



Tugas



1. Implementasikan model relasional berikut ke DBMS dengan menambahkan NIM di setiap table yang ada. Contoh table mahasiswa menjadi mahasiswa_nim.



2. Modifikasi table MHS_KOTA_NIM sehingga mempunyai struktur seperti berikut (perlihatkan hasilnya): Name



Null?



Type



Constr.



NIM



NOT



VARCHAR(15)



FK PK



K_PROPINSI



VARCHAR(9)



FK



K_NEGARA



VARCHAR(9)



FK



K_KOTA



VARCHAR(9)



FK



ALAMAT



VARCHAR(110)



KODE_POS



VARCHAR(6)



3. Buatlah table MHS_KOTA2_NIM yang memiliki struktur sama seperti table MHS_KOTA_NIM! 4. Drop table MHS_KOTA_NIM!



Modul 5 : Dasar Query Select 5.1



Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): a. 10 menit untuk penjelasan singkat tentang modul b. 100 menit untuk pengayaan c. 60 menit pembahasan



5.2



Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Memahami operasi SELECT 2. Mengambil data dari suatu tabel 3. Mengambil data dengan kriteria tertentu dan/atau secara terurut



5.3



Alat & Bahan 1. Komputer



5.4



Dasar Teori SQL Select



Sintaksis query SQL untuk mengambil data (tuple/record) menggunakan perintah SELECT. Sintaksis SELECT dapat digunakan untuk melihat isi data dari satu atau banyak tabel dari query yang sederhana hingga kompleks. Struktur sederhana sebuah query SELECT adalah sebagai berikut.



SELECT [nama_kolom] FROM [nama_tabel] WHERE [kondisi] [GROUP BY] [nama_kolom] [ORDER BY] [nama_kolom]



5.5



Prosedur Praktikum



5.5.1



Mengambil Data dengan SELECT



Query untuk mengambil data menggunakan sintaksis SELECT, misalnya untuk mengambil seluruh data dari seluruh data pada tabel instructor. Tanda * digunakan untuk mengambil data dari seluruh kolom. SELECT * FROM instructor



Gambar 5.1 Contoh mengambil data keseluruhan isi table



Untuk mengambil data hanya dari sebagian/beberapa kolom dari tabel instructor, misalnya hanya dari kolom name, dept_name maka gunakan sintaksis seperti berikut.



SELECT name, dept_name FROM instructor



Gambar 5.2 Contoh mengambil data dari sebagian kolom dari suatu table



5.5.2



Mengambil Data dengan SELECT-WHERE



Untuk mengambil data sesuai yang memenuhi kriteria-kriteria tertentu digunakan klausa WHERE. Sintaksis klausa WHERE adalah sebagai berikut.



SELECT [nama_kolom] FROM [nama_tabel] WHERE [kriteria]



Pada sintaksis di atas kriteria bisa dapat berisi kondisi logika (=, != atau ), relasional (>, >=, =



Lebih dari sama dengan



Numerik




3



Contoh berikut adalah contoh untuk menampilkan kuliah yang memiliki course_id lebih dari 125. SELECT * FROM course WHERE course_id >= 125



8.4.7. Operator Logika Operator logika digunakan untuk menguji kebenaran dari suatu kondisi yang menghasilkan nilai Boolean TRUE, FALSE, atau UNKNOWN. Operator



Deskripsi



ALL



TRUE jika semua himpunan pembandingan bernilai TRUE



AND



TRUE jika kedua ekspresi Boolean bernilai TRUE



ANY



TRUE jika salah satu dari himpunan pembandingan bernilai TRUE



Tipe Data



BETWEEN



TRUE jika nilai berada di antara suatu rentang



Numerik



EXISTS



TRUE jika subquery menghasilkan baris record



Array (numerik, string)



TRUE jika operand sama dengan salah satu dari daftar ekspresi/tuple



Array (numerik, string)



LIKE



TRUE jika sesuai dengan pola tertentu % atau _



String



NOT



Kebalikan nilai dari operator Boolean apapun



OR



TRUE jika salah satu ekspresi Boolean bernilai TRUE



IN



SOME



TRUE jika beberapa dari himpunan pembandingan bernilai TRUE



Operator LIKE merupakan operator yang digunakan untuk tipe data String, bedanya jika ‘=’ itu artinya sama persis, akan tetapi LIKE dapat digunakan untuk membandingkan dengan pola tertentu atau sebagian string saja. Berikut ini adalah pola yang didukung oleh LIKE.



Wildcard character



Description



Example



%



Any string of zero or WHERE title LIKE '%computer%' finds all book titles with more characters. the word 'computer' anywhere in the book title.



_ (underscore)



Any single character.



WHERE au_fname LIKE '_ean' finds all four-letter first names that end with ean (Dean, Sean, and so on).



[]



Any single character within the specified range ([a-f]) or set ([abcdef]).



WHERE au_lname LIKE '[C-P]arsen' finds author last names ending with arsen and starting with any single character between C and P, for example Carsen, Larsen, Karsen, and so on. In range searches, the characters included in the range may vary depending on the sorting rules of the collation.



[^]



Any single character not within the specified range ([^a-f]) or set ([^abcdef]).



WHERE au_lname LIKE 'de[^l]%' all author last names starting with de and where the following letter is not l.



8.4.8. Syarat Dengan Satu Kondisi Dalam contoh berikut, syarat yang terdapat pada klausa WHERE hanya berisi satu kondisi saja. Contoh untuk mencari semua course yang berasal dari semua department (dept_name) yang mengandung kata ‘eng’. SELECT * FROM course WHERE dept_name LIKE '%eng%'



8.4.9. Syarat Lebih Dari Satu Kondisi Seringkali kita jumpai permasalahan yaitu syarat lebih dari satu kondisi. Oleh sebab itu SQL menyediakan operator logika yang dapat digunakan untuk mengatasi permasalahan tersebut. Operator logika yang dapat digunakan dalam SQL Server adalah AND, NOT, dan OR. SELECT s.id, s.name, t.semester, t.year, c.title, t.grade FROM takes t JOIN student s ON t.ID=s.ID JOIN course c ON t.course_id=c.course_id WHERE s.name = 'colin' AND (t.grade='B' OR t.grade='A')



8.4.10. Conditional Operator Bertipe Array (IN, BETWEEN) Adakalanya kita juga menjumpai syarat yang berupa suatu range tertentu. Sebagai contoh menampilkan data nilai dengan syarat mulai 10 sampai 100. Bisa dibayangkan banyaknya ekspresi kalau menggunakan OR, maka akan ada sebanyak elemen mulai 10 sampai 100. SQL menyediakan BETWEEN untuk memudahkan permasalahan tersebut. Berikut ini adalah contoh penggunaan operator BETWEEN dalam query. SELECT s.id, s.name, t.semester, t.year, c.title, t.grade FROM takes t JOIN student s ON t.ID=s.ID JOIN course c ON t.course_id=c.course_id WHERE s.name = 'colin' AND year BETWEEN 2006 AND 2009 ORDER BY year ASC



Query di atas menampilkan nilai kuliah Colin mulai tahun 2006 sampai 2009. Permasalahan lain yang juga dijumpai yaitu pembanding tidak hanya 2 tetapi sekumpulan data/array. Berikut ini adalah contoh penggunaan IN dalam membandingkan dengan sekumpulan data. SELECT s.id, s.name, t.semester, t.year, c.title, t.grade FROM takes t JOIN student s ON t.ID=s.ID JOIN course c ON t.course_id=c.course_id WHERE s.name = 'colin' AND t.grade IN ('A', 'A-', 'B+', 'C+')



Query di atas bertujuan untuk menampilkan semua nilai dari Colin yang bernilai 'A', 'A-', 'B+', 'C+'. Cara lain bisa dengan menggunakan logika OR akan tetapi hal tersebut akan sangat banyak ekspresi sebanyak kemungkinan nilai. Penggunaan IN lebih lanjut dapat dijumpai pada materi Subquery.



8.4.11. Predicate Predicate adalah ekspresi untuk mengevaluasi hasil berupa TRUE, FALSE, atau UKNOWN. Predicate digunakan dalam kondisi pencarian pada klausa WHERE dan HAVING, kondisi join pada klausa FROM, dan konstruksi lainnya yang memerlukan nilai Boolean.



Operator



Deskripsi



Tipe Data



CONTAINS



Digunakan untuk pencarian full text atau indeks full text



String



IS NULL



Bernilai NULL



-



IS NOT NULL



Bernilai Non-NULL



-



Eksekusi perintah query berikut, untuk menambahkan data ke dalam tabel course. INSERT INTO course (course_id, title) VALUES (1111, 'Sastra Jawa') INSERT INTO course (course_id, title) VALUES (1112, 'Bahasa Daerah')



Dari hasil penambahan di atas untuk menampilkan data yang memiliki nilai NULL, contohnya: SELECT * FROM course WHERE dept_name IS NULL



Sebaliknya apabila mengunakan IS NOT NULL maka akan menampilkan semua data yang tidak berisi NULL. SELECT * FROM course WHERE dept_name IS NOT NULL



8.4.12. Fungsi Fungsi adalah sintaksis untuk memanggil fungsional tertentu pada SQL. Fungsi digunakan untuk memudahkan dalam melakukan konversi, manipulasi data, dan fungsi-fungsi lain. Sintaksis penulisan fungsi: function_name(column|expression, [arg1, arg2, …]) Pemanggilan fungsi dapat dilakukan di dalam klausa SELECT maupun WHERE atau HAVING. 8.4.13. Fungsi Karakter/String Berikut ini adalah fungsi manipulasi string yang didukung oleh SQL Server. ASCII



LTRIM



SOUNDEX



CHAR



NCHAR



SPACE



CHARINDEX



PATINDEX



STR



CONCAT



QUOTENAME



STRING_ESCAPE



DIFFERENCE



REPLACE



STRING_SPLIT



FORMAT



REPLICATE



STUFF



LEFT



REVERSE



SUBSTRING



LEN



RIGHT



UNICODE



LOWER



RTRIM



UPPER



Contoh pemanggilan fungsi UPPER untuk mengubah menjadi huruf kapital adalah sebagai berikut. SELECT title, UPPER(title) as upper_title



FROM course



8.4.14. Fungsi Bilangan Berikut ini adalah fungsi numerik yang didukung SQL Server.



ABS ACOS ASIN ATAN ATN2 CEILING COS COT



DEGREES EXP FLOOR LOG LOG10 PI POWER RADIANS



RAND ROUND SIGN SIN SQRT SQUARE TAN



8.4.15. Fungsi Tanggal Berikut ini fungsi tanggal yang didukung oleh SQL Server. Function



Return value



Return data type



Determinism



CURRENT_TIMESTAMP



Returns a datetime value that contains the date and time of the computer on which the instance of SQL Server is running. The time zone offset is not included.



datetime



Nondeterministic



GETDATE ( )



Returns a datetime value that contains the date and time of the computer on which the instance of SQL Server is running. The time zone offset is not included.



datetime



Nondeterministic



GETUTCDATE ( )



Returns a datetime value that contains the date and time of the computer on which the instance of SQL Server is running. The date and time is returned as UTC time (Coordinated Universal Time).



datetime



Nondeterministic



DATENAME ( datepart , date )



Returns a character string that represents the specified datepart of the specified date.



nvarchar



Nondeterministic



DATEPART (



Returns an integer that represents the



int



Nondeterministic



datepart , date )



specified datepart of the specified date.



DAY ( date )



Returns an integer that represents the day day part of the specified date.



int



Deterministic



MONTH ( date )



Returns an integer that represents the month part of a specified date.



int



Deterministic



YEAR ( date )



Returns an integer that represents the year part of a specified date.



int



Deterministic



DATEDIFF ( datepart , startdate , enddate )



Returns the number of date or time datepart boundaries that are crossed between two specified dates.



int



Deterministic



DATEDIFF_BIG ( datepart , startdate , enddate )



Returns the number of date or time datepart boundaries that are crossed between two specified dates.



bigint



Deterministic



8.4.16. Fungsi COALESCE Fungsi COALESCE digunakan untuk menampilkan suatu nilai default yang ditentukan apabila berisi NULL. Fungsi ini tidak akan mengubah nilai NULL yang tersimpan dan tidak berpengaruh apabila isinya bukan NULL. SELECT course_id, title, COALESCE(dept_name, 'NO_DEPARTMENT') as dept_name, credits FROM course WHERE dept_name IS NULL



8.5. Latihan 1. Tampilkan data dari tabel course yang memiliki credits selain 3! 2. Tampilkan data dari tabel course yang memiliki course_id mulai 140 sampai ke atas! 3. Tampilkan data (dari join) student_id, nama, course, grade (dari tabel takes) dengan syarat grade mengandung huruf “C” (bisa C/C+/C-) !



` 4. Modifikasi query untuk menampilkan semua nilai Colin semester spring dan tahun 2007 dan 2008! 5. Tampilkan gaji bersih instructor dengan pembulatan! 6. Tampilkan gabungan field name dan dept_name dari student menjadi bentuk “name is a student of departement” (contoh Colin is student of Civil eng.) dengan salah satu fungsi string!



Modul 9 : Column Ffunction dan Grouping 9.1. Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): 1. 10 menit untuk penjelasan singkat tentang modul 2. 100 menit untuk pengayaan 3. 60 menit pembahasan



9.2. Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Menyebutkan fungsi kolom yang umum dalam MS SQL Server 2. Menggunakan fungsi kolom untuk menampilkan data



9.3. Alat Dan Bahan 1. Komputer



9.4. Dasar Teori 9.4.1. Fungsi Group Fungsi kelompok (group) melakukan operasi pada dua atau lebih baris data dan memberikan satu hasil per group. Tipe-tipe fungsi group yang bisa digunakan: AVG, COUNT, MAX, MIN, SUM. 9.4.2. Fungsi COUNT Fungsi COUNT digunakan untuk menghasilkan nilai jumlah data (baris) dari sekelompok data tabel maupun view. Sintaksis (cara penulisan) dari penggunaan fungsi group: SELECT [DISTINCT] {*, column [alias] group_function(column)} FROM table [WHERE condition(s)] [GROUP BY column]



Contoh untuk mencari jumlah total dari student adalah: SELECT count(*) AS tot_students FROM student;



9.4.3. Fungsi AVG dan SUM Fungsi AVG digunakan untuk menghasilkan group nilai rata-rata sekelompok nilai dari sebuah field numerik. SELECT AVG(nama_field) FROM nama_tabel;



Contoh untuk mencari gaji (salary) rata-rata dari instructor adalah. SELECT avg(salary) ASavg_salary



FROM Instructor;



Fungsi SUM ini digunakan untuk menghasilkan nilai total jumlah sekelompok dari sebuah kolom. SELECT SUM(nama_field) FROM nama_tabel;



Contoh untuk mencari jumlah total semua gaji (salary) dari instructor. SELECT sum(salary) AS sum_salary FROM Instructor;



9.4.4. Fungsi MIN dan MAX Fungsi MIN digunakan untuk menghasilkan nilai terendah dari sekelompok data dalam sebuah kolom. SELECT MIN(nama_field) FROM nama_tabel;



Contoh mencari gaji terendah dari instructor: SELECT min(salary) AS min_salary FROM Instructor;



Fungsi MAX digunakan untuk menghasilkan nilai tertinggi dari sekelompok data dalam sebuah kolom. SELECT MAX(nama_field) FROM nama_tabel;



Contoh mencari gaji tertinggi dari instructor: SELECT max(salary) AS max_salary FROM Instructor;



9.4.5. Mengelompokkan Data dengan GROUP BY Perintah yang digunakan untuk mengelompokan beberapa data pada perintah SELECT. SELECT nama_kolom,



agregasi(nama_kolom)



FROM (nama_tabel) GROUP BY nama_kolom;



Contohnya: 1. Mencari banyak student tiap-tiap department.



SELECT dept_name, count(*) AS student_count FROM student GROUP BY dept_name



2. Mencari rerata gaji instructor tiap-tiap department. SELECT dept_name, AVG(salary) AS avg_salary FROM Instructor GROUP BY dept_name;



9.4.6. Klausa HAVING Fungsi HAVING berkaitan dengan GROUP BY dan AGREGASI. biasanya digunakan untuk menentukan kondisi tertentu pada GROUP BY dan kondisi tersebut berkaitan dengan fungsi agregasi. Fungsi ini memiliki kemiripan dengan WHERE dalam penggunaannya. HAVING digunakan dalam SQL karena WHERE tidak dapat digunakan dengan fungsi agregasi. SELECT atribut FROM nama_tabel GROUP BY atribut



HAVING fungsi_agregasi;



9.4.7. Fungsi Karakter/String Contoh mengambil department dan jumlah student yang berada di department “Engineering” (berakhiran “Eng.”) SELECT dept_name, count(*) as number_student FROM student GROUP BY dept_name HAVING RIGHT(dept_name, 4) = 'Eng.';



9.4.8. Fungsi Bilangan Contohnya mencari department dan rerata gaji dari department yang memiliki rerata gaji lebih dari 70.000. SELECT dept_name, AVG(salary) avg_salary FROM Instructor GROUP BY dept_name HAVING AVG(salary) >70000;



9.4.9. Fungsi Tanggal Fungsi tanggal merupakan fungsi untuk mengambil sebagian data dari kolom bertipe DATE dan TIMESTAMP. Sebagai contoh, kita bisa menggunakan fungsi YEAR() untuk mengambil bagian tahun. Contohnya: SELECT YEAR(CURRENT_TIMESTAMP) AS Tahun_skrg; SELECT YEAR(GETDATE()) AS Tahun_skrg;



SELECT MONTH(CURRENT_TIMESTAMP) AS Bulan_skrg; SELECT MONTH(GETDATE()) AS Bulan_skrg; SELECT DAY(CURRENT_TIMESTAMP) AS Tgl_skrg; SELECT DAY(GETDATE()) AS Tgl_skrg;



9.5. Latihan 1. Dapatkan banyaknya student yang memiliki total credit > 100 tiap-tiap department. 2. Dapatkan course_id dan banyak student yang mengambil masing-masing course tersebut pada tahun 2006.



Modul 10 : Union, Intersection, Difference



10.1. Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): 1. 10 menit untuk penjelasan singkat tentang modul 2. 100 menit untuk pengayaan 3. 60 menit pembahasan



10.2. Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Memahami operasi union 2. Memahami operasi intersection 3. Memahami operasi difference



10.3. Alat Dan Bahan 1. Komputer



10.4. Dasar Teori 10.4.1. Operasi Union Operasi union atau gabungan dari himpunan A dan B dalam teori himpunan adalah gabungan semua anggota A atau semua anggota B atau keduanya. Ilustrasi himpunan A yang digabungkan dengan himpunan B adalah sebagai berikut.



A



B



Gambar 10.1. Ilustrasi operasi union A ∪ B



10.4.1.1 UNION Union (operatornya adalah UNION) merupakan operasi menggabungkan dua data set yang memiliki kolom dengan definisi dan urutan yang sama. Apabila ada duplikasi data (data yang sama) maka hanya dimunculkan sekali. Contoh operasi union adalah sebagai berikut. SELECT building, room_number FROM dbo.classroom WHERE building like 'A%' UNION SELECT building,room_number FROM dbo.section WHERE room_number like '7%'



Dari sintaksis tersebut akan ditampilkan building dan room_number yang memiliki awalan A dan awalan 7.



Contoh lain adalah sebagai berikut. SELECT ID, course_id, semester FROM takes WHERE ID = 10033 and course_id between 300 and 410 UNION SELECT ID, course_id, semester FROM takes WHERE ID = 10454 and course_id between 450 and 500



10.4.1.2. UNION ALL Serupa dengan union, operator UNION ALL juga menggabungkan dua himpunan data, namun UNION ALL akan menampilkan seluruh himpunan data yang digabung walaupun hal itu menyebabkan duplikasi data. Contoh operasi UNION ALL adalah sebagai berikut. SELECT ID, WHERE ID = UNION ALL SELECT ID, WHERE ID =



course_id, semester FROM takes 10033 course_id, semester FROM takes 10454



Dari sintaksis tersebut akan ditampilkan seluruh ID, course_ID, semester yang dari student ID 10033 dan 10454 tanpa memperhatikan duplikasi data.



Contoh di atas menghasilkan student 10033 yang memiliki duplikasi data pada course_id 338, 408 dan student 10454 yang memiliki duplikasi data pada course_id 468. 10.4.2. Operasi Intersection Operasi intersection atau irisan dari himpunan A dan B dalam teori himpunan adalah semua anggota A yang juga anggota B (atau kebalikannya). Ilustrasi himpunan A yang diiriskan dengan himpunan B adalah sebagai berikut.



A A∩B



B



Gambar 10.2. Ilustrasi operasi intersection A ∩ B



10.4.2.1. INTERSECT Intersection (operatornya adalah INTERSECT) merupakan operasi irisan himpunan yang menghasilkan result set berupa data-data yang sama dari beberapa himpunan data yang diiriskan. Contoh berikut mengambil student beserta course yang diambil hanya tahun 2005 dan diiriskan dengan student beserta course yang diambil course pada semester “Fall” semua tahun. SELECT ta.ID, s.name, s.dept_name, ta.course_id, c.title, ta.semester, ta.year, ta.grade FROM takes ta join student s on s.ID=ta.ID join course c on c.course_id=ta.course_id WHERE ta.year = 2005 INTERSECT SELECT ta.ID, s.name, s.dept_name, ta.course_id, c.title, ta.semester, ta.year, ta.grade FROM takes ta join student s on s.ID=ta.ID join course c on c.course_id=ta.course_id WHERE ta.semester = 'Fall'



Dari sintaksis di atas maka menghasilkan student beserta course pada tahun 2005 pada semester “Fall”.



10.4.3. Operasi Difference Operasi difference atau selisih dari himpunan A dan B adalah himpunan yang anggotanya semua dari A tetapi bukan anggota B. Ilustrasi himpunan A yang diselisihkan dengan himpunan B adalah sebagai berikut.



A\B



B



Gambar 10.3. Ilustrasi operasi difference A \ B



Operasi difference pada SQL Server adalah operasi except (operatornya adalah EXCEPT) merupakan operasi yang menghasilkan hasil kembalian berupa himpunan yang merupakan data-data dari set pertama diselisihkan data-data dari himpunan kedua. Contoh berikut mengambil student beserta course yang diambil hanya tahun 2005 yang bukan dengan student beserta course yang diambil course pada semester “Fall” semua tahun. SELECT ta.ID, s.name, s.dept_name, ta.course_id, c.title, ta.semester, ta.year, ta.grade FROM takes ta join student s on s.ID=ta.ID join course c on c.course_id=ta.course_id WHERE ta.year = 2005 EXCEPT SELECT ta.ID, s.name, s.dept_name, ta.course_id, c.title, ta.semester, ta.year, ta.grade FROM takes ta join student s on s.ID=ta.ID join course c on c.course_id=ta.course_id WHERE ta.semester = 'Fall'



Dari sintaksis di atas maka menghasilkan student beserta course pada tahun 2005 namun bukan yang berada di semester “Fall”. 10.4.4. Operasi Gabungan Dari UNION, INTERSECTION, dan DIFFERENCE Untuk menyelesaikan kasus tertentu, kita dapat menggabungkan operasi UNION, INTERSECT, maupun EXCEPT. Contoh berikut adalah query untuk mengambil student yang mengambil course pada year 2003 dan 2005 tapi bukan semester Fall. SELECT * FROM takes ta JOIN student s ON s.ID=ta.ID



WHERE s.dept_name = 'Accounting' and year = 2003 union SELECT * FROM takes ta JOIN student s ON s.ID=ta.ID WHERE s.dept_name = 'Accounting' and year = 2005 except SELECT * FROM takes ta JOIN student s ON s.ID=ta.ID WHERE s.dept_name = 'Accounting' and semester = 'Fall'



Query di atas bisa saja dioptimasikan dengan cara lain ekuivalensinya tanpa menggunakan operasi union, except, tapi adakalanya suatu query nanti tidak punya query yang ekuivalen.



10.5. Latihan 1. Tampilkan ID, semester, dan course ID yang memiliki ID depan 10, grade-nya A dan tahun ajaran 2002. 2. Tampilkan dept_name yang memiliki salary dari instructor lebih besar dari 54000 dan credit dari course-nya lebih dari 3.



Modul 11 : Subquery SQL 11.1. Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): 1. 10 menit untuk penjelasan singkat tentang modul 2. 100 menit untuk pengayaan 3. 60 menit pembahasan



11.2. Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Menggambarkan tipe persoalan yang dapat dipecahkan oleh subquery 2. Mendefinisikan subquery 3. Memahami tipe-tipe subquery 4. Menulis subquery baris tunggal dan baris berganda



11.3. Alat Dan Bahan 1. Komputer



11.4. Dasar Teori 11.4.1. Sub Query Untuk Menyelesaikan Masalah Pengertian subquery, nested query akan dijelaskan melalui ilustrasi berikut ini: "Misal kita ingin membuat suatu query untuk mencari gaji semua instructor yang lebih besar dari gaji yang dimiliki oleh instructor bernama ‘Moreira’. Untuk memecahkan persoalan ini, kita membutuhkan dua query, satu query untuk mencari gaji yang dimiliki oleh Moreira dan satu query lagi untuk mencari instructor yang memiliki gaji lebih besar daripada gaji Moreira.



11.4.2. Sub Query Sebuah subquery adalah query yang bersarang dalam sebuah pernyataan SELECT, INSERT, UPDATE atau DELETE, atau berada dalam subquery yang lain. Sebuah subquery dapat digunakan di mana saja ekspresi diperbolehkan jika ia mengembalikan nilai tunggal. Sebuah subquery disebut juga sebagai inner query atau inner select, sedangkan pernyataan yang mengandung subquery disebut juga dengan outer query atau outer select. Inner query akan menghasilkan suatu nilai yang nantinya dipakai oleh outer query. Query SELECT dari subquery harus selalu berada dalam tanda kurung. SELECT * FROM instructor WHERE salary > ( SELECT salary FROM instructor WHERE name='Moreira' )



outer query inner query



11.4.3. Penempatan Sub Query Subquery dapat diletakkan di klausa SELECT, di klausa FROM atau di klausa WHERE. 11.4.3.1. Sub Query di Klausa SELECT Contoh: Menggunakan subquery untuk menampilkan id, name dan jumlah course yang telah diambil oleh student. SELECT id, name, (SELECT COUNT(*) FROM takes t WHERE t.id=s.id) AS course_count FROM student s



11.4.3.2. Sub Query di Klausa FROM Contoh: Menggunakan subquery untuk menampilkan id, name, min_score (nilai course terendah) dan max_score (nilai course tertinggi) dari setiap student. SELECT a.id, name, min_score, max_score FROM (SELECT id, MIN(score) AS min_score, MAX(score) AS max_score FROM takes GROUP BY id) a, student s WHERE a.id = s.id



11.4.3.3. Sub Query di Klausa WHERE Contoh: Menggunakan subquery untuk menampilkan instructor yang memiliki gaji di atas rata-rata. SELECT * FROM instructor WHERE salary > (SELECT AVG(salary) FROM instructor)



11.4.4. Petunjuk Penggunaan Sub Query Berikut beberapa petunjuk dari penggunaan subquery: •



Letakkan subquery di dalam tanda kurung







Tempatkan subquery pada sisi kanan dari kondisi perbandingan







Klausa ORDER BY dalam subquery tidak diperlukan jika yang dibentuk adalah Top-N analysis.







Gunakan operator baris tunggal dengan subquery baris tunggal dan operator baris ganda dengan subquery baris ganda.



11.4.5. Tipe-Tipe Sub Query Beberapa tipe dari subquery: •



Single row, subquery baris tunggal







Multiple-row, subquery baris ganda







Correlated subquery



11.4.5.1. Sub Query Baris Tunggal Single row subquery memberikan hasil hanya satu baris data (scalar value). Untuk single row subquery ini yang digunakan adalah operator perbandingan: = , > , >= , < , 1 )



11.4.5.4. Sub Query dengan Operator EXISTS/NOT EXISTS Kata kunci EXISTS hanya menghasilkan nilai Boolean [TRUE/FALSE]. Klausa WHERE dari outer query menguji apakah subquery menghasilkan baris data atau tidak (TRUE jika menghasilkan baris data/FALSE jika tidak menghasilkan baris data sama sekali). Subquery dengan EXIST tidak memproduksi data apapun, selain TRUE/FALSE. Contoh: Menggunakan subquery untuk menampilkan semua course yang tidak memiliki prerequisite. SELECT * FROM course a WHERE NOT EXISTS ( SELECT * FROM prereq b WHERE b.course_id=a.course_id )



11.4.5.5. Correlated Sub Query Kebanyakan subquery dieksekusi sekali dan hasilnya akan menggantikannya nilai atau nilai-nilai yang dihasilkan dalam klausa WHERE dari outer query. Pada query yang melibatkan correlated subquery (juga dikenal sebagai repeating subquery), subquery bergantung pada outer query untuk nilai-nilainya. Ini berarti bahwa subquery dieksekusi berulang kali, sekali untuk setiap baris yang mungkin terpilih oleh outer query. Sebuah correlated subquery memerlukan sebuah nilai dari outer query sebagai bagian dari inner query (data dari setiap baris di main query di-passing ke subquery untuk diproses).Contoh: Menggunakan subquery untuk menampilkan instructor yang memiliki gaji di atas rata-rata gaji dalam satu department yang sama. SELECT name, dept_name, salary FROM instructor a WHERE salary > ( SELECT AVG(salary) FROM instructor b WHERE b.dept_name=a.dept_name )



11.5. Latihan Buat subquery untuk: 1. Menampilkan instructor yang belum pernah mengajar! 2. Menampilkan course yang pernah diajar setidaknya 2 instructor! 3. Menampilkan student yang paling banyak mendapat nilai A!



Modul 12 : Transaction



12.1. Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): 1. 10 menit untuk penjelasan singkat tentang modul 2. 100 menit untuk pengayaan 3. 60 menit pembahasan



12.2. Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1. Memahami transaksi (transaction) dalam DBMS 2. Membuat query transaksi (transaction) dalam tugas tertentu



12.3. Alat Dan Bahan 1. Komputer



12.4. Dasar Teori 12.4.1. Transaction Transaction adalah suatu satu kesatuan unit eksekusi tugas. Apabila suatu transaksi atau transaction berhasil, maka semua modifikasi data yang dilakukan selama transaction akan di-commit dan perubahannya tersimpan secara permanen di dalam basis data. Sebaliknya, apabila suatu transaksi mengalami kegagalan (error) dan harus dibatalkan atau di-rollback, maka semua modifikasi harus dihapus. Singkatnya dalam transaksi, perubahannya sukses terjadi atau tidak sama sekali tidak boleh setengah-setengah. 12.4.2. Membuat Transaksi Dengan BEGIN TRANSACTION Untuk membuat suatu transaksi digunakan sintaksis BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [ 'description' ] ]



Adanya sintaksis BEGIN TRAN atau BEGIN TRANSACTION di atas menandakan bahwa transaction dibuat secara explicit dan membuat lock pada suatu tabel hingga suatu transaction berhasil terjadi (dicommit) atau gagal dan dibatalkan (di-rollback). Semua perintah setelah BEGIN TRAN atau BEGIN TRANSACTION akan dieksekusi namun perubahannya masih belum permanen tersimpan sampai dilakukan commit (atau rollback bila batal). Apabila ingin melakukan modifikasi yang banyak dalam suatu basis data (INSERT, UPDATE, DELETE) biasakan untuk membuat transaction supaya masih bisa dilakukan penggagalan perubahan apabila ada kesalahan. Pada contoh berikut, gunakan query berikut untuk melihat advisor (pembimbing akademik) dari student bernama Manber. SELECT * FROM advisor a JOIN student s ON s.ID=a.s_ID JOIN instructor i ON i.ID=a.i_ID WHERE s.name='Manber' OR i.name = 'Bill'



Dapat dilihat dari hasil query, advisor dari Manber adalah Yazdi. Pada contoh transaksi berikut, instructor baru bernama Bill ditambahkan ke tabel instructor dan advisor (dosen pembimbing akademik) dari Manber digantikan oleh Bill di tabel advisor. Perubahan ini dalam satu kesatuan tugas yang tidak terpisahkan. BEGIN TRANSACTION INSERT INTO instructor VALUES(99999, 'Bill', 'Comp. Sci.', 120000); UPDATE advisor SET i_ID = ( SELECT ID FROM instructor WHERE name = 'Bill') where s_ID = ( SELECT ID FROM student WHERE name = 'Manber' );



Untuk melihat hasilnya maka gunakan query berikut. SELECT * FROM instructor WHERE name = 'Bill'; SELECT * FROM advisor a JOIN student s ON s.ID=a.s_ID JOIN instructor i ON i.ID=a.i_ID WHERE s.name='Manber' OR i.name = 'Bill';



Dari hasil query di atas, dapat dilihat instructor baru bernama Bill ditambahkan ke tabel instructor dan advisor dari student Manber diubah menjadi Bill. CATATAN Suatu transaksi akan selalu menunggu commit atau rollback. Commit digunakan untuk menyimpan perubahan secara permanen di dalam basis data. Rollback digunakan untuk menggagalkan perubahan yang dilakukan transaksi ke keadaan semula sebelum terjadi BEGIN TRAN. 12.4.3. Membatalkan Transaksi Dengan ROLLBACK TRANSACTION Rollback digunakan untuk menggagalkan transaksi. Sintaksis untuk menggagalkan transaksi adalah sebagai berikut. ROLLBACK { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] [ ; ]



Pada contoh di atas, misalkan untuk menggagalkan perubahan advisor dari Manber maka tambahkan dan jalankan perintah berikut. ROLLBACK TRANSACTION



Untuk mengecek apakah perubahan pada transaksi sebelumnya digagalkan jalankan perintah berikut. SELECT * FROM instructor WHERE name = 'Bill'; SELECT * FROM advisor a JOIN student s ON s.ID=a.s_ID JOIN instructor i ON i.ID=a.i_ID WHERE s.name='Manber' OR i.name = 'Bill';



Dari hasil rollback dapat dilihat bahwa penambahan instructor dan pengubahan advisor akan digagalkan semuanya. Apabila rollback dijalankan kembali maka akan muncul pesan bahwa rollback tidak dapat dijalankan karena tidak ada transaction yang sedang berlangsung. ROLLBACK TRANSACTION



12.4.5. Menjalankan Transaksi Dengan COMMIT TRANSACTION Commit digunakan untuk menandakan keberhasilan suatu transaction dan menyimpan perubahan di basis data secara permanen. Sintaksis untuk melakukan commit transaksi adalah sebagai berikut. COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ] [ ; ]



Misalnya pada query transaction sebelumnya dijalankan ulang dan ditambahkan baris COMMIT TRAN atau COMMIT TRANSACTION maka semua perubahannya akan disimpan secara permanen. Transaksi yang sudah di-commit tidak lagi bisa di-rollback. BEGIN TRANSACTION INSERT INTO instructor VALUES(99999, 'Bill', 'Comp. Sci.', 120000); UPDATE advisor SET i_ID = ( SELECT ID FROM instructor WHERE name = 'Bill') where s_ID = ( SELECT ID FROM student WHERE name = 'Manber' ); COMMIT TRANSACTION;



Apabila dicek dengan query berikut maka hasilnya sudah tersimpan secara permanen. SELECT * FROM instructor WHERE name = 'Bill'; SELECT * FROM advisor a JOIN student s ON s.ID=a.s_ID JOIN instructor i ON i.ID=a.i_ID WHERE s.name='Manber' OR i.name = 'Bill';



12.4.6. Nested Transaction SQL Server memungkinkan untuk melakukan transaksi bersarang (nested transaction), yang mana dalam blok transaksi dapat berisi blok transaksi. Melalui cara ini suatu blok transaksi baru dapat dijalankan meskipun blok transaksi sebelumnya belum selesai. Transaksi bersarang dilakukan dengan membuat BEGIN TRAN di dalam BEGIN TRAN. Variabel @@TRANCOUNT merupakan variabel di server untuk menyimpan tingkat kedalaman sarang (level of nesting). @@TRANCOUNT bernilai 0 berarti tidak ada blok transaksi bersarang, 1 menandakan ada 1 blok tingkat kedalaman sarang, dst. Ketika transaksi explicit dibuat, maka @@TRANCOUNT otomatis bertambah, dari 0 menjadi 1. Apabila dalam transaksi dilakukan COMMIT maka nilai @@TRANCOUNT akan berkurang satu, misalnya dari 2 ke 1 (apabila ada dua tingkat), 1 ke 0 (apabila ada 1 tingkat). Apabila dalam transaksi ada ROLLBACK maka nilai akan @@TRANCOUNT berkurang menjadi 0 (tidak peduli berapa pun tingkatnya). Ilustrasi perubahan @@TRANCOUNT ditunjukkan pada gambar berikut



(a)



(b)



Gambar Ilustrasi perubahan @@TRANCOUNT pada transaksi Pada gambar ditunjukkan bahwa tiap perintah COMMIT akan mengurangi nilai @@TRANCOUNT dengan satu, sedangkan satu perintah ROLLBACK akan me-rollback seluruh transaksi. Contoh ilustrasi transaksi nested adalah sebagai berikut. SELECT 'Before BEGIN TRAN', @@TRANCOUNT BEGIN TRAN SELECT 'After BEGIN TRAN', @@TRANCOUNT DELETE advisor PRINT 'DELETE ALL advisor' BEGIN TRAN nested SELECT 'After BEGIN TRAN nested', @@TRANCOUNT DELETE instructor PRINT 'DELETE ALL instructor' COMMIT TRAN nested; SELECT 'After COMMIT TRAN nested', @@TRANCOUNT ROLLBACK TRAN SELECT 'After COMMIT TRAN nested', @@TRANCOUNT SELECT * FROM advisor PRINT 'SELECT ALL advisor'



SELECT * FROM instructor PRINT 'SELECT ALL instructor'



Hasil eksekusi dari transaksi di atas adalah sebagai berikut.



12.4.7. Penanganan Kesalahan (Error) Penanganan kesalahan menggunakan mulai SQL Server 2008 menggunakan blok TRY…CATCH. Sekelompok perintah atau statement dijalankan di dalam blok TRY. Apabila ada kesalahan yang terjadi di blok TRY, maka kendali akan dikirimkan ke statement di dalam blok CATCH. Sintaksis untuk penanganan kesalahan exception adalah sebagai berikut. BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH [ { sql_statement | statement_block } ] END CATCH



Untuk mengetahui kode kesalahan gunakan variabel server @@ERROR. Selain @@ERROR untuk mengetahui kode kesalahan gunakan fungsi ERROR_NUMBER(), untuk mengetahui pesan kesalahannya gunakan fungsi ERROR_MESSAGE(). Berikut ini adalah contoh untuk mengetahui apabila ada kesalahan dalam suatu query dan memberitahukan nomor kesalahan dan pesan kesalahan yang terjadi. BEGIN TRY INSERT INTO instructor VALUES(99999, 'Mark', 'Comp. Sci.', 120000) END TRY BEGIN CATCH --PRINT digunakan untuk mencetak di console/Messages --CAST digunakan untuk type cast dari suatu tipe data ke tipe data lain --CAST di bawah contoh untuk mengubah @@ERROR (INTEGER) menjadi NVARCHAR(255) PRINT 'Kode error = '+ CAST(@@ERROR AS NVARCHAR(255)) PRINT ERROR_MESSAGE() END CATCH



Apabila query INSERT di atas dijalankan dan perintah-perintah sebelumnya sudah dijalankan maka akan terjadi error karena dari query sebelumnya instructor dengan ID 99999 sudah ada, yaitu instructor bernama Bill. Hasil query di atas adalah sebagai berikut.



12.4.8. Penanganan Kesalahan (Error) Dalam Transaksi Untuk menangani kesalahan (error) yang mungkin terjadi dalam suatu transaksi (yang kita tidak ketahui kapan bisa terjadi) maka transaksi dapat dibungkus dalam blok penanganan kesalahan (error handling). Dengan cara ini maka dapat dipastikan suatu transaksi apabila berhasil akan di-commit, bila tidak maka gagalkan dengan di-rollback. BEGIN TRANSACTION BEGIN TRY PRINT 'BEFORE INSERT 1' INSERT INTO instructor VALUES(100000, 'Steve', 'Comp. Sci.', 120000) PRINT 'AFTER INSERT 1' PRINT 'BEFORE INSERT 2' INSERT INTO instructor VALUES(99999, 'Mark', 'Comp. Sci.', 120000) PRINT 'AFTER INSERT 2' UPDATE advisor SET i_ID = ( SELECT ID FROM instructor WHERE name = Mark) where s_ID = ( SELECT ID FROM student WHERE name = 'Manber' ) PRINT 'AFTER UPDATE' IF @@TRANCOUNT > 0 BEGIN COMMIT TRANSACTION; END END TRY BEGIN CATCH PRINT 'Error occurred: Rollback all.' IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRAN END END CATCH



Pada contoh query di atas statement INSERT pertama berhasil dijalankan namun pada INSERT kedua terjadi kesalahan karena sudah ada instructor dengan ID 99999. Adanya kesalahan di dalam blok TRY untuk transaksi menyebabkan blok CATCH dijalankan dan melakukan ROLLBACK transaksi. Apabila instructor dengan ID 99999 tidak ada (sehingga berhasil ditambahkan ke tabel instructor) dan transaksi berhasil COMMIT, maka berikut ini adalah hasil dari query di atas.



12.5. Latihan Buat transaksi dengan ketentuan perintah-perintah berikut. 1.



Tambahkan data kuliah baru (course dengan nama “Game Programming”) beserta nilainya (ke tabel takes) oleh student bernama “Manber” menggunakan subquery dengan ketentuan: • •



2.



Tabel takes hanya berisi ID student sehingga pengisian ID Student dari “Manber” harus dilakukan melalui subquery (tidak dengan cara mengisikan ID secara langsung/hard code). Tabel takes hanya berisi ID course sehingga pengisian ID Course dari “Game Programming” harus dilakukan melalui subquery (tidak dengan cara mengisikan ID secara langsung/hard code).



Apabila data kuliah baru berhasil ditambahkan maka update total credit (tot_cred) pada tabel student sesuai SKS (credit) dari “Game Programming” melalui. Untuk mengetahui banyak SKS yang ditambahkan gunakan subquery. Bungkus transaksi di atas dalam error handling TRY…CATCH.



Modul 13 : Dasar Pemrograman T-SQL 13.1. Waktu Pelaksanaan Praktikum Durasi kegiatan praktikum = 170 menit, dengan rincian sebagai berikut (misalkan): 1.



10 menit untuk penjelasan singkat tentang modul



2.



100 menit untuk pengayaan



3.



60 menit pembahasan



13.2. Tujuan Setelah mengikuti praktikum ini mahasiswa diharapkan dapat: 1.



Memahami dasar pemrograman T-SQL seperti deklarasi variabel, penugasan variabel, seleksi kondisi, iterasi



2.



Membuat stored procedure dan user defined function (UDF)



13.3. Alat Dan Bahan 1.



Komputer



13.4. Dasar Teori 13.4.1. Dasar Pemrograman T-SQL Bab ini berisi dasar-dasar pemrograman pada DBMS. Tiap-tiap DBMS memiliki bahasa dan struktur pemrograman masing-masing. Transact-SQL atau T-SQL merupakan bahasa pemrograman yang proprietary dari Microsoft SQL Server. Materi dalam dasar pemrograman ini meliputi deklarasi variabel, penugasan, struktur kendali seperti seleksi kondisi, iterasi, stored procedure, user defined function (UDF). 13.4.2. Deklarasi Variabel Untuk mendeklarasikan variabel dalam T-SQL sintaksis yang digunakan adalah: DECLARE @namaVariabel tipe_data [ = nilai_inisialisasi ]



Misalnya apabila ingin membuat variabel bertipe data VARCHAR(255) maka sintaksisnya: DECLARE @name VARCHAR(255) = 'Budi';



13.4.3.Penugasan/Pengisian Variabel Untuk mengisi variabel selain melalui inisialisasi melalui deklarasi, digunakan sintaksis berikut. SET @namaVariabel = nilai



Misalnya apabila ingin mengisi variabel @name maka sintaksisnya: SET @name = 'Ani';



Apabila nilai suatu variabel diisi melalui hasil query SELECT maka sintaksis yang digunakan adalah sebagai berikut. SELECT @nameVariabel = namaKolom FROM tabel



Misalnya apabila ingin mengisi variabel @name dari hasil query SELECT pada instructor: SELECT @name = name FROM instructor where ID=14365;



13.4.4.Mencetak Variabel di Console/Messages



Untuk mencetak suatu variabel atau pesan tertentu di console/messages gunakan perintah PRINT. Misalnya untuk mencetak variabel @name sebagai berikut. PRINT 'Nama instructor yang dipilih = ' + @name



13.4.5. Mengonversi tipe data dengan CAST/CONVERT Untuk mengubah atau mengonversi suatu variabel ke tipe data lain, gunakan fungsi CAST atau CONVERT. Fungsi ini berguna misalnya apabila ingin mencetak variabel yang bukan string. Misalnya berikut ini contoh mengonversi tipe data INT menjadi VARCHAR(5). DECLARE @nilai INT = 85 PRINT CAST(@nilai as VARCHAR(5))



Contoh lain misalnya mengubah dari VARCHAR menjadi INT pada klausa SELECT: SELECT CAST(ID AS INT) as ID_INT, * FROM instructor



13.4.6. Seleksi Kondisi Untuk melakukan seleksi kondisi ada dua sintaksis yang dapat digunakan yaitu sintaksis IF dan CASE. a. IF…ELSE Sintaksis untuk seleksi kondisi menggunakan IF…ELSE adalah sebagai berikut. IF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]



Misalnya: DECLARE @nilai INT SET @nilai = 80 IF @nilai > 80 BEGIN PRINT 'Nilai '+ CAST(@nilai as varchar(5)) +' = Baik' END ELSE IF @nilai > 60 BEGIN PRINT 'Nilai '+ CAST(@nilai as varchar(5)) +' = Cukup Baik' END ELSE BEGIN PRINT 'Nilai '+ CAST(@nilai as varchar(5)) +' = Kurang' END



b. CASE…WHEN Sintaksis untuk seleksi kondisi menggunakan IF…ELSE adalah sebagai berikut.



Simple CASE expression: CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END Searched CASE expression: CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END



Misalnya dalam contoh berikut melakukan seleksi kondisi CASE…WHEN untuk menampilkan nama hari berdasarkan inisial dari kolom day dari tabel time_slot. SELECT *, day_name CASE WHEN WHEN WHEN WHEN WHEN END FROM time_slot



= day day day day day



= = = = =



'M' 'T' 'W' 'R' 'F'



THEN THEN THEN THEN THEN



'Monday' 'Tuesday' 'Wednesday' 'Thursday' 'Friday'



13.4.7.Iterasi Sintaksis untuk melakukan iterasi dalam T-SQL menggunakan WHILE adalah sebagai berikut. WHILE sangat penting untuk digunakan dalam iterasi data yang dikenal dengan CURSOR. Namun, materi ini tidak akan membahas penggunaan CURSOR itu sendiri. WHILE Boolean_expression { sql_statement | statement_block | BREAK | CONTINUE }



Misalnya untuk mencetak angka 1 sampai 5 menggunakan WHILE adalah sebagai berikut. DECLARE @intFlag INT SET @intFlag = 1 WHILE (@intFlag 50 menit. SELECT *, dbo.GetSlotDuration(start_hr,start_min,end_hr,end_min) as Duration FROM time_slot WHERE dbo.GetSlotDuration(start_hr,start_min,end_hr,end_min) > 1*50



13.5. Latihan 1. Buat stored procedure yang menampilkan advisor termasuk data instructor dan student dengan parameter nama student yang dicari (sebagai masukan dalam parameter input). 2. Buat stored procedure yang menampilkan kuliah yang diambil pada tabel takes termasuk data student dengan parameter nama student yang dicari (sebagai masukan dalam parameter input). 3. Buat fungsi GetNilaiHuruf untuk mengembalikan nilai akhir huruf dari nilai angka dengan ketentuan sebagai berikut. No Rentang nilai angka Nilai Huruf 1 85 < nilai < 100 A 2 80 < nilai