MODUL PRAKTIK BASIS DATA I
PROGRAM D-3 REKAM MEDIS SEKOLAH VOKASI UNIVERSITAS GADJAH MADA YOGYAKARTA
1
IDENTITAS MAHASISWA
Nama
: ..................................................................Laki-laki/Perempuan*)
NIM
: .........................................................................
Tempat/ Tgl. Lahir
: .........................................................................
A lamat
: ........................................................................................................
..............................................................Telpon.............................. Semester/TA : .........................................................................
Kelas
: ………………………………………………….
Tanda Tangan Pasfoto
...................................... *) coret yang tidak perlu
2
PRAKATA
Dengan mengucapkan puji syukur ke hadirat Tuhan Yang Maha Esa, dan oleh karena bimbingan dan penyertaan-Nya maka kami dapat menyelesaikan penyusunan Modul Praktek Basis Data I. Dengan terselesainya penyusunan Modul Praktek Basis Data I ini maka kami berharap kegiatan praktek yang merupakan pelaksanaan dari teori yang sudah di dapat di bangku kuliah dapat melengkapi ketrampilan mahasiswa dalam pelaksanaan tugas ketika bekerja di unit rekam medis. Tidak lupa pada kesempatan ini, kami juga mengucapkan banyak terima kasih kepada semua pihak yang telah mendorong/menyemangati untuk segera terselesainya modul ini. Tentu kami juga mengucapkan terima kasih Ketua Program Studi Rekam Medis Sekolah Vokasi UGM yang sudah memberi kesempatan kepada kami untuk menyusun Modul Praktek Basis Data I. Akhir kata, tentunya kami menyadari masih ada kekurangan dalam penyusunan Modul Praktek Basis Data I ini, untuk itu saran dan masukan yang sifatnya membangun untuk lebih baiknya Modul ini sangat kami harapkan.
Yogyakarta, Februari 2016
Tim penyusun
3
TATA TERTIB PRAKTIK Mahasiwa yang sedang melaksanakan praktik harus memnuhi ketentuan sebagai berikut: 1. Mahasiswa masuk sesuai jadwal yang telah ditentukan, sesuai dengan pembagian kelas serta mengisi daftar hadir. 2. Mahasiswa yang tidak mengikuti praktik lebih dari 25% dari total pertemuan tanpa keterangan resmi, tidak berhak mengikuti responsi. 3. Program Studi tidak mengadakan ujian susulan responsi. 4. Mahasiswa tidak diberikan toleransi, jika nilai dari Akademik Diploma Rekam Medis UGM tidak keluar dikarenakan kesalahan mahasiswa sendiri (tidak mengecek kesesuaian kartu ujian dengan KRS). 5. Mahasiswa memakai pakaian rapi dan sopan: Pria : - Kemeja lengan panjang/pendek dan celana panjang rapi, - Bersepatu, - Tidak memakai T-shirt tanpa krah atau tanpa lengan. Wanita : - Kemeja lengan panjang/pendek (tidak ketat atau transparan), - Rok atau celana panjang (tidak ketat atau transparan), - Bersepatu, - Tidak memakai T-shirt tanpa krah atau tanpa lengan. 6. Mahasiswa tidak diperbolehkan merokok, makan dan minum pada saat praktik berlangsung. 7. Barang berharga milik peserta praktik menjadi tanggung jawab sendiri. 8. Dering HP harus dimatikan (silent) pada saat praktik. 9. Mahasiswa diwajibkan menjaga kebersihan dan ketertiban serta ketenangan belajar. 10. Mahasiswa dilarang membuang sampah dalam bentuk apa pun di dalam ruang praktik. 11. Instruktur/pengajar praktik berhak mencatat, memberikan sanksi atau melakukan tindakan seperlunya terhadap mahasiswa yang melanggar tata tertib.
4
PERENCANAAN PEMBELAJARAN 1. 2. 3. 4.
Nama matakuliah : Praktek Basis Data 1 Kode/SKS : VMU1253/ 1 SKS Semester : Genap Deskripsi Mata Ajaran : Mata kuliah ini untuk memberikan bekal pemahaman ketrampilan dalam kegiatan tentang perancangan Basis Data yang efektif dan efisien serta implementasinya dalam Aplikasi Database Manajemen Sistem (DBMS). Perangkat yang dapat digunakan misalnya MySQL, Ms.Access, Dbase, Fox Pro, SQL Server, PostgreSQL atau sejenisnya. 5. Tujuan Pengajaran Setelah mengikuti mata ajaran ini, mahasiswa diharapkan dapat: a. Menjelaskan model-model basis data b. Merancang basis data yang efektif dan efisien c. Implementasi basis data dengan perangkat lunak DBMS d. Memahami perkembangan basis data konvensial ke modern 6. Garis Besar Mata Ajaran a. Pengenalan Basis Data b. Perancangan Basis Data Menggunakan Entity Relationship Diagram (ERD) c. Pengenalan MySQL d. Data Definition Language (DDL) e. Data Manipulation Language (DML) f. Penggunaan JOIN dalam query database g. Penggunaan FUNCTION dalam Dasis Data h. Penggunaan Nested Query i. Pembuatan VIEW dalam basis data
5
MATERI 1 PENGENALAN BASISDATA Kompetensi: Mahasiswa mampu membuat konsep basis data dan kapan memanfaatkan basisdata serta mampu merancang basis data yang baik. Maksud dan tujuan: a. Mahasiswa mengerti dan memahami kapan memanfaatkan basis data b. Mahasiswa mengerti dan memahami bagaimana merancang basisdata yang baik. Landasan teori: Pengertian Basis Data Basis data terdiri dari dua kata, yaitu basis dan data. Basis dapat diartikan sebagai markas / gudang, tempat berkumpul. Sedangkan data adalah sekumpulan fakta yang tidak dapat digunakan karena belum diolah yang terdapat pada media penyimpanan dan diproses menjadi informasi yang dapat dimengerti oleh manusia. secara konsep, database atau basis data adalah kumpulan dari data-data yang membentuk suatu berkas (file) yang saling berhubungan (relation) dengan tatacara yang tertentu untuk membentuk data baru atau infromasi. Basis data (database) juga dapat diartikan kumpulandari data yang saling berhubungan (relation) antara satu dengan yang lainnya yang diorganisasikan berdasarkan skema atau struktur tertentu. Pada komputer, basis data disimpan dalam perangkat hardware penyimpanan, dan dengan software tertentu dimanipulasi untuk kepentingan atau kegunaan tertentu. Hubungan atau relasi data biasanya ditunjukkan dengan kunci (key) dari tiap file yang ada. Tujuan penggunaan basis data 1. Kecepatan dan Kemudahan (Speed) Dengan basis data pengguna dapat menyimpan data, melakukan perubahan/manipulasi terhadap data, menampilkan kembali data dengan lebih cepat dan mudah dibandingkan dengan cara biasa (baik manual ataupun elektronis). 2 Efisiensi Ruang Penyimpanan (Space) Dengan basis data kita mampu melakukan penekanan jumlah redundansi (pengulangan) data, baik dengan menerapkan sejumlah pengkodean atau dengan membuat relasi-relasi (dalam bentuk file) antara kelompok data yang saling berhubungan. 3 Keakuratan (Accuracy) Agar data sesuai dengan aturan dan batasan tertentu dengan cara memanfaatkan pengkodean atau pembentukan relasi antar data bersama dengan penerapan aturan/batasan (constraint) tipe data, domain data, keunikan data dsb.
6
4 Ketersediaan (Availability) Data yang sudah tidak dipakai/kadaluwarsa dipisahkan dari sistem database yang sedang aktif baik dengan cara penghapusan atau memindahkannya ke media backup untuk menghemat ruang penyimpanan. Di sisi lain, juga dilakukan pemanfaatan teknologi jaringan komputer agar data yang berada di suatu lokasi/cabang daat juga diakses oleh lokasi/cabang lainnya. 5 Kelengkapan (Completeness) Agar data yang dikelola senantiasa lengkap baik relatif terhadap kebutuhan pemakai maupun terhadap waktu. Untuk itu tidak hanya dengan melakukan penambahan record-record data, tapi juga melakukan perubahan struktur pada basis data (jika perlu) baik menambah field pada tabel ataupun bahkan menambah tabel baru. 6 Keamanan (Security) Walaupun tidak semua sistem basis data menerapkannya, keamanan dalam penggunaan basis data diperlakukan pada sistem yang besar dan serius. Dengan penerapan ini, setiap pengguna dibedakan hak aksesnya; yakni ditentukan obyek-obyek mana saja yang bisa diakses dan proses apa saja yang bisa dia dilakukan. 7 Kebersamaan (Sharability) Agar data yang dikelola oleh sistem mendukung lingkungan multiuser (banyak pemakai) dengan menjaga / menghindari munculnya problem baru seperti inkonsistensi data(karena terjadi perubahan data yang dilakukan oleh beberapa user dalam waktu yang bersamaan) atau kondisi deadlock (karena ada banyak pemakai yang saling menunggu untuk menggunakan data). Operasi dasar pembuatan Basis data : 1) Pembuatan Basis Data (Create Database) Identik dengan pembuatan lemari arsip yang baru. 2) Penghapusan Basis Data (Drop Database) Identik dengan perusakan lemari arsip (sekaligus beserta isinya, jika ada) 3) Pembuatan File/Table baru ke suatu basis data (Create Table) Identik dengan penambahan map arsip baru ke sebuah lemari arsip yang telah ada. 4) Penghapusan File/Table dari suatu basis data (Drop Table) Identik dengan perusakan map arsip lama yang ada di sebuah lemari arsip. 5) Penambahan data baru ke suatu file/table di sebuah basis data (insert) Identik dengan penambahan lembaran arsip baru kesebuah map arsip. 6) Pengambilan data dari sebuah file/table (Retrieve/Search) Identik dengan pencarian lembaran arsip dari sebuah map arsip. 7) Pengubahan data dari sebuah file/table (Update) Identik dengan perbaikan isi lembaran arsip yang ada di sebuah map arsip. 8) Penghapusan data dari sebuah file/table (Delete) Identik dengan penghapusan sebuah lembaran arsip yang ada di sebuah map arsip.
7
Hirarki Data Berdasarkan tingkat kompleksitas nilai data, tingkatan data dapat disusun kedalam sebuah hirarki, mulai dari yang paling sederhana hingga yang paling komplek. a) basis data, merupakan sekumpulan dari bermacam-macam tipe record yang memiliki hubungan antar record. b) berkas/file, merupakan sekumpulan rekaman data yang berkaitan denngan suatu objek. c) record , merupakan sekumpulan field/atribut/data item yang saling berhubungan terhadap obyek tertentu fixed length record, semua field dalam record memiliki ukuran yang tetap. Variabel length record, field-field dalam record dapat memiliki ukuran berbeda (metode penandaan yang digunakan adalah : end of record marker, indikator panjang, dan tabel posisi record) d) field/atribut/data item, merupakan unit terkecil yang disebut data yang tidak dapat dipecah lagi menjadi unit lain yang bermakna. fixed length field, memiliki ukuran yang tetap. variabel length field, field-field dalam record dapat memiliki ukuran berbeda. e) byte, adalah bagian terkecil yang dialamatkan dalam memori. byte mrupakan sekumpulan bit yang secara konvensional terdiri atas kombinasi delapan bit yang menyatakan sebuah karakter dalam memori (I byte= I karakter) f) bit, adalah sistem binner yang terdiri atas dua macam nilai, yaitu 0 dan 1. sistem binner merupakan dasar yang dapat digunakan untuk komunikasi antara manusia dan mesin, yang merupakan serangkaian komponen elektronik dan hanya dapat membedakan 2 macam keadaan, yaitu ada tegangan dan tidak ada tegangan yang masuk ke rangkaian tersebut. Pemanfaaatan Ilmu Basis Data Bidang Fungsional : Kepegawaian Pergudangan Akuntansi Reservasi Layanan pelanggan Bentuk Perusahan : Perbankan Rumah sakit Produsen barang Sekolah Telekomunikasi Perancangan Basis Data Untuk merancang basis data kita perlu mengetahui terlebih dahulu komponenkomponen basis data tersebut. Komponen yang paling penting adalah entitas dan atribut.
8
1. Entitas Entitas digunakan untuk menerapkan integritas pada tingakt entity (tabel), agar setiap instance (record/baris) pada sustu entity bersifat unique yang disebut sebagai primary key sehingga dapat dibedakan antara yang satu dengan yang lainnya. Contohnya : a. Semua pelanggan atau pelanggan saja dengan entitas Ani, Budi, Amin dan seterusnya b. Semua mobil atau mobil apa saja dengan entitas mobil kijang, starlet dan lain-lain c. Semua mahasiswa atau mahasiswa saja dengan entitas Eti, Ahmad dll 2. Atribut Setiap entitas pasti memiliki atribut yang mendeskripsikan karakteristik dari entitas tersebut. Penentuan/pemilihan atribut-atribut yang relevan bagi sebuah entitas merupakan hal penting lainnya dalam pembentukan model data. Penetapan atribut bagi sebuah entitas umumnya memang didasarkan pada fakta yang ada. Tetapi tidak selalu sepeti itu. Istilah atribut sebenarnya identik dengan pemakaian kolom data. Macam-macam atribut : a. Atribut deskriptif Adalah atribut-atribut yang tidak menjadi atau merupakan anggota dari primary key. Contoh : atribut-atribut nama_mhs, alamat_mhs dan tanggal_lahir b. Atribut sederhana dan atribut komposit Atribut sederhana adalah atribut atomic yang tidak dapat diuraikan lagi. Sedangkan atribut komposit adalah atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna.Contoh atribut sederhana: atribut nama_mhs Contoh atribut komposit: atribut alamat_mhs dimana alamat masih dapat diuraikan lagi menjadi alamat, nama kota, kode pos yang masing-masing memiliki makna c. Atribut bernilai tunggal dan atribut bernilai banyak Atribut yang bernilai tunggal ditujukan pada atribut-atribut yang memiliki paling banyak satu nilai untuk setiap basis data. Contoh atribut bernilai tunggal : nim, nama_mhs, alamat_mhs dan tgl_lahir karena atribut-atribut tersebut hanya dapat bernilai satu nilai. Contoh atribut bernilai banyak : atribut hobi karena bisa diisi dengan banyak nilai. Seseorang bisa memiliki hobi lebih dari satu. d. Atribut harus bernilai Ada sejumlah atribut pada sebuah tabel yang kita tetapkan harus berisi data. Jadi nilainya tidak boleh kosong (mandatory atribut). Contoh : nim, nama_mhs karena setiap mahasiswa yang ingin datanya disimpan di tabel tersebut paling tidak harus diketahui nama dan nimnya. e. Atribut turunan Atribut turunan adalah atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut atau tabel lain yang berhubungan. Contoh penambahan atribut angkatan dan ip.
9
f.
Normalisasi Dalam perancangan basis data perlu dilakukan secara cermat agar dihasilkan basis data yang kompak dan efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam manipulasi data. Salah satu cara yang dapat dilakukan dalam merancang basis data adalah dengan melakukan normalisasi.
Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
10
LATIHAN/KASUS MEMAHAMI BASIS DATA Alat dan bahan praktikum: a. Modul praktikum b. Kertas HVS c. ATK d. Internet Kegiatan praktikum: a. Masing-masing mahasiwa membentuk kelompok paling banyak 4 orang per kelompok dan menunjuk salah satunya sebagai ketua kelompok. b. Setiap kelompok membuat pembahasan dan mencari contoh-contoh penggunaan database di lingkungan rekam medis. c. Setiap kelompok membuat pembahasan tentang pentingnya database dalam pengelolaan berkas. d. Masing-masing kelompok memaparkan hasil diskusi yang telah dilakukan kepada kelompok lain dan saling memberikan penjelasan, argumentasi, kritik, dan saran. Penilaian: a. Penilaian didasarkan pada proses diskusi, cara pengambilan keputusan, dan detail sebuah perencanaan. b. Nilai kelompok menjadi nilai individu. Kasus: Jelaskan pengertian, tujuan penggunaan, serta operasi dasar pembuatan basis data!
11
MATERI 2 ERD Kompetensi: Mahasiswa mampu merancang suatu basis data yang baik. Maksud dan tujuan: a. Mahasiswa mengerti dan memahami simbol-simbol dalam perancangan basis data b. Mahasiswa mengerti dan memahami bagaimana merancang basisdata yang baik. Landasan teori: Entity Relationship Diagram (ERD) merupakan salah satu bentuk pemodelan basis data yang sering digunakan dalam pengembangan sistem informasi. Dalam rekayasa perangkat lunak, sebuah Entity Relationsip Model (ERM) merupakan abstrak dan konseptual representasi data. Entity Relationship adalah salah satu metode pemodelan basis data yang digunakan untuk menghasilkan skema konseptual untuk jenis/model data semantic system. Dimana system seringkali memiliki basis data relasional, dan ketentuannya bersifat top-down. Diagram untuk menggambarkan model Entity Relationship ini disebut Entity Relationship Diagram , ER diagram, atau ERD. ERD menyediakan notasi-notasi grafis untuk merepresentasikan model-model data dalam bentuk Entity Relationship Diagram. Model-model data tersebut biasa digunakan pada desain sistem informasi tingkat pertama, contohnya untuk mendeskripsikan kebutuhan informasi dan tipe informasi yang ingin disimpan pada basis data selama analisa. Dalam pembentukan ERD terdapat 3 komponen yang akan dibentuk yaitu : a. Entitas Pengertian entity (entitas) yaitu suatu obyek yang dapat dibedakan dari lainnya yang dapat diwujudkan dalam basis data. Pengertian lainnya menurut Brady dan Loonam (2010), entitas adalah objek yang menarik di bidang organisasi yang dimodelkan. Sekelompok entitas yang sejenis dan berada dalam lingkup yang sama akan membetuk sebuah Himpunan Entitas. Tetapi dalam penyebutannya, himpunan entitas ini tidak praktis sehingga sering disebut entitas saja. Contoh : Mahasiswa, Kartu Anggota Perpustakaan (KAP), dan Buku. Varian Entitas: 1. Himpunan Entits Kuat (Strong Entity Sets) Himpunan entitas ini tidak memiliki ketergantungan dengan enntitas lainnya. Himpunan entitas inilah yang biasanya dipakai dalam ERD. 2. Himpunan Entitas Lemah (Weak Entity Sets) Himpunan entitas ini berisi entitas-entitas yang kemunculannya tergantung pada eksistensinya dalam sebuah relasi terhadap entitas lain. Biasanya entitas ini tidak memiliki atribut key. 3. Sub-Entitas (Subtype Entity) Himpunan entitas ini beranggotakan entitas-enttas yang merupakan bagian dari himpunan entitas yang lebih superior/utama. Entitas ini merupakan hasil dekomposisi (spesialisasi) himpunan entitas berdasarkan pengelompokkan tertentu.
12
b. Hubungan (relasi/relationship) Suatu hubungan (relasi) adalah hubungan antara dua jenis entitas dan direpresentasikan sebagai garis lurus yang menghubungkan dua entitas. Sekelompok relasi yang sejenis dan berada dalam lingkup yang sama akan membetuk sebuah Himpunan Relasi. Tetapi dalam penyebutannya, himpunan entitas ini tidak praktis sehingga sering disebut relasi saja. Contoh : Mahasiswa mendaftar sebagai anggota perpustakaan (KAP), relasinya adalah mendaftar. c. Atribut Atribut memberikan informasi lebih rinci (karakteristik) tentang jenis entitas. Penentuan atribut-atribut yang relevan bagi sebuah entitas merupakan hal yang penting dalam pembentukan model data. Penetapan ini biasanya memang didasarkan pada fakta yang ada. Tetapi karena proses normalisasi atau pertimbangan-pertimbangan tertentu, ada sejumlah atribut yang tidak berdasar fakta tetapi perlu ditambahkan. Atribut memiliki struktur internal berupa tipe data. Jenis-jenis atribut : a. Atribut Key Atribut Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data ( Row/Record ) dalam tabel secara unik. Dikatakan unik jika pada atribut yang dijadikan key tidak boleh ada baris data dengan nilai yang sama Contoh : Nomor pokok mahasiswa (NPM), NIM dan nomor pokok lainnya b. Atribut simple Atribut yang bernilai atomic, tidak dapat dipecah/ dipilah lagi. Contoh : Alamat, penerbit, tahun terbit, judul buku. c. Atribut Multivalue Nilai dari suatu atribut yang mempunyai lebih dari satu (multivalue) nilai dari atribut yang bersangkutan Contoh : dari sebuah buku, yaitu terdapat beberapa pengarang. d. Atribut Composite Atribut composite adalah suatu atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu yang masih bisah dipecah lagi atau mempunyai sub attribute. Contoh : dari entitas nama yaitu nama depan, nama tengah, dan nama belakang e. Atribut Derivatif Atribut yang tidak harus disimpan dalam database Ex. Total. atau atribut yang dihasilkan dari atribut lain atau dari suatu relationship. Atribut ini dilambangkan dengan bentuk oval yang bergaris putusputus Notasi-notasi dasar pada Entity Relationship Diagram (ERD) :
13
Relational Relational adalah hubungan antara entity. Semisal pada contoh di atas entity manusia mempunyai hubungan dengan entity alamat yaitu ”tinggal di”. Di dalam merancang database hendaknya seluruh entity yang ada mempunyai hubungan dengan entity yang lain, minimal satu. Jika ada entity dalam database yang tidak mempunyai hubungan dengan satupun entity yang lain, maka akan timbul kesalahan dalam desain. Biasanya entity yang tidak berhubungan akan dihilangkan. Macam relasi ada 4, antara lain : 1. One to one : Sebuah entitas A yang berpasangan dengan tepat satu entitas B. Demikian pula entitas B juga berpasangan tepat satu dengan entitas A. Contoh entitas mahasiswa yang berelasi dengan entitas skripsi secara one to one. 2. One to many : Sebuah entitas A yang berpasangan secara banyak (nol atau lebih) dengan entitas di dalam B. Sedangkan entitas B hanya berpasangan dengan tepat satu entitas di dalam A. Contoh : entitas mahasiswa yang berelasi dengan entitas dosen dalam hubungan dosen pembimbing. Relasi yang terjadi secara one to many. Karena seorang mahasiswa hanya memiliki 1 dosen pembimbing. Sedangkan seorang dosen bisa jadi memiliki mahasiswa bimbingan lebih dari satu. 3. Many to one : Sebuah entitas A yang berpasangan dengan tepat satu entitas di dalam B. Sedangkan entitas B dapat berpasangan secara banyak (nol atau lebih) dengan entitas di dalam A. (sama seperti one to many hanya dibalik pengertiannya)
14
4. Many to many : Sebuah entitas A yang berpasangan secara banyak (nol atau lebih) dengan entitas di dalam B. Dan entitas B juga dapat berpasangan secara banyak (nol atau lebih) dengan entitas di dalam A. Contoh : entitas mahasiswa yang berelasi dengan entitas matakuliah dalam hubungan KRS. Relasi tersebut adalah many to many. Karena seorang mahasiswa dapat mengambil banyak matakuliah. Sedangkan satu mata kuliah bisa jadi diambil oleh beberapa mahasiswa. Primary Key Entity adalah suatu objek yang berbeda dengan objek yang lainnya. Maka tiap entity harus mempunyai atribut yang dapat membedakan antara objek satu dengan yang lainnya. Misalnya entitas manusia, entitas ini tidak mempunyai atribut yang dapat membedakan antara objek manusia1 dengan objek manusia2. Namun apabila manusia tersebut menjadi pegawai (muncul entitas pegawai) maka objek manusia1 dan manusia2 sebagai anggota dari entitas pegawai akan mempunyai atribut yang membedakan, yaitu NIP. Atribut inilah yang disebut dengan key. Manusia1 dan manusia2 tidak mungkin memiliki NIP yang sama. Key dapat terdiri dari beberapa atribut, yang biasa disebut dengan candidate key. Namun dalam prakteknya key sebisa mungkin hanya terdiri dari satu atribut. Hal ini untuk memudahkan dalam pengolahan data. Nah, untuk mendapatkan key dari candidate key (gabungan beberapa atribut), pilih atribut entitas yang paling unik (value dalam atribut tidak ada yang sama) dan bisa membedakan entitas tersebut dengan entitas yang lain. Jika sudah mendapatkannya, key itulah yang disebut sebagai primary key. Semisal ada candidate key berupa nama, NIP, dan tanggal lahir. Maka perlu disortir, atribut mana yang paling unik dari ketiga atribut tersebut. Atribut nama tidak unik, karena ada kemungkinan dua entitas pekerja mempunyai nama yang identik. Demikian pula dengan atribut tanggal lahir, sangat bisa jadi dua entitas pekerja mempunyai tanggal lahir yang sama. Hanya atribut NIP saja yang pasti berbeda dari tiap-tiap entitas pekerja.
15
LATIHAN/KASUS ERD Alat dan bahan praktikum: a. Modul praktikum b. Kertas HVS c. ATK d. Komputer yang sudah terinstal software visio Kegiatan praktikum: Kegiatan 1: Membuat ERD Pada kegiatan ini, digunakan contoh kasus sebagai berikut: Sebuah perusahaan mempunyai beberapa bagian. Masing-masing bagian mempunyai pengawas dan setidaknya satu pegawai. Pegawai ditugaskan disatu bagian (dapat pula dibeberapa bagian). Satu pegawai mendapat tugas disuatu proyek. Tetapi seorang pegawai dapat libur dan tidak dapat tugas diproyek. Step 1 : Menentukan entitas. Menentukan peran, kejadan lokasi, hal nyata dan konsep dimana penggunaan untuk menyimpan data. Dalam kasus ini maka entitasnya: pengawas, bagian, pegawai, proyek. Step 2 : Menentukan relasi. Menentukan hubungan antar pasangan entitas relasi. Bagian Pegawai Bagian Ditugaskan ke Pegawai milik Pengawas Proyek
menggunakan matriks Pengawas Dijalankan oleh
Proyek
Bekerja pada
menjalankan Melibatkan
Step 3 : Gambar ERD sementara. Entitas digambarkan dengan kotak dan relasi digambarkan dengan garis. Step 4 : Mengisi Kardinalitas Dari gambaran permasalahan dapat diketahui bahwa: Masing-masing bagian hanya punya satu pengawas Seorang pengawas bertugas disatu bagian Masing-masing bagian ada minimal satu pegawai Masing-masing pegawai bekerja paling tidak disatu bagian Masing-masing proyek dikerjakan paling tidak oleh satu pegawai Step 5 : Menentukan Primary Key Karena tidak disebutkan dalam contoh kasus, maka kita anggap sebagai berikut:
16
Entitas Pengawas mempunyai attribut IDPengawas, nama, alamat. Maka primary key-nya IDPengawas. Entitas bagian mempunyai attribut namaBagian. Maka primary keynya namaBagian. Entitas Pegawai mempunyai attribut IDPegawai, nama, alamat. Maka primary key-nya IDPegawai. Entitas Proyek mempunyai attribut NoProyek, Nama, waktu. Maka primary key-nya NoProyek.
Step 6 : Menggambar ERD Berdasarkan Kunci dan Kardinalitas Step 7 : Menggambar ERD Berdasarkan Relasi, Kunci dan kardinalitas.. Ada dua relasi many to many pada ERD sementara, yaitu antara bagian dengan pegawai, pegawai dengan proyek, oleh sebab itu kita perlu memperhatikan kemungkinan attribute yang muncul dari relasi ini. Misal dari relasi antara pegawai dan proyek, mungkin saja terdapat relasi jabatan (Dalam suatu proyek, seorang pegawai akan memiliki jabatan tertentu, seperti coordinator, anggota ataupun yang lain). Penilaian: Penilaian didasarkan hasil analisis dan ERD yang dibuat. Kasus: Buatlah sebuah model database untuk sistem informasi puskesmas atau klinik. Tentukan entitas-entitas apa saja yang ada di dalamnya. Atribut-atribut penyusun entitas juga dideskripsikan. Tentukan primary key entitas yang kuat. Serta relasi antar entitas. Setelah itu coba gambarkan model tersebut dengan ERD!
17
18
MATERI 3 MySQL Kompetensi: Mahasiswa mampu merancang suatu basis data yang baik. Maksud dan tujuan: a. Mahasiswa mengerti dan memahami simbol-simbol dalam perancangan basis data b. Mahasiswa mengerti dan memahami bagaimana merancang basisdata yang baik. Landasan teori: MySQL merupakan software sistem manajemen database (Database Management System, DBMS) yang sangat popular. MySQL bersifat open source. Website MySQL www.mysql.com menyediakan informasi terkini tentang MySQL. Pengelolaan database dapat dilakukan dengan menggunakan perintahperintah SQL (Structure Query Language), bahasa yang khusus digunakan untuk melakukan akses database relasional. Perintah SQL dikelompokkan menjadi : 1. DDL (Data Definition Language) DDL merupakan perintah yang digunakan untuk membuat dan mendefinisikan database dan struktur datanya. 2. DML (Data Manipulation Language) DML adalah perintah yang digunakan untuk melakukan manipulasi atau pengelolaan data yang ada dalam database. 3. DCL (Data Control Language) Membuat Database Dalam membuat database, yang sangat penting untuk diperhatikan adalah penulisan nama database tidak boleh menggunakan spasi dan karakter non standar. Bentuk penulisan untuk membuat database adalah : CREATE DATABASE nama_database;
Catatan : Dalam penulisan nama database tidak diperbolehkan menggunakan spasi atau karakter khusus lainnya. Nama sebuah database tidak boleh diawali dengan angka 1. Melihat database Untuk melihat database yang baru saja dibuat atau database lain yang ada dalam server, dapat menggunakan perintah SHOW. Bentuk penulisan untuk melihat database yang ada di server adalah sebagai berikut :
SHOW DATABASES;
19
2. Mengaktifkan database Setelah database dibuat, untuk dapat menggunakannya diperlukan perintah USE. Perintah ini selalu digunakan setiap user/pengguna akan mengakses table-table yang ada di dalamnya. Struktur penulisannya adalah sebagai berikut: USE nama_database;
3. Menghapus database Untuk menghapus database yang tidak dipakai atau database yang rusak, pengguna dapat mengunakan perintah DROP. Struktur penulisan untuk menghapus database adalah sebagai berikut : DROP DATABASE nama_database;
Tabel Membuat tabel Struktur penulisan untuk menghapus database adalah sebagai berikut : CREATE TABLE
Perlu diperhatikan dalam pembuatan tabel, apakah database sudah diaktifkan sebelumnya. Jika belum, aktifkan database tersebut atau buat database baru jika belum tersedia. Hal ini dilakukan agar tabel yang akan dibuat mempunyai tempat dalam database. Tabel sebagai tempat penampungan data mempunyai dua bagian utama yaitu nama dan tipe data. Tipe data yang bisa digunakan dalam MySQL dapat dilihat dibawah ini. Tipe data untuk bilangan Tipe Data
Keterangan
TINYINT
Ukuran 1 byte. Bilangan bulat terkecil, dengan jangkauan untuk bilangan bertanda: -128 sampai dengan 127 dan untuk yang tidak bertanda : 0 sampai dengan 255. Bilangan tak bertanda ditandai dengan tanda UNSIGNED
SMALLINT
Ukuran 2 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -32768 sampai dengan 32767 dan yang tidak bertanda : 0 sampai dengan 65535.
MEDIUMINT
Ukuran 3 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -8388608 sampai dengan 8388607 dan untuk bertanda : 0 sampai dengan 16777215
INT
Ukuran 4 byte. Bilangan bulat dengan jangkauan untuk bilangan bertanda : -2147483648 sampai dengan 2147483647 dan untuk yang tidak bertanda : 0 sampai dengan 4294967295
INTEGER
Ukuran 4 byte. Sinonim dari INT
20
BIGINT
Ukuran 8 byte. Bilangan bulat terbsar dengan jangkauan untuk bilangan bertanda : -9223372036854775808 sampai dengan 9223372036854775807 dan untuk yang tidak bertanda : 0 sampai dengan 18446744073709551615
FLOAT
Ukuran 4 byte. Bilangan pecahan
DOUBLE
Ukuran 8 byte. Bilangan pecahan
DOUBLE PRECISION
Ukuran 8 byte. Bilangan pecahan berpresisi ganda
REAL
Ukuran 8 byte. Sinonim dari DOUBLE
DECIMAL(M,D)
Ukuran M byte. Bilangan pecahan. Misalnya DECIMAL(5,2) dapat digunakan untuk menyimpan bilangan -99,99 sampai dengan 99,99
NUMERICAL(M,D)
Ukuran M byte. Sinonim dari DECIMAL. Misalnya NUMERICAL(5,2) dapat digunakan untuk menyimpan bilangan -99,99 sampai dengan 99,99
Tipe Data
Tipe data untuk tanggal dan jam Keterangan
DATETIME
Ukuran 8 byte. Kombinasi tanggal dan jam, dengan jangkauan dari „100-01-01 00:00:00‟ sampai dengan „9999-12-31 23:59:59‟
DATE
Ukuran 3 byte. Tanggal dengan jangkauan dari „100-0101‟ sampai dengan „9999-12-31‟
TIMESTAMP
Ukuran 4 byte. Kombinasi tanggal dan jam dengan jangkauan „1970-01-01 00:00:00‟ sampai dengan tahun 2037
TIME
Ukuran 3 byte. Waktu dengan jangkauan dari „-838:59:59‟ sampai dengan „838:59:59‟
YEAR
Ukuran 1 byte. Data tahun antara 1901 sampai dengan 2155
21
Tipe Data
Tipe data untuk karakter dan lain-lain Keterangan
CHAR(M)
Ukuran M byte,1 M 255 . Data string dengan panjang yang tetap. CHAR(1) cukup ditulis dengan CHAR.
VARCHAR(M)
Ukuran L=1 byte dengan L M dan 1 M 255 . Data string dengan panjang bervariasi, tergantung datanya
TINYBLOB, TINYTEXT
L+1 byte, dengan L 28 . Tipe TEXT atau BLOB dengan panjang maksimum 255 karakter
BLOB,TEXT
L+2 byte, dengan L 216 . Tipe TEXT atau BLOB dengan panjang maksimum 65535 karakter
LONGBLOB, LONGTEXT
24 L+3 byte, dengan L 2 . Tipe TEXT atau BLOB dengan panjang maksimum 16777215 karakter L+4 byte, dengan L 232 . Tipe TEXT atau BLOB dengan panjang maksimum 4294967295 karakter
ENUM(„nilai1‟, ‟nilai2‟,…)
Ukuran 1 atau 2 byte tergantung enumerasinya (maksimum 65535 nilai)
SET(„nilai1‟, „nilai2‟, …)
1, 2, 3, 4 atau 8 byte, tergantung jumlah anggota himpunan (maksimum 64 anggota)
MEDIUMBLOB, MEDIUMTEXT
jumlah
Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
22
LATIHAN/KASUS MySQL Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: 1. mengarahkan alamat directory Windows Command Processor pada folder bin yang ada di dalam folder utama MySQL Server. Apabila instalasi dilakukan dengan benar, perintah untuk server MySQL seperti mysql, mysqld, mysqladmin, dan sejenisnya dapat dijalankan ketika alamat Command Processor berada pada directory bin tersebut. Contoh alamat bin pada MySQL: C:\Program Files\MySQL\MySQL Server 5.6\bin> 2. masuk sebagai sebagai user MySQL mysql –u root 3. Buat Database Puskesmas 4. Buat Tabel Pasien (noRM, nama, alamat, tanggalLahir), Dokter(noDokter, nama, spesialisasi) Penilaian: a. Keaktifan mahasiswa dalam praktikum b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur Kasus: Buatlah tabel salary dengan deskripsi tabel sebagai berikut: Atribut Tipe NULL emp_no int(11) No salary int(11) No from_date date No to_date date No
23
LEMBAR KERJA
24
MATERI 4 DDL Kompetensi: Mahasiswa mampu merancang suatu basis data yang baik. Maksud dan tujuan: a. Mahasiswa mengerti dan memahami simbol-simbol dalam perancangan basis data b. Mahasiswa mengerti dan memahami bagaimana merancang basisdata yang baik. Landasan teori: 1. Membuat tabel Struktur penulisan untuk menghapus database adalah sebagai berikut : CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_option ...] [partition options]
2. Melihat struktur tabel Perintah DESCRIBE nama_tabel;
digunakan untuk melihat struktur tabel yang telah dibuat. Namun sebelumnya pastikan sudah berada pada database yang mempunyai tabel tersebut. 3. Mengubah struktur tabel Jika struktur tabel yang telah dibuat terdapat kesalahan atau menginginkan penggantian, dapat menggunakan perintah alter untuk mengubahnya. Ada empat macam perubahan dalam struktur tabel, yaitu : D perubahan nama field/kolom perubahan yang terjadi hanya sebatas pada nama field/kolom saja. Nama field/kolom yang lama diganti dengan nama filed/kolom yang baru Struktur penulisan: ALTER
TABLE
nama_tabel
CHANGE
nama_field_lama
nama_filed_baru tipe_data;
4.
Perubahan tipe data Perubahan yang terjadi hanya terbatas pada tipe data yang digunakan oleh field/kolom tertentu. Tipe data yang baru langsung disebutkan dibelakang nama field/kolom, tanpa harus menyebutkan tipe data yang lama. Struktur penulisan: ALTER TABLE namatabel MODIFY nama_field tipe_data_baru;
25
5.
Penambahan field Struktur tabel akan tambah dengan bertambahnya field/kolom baru didalamnya. Struktur penulisan : ALTER TABLE nama_tabel ADD nama_field tipe_data_baru;
6.
Penghapusan field Struktur tabel mengalamai perubahan akibat berkurangnya field/kolom tertentu. Struktur penulisan : ALTER TABLE nama_tabel DROP COLUMN namafield;
7. Mengganti nama tabel Seringkali, penggantian tabel juga meliputi nama tabel itu sendiri. Struktur penulisan: ALTER TABLE nama_tabel_lama RENAME nama_tabel_baru;
8. Menghapus tabel Tabel dapat saja dihapus karena sudah tidak dibutuhkan lagi atau terjadi kesalahan. Perintah untuk menghapus tabel adalah drop table. Struktur penulisan : DROP TABLE nama_tabel;
PRIMARY KEY Dari contoh pembuatan tabel dept_emp terdapat pendefinisian key berupa PRIMARY KEY, KEY, dan FOREIGN KEY. Untuk mendefinisikan PRIMARY KEY pada CREATE TABLE perintah umumnya adalah sebagai berikut: PRIMARY KEY (nama_kolom); Apabila yang akan menjadi PRIMARY KEY lebih dari satu kolom maka kolomkolom yang disebutkan didalam tanda kurung dipisahkan dengan tanda koma (,). Walaupun dimungkinkan untuk menggunakan lebih dari satu kolom sebagai PRIMARY KEY, sebisa mungkin gunakan satu kolom saja yang bersifat unik. Kalau tidak ada satu kolom unik yang dapat menjadi PRIMARY KEY, pilihan lain selain menggunakan lebih dari satu kolom adalam menambahkan attribut/kolom pembantu (ID) sebagai PRIMARY KEY. FOREIGN KEY Pendefinisian FOREIGN KEY agak lebih rumit dari PRIMARY KEY. Karena dalam satu tabel dimungkinkan terdapat lebih dari satu FOREIGN KEY, maka FOREIGN KEY harus ada namanya. Hal ini untuk mempermudah identifikasi FOREIGN KEY terutama apabila akan ada penghapusan FOREIGN KEY. Perintah umum pendefinisian FOREIGN KEY pada CREATE TABLE adalah: [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name, ...) REFERENCES tbl_name (index_col_name,...) [ON DELETE reference_option] [ON UPDATE reference_option] Pilihan untuk reference_option adalah: RESTRICT | CASCADE | SET NULL | NO ACTION Keterangan: CASCADE: apabila dilakukan DELETE atau UPDATE pada tabel induk, maka kolom pada tabel yang mengacunya juga akan dikenakan operasi yang sama.
26
SET NULL: apabila dilakukan DELETE atau UPDATE pada tabel induk, maka kolom pada tabel anak (tabel yang mengacunya akan) diset nilainya menjadi NULL. RESTRICT: operasi DELETE dan UPDATE tidak boleh dilakukan pada tabel induk apabila nilai kolom tabel induk masih diacu oleh kolom tabel anak yang mengacunya. No ACTION: sama dengan RESTRICT. Perlu diperhatikan: - Fitur FOREIGN KEY hanya dapat diterapkan apabila tabel induk dan tabel anak menggunakan storage engine yang sama (contoh: InnoDB). - Kolom yang dapat diacu sebagai FOREIGN KEY (kolom pada tabel induk) harus terdapat dalam sebuah index. - FOREIGN KEY tidak dapat diterapkan pada tabel sementara (temporary table). - Tipe data kolom tabel induk yang diacu dan tipe data kolom tabel anak yang mengacu harus mirip (atau sama) dan sesuai; dapat menampung semua kemungkinan nilai data. Keterangan lebih lanjut tentang FOREIGN KEY dapat dilihat pada MySQL Reference Manual pada bagian Using FOREIGN KEY Constraints.
Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
27
LATIHAN/KASUS MySQL
Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: Kegiatan 1 1. Berikut ini merupakan aturan umum penulisan yang digunakan pada create database. Create database nama_basis_data; Contoh penerapan : Create database rumah_sakit;
2. Lalu kita buat contoh tabel pasien : Create table pasien ( Kode_psn char(5) primary key, Nm_psn varchar(30) not null, Almt_psn varchar(50) null, Umur integer null )
3. Setelah membuat tabel selanjutnya membuat contoh alter tabel Contoh penerapan dan penjelasan a. Perintah SQL untuk menambahkan field status dan field pekerjaan pada tabel pasien yaitu : Alter table pasien add status char(7), pekerjaan char(15) b. Perintah SQL untuk menghapus field pekerjaan pada tabel pasien yaitu Alter table pasien drop pekerjaan
28
c. Perintah SQL untuk menghapus primary key pada tabel pasien yaitu : Alter table pasien drop constraint pk_kodpsn
4. Terakhir ketika akan menghapus tabel yaitu dengan cara drop contohnya hapus tabel pasien : Drop table pasien;
Kegiatan 2 1. Buatlah tabel pasien dengan kolom berupa nama pasien, nomor rekam medis, alamat dan jenis kelamin ! 2. Mengubah field id_periksa menjadi id_berobat ! 3. Menambahkan kolom biaya pada tabel periksa ! 4. Menghapus kolom biaya dari tabel periksa ! 5. Merelasikan field no_rm pada tabel periksa dengan field no_rm pada tabel pasien! 6. Mengubah nama tabel pasien menjadi tabel pengunjung !
Penilaian: a. Keaktifan mahasiswa dalam praktikum b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur Kasus: 1. Buatlah tabel salary dengan deskripsi tabel sebagai berikut: Atribut Tipe NULL emp_no int(11) No salary int(11) No from_date date No to_date date No 2. Set emp_no dan from_date sebagai PRIMARY KEY! 3. Set emp_no sebagai FOREIGN KEY yang mengacu pada kolom emp_no di tabel employees dengan aksi ON DELETE CASCADE! 4. Lihat deskripsi tabel salary dan lihat perintah pembuatan tabel (CREATE TABLE) salary yang telah dibuat!
29
LEMBAR KERJA
30
MATERI 5 DML Kompetensi: Mahasiswa mampu memanipulasi data.
menggunakan
sintak-sintak
di
MySql
untuk
Maksud dan tujuan: a. Mahasiswa mengerti dan memahami sintak-sintak dalam basis data b. Mahasiswa mengerti dan memahami bagaimana melakukan pengisian, perbaikan, penghapusan, pengambilan dan pencarian kembali data Landasan teori: 1. INSERT Perintah : INSRT INTO nama_tabel (field1 [,field2 [field3 [,…]]]) VALUES (nilai1 [,nilai2 [,nilai3 [,..]]]);
Nama_tabel adalah tabel yang akan diisi data. Field1, field2, field3,… adalah field-field (kolom) dari tabel yang akan diisi. Nilai1, nilai2, nilai3, … adalah data yang akan dimasukkan ke dalam tiap kolom yang disebutkan pada bagian field. Penulisan nilai1, nilai2, nilai3 disesuaikan dengan tipe datanya jika tipe data merupakan kelompok tipe data karakter maka data harus diapit dengan menggunakan tanda petik (apostrophe). Perintah insert dapat juga dituliskan langsung sebagai berikut : INSERT INTO nama_tabel VALUES(nilai1 [,nilai2 [,..]]);
Penulisan tanpa menyebutkan nama field dapat diberikan apabila akan mengisi ke seluruh field yang ada dalam tabel, urutan data dalam bagian values menunjukkan urutan field yang akan diisi. Jadi harus hati-hati menggunakan perintah insert apabila tidak menyatakan nama field karena bisa tertukar. Contoh :
mysql> INSERT INTO pribadi -> VALUES (12341, 'Hamdan Arif', 'Jl. Krapyak 2', 'Bantul', 'P', -> '1964/05/12'); Query OK, 1 row affected (0.06 sec) Kelebihan dengan menyebutkan nama field adalah kita tidak harus berurutan menyebutkan nama field dan datanya pada saat mengisikan, yang penting adalah urutan pasangan yang benar agar tidak tertukar.
31
2.
UPDATE Perintah : UPDATE
nama_tabel
SET
field1=nilai1 [,field2=nilai2 [,…]]
[WHERE kondisi];
Nama_tabel adalah nama dari tabel yang akan diperbaiki datanya. Field1 adalah nama field dalam tabel yang akan diubah. Nilai1 adalah data yang akan dimasukkan ke dalam field1. field2 dan nilai2 adalah nama field dan datanya, dan seterusnya. Kondisi adalah criteria data dalam tabel yang akan diperbaiki. Contoh :
mysql> UPDATE pribadi SET kota='Yogyakarta' WHERE kota='Yogya'; Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0 Perintah update digunakan untuk memperbaiki data dalam satu record (baris) dalam satu tabel. Perbaikan dapat dilakukan untuk satu record, beberapa atau seluruh record. Hati-hati saat memberikan perintah update ini, jangan sampai lupa menuliskan kondisi data dalam tabel yang akan diperbaiki datanya. Jika kondisi tidak dituliskan maka bisa menyebabkan seluruh record dalam tabel akan diubah sesuai dengan field yang akan diperbaiki datanya.
3.
DELETE
Perintah: DELETE FROM nama_tabel [WHERE kondisi];
Nama_tabel adalah nama tabel yang akan dihapus datanya. Kondisi adalah criteria data dalam tabel yang akan dihapus. Perintah delete digunakan untuk melakukan penghapusan record dari suatu table yang memilik kondisi yang dinyatakan dalam pernyataan kondisi. Hati-hati dalam memberikan perintah delete ini karena jika terlupa memberikan pernyataan kondisi, perintah ini akan menyebabklan terhapusnya seluruh isi tabel.
Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
32
LATIHAN/KASUS MySQL
Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql
Kegiatan praktikum: Kegiatan 1 1. Berikut ini merupakan pembuatan database terlebih dahulu. Create database nama_basis_data; Contoh : Create database swalayan;
Lalu kita buat contoh tabel pribadi : Create table pribadi ( nip char(10) primary key, nama varchar(30) not null, alamat varchar(50) null, kota varchar(20) not null, kelamin varchar(10) not null, tgl_lahir date not null, )
33
2. Setelah membuat tabel maka memasukan data ke dalam tabel pribadi, berikut merupakan aturan umum penulisan yang digunakan pada INSERT database. INSERT INTO nama_tabel; Contoh penerapan : INSERT INTO pribadi(nip,nama,alamat,kota,kelamin,tgl_lahir); 3. Setelah mengisi data dalam tabel selanjutnya membuat contoh update update nama_tabel set field1=nilai1 where[kondisi]; Contoh penerapan dan penjelasan UPDATE pribadi set nip= 127 where no=1; 4. Selanjutnya akan menghapus data dalam tabel yaitu dengan cara delete contohnya hapus tabel pasien : Delete from nama_tabel [where kondisi];;
Kegiatan 2 1. Buatlah tabel pembeli dengan kolom berupa nid, nama_pembeli dan alamat! 2. Buatlah tabel transaksi dengan kolom no_transaksi, tgl_transaksi, nama_barang, dan harga! 3. Gantilah alamat Agus menjadi bali ! 4. Hapus data ani!
Penilaian: a. Keaktifan mahasiswa dalam praktikum b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur
34
Kasus: 1. Buatlah tabel PEMBELI DAN TRANSAKSI dengan deskripsi tabel sebagai berikut:
Tabel pembeli +------+--------------+---------+ | nid | nama_pembeli | alamat | +------+--------------+---------+ | 123 | ani
| jogja |
| 345 | budi
| jakarta |
| 234 | agus
| bandung |
+------+--------------+---------+
Tabel transaksi +------+--------------+---------------+-------------+--------+ | nid | no_transaksi | tgl_transaksi | nama_barang | harga | +------+--------------+---------------+-------------+--------+ | 123 | D002
| 2014-05-12 | tas
| 100000 |
| 234 | D000
| 2014-05-27 | sepatu
| 126000 |
| 123 | D010
| 2014-06-06 | buku
| 50000 |
| 345 | D015
| 2014-06-09 | baju
| 90000 |
+------+--------------+---------------+-------------+--------+
35
MATERI 6 DML (2)
Kompetensi: Mahasiswa mampu menggunakan sintak-sintak di MySql untuk memanfaatkan dan memanipulasi data.. Maksud dan tujuan: a.
Mahasiswa mengerti dan memahami menggunakan sintak-sintak di MySql untuk memanipulasi data.
b.
Mahasiswa mengerti dan memahami bagaimana melakukan pengisian, perbaikan, penghapusan, pengambilan dan pencarian kembali data
Landasan teori: Perintah yang digunakan untuk menampilkan data adalah SELECT. Perintah ini akan menampilkan baris data yang ada pada basis data dalam bentuk tabel. Perintah SELECT tidak akan merubah data maupun struktur tabel yang disimpan. Untuk menampilkan data secara lengkap dari sebuah tabel digunakan perintah:
SELECT * FROM nama_tabel; Tanda * mengisyaratkan bahwa semua kolom akan ditampilkan tanpa terkecuali, sedangkan nama_tabel diganti dengan nama tabel yang datanya ingin ditampilkan. Berikut adalah contoh untuk menampilkan semua data pada tabel employees:
SELECT * FROM employees; Apa bila ingin menampilkan kolom-kolom tertentu saja, maka simbol * dapat diganti dengan nama kolom yang ingin ditampilkan. Berikut adalah contoh perintah untuk menampilkan data yang ada pada kolom first_name dan last_name pada tabel employees:
SELECT first_name, last_name FROM employees; Penggunaan perintah SELECT dapat dilengkapi dengan klausa WHERE sebagai syarat spesifikasi data yang ingin ditampilkan. Contohnya adalah ketika ingin 36
ditampilkan data nama pegawai yang nama belakangnya Maximoff, maka perintahnya:
SELECT first_name, last_name FROM employees WHERE last_name=’Maximoff’; Klausa WHERE dapat berisi lebih dari satu persyaratan. Persyaratan satu dengan lainnya dapat disambung dengan menggunakan AND atau OR sesuai dengan kebutuhan. Persyaratan data yang digunakan dapat berupa sepesifikasi nilai kolom, jangkauan nilai kolom (untuk data numerik), kemiripan nilai kolom, dan lain sebagainya sesuai kebutuhan. Berikut adalah contoh perintah untuk menampilkan data dari dua kolom dengan dua syarat, yaitu data yang ditampilkan harus mempunyai nomer pegawai (emp_no) 10005 atau setelahnya dan mempunyai nama belakang Wayne:
SELECT first_name, last_name FROM employees WHERE emp_no>=10005 AND last_name='Wayne'; Perintah SQL yang berikutnya akan menampilkan nama depan dan nama belakang pegawai yang nomer pegawainya diantara 10005 dan 10010:
SELECT first_name, last_name FROM employees WHERE emp_no BETWEEN 10005 and 10010; Between dapat juga digunakan untuk tipe data yang berkaitan dengan tanggal dan waktu. Contoh perintah berikut ini menggunakan variabel tahun sebagai parameter persyaratan BETWEEN untuk menampilkan data pegawai yang lahir tahun 1990 hingga 2000:
SELECT emp_no,first_name,last_name FROM employees WHERE YEAR(birth_date) BETWEEN '1990'AND'2000'; Keterangan nilai NULL dan NOT NULL juga dapat digunakan untuk memilih data melalui klausa WHERE. Penggunaannya tidak dengan tanda sama dengan (=)
namun dengan IS: SELECT * FROM employees WHERE first_name IS NULL;
37
Kata kunci IN dapat digunakan apabila persyaratan nilai kolom yang diinginkan lebih dari satu. Kata kunci IN juga dapat digunakan untuk membuat subquery yang akan dibahas pada sub-bab nested query. Berikut adalah contoh penggunaan kata kunci IN untuk menampilkan data pegawai yang mempunyai
nomer pegawai 10001, 10005, atau 10010: SELECT * FROM employees WHERE emp_no IN (10001,10005,10010); LIKE
merupakan
mendefinisikan
kata
suatu
kunci
dalam
criteria yang
SQL
yang
digunakan
untuk
lebih luwes (fleksibel). Kondisi yang
dinyatakan dengan menggunakan LIKE dapat memfilter data sehingga kita dapat menampilkan suatu kriteria seolah dengan menggunakan bahasa inggris. Kriteria yang dibentuk juga dapat digunakan untuk melakukan pemfilteran data secara mudah dengan menggunakan tanda %, yang memerintahkan agar database mencari semua data yang memiliki karakter apa saja, karena % mewakili karakater apa saja.
Perintah dengan kondisi LIKE SELECT * FROM nama_tabel WHERE nama_field LIKE ‘data_yang_dicari’;
Perintah ini akan menampilkan seluruh record dalam tabel yang memiliki data dalam nama field yang disebutkan sama dengan „data_yang_dicari‟. Perintah ini sama seperti menggunakan perintah select yang menggunakan tanda sama dengan pada bagian kondisi. SELECT * FROM nama_tabel WHERE nama_field LIKE ‘data_yang_dicari%’;
Perintah ini akan menampilkan seluruh record dalam tabel yang memiliki data dalam nama_field yang disebutkan diawali dengan „data_yang_dicari‟. SELECT * FROM nama_tabel WHERE nama_field LIKE ‘%data_yang_dicari’;
Perintah ini akan menampilkan seluruh record dalam tabel yang memiliki data
dalam
nama_field
yang
disebutkan
pada
bagian
akhirnya
ada
„data_yang_dicari‟.
38
SELECT * FROM nama_tabel WHERE nama_field LIKE ‘%data_yang_dicari%’;
Perintah ini akan menampilkan seluruh record dalam tabel yang data dalam nama_field yang disebutkan mengandung „data_yang_dicari‟. % di awal dan % di akhir menunjukkan agar database mencarikan semua record yang di awal atau di akhir data pada nama field yang disebutkan terdiri atas karakter apa saja asalkan ada „data_yang_dicari‟ dalam field tersebut. Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
39
LATIHAN/KASUS MySQL Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: Kegiatan 1
1. Menggunakan database swalayan yang sudah pernah dibuat. Selanjutnya menyeleksi atau melihat data yang ada di dalam tabel, berikut merupakan aturan umum penulisan yang digunakan pada select nama_field from nama_tabel;
2.
Menampilkan seluruh record dalam tabel yang memiliki data dalam nama field yang disebutkan sama dengan „data_yang_dicari’ SELECT * FROM nama_tabel WHERE nama_field LIKE ‘data_yang_dicari’;
3. Menampilkan data dengan seluruh record dalam tabel yang memiliki data
dalam
nama_field
yang
disebutkan
diawali
dengan
„data_yang_dicari‟ SELECT * FROM nama_tabel WHERE nama_field LIKE ‘data_yang_dicari%’; 4. Selanjutnya menampilkan seluruh record dalam tabel yang memiliki
data dalam nama_field yang disebutkan pada bagian akhirnya ada „data_yang_dicari‟. : SELECT * FROM nama_tabel WHERE nama_field LIKE ‘%data_yang_dicari’;
5. Terakhir menampilkan seluruh record dalam tabel yang data dalam nama_field yang disebutkan mengandung „data_yang_dicari‟. % di awal dan % di akhir menunjukkan agar database mencarikan semua record yang di awal atau di akhir data pada nama field yang
40
disebutkan
terdiri
atas
karakter
apa
saja
asalkan
ada
„data_yang_dicari‟ dalam field tersebut. SELECT * FROM nama_tabel WHERE nama_field LIKE ‘%data_yang_dicari%’;
Penilaian: a. Keaktifan mahasiswa dalam praktikum
b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur Kasus: Buatlah tabel Mahasiswa, MataKuliah dan KRS dengan deskripsi tabel sebagai berikut:
Tabel Mahasiswa NIU Nama 00114 Alfi 01052 Wahyu 01104 Syifa 00888 Anik 00993 Agnes 00066 Derti 00287 Syifa 01040 Dahlia
Prodi Rekmed Rekmed Pend. Dokter Gizi Ilkom Kimia Matematika Statistika
Tabel Kelas MK Kode Nama A Agama B Basdat C KKPMT Tabel KRS NIU 00114 01052 01104 01052 01104 00993 00066 00287 01040
Kode A A A B B B C C C
Nilai A B A B A B A C A
41
1 Tampilkan semua data di KRS Tampilkan semua data di mahasiswa Ubah NIM mahasiswa dengan nim '01104' menjadi '01105'. Tampilkan semua data di KRS Tampilkan semua data di mahasiswa
2. Tampilkan semua data di KRS Tampilkan semua data di matkul Ubah kode matkul dengan kode 'B' menjadi 'M'. Tampilkan semua data di KRS Tampilkan semua data di Matkul Ubah kode matkul dengan kode 'M' menjadi 'B'. 3. Tampilkan nim mahasiswa yang mendapat nilai A untuk Matakuliah dengan kode B
42
MATERI 7 JOIN Kompetensi: Mahasiswa mampu menampilkan data dari 2 atau lebih tabel. Maksud dan tujuan: c. Mahasiswa mengerti dan memahami join basis data d. Mahasiswa mengerti dan memahami bagaimana menampilkan data dari 2 atau lebih tabel.. Landasan teori: JOIN Table references atau disebut juga JOIN pada MySQL adalah sebuah cara untuk menggabungkan dua buah tabel atau lebih dengan persyaratan tertentu yang telah definisikan pada perintah SQL. INNER JOIN INNER JOIN, CROSS JOIN, dan JOIN pada MySQL mempunyai peranan yang sama dan dapat menggantikan satu sama lain. Tipe JOIN ini adalah yang paling sederhana dan relatif paling mudah dipahami. INNER JOIN menampilkan seluruh data pada tabel pertama (tabel kiri) yang mempunyai kecocokan dengan tabel kedua (tabel kanan). Representasi visual dari tipe JOIN ini adalah sebagai berikut:
INNER JOIN Secara umum perintah INNER JOIN adalah sebagai berikut:
SELECT FROM Table_A as A INNER JOIN Table_B as B ON A.Key = B.Key;
43
Sebagai contoh perintah INNER JOIN untuk tabel A dan B dengan perintah:
SELECT * FROM A INNER JOIN B ON A.Nomer = B.Nomer;
Left JOIN Left JOIN akan menampilkan seluruh data pada tabel pertama (tabel kiri) baik data yang mempunyai pasangan dengan data di tabel kedua (tabel kanan) maupun tidak, dan juga menampilkan data pada tabel kanan yang mempunyai pasangan dengan data di tabel kiri. Representasi visual dari tipe JOIN ini adalah
sebagai berikut:
Secara umum perintah Left JOIN adalah:
SELECT FROM Table_A as A LEFT JOIN Table_B as B ON A.Key = B.Key; Sebagai contoh perintah Left JOIN untuk tabel A dan B dengan perintah:
SELECT * FROM A LEFT JOIN B ON A.Nomer = B.Nomer;
44
Right JOIN Right JOIN adalah kebalikan dari Left JOIN. Right JOIN akan menampilkan seluruh data pada tabel kedua (tabel kanan) baik data yang mempunyai pasangan dengan data di tabel kedua (tabel kanan) maupun tidak, dan juga menampilkan data pada tabel kiri yang mempunyai pasangan dengan data di tabel kanan. Representasi visual dari tipe JOIN ini adalah sebagai berikut:
Secara umum perintah Right JOIN adalah: SELECT FROM Table_A as A RIGHT JOIN Table_B as B ON A.Key = B.Key; Sebagai contoh perintah Right JOIN untuk tabel A dan B dengan perintah: SELECT * FROM A RIGHT JOIN B ON A.Nomer = B.Nomer;
Left Excluding JOIN Left Excluding JOIN akan menampilkan data pada tabel pertama (tabel kiri) yang tidak mempunyai pasangan yang cocok dengan tabel kedua (tabel kanan). Bentuk JOIN ini mirip dengan Left JOIN namun tidak mengikut sertakan data pada tabel kiri yang mempunyai pasangan dengan data tabel kanan. Representasi visual dari tipe JOIN ini adalah sebagai berikut:
Left Excluding JOIN
45
Secara umum perintah untuk menghasilkan Left Excluding JOIN adalah: SELECT FROM Table_A as A LEFT JOIN Table_B as B ON A.Key = B.Key WHERE B.Key IS NULL; Sebagai contoh perintah Left Excluding JOIN untuk tabel A dan B dengan perintah: SELECT * FROM A LEFT JOIN B ON A.Nomer = B.Nomer WHERE B.Nomer IS NULL;
Right Excluding JOIN Right Excluding JOIN akan menampilkan data pada tabel kedua (tabel kanan) yang tidak mempunyai pasangan yang cocok dengan tabel pertama (tabel kiri). Bentuk JOIN ini mirip dengan Right JOIN namun tidak mengikutsertakan data pada tabel kanan yang mempunyai pasangan dengan data tabel kiri. Pada dasarnya Right Excluding JOIN adalah kebalikan dari Left Excluding JOIN. Representasi visual dari tipe JOIN ini adalah sebagai berikut:
Right Excluding JOIN Secara umum perintah untuk menghasilkan Right Excluding JOIN adalah: SELECT FROM Table_A as A RIGHT JOIN Table_B as B ON A.Key = B.Key WHERE A.Key IS NULL;
46
Sebagai contoh perintah Right Excluding JOIN untuk tabel A dan B dengan perintah: SELECT * FROM A RIGHT JOIN B ON A.Nomer = B.Nomer WHERE A.Nomer IS NULL;
Full Outer JOIN Full Outer JOIN atau disebut juga Outer JOIN/Full JOIN adalah tipe JOIN yang akan menampilkan seluruh data dari tabel pertama (tabel kiri) dan tabel kedua (tabel kanan) dengan mencocokkan elemen kolom yang sesuai dan mengosongkan dengan memberikan nilai NULL jika tidak mempunyai data pasangan di tabel lainnya. Representasi visual dari tipe JOIN ini adalah sebagai berikut:
Full Outer JOIN Pada MySQL tidak didukung kata kunci yang langsung dapat digunakan untuk melakukan Full Outer JOIN. Untuk mendapatkan data seperti pada Outer JOIN digunakan UNION dengan perintah sebagai berikut:
SELECT FROM Table_A as A LEFT JOIN Table_B as B ON A.Key = B.Key UNION SELECT FROM Table_A as A RIGHT JOIN Table_B as B ON A.Key = B.Key;
47
Sebagai contoh untuk mendapatkan Full Outer JOIN dari tabel contoh A dan B digunakan perintah sebagai berikut:
SELECT * FROM A LEFT JOIN B ON A.Nomer = B.Nomer UNION SELECT * FROM A RIGHT JOIN B ON A.Nomer = B.Nomer;
Outer Excluding JOIN Full Outer Excluding JOIN atau disebut juga Outer Excluding JOIN/Full Excluding JOIN adalah tipe JOIN yang akan menampilkan seluruh data dari tabel pertama (tabel kiri) yang tidak mempunyai kecocokan/pasangan dengan tabel kedua (tabel kanan) dan seluruh data pada tabel kedua (tabel kanan) yang tidak mempunyai kecocokan dengan tabel pertama (tabel kiri). Representasi visual dari tipe JOIN ini adalah sebagai berikut:
Full Outer Excluding JOIN Pada MySQL juga tidak didukung kata kunci yang langsung dapat digunakan untuk melakukan Full Outer Excluding JOIN. Untuk mendapatkan data seperti pada Full Outer Excluding JOIN digunakan UNION dengan perintah sebagai berikut: SELECT FROM Table_A as A LEFT JOIN Table_B as B ON A.Key = B.Key WHERE B.Key IS NULL UNION SELECT
48
FROM Table_A as A RIGHT JOIN Table_B as B ON A.Key = B.Key WHERE A.Key IS NULL; Sebagai contoh untuk mendapatkan Full Outer Excluding JOIN dari tabel contoh A dan B digunakan perintah sebagai berikut:
SELECT * FROM A LEFT JOIN B ON A.Nomer = B.Nomer WHERE B.Nomer IS NULL UNION SELECT * FROM A RIGHT JOIN B ON A.Nomer = B.Nomer WHERE A.Nomer IS NULL;
Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
49
LATIHAN/KASUS MySQL
Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: Kegiatan 1
1. Buatlah tabel employees dengan attribut emp_no, name 2. Buatlah tabel salary dengan deskripsi tabel sebagai berikut: NULL Atribut Tipe emp_no int(11) No salary int(11) No from_date date No to_date date No 3. Set emp_no dan from_date sebagai PRIMARY KEY! 4. Set emp_no sebagai FOREIGN KEY yang mengacu pada kolom emp_no di tabel employees dengan aksi ON DELETE CASCADE! 5. Lihat deskripsi tabel salary dan lihat perintah pembuatan tabel (CREATE TABLE) salary yang telah dibuat! Penilaian: a.
Keaktifan mahasiswa dalam praktikum
b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur
50
Kasus: Buatlah database rental dengan tabel-tabel sebagai berikut: Pemilik noKTPMilik
Nama
Alamat
noTelp
112 adi
jogja
123
113 agung 114 budi 116 lusi
jogja jogja jogja
123 123 123
penyewa noKTPSewa Nama
Alamat
noTelp
232 badu
bantul
123
234 bidu
bantul
123
235 bude 265 oma
sleman jogja
123 123
Mobil noPlat AD 3456 BB AB 1719 QE AB 1234 FC B 6756 TOP
Merk
HargaSewa
noKTPMilik
warna
CRZ
500000
112 merah
Xenia Inova Inova
250000 300000 300000
114 silver 113 hitam 114 hitam
sewa noKTPSewa noPlat AD 3456 234 BB AB 1719 234 QE B 6756 235 TOP
tglSewa 1 Maret 2014 2 Maret 2014 4 Maret 2014
tglKembali 2 Maret 2014 3 Maret 2014 5 Maret 2014
51
Tampilkan daftar noPlat mobil yang pernah disewa oleh bidu select sewa.noPlat from sewa, penyewa where sewa.noKtp = penyewa.noKTP and penyewa.nama='bidu'; Kapan saja bidu menyewa mobil select tglSewa from penyewa, sewa where penyewa.noKTP=sewa.noKTP and penyewa.nama='bidu'; Tampilkan noKTP dan nama peminjam/penyewa yang pernah meminjam mobil dengan nomor plat B 6756 TOP select penyewa.noKTP, penyewa.nama from penyewa, sewa where penyewa.noKTP=sewa.noKTP and sewa.noPlat='B 6756 TOP'; Tampilkan noKTP,nama pemilik dan merk mobilnya select pemilik.noKtp, pemilik.nama, mobil.merk from mobil, pemilik where pemilik.noKtp = mobil.noKtpmilik; Tampilkan noKTP, nama dan alamat peminjam/penyewa yang meminjam mobil setelah tanggal 2 Maret 2014 ………………………
52
MATERI 8 FUNGSI Kompetensi: Mahasiswa mampu memahami dan membuat fungsi di MySQL. Maksud dan tujuan: Mahasiswa mengerti dan memahami serta dapat menggunakan fungsi yang sudah disediakan MySQL Landasan teori: Fungsi (function) merupakan fasilitas yang disediakan oleh database secara umum untuk memanipulasi data yang kompleks, seperti mencari jumlah data, mencari rata-rata nilai yang ada dalam suatu tabel dan lainlain, bukan hanya sekedar membaca data dari tabel saja. Fungsi adalah suatau rutin khusus yang disediakan oleh MySQL untuk melakukan manipulasi suatu data. Fungsi digunakan (disertakan) sebagai bagian dari suatu perintah query SQL (select). Secara umum fungsi dinyatakan dalam SQL select adalah sebagai berikut : SELECT fungsi (ekspresi) [FROM namatabel];
FROM namatabel tidak harus diberikan dalam MySQL. Fungsi dalam MySQL seperti halnya perintah SQL dapat dituliskan dalam huruf besar ataupun huruf kecil. Fungsi dalam MySQL dibedakan menjadi : 1. Fungsi sistem 2. Fungsi agregat 3. Fungsi aritmatika 4. Fungsi string 5. Fungsi tanggal 6. Fungsi logika 1. Fungsi Sistem Kelompok fungsi sistem adalah kelompok yang memberikan informasi tentang pemakaian server database oleh pemakai. Kelompok ini terdiri atas : a. DATABASE() Fungsi ini digunakan untuk memberikan informasi database apa yang sedang digunakan oleh pemakai. b. LAST_INSSERT_ID() Digunakan untuk menampilkan informasi data yang telah dihasilkan (digenerate) oleh MySQL pada kolom yang menggunakan tipe data AUTOINCREMENT. c. SESSION_USER() Fungsi yang digunakan untuk menampilkan informasi pemakai yang sedang melakukan akses ke dalam server MySQL saat ini. d. SYSTEM_USER() Fungsi ini sama dengan fungsi SESSION_USER()
53
e. USER() Fungsi ini sama dengan fungsi SESSION_USER() dan SYSTEM_SESSION(). f. VERSION() Fungsi ini digunakan untuk mengetahui versi server MySQL yang sedang digunakan saat ini. g. BENCHMARK(x,ekspresi) Mengerjakan perintah pada ekspresi sejumlah count kali. Nilai yang dihasilkan selalu 0. Hal penting dari fungsi ini adalah nilai waktu yang digunakan (elapsed time) yang diberikan pada bagian akhir, memungkinkan kita menilai berapa cepat server mengevaluasi query. h. LOAD_FILE(nama_file) Digunakan untuk membuka file dan memberikan isinya sebagai string. File harus ada dalam server dan pemakai untuk menggunakan fungsi ini memiliki privelege File. 2. Fungsi Agregat Fungsi agregat adalah fungsi standar di dalam SQL, suatu fungsi yang digunakan untuk melakukan summary, merupakan fungsi stastistik standar yang dikenakan pada suatu tabel atau query. 1. AVG(ekspresi) Fungsi ini digunakan untuk mencari rata-rata nilai dalam suatu kolom dari satu tabel atau ekspresi. Ekspresi dalam fungsi AVG umumnya adalah nama kolom. Kolom yang dicari nilai rata-ratanya adalah kolom dengan tipe data numerik. Nilai rata-rata yang dihasilkan oleh fungsi ini tidak melibatkan dalam perhitungannya baris yang memiliki nilai pada kolom yang dicari rataratanya bernilai NULL. 2. COUNT(x) Fungsi ini digunakan untuk menghitung jumlah record (baris) dari suatu kolom atau suatu tabel. X adalah nama kolom dari tabel yang diinginkan dicari jumlah record (baris)nya. 3. MAX(ekspresi) Fungsi ini digunakan untuk mencari nilai terbesar dari suatu kolom dari suatu tabel atau ekspresi. Kolom yang dicari nilai terbesarnya memiliki tipe data numerik. Fungsi MAX() tidak melibatkan dalam perhitungannya, data yang bernilai NULL dari suatu baris yang kolomnya memiliki nilai NULL. 4. MIN(ekspresi) Fungsi MIN() merupakan lawan dari fungsi MAX(). Fungsi ini mencari nilai terkecil dari suatu kolom dalam suatu tabel atau ekspresi. 5. STD(ekspresi) dan STDDEV(ekspresi) Fungsi ini digunakan untuk mendapatkan standar deviasi dari data suatu kolom dalam tabel. Ekspresi umumnya menyatakan kolom suatu tabel dengan tipe datanya numerik. 6. SUM(ekspresi) Fungsi ini digunakan untuk mendapatkan nilai total dari suatu kolom suatu tabel atau ekspresi.
54
3. Fungsi Aritmetika MySQL memiliki fasilitas dasar untuk melakukan manipulasi data numerik, seperti penjumlahan, pengurangan, perkalian dan pembagian yang disertakan dalam suatu perintah select. Fasilitas tersebut dikenal dengan operator aritmatika. 1. Penjumlahan(+) Digunakan untuk menjumlahkan dua buah data numerik, hasil dari operasi ini adalah data numerik juga. 2. Pengurangan(-) Digunakan untuk melakukan operasi pengurangan dua buah data numerik, bilangan yang disebelah kiri dikurangi dengan bilangan yang disebelah kanan. Hasil dari operasi ini adalah data numerik. 3. Perkalian(*) Digunakan untuk melakukan operasi perkalian dua data numerik. Hasil dari operasi ini adalah data numerik juga. 4. Pembagian(/) Digunakan untuk melakukan operasi pembagian dua data numerik. Bilangan di sebelah kiri dibagi dengan bilangan yang ada disebelah kanan operator, hasil dari operasi ini adalah data numerik. 5. Pembagian sisa(%) Digunakan untuk mendapatkan sisa pembagian dari suatu operasi pembagian, bilangan di sebelah kiri dibagi dengan bilangan disebelah kanan, sisa dari hasil pembagian ini yang menjadi hasil dari operasi ini. Operasi pembagian sisa biasa disebut modulus. 4. Fungsi Tanggal Tanggal dalam MySQL menggunakan tanggal dari sistem Unix, tidak ada masalah sampai dengan 2069. Semua tahun yang dinyatakan dengan dua digit diasumsikan tahun tersebut pada range tanggal antara tahun 1970 sampai dengan 2069. Jika dimasukkan tahun 01 maka akan dianggap tahun 2001. Format tanggal dan jam dalam MySQL adalah dengan menggunakan format tahun, bulan, tangal, jam, menit dan detik yyyy-mm-dd HH:ii:ss yyyy adalah tahun dalam format angka mm adalah nomor bulan dalam format 2 angka dd adalah tanggal dalam bulan dengan format 2 angka HH adalah jam dalam format jam 00-23 ii adalah menit dalam format 00-59 ss adalah detik dalam format 00-59 Berikut ini fungsi built-in untuk data tanggal dalam MySQL : 1. ADDDATE(date, INTERVAL ekspresi_interval) 2. CURDATE() dan CURRENT_DATE() 3. CURTIME() dan CURRENT_TIME() 4. CURRENT_TIMESTAMP() 5. DATE_ADD(date, INTERVAL ekspresi_interval) 6. DATE_FORMAT(date, simbolformat) 7. DATE_SUB(date, INTERVAL ekspresi_interval) 8. DAYNAME(date)
55
9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
DAYOFMONTH(date) DAYOFWEEK(date) DAYOFYEAR(date) EXTRACT(value FROM date) FROM_DAYS(days) FROM_UNIXTIME(unixtime[,simbolformat]) HOUR(time) MINUTE(time) MONTH(date) MONTHNAME(date) NOW() PERIOD_ADD(x,y) PERIOD_DIFF(x,y) QUARTER(date) SECOND(time) SEC_TO_TIME(second) SUBDATE() SYSDATE() TIME_FORMAT(time,simbolformat) TIME_TO_SEC(time) TO_DAYS(date) UNIX_TIMESTAMP([date]) WEEK(date[,start]) WEEKDAY(date) YEAR(date)
5. Fungsi String Fungsi string digunakan untuk manipulasi teks (string). MySQL menyediakan banyak fungsi built-in untuk melakukan manipulasi teks ini. Berikut ini adalah daftar fungsi string yang telah disediakan : 1. ASCII(x) 2. CHAR(x,y,z,…) 3. CHARACTER_LENGTH, CHAR_LENGTH 4. COALES(ekspresi1, ekspresi2, …) 5. CONCAT(x,y,z,…) 6. DECODE(string_biner,string_enkripsi) 7. ELT(x,a,b,c,…) 8. ENCODE(owrd,string_enkripsi) 9. ENCRYPT(word[,seed]) 10.FIELD(x,y,z,…) 11.FIND_IN_SET(x,stringlist) 12.INSERT(x,y,z,j) 13.INSTR(x,y) 14.LCASE(x) 15.LEFT(x,y) 16. LENGTH(x) 17. LOAD_FILE(namafile) 18. LOCATE(x,y,z) 19. LOWER(x) 20. LPAD(x,y,z)
56
21. LTRIM(x) 22. MID(x,y,z) 23. OCTET_LENGTH() 24. PASSWORD(password) 25. POSITION(x,y) 26. REPEAT(x,y) 27. REPLACE(x,y) 28. REVERSE(x) 29. RIGHT(string,length) 30. RPAD(x,y,z) 31. RTRIM(x) 32. SOUNDEX(x) 33. SPACE(x) 34. STRCMP(string1,string2) 35. SUBSTRING_INDEX(x,y,z) 36. TRIM([[BOTH OR LEADING or TRAILING][x] FROM] y) 37. UCASE(x) 38. UPPER(x)
6. Fungsi Logika Fungsi logika merupakan fungsi yang disediakan oleh MySQL untuk melakukan evaluasi suatu ekspresi. Berdasarkan nilai ekspresi ini akan dihasilkan suatu nilai yang akan ditampilkan pada hasil query. Berikut adalah fungsi built-in yang disediakan untuk melakukan evaluasi ekspresi : 1. IF(ekspresi1, ekspresi2, ekspresi3) Fungsi if() mengevaluasi ekspresi1, jika ekspresi1 bernilai benar(true) maka ekspresi2 akana menjadi hasil, jika ekspresi1 bernilai salah (false) maka ekspresi3 akan menjadi hasilnya. 2. IFNULL(ekspresi1, ekspresi2) Fungsi ini akan mengevaluasi ekspresi1, jika ekspresi1 berisi NULL, maka ekspresi2 menjadi hasilnya, sedangkan jika ekspresi1 bukan NULL maka ekspresi1 itu sendiri yang menjadi hasilnya 3. ISNULL(ekspresi) Menghasilkan nilai 1 jika ekspresi bernilai NULL. Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM. Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
57
LATIHAN/KASUS MySQL
Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: Kegiatan 1
Buatlah tabel Mahasiswa, MataKuliah dan KRS dengan deskripsi tabel sebagai berikut: Tabel Mahasiswa NIU
Nama
Prodi
00114
Alfi
Rekmed
01052
Wahyu
Rekmed
01104
Syifa
Pend. Dokter
00888
Anik
Gizi
00993
Agnes
Ilkom
00066
Derti
Kimia
00287
Syifa
Matematika
01040
Dahlia
Statistika
Tabel Kelas MK Kode
Nama
A
Agama
B
Basdat
C
KKPMT
58
Tabel KRS NIU
Kode
Nilai
00114
A
90
01052
A
70
01104
A
67
01052
B
88
01104
B
99
00993
B
87
00066
C
67
00287
C
78
01040
C
89
1. Tampilkan Nilai tertinggi 2. Tampilkan Daftar NIM dan Nilai tertinggi yang didapat setiap Mhs 3. Tampilkan rata-rata nilai 4. Tampilkan rata-rata nilai matakuliah 'B' 5. Tampilkan Daftar NIM dan Rata-rata yang didapat setiap Mhs 6. Tampilkan Nilai terendah 7. Tampilkan selisih nilai tertinggi dengan nilai terendah
Penilaian: a. Keaktifan mahasiswa dalam praktikum b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur
59
Kasus: Buatlah Database rental dengan tabel-tabel berikut: Pemilik noKTPMilik 112 113 114 116
Nama adi agung budi lusi
Alamat jogja jogja jogja jogja
noTelp 123 123 123 123
Mobil noPlat AD 3456 BB AB 1719 QE AB 1234 FC B 6756 TOP
penyewa noKTPSewa
Nama
Alamat
noTelp
sewa noKTPSewa
232
badu
bantul
123
234
234
bidu
bantul
123
234
235 265 1. 2.
bude oma
sleman jogja
123 123
235
Merk CRZ Xenia Inova Inova
HargaSewa 500000 250000 300000 300000
noKTPMilik 112 114 113 114
noPlat AD 3456 BB AB 1719 QE B 6756 TOP
tglSewa
tglKembali
1 Maret 2014
2 Maret 2014
2 Maret 2014
3 Maret 2014
4 Maret 2014
5 Maret 2014
warna merah silver hitam hitam
Berapa banyak mobil yang dipinjam pada tanggal 1 Maret 2014; Berapa kali mobilnya LUSI dipinjam;
60
MATERI 9 NESTED QUERY Kompetensi: Mahasiswa mampu. Maksud dan tujuan: a. Mahasiswa mengerti dan memahami serta memanfaatkan select untuk menampilkan data pada database MySql b. Mahasiswa mengerti dan memahami bagaimana logika menampilkan data Landasan teori: Nested query disebut juga dengan query bersarang. Seperti namanya, nested query adalah perintah SQL berupa gabungan dua atau lebih query/statement/perintah SQL yang bertingkat. Query yang terluar disebut dengan outer query sedangkan perintah di dalamnya disebut subquery. Keuntungan dengan diterapkannya subquery diantaranya:
Perintah SQL menjadi lebih terstruktur, dimungkinkan untuk memisahkan tiap-tiap bagian statement-nya.
Sebagai alternatif cara untuk melakukan operasi tanpa JOIN dan UNION, dalam beberapa kasus dapat dimanfaatkan untuk membuat perintah SQL yang lebih optimal.
Subquery dipandang lebih sederhana dan lebih mudah dibaca jika dibandingkan JOIN atau UNION.
Contoh nested query sederhana: SELECT * FROM employees WHERE emp_no IN (SELECT emp_no FROM dept_emp); Sebuah subquery dapat memberikan nilai hasil berupa nilai tunggal, satu baris data, satu kolom data, atau satu tabel (satu atau lebih baris dari satu atau lebih kolom data). Query yang menggunakan nilai yang dihasilkan oleh subquery harus menangkap nilai tersebut dengan benar, sebagai contohnya adalah untuk nilai tunggal dapat digunakan sama dengan (=) sedangkan untuk data lebih dari satu digunakan IN, NOT IN, atau sejenisnya. Sebuah subquery dapat mengandung kata kunci atau klausa layaknya perintah SELECT biasa, yaitu diantaranya: DISTINCT, GROUP BY, ORDER BY, LIMIT, JOIN, UNION, dan lain sebagainya. Sedangkan yang dapat menjadi outer statement adalah perintah SELECT, INSERT, UPDATE, DELETE, SET, atau DO. Perbandingan Dengan Subquery Perbandingan berparameterkan hasil dari subquery menggunakan operator = > < >= <= <> != <=> dapat dilakukan pada umumnya dengan bentuk perintah: perintahSQL_non_subquery operator_perbandingan (subquery);
61
Operator perbandingan digunakan untuk menyaring data berdasarkan suatu nilai tunggal agar data yang dipilih sesuai dengan yang dikehendaki. Penggunaanya memang mirip dengan penggunaan pada klausa WHERE perintah SQL sederhana, hanya saja nilai skalar sebagai parameter didapatkan dari subquery. Contoh perintahnya: SELECT * FROM employees WHERE emp_no = (SELECT emp_no FROM dept_emp WHERE dept_no = (SELECT dept_no FROM departments WHERE dept_name = "Internal Affairs")); Pastikan bahwa subquery memberikan hasil satu baris sebagai parameter perbandingan, karena apabila hasil subquery lebih dari satu baris data maka akan terjadi error. Subquery Dengan IN, ANY, SOME Kata kunci IN, ANY, dan SOME dapat digunakan untuk penyaringan data dengan persyaratan nilai jamak hasil dari subquery. Jika perintah SQL yang bukan subquery memberikan sebuah variabel/field yang berkedudukan sebagai operand (objek yang akan dikenakan operasi) dan operasi = > < >= <= <> != <=> adalah operator perbandingannya, maka secara umum penggunaan kata kunci IN, ANY, dan SOME adalah sebagai berikut: operand operator_perbandingan ANY (subquery) operand IN (subquery) operand operator_perbandingan SOME (subquery) Perhatikan contoh berikut: SELECT * FROM employees WHERE emp_no IN (SELECT emp_no FROM salaries WHERE salary>8000000); Perintah di atas akan menampilkan data pegawai dengan gaji lebih dari delapan juta. Subquery akan memberikan nomer pegawai yang memiliki gaji lebih dari delapan juta, sedangkan query induk akan memilih data dari tabel employees yang nomer pegawainya ada pada hasil yang diberikan oleh subquery. Ketika digunakan pada nested query (perintah SQL dengan subquery) maka kata kunci IN dapat digantikan dengan = ANY. Dengan demikian perintah SQL berikut memberikan hasil yang sama dengan contoh perintah SQL dengan kata kunci IN: SELECT * FROM employees WHERE emp_no = ANY (SELECT emp_no FROM salaries WHERE salary>8000000); Kata kunci ANY (digunakan setelah operator perbandingan) akan menampilkan hasil data apabila ada paling tidak satu data pada subquery yang bernilai benar (TRUE) apabila dioperasikan dengan operator perbandingan dengan data pada outer query-nya. Contoh:
62
SELECT a FROM b WHERE a < ANY (SELECT a FROM c); Perintah di atas akan menampilkan data kolom a dari tabel b yang memenuhi persyaratan perbandingan, yaitu apabila ada satu saja data pada kolom a tabel c yang lebih besar dari data kolom a tabel b tersebut. Perbandingan dilakukan untuk setiap data pada tabel b dengan setiap data pada tabel c. Kata kunci SOME adalah alias dari ANY namun relatif lebih jarang digunakan. Dengan demikian untuk semua perintah SQL dengan kata kunci ANY akan tetap memberikan hasil yang sama ketika kata kunci ANY diganti dengan SOME. Subquery Dengan ALL Operand operator_perbandingan ALL (subquery) Kata kunci ALL setelah operator perbandingan = > < >= <= <> != <=> digunakan untuk penyaringan data dengan persyaratan perbandingan harus bernilai benar (TRUE) untuk semua nilai yang dihasilkan oleh subquery. Perhatikan contoh berikut: select * from salaries where salary > ALL (select salary from salaries where emp_no=10009); Perintah di atas adalah untuk menampilkan data gaji pegawai yang lebih besar dari gaji yang pernah diterima pegawai dengan nomor pegawai 10009, baik gaji saat ini maupun gaji yang dulu. NOT IN dapat digunakan sebagai alternatif lain kata kunci < > ALL,dengan demikian dua statement SQL di bawah ini bernilai sama: SELECT s1 FROM t1 WHERE s1 <> ALL (SELECT s1 FROM t2); SELECT s1 FROM t1 WHERE s1 NOT IN (SELECT s1 FROM t2); Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
63
LATIHAN/KASUS MySQL Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: Kegiatan 1 Buatlah tabel Mahasiswa, MataKuliah dan KRS dengan deskripsi tabel sebagai berikut:
Tabel Mahasiswa NIU
Nama
Prodi
00114 Alfi
Rekmed
01052 Wahyu
Rekmed
01104 Syifa
Pend. Dokter
00888 Anik
Gizi
00993 Agnes
Ilkom
00066 Derti
Kimia
00287 Syifa
Matematika
01040 Dahlia
Statistika
Tabel Kelas MK Kode
Nama
A
Agama
B
Basdat
C
KKPMT
64
Tabel KRS NIU
Kode
Nilai
00114
A
90
01052
A
70
01104
A
67
01052
B
88
01104
B
99
00993
B
87
00066
C
67
00287
C
78
01040
C
89
1. Tampilkan Nilai tertinggi 2. Tampilkan Daftar NIM dan Rata-rata yang didapat setiap Mhs 3. Tampilkan NIM dan Nilai mahasiswa yang mendapat nilai tertinggi 4. Tampilkan NIM dan Nilai mahasiswa yang mendapat nilai 'A' tertinggi 5. Tampilkan NIM dan Nilai mahasiswa yang mendapat nilai 'Basdat' tertinggi 6. Tampilkan kode Matkul dimana 'Anik' mendapat nilai tertinggi. 7. Tampilkan NIM dan nilai rata-rata untuk mahasiswa yang nilai rata-ratanya tertinggi
Penilaian: a. Keaktifan mahasiswa dalam praktikum
b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur
65
Kasus: 1. Masukkan data berikut ke dalam tabel salaries! emp_no
Salary
from_date
to_date
10001
8005000
2011-01-01
2016-01-01
10002
3505000
2013-05-01
2018-05-01
10003
3905000
2012-05-06
2017-05-06
10004
4005000
2012-05-06
2017-05-06
10005
13505000
2010-05-06
2015-05-06
10006
2505000
2011-11-11
2016-11-11
10007
8505000
2011-10-12
2016-10-12
10008
8005000
2005-01-12
2010-01-11
10008
5005000
2010-01-12
2015-01-12
10009
8005000
2008-10-10
2013-10-09
10009
9005000
2013-10-10
2018-10-10
10010
10005000
2012-01-01
2017-01-01
10011
3005000
2011-01-11
2016-01-11
2. Tambahkan 100000 pada data gaji pegawai dengan nomor pegawai (emp_no) 10003! 3. Buatlah tiga buah contoh perintah SQL yang terdapat kata kunci IN, ANY, dan SOME di dalamnya! 4. Dapatkah melakukan penghapusan data pada lebih dari satu tabel dengan hanya menggunakan satu perintah SQL?
66
LEMBAR KERJA
67
68
MATERI 10 VIEW Kompetensi: Mahasiswa mampu membuat dan memanfaatkan view Maksud dan tujuan: a. Mahasiswa mengerti dan memahami view b. Mahasiswa mengerti dan memahami kapan dan bagaimana view digunakan. Landasan teori: Perintah VIEW adalah perintah dalam MySQL untuk membuat sebuah tabel virtual dengan cara menyimpan query SELECT di sebuah basis data. VIEW dapat diterapkan pada MySQL mulai dari MySQL versi 5.0.2. Perintah ini dapat dimanfaatkan untuk menunjang keamanan data, mengatur akses ke data, dan juga meningkatkan efisiensi basis data. Bentuk umum perintah untuk membuat VIEW yang paling sederhana adalah sebagai berikut: CREATE [OR REPLACE] VIEW nama_view [(list_kolom)] AS query_select Karena VIEW adalah bagian dari sebuah basis data, maka nama_view pada perintah diatas disebutkan dengan [database_name].[view_name] jika ingin membuat VIEW untuk basis data tertentu atau bisa juga langsung nama VIEW apabila perintah pembuatan VIEW dituliskan ketika sebuah basis data tertentu yang akan diberi VIEW tersebut sedang digunakan. Perhatikan contoh VIEW berikut: CREATE VIEW jml_pegawai(jumlah_pegawai) AS SELECT COUNT(*) FROM employees; Perintah di atas akan membuat VIEW yang mempunyai satu buah kolom bernama jumlah_pegawai berisi data jumlah pegawai. Untuk berinteraksi dengan VIEW yang telah dibuat, dapat digunakan perintah SELECT seperti pada tabel biasa. Contoh: SELECT * FROM jml_pegawai; Perintah SELECT yang digunakan VIEW Mengubah sebuah VIEW dapat menggunakan perintah ALTER VIEW. Penggunaan perintah ALTER VIEW sangat mirip dengan CREATE VIEW, yaitu hanya dengan mengganti kata kunci CREATE dengan ALTER. ALTER VIEW nama_view [(list_kolom)] AS query_select
69
Untuk menghapus VIEW digunakan perintah: DROP VIEW [IF EXISTS] [database_name].[view_name] Sebagai contoh untuk menghapus VIEW jumlah_pegawai digunakan perintah berikut: DROP VIEW jml_pegawai; Contoh : mysql> CREATE VIEW karyawan_bantul(nip,nama) AS SELECT nip,nama FROM pribadi -> WHERE kota='Bantul'; Query OK, 0 rows affected (0.08 sec) Untuk menampilkan view : mysql> SELECT * FROM karyawan_bantul; +-----------+-----------------------------+ | nip | nama | +----------+------------------------------+ | 12341 | Hamdan Arif | +----------+------------------------------+ 1 row in set (0.00 sec) View mempermudah proses select, jika ada perintah join maka perintah tersebut sudah disimpan dalam definisi view. Adanya view memungkinkan kita untuk melakukan proses pemfilteran lebih rinci, karena hasil dari suatu view dapat dianggap sebagai tabel virtual. Sebagai suatu tabel virtual, view akan memiliki kolom-kolom yang sesuai dengan nama- nama kolom yang ada pada ekspresi query. View merupakan alias yang berupa isi sebagian suatu tabel atau gabungan beberapa tabel yang disederhanakan proses pembacaannya. Pembuatan view seringkali berhubungan dengan masalah keamanan agar pengakses data tidak perlu mengetahui secara fisik ada di mana data tersebut berada dan apa criteria yang digunakan untuk membuat view tersebut, sehingga sebagian pemakai hanya diberikan akses hanya kepada view. Daftar pustaka: Buku Modul Praktikum Basis Data Komputer dan Sistem Informasi Sekolah Vokasi UGM Nugroho, Bunafit. 2005. Database Relasional dengan MySQL. Yogyakarta. Andi
70
LATIHAN/KASUS MySQL Alat dan bahan praktikum: a. Modul praktikum b. Alat Tulis c. Komputer yang sudah terinstal MySql Kegiatan praktikum: Kegiatan 1 Buatlah Database rental dengan tabel-tabel berikut: Pemilik noKTPMilik Nama Alamat noTelp 112 adi jogja 123 113 agung jogja 123 114 budi jogja 123 116 lusi jogja 123
penyewa noKTPSewa 232 234 235 265
Mobil noPlat AD 3456 BB AB 1719 QE AB 1234 FC B 6756 TOP Sewa noKTPSewa
Nama badu bidu bude oma
Alamat bantul bantul sleman jogja
Merk CRZ Xenia Inova Inova
noPlat 234 AD 3456 BB 234 AB 1719 QE 235 B 6756 TOP
noTelp 123 123 123 123
HargaSewa noKTPMilik warna 500000 112 merah 250000 114 silver 300000 113 hitam 300000 114 hitam
tglSewa 1 Maret 2014 2 Maret 2014 4 Maret 2014
tglKembali 2 Maret 2014 3 Maret 2014 5 Maret 2014
1. Buat View yang mungkin. 2. Gunakan View yang telah dibuat 3. Hapus View yang telah dibuat
71
Penilaian: a. Keaktifan mahasiswa dalam praktikum b. Kemampuan dalam menangkap dan menjalankan perintah Instruktur Kasus: Buatlah tabel Mahasiswa, MataKuliah dan KRS dengan deskripsi tabel sebagai berikut: Tabel Mahasiswa NIU Nama 00114 Alfi 01052 Wahyu 01104 Syifa 00888 Anik 00993 Agnes 00066 Derti 00287 Syifa 01040 Dahlia
Prodi Rekmed Rekmed Pend. Dokter Gizi Ilkom Kimia Matematika Statistika
Tabel Kelas MK Kode Nama A Agama B Basdat C KKPMT
Tabel KRS NIU 00114 01052 01104 01052 01104 00993 00066 00287 01040
Kode A A A B B B C C C
Nilai A B A B A B A C A
1. Buatlah sebuah View bernama “rekapMatkul” untuk menampilkan kode, nilai rata-rata, nilaitertinggi, nilaiterendah, dan jumlah mahasiswa (jumlah mahasiswa yang sudah mengambil) untuk setiap kode matkul;
72
2. Buatlah sebuah View bernama “RekapPerMahasiswa” untuk menampilkan nilai rata-rata, nilai tertinggi, nilai terendah, dan jumlahtotal (jumlah matkul yang sudah diambil) oleh mahasiswa dengan nim 01040 3. Buatlah View yang menampilkan: 1. Tampilkan Nilai tertinggi 2. Tampilkan Daftar NIM dan Nilai tertinggi yang didapat setiap Mhs 3. Tampilkan rata-rata nilai 4. Tampilkan rata-rata nilai matakuliah 'B' 5. Tampilkan Daftar NIM dan Rata-rata yang didapat setiap Mhs 6. Tampilkan Nilai terendah 7. Tampilkan selisih nilai tertinggi dengan nilai terendah
73
LEMBAR KERJA
74