MODUL
MATA KULIAH
DATABASE MANAGEMENT SYSTEM
Disusun Oleh:
Riky Faza, ST.
Politeknik PIKSI Ganesha
Bandung
2011
Page1 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Kata Pengantar
MySQL merupakan software database open source yang paling populer didunia, dimana saat ini digunakan lebih dari 100 juta pengguna diseluruh dunia. Dengan kehandalan, kecepatan dan kemudahan penggunaannya, MySQL menjadi pilihan utama bagi banyak pengembang softwaredan aplikasi baik di platformweb maupun desktop. Pengguna MySQL tidak hanya sebatas pengguna perseorangan maupun perusahaan kecil, namunperusahaan seperti Yahoo!, Alcatel Lucent, Google, Nokia, Youtube, Wordpress dan Facebook juga merupakan pengguna MySQL.
MySQL pertama kali dibuat dan dikembangkan di Swedia, yaitu oleh David Axmark, Allan Larsson dan Michael "Monty" Widenius. Merekamengembangkan MySQL sejak tahun 1980 an. Saat ini versi MySQL yang sudah stabil mencapai versi 5x, dan sedang dikembangkan versi 6x.Untuk lebih lengkapnya dapat dilihat di situs resmi MySQL1.
Pembahasan dalam modul ini mencakup beberapa pokok bahasan diantaranya
1. Sekilas tentang MySQL. Pengenalan Database, DBMS dan RDBMS. Beberapa istilah database. Hirarki database. Pengenalan Database MySQL.Penggunaan EMS MySQL Manager
2. Dasar MySQL. Dasar penggunaan MySQL, tipe tabel, tipe data dan merancang database yang baik3. Dasar DDL SQL. Dasar pembuatan objek database dan objek tabel4. Dasar DML MySQL. Dasar pengoperasian manipulasi data pada sebuah database.5. DML MySQL Lanjut. Membahas pengoperasian data menggunakan perintah JOIN.6. Fungsi Built In MySQL. Berisi pembahasan fungsi-fungsi dasar MySQL.7. View. Pembuatan objek view sebagai cara untuk mengakses data tanpa menggunakan query secara langsung.8. Stored Procedure dan Function. Membahas pembuatan objek procedure dan objek function untuk mempercepat proses manipulasi data.9. Trigger. Pembuatan dan penghapusan trigger.
10. Mengakses database MySQL melalui pemrograman PHP.
Page2 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Kontrak Perkuliahan
Mata Kuliah : Database Management System (DBMS)
Kode Mata Kuliah / SKS : / 4 SKS
Semester :
Dosen :
Hari, jam, ruang :
Deskripsi Mata Kuliah
Mata kuliah ini bermaksud untuk memperkenalkan teknik-teknik pengelolaan basis data dengan menggunakan produk basis data MySQL.Pengelolaan basis data dilakukan dengan menggunakan sebuah bahasa yaitu SQL (Structured Query Language). SQL bukanlah bahasapemrograman, SQL digunakan untuk memanipulasi sebuah basis data, bahasa SQL terdiri dari 3 kelompok yaitu, Data Definition Language, DataManipulation Language dan Data Control Language. Materi-materi pokok yang akan dibahas dalam mata kuliah ini antara lain : Sekilas tentangMySQL, Command prompt MySQL dan EMS SQL Manager sebagai tools developer. Perancangan dan pembuatan objek-objek basis data.Manipulasi objek dan data. Penggunaan fungsi-fungsi bawaan (Built In Function) MySQL. Stored Procedure Programming. Penggunaan MySQLdalam aplikasi nyata. Backup, Restore dan Import.
Tujuan Kompetensi Umum
Setelah mengikuti perkuliahan, mahasiswa diharapkan dapat 1) Menjelaskan pengertian basis data dan MySQL, 2) Menjelaskan penggunaanMySQL Manager sebagai tool developer, 3) Membuat objek-objek basis data, 4) Memanipulasi data menggunakan kode SQL, 5) Menggunakanfungsi-fungsi bawaan MySQL, 6) Membuat stored procedure, 7) menggunakan MySQL dalam aplikasi nyata, 8) Backup, Restore dan Import.
Tujuan Kompetensi Khusus
Setelah mahasiswa mengikuti perkuliahan ini diharapkan mampu:
1. Menjelaskan tentang MySQL.2. Menggunakan developer tool EMS MySQL Manager.3. Memanipulasi objek-objek database.4. Memanipulasi data-data dalam database menggunakan kode SQL.5. Menggunakan dan menerapkan fungsi-fungsi MySQL (Built In Function).6. Membuat Stored Procedure.7. Menggunakan MySQL dengan aplikasi pemrograman (PHP).8. Melakukan Backup, Restore dan Import
Strategi Perkuliahan
Perkuliahan dilaksanakan dengan metode ceramah, diskusi, praktek menggunakan komputer, penugasan berupa studi kasus.
Pustaka
1. MySQL: Essential Skills by John W. Horn and Michael Grey ISBN:0072255137 McGraw-Hill/Osborne © 20042. MySQL Stored Procedure Programming By Steven Feuerstein, Guy Harrison Publisher: O'Reilly Pub Date: March 20063. Achmatim.Net
Tugas
1. Tugas diberikan setiap pertemuan kuliah dan wajib dikumpulkan maksimal di pertemuan minggu berikutnya. Dosen memberikan tugas yangberkaitan langsung dengan materi yang disampaikan pada saat perkuliahan. Tugas dikumpulkan dengan cara mengirim email ke alamatemail dosen yang bersangkutan.
2. Tugas Akhir wajib dikerjakan per individu, berupa soal kasus. Contohnya kasus : Perpustakaan. Mahasiswa wajib merancang databaseperpustakaan, menggambarkan diagram ERD, memanipulasi objek dan memanipulasi datanya. Semuanya dalam bentuk kode SQL. KodeSQL tersebut dapat disalin kedalam file Ms. Word. Tugas paling terakhir dikumpulkan 2 minggu setelah UAS.
Page5 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Penilaian Dan Bobot Penilaian
Penilaian yang diberikan meliputi 4 (empat) komponen, yaitu:
Penilaian akhir merupakan gabungan nilai dari semua komponen tersebut di atas. Kriteria penilaian yang digunakan adalah:
Kehadiran Dalam Perkuliahan
Kehadiran dalam perkuliahan minimal 10 kali dari 14 kali perkuliahan.
Komponen Bobot
Ujian Tengah Semester 30 %
Ujian Akhir Semester 40 %
Tugas 20 %
Absensi / partisipasi 10 %
Total Bobot semua komponen 100 %
Angka Mutu Huruf Mutu
80 - 100 A
70 - 79 B
60 - 69 C
50 - 59 D
0 - 49 E
Page6 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Garis-Garis Besar Program Pembelajaran Berbasis Kompetensi
Perguruan Tinggi : POLITEKNIK PIKSI GANESHA
Kompetensi : DATABASE MANAGEMENT SYSTEM (MYSQL)
Judul Unit Kompetensi : Mengoperasikan aplikasi basis data
Menerapkan basis data
Mengoperasikan bahasa pemrograman data description (SQL) dasar
Mengoperasikan bahasa pemrograman data description (SQL) lanjut
Membuat program untuk membangkitkan data dasar
Kode Unit : TIK.PR02.020.01
TIK.PR02.021.01
TIK.PR03.001.01
TIK.PR03.002.01
TIK.PR03.004.01
Deskripsi Singkat : Unit kompetensi ini berkaitan dengan keahlian dalam merancang bangun database menggunakanperkakas Database Management System (DBMS) MySQL sebagai dasar dalam pembuatan aplikasilanjut yang berbasis client server maupun web based
Perkiraan WaktuPembelajaran
:
NO
ELEMENKOMPETENSI
KRITERIA UNJUKKERJA
INDIKATOR UNJUKKERJA
MATERI
PEMBELAJARANPEMBELAJARAN
SIKAP PENGETAHUAN KETERAMPILAN METODE ALATBANTU
1 2 3 4 5 6 7 8 9
1 MengenalDBMS danEMS MySQLManager
Memahami DBMS
Mengenal MySQL
Menggunakan EMSMySQL Manager
Dapat menjelaskanmengenai DBMS danSalah satu Aplikasinya(MySQL) dan dapatmenggunakan EMSMySQL Manager
Menggunakanaplikasi EMS MySQLManager danMempelajari lebihdalam mengenaiDBMS
Dapat menjelaskanDBMS secara umumserta fungsinya danMemahamipenggunaan EMSMySQL Manager
Dapat menggunakanaplikasi EMS MySQLManager untukpengelolaan database
Praktekmenggunakanaplikasi
Komputer
Modul
2 Membuat tabel Tabel di buat denganmenggunakan wizard.Wizard tablemerupakan fituraplikasi untukmembantu membuattable dengan
Dapat membuatdatabase dan tablepada MySQLmenggunakan kodeSQL dan fitur grafikpada EMS MySQLManager
Membuat databasedan tabel
Dapat menjelaskancara pembuatandatabase dan tabelbeserta jenis-jenistipe data
Dapat membuatdatabase dan tabelmenggunakan kodeSQL dan fitur Grafik
Presentasi
Membuatdatabase dantabel
Komputer
Modul
Page7 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
memanfaatkan fasilitasyang tersedia
Tabel di buat denganmenggunakan fiturpembuat table. Fiturpembuat tablemenyediakan kolomnama field, tipe datadan deskripsi field
Tabel di buat denganmenggunakan bahasadata deskripsi (SQL)
3 Mengisi tabel Pengisian data padatable menggunakanperintah standarseperti, insert, updatedan delete yang disesuaikan denganinformasi dan kondisinya
Tabel sudah disimpan,di beri nama dan terisidata
Index table di buat dandi atur denganmenggunakan perintahstandar berupa : createindex dan drop index.
Dapat memanipulasidata dalam databasedengan operasipenyisipan data(insert) dan dapatmenambahkan index
Mengisi data padatabel dengan perintahDML insert danmenambahkan indexdengan perintah DDLAlter Tabel
Dapat menjelaskancara penyisipan datapada tabel dan dapatmenjelaskanpembuatan index
Dapat melakukanoperasi penyisipandata dan pembuatanindex
Presentasi
Membuatdatabase dantabel
Komputer
Modul
4 Merubah datadan menghapusdata
Merubah data yangsudah disisipkan padatabel
Menghapus data
Dapat melakukanoperasi perubahan datasimple dan lanjut danmenghapus data simpledan lanjut
Merubah data danmenghapus tanpakriteria dan dengankriteria
Dapat menjelaskanoperasi manipulasidata berupaperubahan danpenghapusan data
Dapat melakukanoperasi manipulasidata dengan updatedan delete
Presentasi
Praktekmanipulasidata
Komputer
Modul
5 Merubahstruktur tabel
Merubah struktur tabelyang sudah jadi
Dapat melakukanproses perubahanstruktur tabel yangsudah jadi
Merubah strukturtabel
Dapat menjelaskancara merubah strukturtabel yang sudah jadi
Dapat merubahstruktur tabel yangsudah jadi denganperintah alter denganbeberapa kondisi
Presentasi
Praktekmanipulasitabel
Komputer
Modul
6 Membuat tableview (query)
View di buat denganwizard view yang ada,wizar view merupakanfitur aplikasi untukmembantu membuatview dari table yangada denganmemanfaatkan fasilitasyang telah di sediakan
Fitur-fitur view dipahami dan diaplikasikan
Field telah di pilihsesuai dengan tabelnya
Dapat membuat objekview untuk membacadata dari satu ataubeberapa tabel
Membuat objek viewuntuk dapatmenampilkan datadari satu ataubeberapa tabeldengan cepat
Dapat menjelaskancara pembuatan viewdan fungsi dari viewtersebut
Dapat membuat danmenghapus view dandapat membuat viewsesuai dengankebutuhan
Presentasi
Membuat view
Komputer
Modul
7 Mengoperasikantable dan view
Data table ditampilkan denganperintah select.Perintah select yangdigunakan dapatberupa select dengankondisinya seperti :distinct, where, orderby, group by, havingdsb.
Dapat mengoperasikantabel dan view denganperintah select dengankondisinya seperti :distinct, where, orderby, group by, havingdsb
Mengoperasikanview dan tabeldengan berbagaikondisi
Dapat menjelaskancara pengoperasianview dan tabel
Dapatmengoperasikan tabeldan view denganberbagai macamkondisi
Presentasi
Mengoperasikantabel dan view
Komputer
Modul
8 UJIAN TENGAH SEMESTER
9 Mengoperasikantable dan view
Data table di tampilkandengan perintah selectyang melibatkan (join)dengan beberapa tableyang lain . Perintahselect yang di gunakandapat berupa selectdengan kondisinyaseperti : distinct, where,order by, group by,having dsb.
Dapat mengoperasikanperintah select denganbeberapa tabel yang dijoin seperti inner joindan outer join
Mengoperasikanperintah select daribeberapa tabeldengan join
Dapat menjelaskancara pengoperasianperintah select danjoin
Dapatmengoperasikanperintah selectdengan perintahselect dan join
Presentasi
Mengoperasikantabel dan view
Komputer
Modul
10 Mengoperasikan Dapat mengoperasikan Dapat mengoperasikan Mengoperasikan Dapat menjelaskan Dapat Mengoperasikan Komputer
Page8 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
fungsi-fungsimysql
fungsi string
Dapat mengoperasikanfungsi Tanggal danWaktu
Dapat mengoperasikanfungsi numerik
built in functionMySQL (string, DateTime, Numeric)
fungsi-fungsi built in(string, datetime,numeric)
cara menggunakanfungsi-fungsi bawaanmysql danmenggunakannyapada aplikasi
mengoperasikanfungsi-fungsi mysqlstandar (built in)
fungsi mysql Modul
11 Membuat danmengoperasikanprosedur
Prosedur di buat dan diatur denganmenggunakan perintahstandar pada DDL danDML
Parameter prosedur diproses sesuai dengankebutuhan di dalamprosedur
Prosedur di simpan dandi beri nama
Prosedur dapat dijalankan dan bekerjadengan benar
Dapat Membuat danmengoperasikanprosedur tanpaparameter danberparameter
Membuat danmengoperasikanprosedur sesuaikebutuhan
Dapat menjelaskancara kerja prosedurdan cara penggunaanprosedur tersebut
Dapat membuat danmengoperasikanprosedur
Membuat danmengoperasikanprosedur
Komputer
Modul
12 Membuat danmengoperasikanfungsi
Fungsi di buat dan diatur denganmenggunakan perintahstandar pada DDL danDML
Parameter fungsi diproses sesuai dengankebutuhan di dalamfungsi
Fungsi di simpan dandi beri nama
Fungsi dapat dijalankan dan bekerjadengan benar
Dapat Membuat danmengoperasikan Fungsitanpa parameter danberparameter
Membuat danmengoperasikanfungsi sesuaikebutuhan
Dapat menjelaskancara kerja fungsi dancara penggunaanfungsi tersebut
Dapat membuat danmengoperasikanfungsi
Membuat danmengoperasikanfungsi
Komputer
Modul
13 Membuat danmengoperasikantrigger
Trigger di buat dan diatur denganmenggunakan perintahstandar pada DDL danDML
Triger di simpan dan diberi nama
Trigger dapat dijalankan dan bekerjadengan benar
Dapat membuat danmenggunakan trigger
Membuat danmenggunakan trigger
Dapat menjelaskancara kerja trigger
Dapat membuat danmenggunakan trigger
Membuat danmengoperasikantrigger
Komputer
Modul
14 Menulis kodeprogrampembangkitandata
Kode program di tulisberdasarkan diagramprogrampembangkitan datasesuai dengan bahasayang di gunakan
Kode program dikompilasi dan dicarikesalahan sintak ataupenulisan kodeprogram
Kode program dikompilasi menjadipaket program(executable file)
Dapat membuatprogram pembangkitdata menggunakanPHP
Membuat programpembangkit datamenggunakan PHP
Dapat menjelaskancara pembuatanprogram untukpembangkit data
Dapat membuatprogram pembangkitdata menggunakanpemrograman PHP
Membuatprogrampembangkitdata
Komputer
Modul
15 Backup, Restoredan Import diMySQL
Melakukan operasibackup, Restore danImport
Dapat melakukanoperasi backup, restoredan import
Melakukan operasibackup, restore danimport
Dapat menjelaskancara backup, importdan restore
Dapat melakukanoperasi backup,restore dan import
Melakukanoperasibackup,restore danimport
Komputer
Modul
16 UJIAN AKHIR SEMESTER
Page9 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
BAB IPENDAHULUAN
1. Tujuan Kompetensi Khusus
11. Pengenalan Database, DBMS dan RDBMS12. Beberapa istilah database13. Hirarki database14. Pengenalan Database MySQL15. Penggunaan EMS MySQL Manager
2. Sekilas Tentang MySQL
Pengenalan Database, DBMS dan RDBMS
Basis data (atau database) adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakansuatu program komputer untuk memperoleh informasi dari basis data tersebut (http://id.wikipedia.org/wiki/Database). Database digunakanuntuk menyimpan informasi atau data yang terintegrasi dengan baik di dalam komputer.
Untuk mengelola database diperlukan suatu perangkat lunak yang disebut DBMS (Database Management System). DBMS merupakan suatu systemperangkat lunak yang memungkinkan user (pengguna) untuk membuat, memelihara, mengontrol, dan mengakses database secara praktis danefisien. Dengan DBMS, user akan lebih mudah mengontrol dan memanipulasi data yang ada.
Sedangkan RDBMS atau Relationship Database Management System merupakan salah satu jenis DBMS yang mendukung adanya relationship atauhubungan antar tabel. Di samping RDBMS, terdapat jenis DBMS lain, misalnya Hierarchy DBMS, Object Oriented DBMS, dsb. Beberapa softwareatau perangkat lunak DBMS yang sering digunakan dalam aplikasi program antara lain :
DB2 - http://www-306.ibm.com/software/data/db2/ Microsoft SQL Server - http://www.microsoft.com/sql/ Oracle - http://www.oracle.com Sybase - http://www.sybase.com/ Interbase - http://www.borland.com/interbase Teradata - http://www.teradata.com/ Firebird - http://www.firebirdsql.org/ MySQL – http://www.mysql.com PostgreSQL - http://www.postgresql.org/
Beberapa Istilah Database
Table
Sebuah tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam baris (record) dan kolom (field). Masing-masing kolom memilikinama yang spesifik dan unik.
Field
Fieldmerupakan kolom dari sebuah table. Fieldmemiliki ukuran type data tertentu yang menentukan bagaimana data nantinya tersimpan.
Record
Field merupakan sebuah kumpulan nilai yang saling terkait.
Key
Key merupakan suatu field yang dapat dijadikan kunci dalam operasi tabel. Dalam konsep database, key memiliki banyak jenis diantaranyaPrimary Key, Foreign Key, Composite Key, dll.
Page10 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SQL
SQL atau Structured Query Language merupakan suatu bahasa (language) yang digunakan untuk mengakses database. SQL sering disebut jugasebagai query.
Hierarki Database
Dalam konsep database, urutan atau hierarki database sangatlah penting. Urutan atau hierarki database digambarkan dalam gambar sbb :
Gambar 1.1 Hirarki Database
1. MySQL
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yangmultithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi GNU GeneralPublic License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannyatidak cocok dengan penggunaan GPL.
Tidak seperti PHP atau Apache yang merupakan software yang dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimilikioleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia yaitu MySQL AB. MySQL ABmemegang penuh hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL ABadalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius.
MySQL dapat didownload di situs resminya, http://www.mysql.com.
Fitur-fitur MySQL antara lain :
1. Relational Database System. Seperti halnya software database lain yang ada di pasaran, MySQL termasuk RDBMS.2. Arsitektur Client-Server. MySQL memiliki arsitektur client-server dimanaserver database MySQL terinstal di server. Client MySQL dapat
berada dikomputer yang sama dengan server, dan dapat juga di komputer lain yangberkomunikasi dengan server melalui jaringan bahkaninternet.
3. Mengenal perintah SQL standar. SQL (Structured Query Language)merupakan suatu bahasa standar yang berlaku di hampir semuasoftwaredatabase. MySQL mendukung SQL versi SQL:2003.
4. Mendukung Sub Select. Mulai versi 4.1 MySQL telah mendukung select dalam select (sub select).5. Mendukung Views. MySQL mendukung views sejak versi 5.06. Mendukung Stored Prosedured (SP). MySQL mendukung SP sejak versi 5.07. Mendukung Triggers. MySQL mendukung trigger pada versi 5.0 namunmasih terbatas. Pengembang MySQL berjanji akan meningkatkan
kemampuantrigger pada versi 5.1.8. Mendukung replication.9. Mendukung transaksi.
10. Mendukung foreign key.11. Tersedia fungsi GIS.12. Free (bebas didownload)13. Stabil dan tangguh14. Fleksibel dengan berbagai pemrograman15. Security yang baik
Page11 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
16. Dukungan dari banyak komunitas17. Perkembangan software yang cukup cepat.
Menggunakan MySQL dengan Tool EMS MySQL Manager
1. Koneksi ke server MySQL
Untuk menggunakan MySQL Server maka terlebih dahulu harus dilakukan proses instalasi pada komputer yang kita gunakan. Software MySQLdapat di download secara gratis di situs : www.mysql.com . Anda bisa mendownload versi terakhir dari situs tersebut. Terdapat banyak pilihanplatform yang bisa dipilih diantaranya Windows, Linux, Mac OS, Free BSD dll.
Praktek penggunaan MySQL yang dilaksanakan di Lab bisa menggunakan XAMPP. XAMPP adalah aplikasi server yang berisi PHP, MYSQL,Filezilla, Mercury dan lain-lain. Di dalam XAMPP telah terdapat software MySQL Server sehingga tidak perlu dilakukan lagi proses instalasiMySQL Server.
Sebelum bisa digunakan maka pastikan terlebih dahulu bahwa service MySQL sudah RUNNING.
Gambar 1.2 XAMPP Control Panel
Berbagai MySQL Client untuk Administrasi Server MySQL
Berikut ini beberapa tools yang biasa digunakan dalam mempermudah administrasi server MySQL. Tools berikut ini hanya digunakan untukmempermudah administrasi MySQL, jadi tidak harus digunakan.
1. MySQL Command Line Client
MySQL Command Line Client merupakan tools default MySQL yang sudah disertakan dalam file instalasi MySQL. Aplikasi ini dapat digunakanuntuk melakukan koneksi ke MySQL melalui text-based mode.
Gambar 1.3 MySQL Command Line Client
Page12 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
2. PHPMyAdmin
PHPMyAdmin merupakan front-end MySQL berbasis web. PHPMyAdmin dibuat dengan menggunakan PHP. Saat ini, PHPMyAdmin banyakdigunakan dalam hampir semua penyedia hosting yang ada di internet. PHPMyAdminmendukung berbagai fitur administrasi MySQL termasukmanipulasi database,tabel, index dan juga dapat mengeksport data ke dalam berbagai format data.PHPMyAdmin juga tersedia dalam 50 bahasalebih, termasuk bahasaIndonesia. PHPMyAdmin dapat didownload secara gratis dihttp://www.phpmyadmin.net
Gambar 1.4 PHPMyAdmin
3. SQL Manager For MySQL
EMS SQL Manager For MySQL merupakan front-end MySQL berbasis Windows yang cukup mudah digunakan, SQL Manager For MySQLmemiliki user interface yang cukup mudah digunakan, bahkan oleh user pemula.
Gambar 1.5 EMS SQL Manager For MySQL
Page13 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Langkah penggunaan
1. Dari menu Database ->Register Host
Gambar 1.6 Register Host
2. Hostname diisi dengan nama komputer server, username diisi dengan nama user, password diisi dengan password milik user tersebut, klikNext.
Gambar 1.7 Register Database Wizard
3. Secara default server database MySQL memiliki 3 buah database yaitu : information_scheme, mysql, test. Pindahkan database tersebut kebagian kanan lalu klik Next, terakhir klik Finish.
Langkah pembuatan database
Dari menu database pilih Create Database, lalu ikuti langkah-langkah Create Database Wizard.
Page14 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Gambar 1.8 Create Database WizardBAB II
DASAR MYSQL
1. Tujuan Kompetensi Khusus
1. Tipe Tabel MySQL2. Tipe Field MySQL3. Merancang database yang baik
2. Tabel MySQL
Tipe-tipe Tabel MySQL
Salah satu kelebihan dari MySQL adalah Anda dapat mendefinisikan tipe untuk tiap tabel. MySQL mendukung beberapa tipe tabel, tergantungkonfigurasi saat proses instalasi MySQL. MySQL memiliki 3 (tiga) tipe data utama, yaitu MyISAM, InnoDB dan HEAP.
Jika kita tidak menyebutkan tipe tabel saat membuat tabel, maka tipe tabel otomatis akan dibuat sesuai konfigurasi default server MySQL. Hal iniditentukan oleh variabel default-table-type di file konfigurasi MySQL.
MyISAM
Tipe tabel MyISAM merupakan tipe tabel yang sederhana, stabil dan mudah digunakan. Jika kita akan menyimpan data sederhana yang tidakterlalu rumit, maka gunakanlah tipe tabel ini. Kelebihan utama MyISAM adalah kecepatan dan kestabilannya. Jika kita memilih tipe tabel MyISAM,maka MySQL secara otomatis akan menentukan salah satu dari tiga jenis tabel MyISAM, yaitu :
1. MyISAM static. Jenis ini digunakan ketika semua kolom dalam tabel didefinisikan dengan ukuran yang pasti (fixed). Dengan kata lain, tidakada kolom yang memiliki tipe seperti VARCHAR, TEXT dan BLOB. Karena sifatnya yang fixed, maka jenis ini akan lebih cepat, amandan stabil.
2. MyISAM dymanic. Jenis ini digunakan ketika terdapat kolom dengan tipe yang dinamis, seperti tipe kolom VARCHAR. Keuntunganutama dari jenis ini adalah ukuran yang dinamis. Jadi sifatnya lebih efektif karena ukuran data (file) menyesuaikan isi dari masing-masing kolom (field).
3. MyISAM Compressed. Kedua jenis MyISAM, static dan dynamic dapat dikompresi menjadi satu jenis yaitu MyISAM Compresseddengan perintah myisamchk. Tentunya hasilnya lebih kecil dari segi ukuran. Tabel yang terkompresi tidak dapat dikenakan operasiseperti INSERT, UPDATE dan DELETE.
InnoDB
Tipe tabel InnoDB merupakan tipe tabel MySQL yang mendukung proses transaksi. Tipe ini memiliki beberapa keunggulan, antara lain:
a. Mendukung transaksi antar tabel.
b. Mendukung row-level-locking.
c. Mendukung Foreign-Key Constraints.
d. Crash recovery.
Page15 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
HEAP
Tabel dengan tipe HEAP tidak menyimpan datanya di hardisk, tetapi menyimpan di RAM (memori). Tipe tabel ini biasanya digunakan sebagaitabel sementara (temporary). Tabel secara otomatis akan dihapus (hilang) dari MySQL saat koneksi ke server diputus atau server MySQLdimatikan.
Tipe Tabel yang Lain
Selain 3 (tiga) tipe tabel diatas, yaitu MyISAM, InnoDB dan HEAP, MySQL juga mendukung tipe tabel yang lain, yaitu:
1. BDB. Tipe tabel ini mirip tipe tabel InnoDB, namun penggunaannya belum maksimal.2. Archieve. Tipe ini tersedia sejak MySQL versi 4.1. Tipe ini digunakan untuk menyimpan tabel yang terkompresi, dimana biasanya
digunakan dalam proses backup.3. CSV. Tipe ini digunakan untuk menyimpan data dalam bentuk file text yang dibatasi dengan koma (delimiter). Tipe ini tersedia sejak
MySQL versi 4.1.4. NDB Table (MySQL Cluster). Tersedia sejak MySQL versi 4.1.5. Federated (External Tables). Tipe ini tersedia sejak MySQL versi 5.0.
Tipe-tipe Field (Kolom) MySQL
MySQL memiliki cukup banyak tipe data untuk field (kolom) tabel. Tipe field (kolom) ini menentukan besar kecilnya ukuran suatu tabel. Tipe fielddi MySQL setidaknya terbagi menjadi beberapa kelompok, yaitu numerik, string, date and time, dan kelompok himpunan (set dan enum). Masing-masing tipe field memiliki batasan lebar dan ukurannya.
Tipe Numeric
Tipe data numerik digunakan untuk menyimpan data numeric (angka). Ciri utama data numeric adalah suatu data yang memungkinkan untukdikenai operasi aritmatika seperti pertambahan, pengurangan, perkalian dan pembagian. Berikut ini tipe field (kolom) di MySQL yang termasuk kedalam kelompok tipe numerik:
1. TINYINT
Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif.
Jangkauan : -128 s/d 127
Ukuran : 1 byte (8 bit).
2. SMALLINT
Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif.
Jangkauan : -32.768 s/d 32.767
Ukuran : 2 byte (16 bit).
3. MEDIUMINT
Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif.
Jangkauan : -8.388.608 s/d 8.388.607
Ukuran : 3 byte (24 bit).
4. INT
Penggunaan : digunakan untuk menyimpan data bilangan bulat positif
dan negatif.
Jangkauan : -2.147.483.648 s/d 2.147.483.647
Page16 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Ukuran : 4 byte (32 bit).
5. BIGINT
Penggunaan : digunakan untuk menyimpan data bilangan bulat positif dan negatif.
Jangkauan : 9,22 x 1018
Ukuran : 8 byte (64 bit).
6. FLOAT
Penggunaan : digunakan untuk menyimpan data bilangan pecahan positif dan negatif presisi tunggal.
Jangkauan : -3.402823466E+38 s/d -1.175494351E-38, 0,
dan 1.175494351E-38 s/d 3.402823466E+38.
Ukuran : 4 byte (32 bit).
7. DOUBLE
Penggunaan : digunakan untuk menyimpan data bilangan pecahan positif dan negatif presisi ganda.
Jangkauan : -1.79...E+308 s/d -2.22...E-308, 0,
dan 2.22...E-308 s/d 1.79...E+308.
Ukuran : 8 byte (64 bit).
8. REAL
Merupakan sinonim dari DOUBLE.
9. DECIMAL
Penggunaan : digunakan untuk menyimpan data bilangan pecahan positif dan negatif.
Jangkauan : -1.79...E+308 s/d -2.22...E-308, 0,
dan 2.22...E-308 s/d 1.79...E+308.
Ukuran : 8 byte (64 bit).
10. NUMERIC
Merupakan sinonim dari DECIMAL.
Tipe Date dan Time
Tipe data date dan time digunakan untuk menyimpan data tanggal dan waktu. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalamkelompok tipe date dan time:
1. DATE
Penggunaan : digunakan untuk menyimpan data tanggal.
Jangkauan : 1000-01-01 s/d 9999-12-31 (YYYY-MM-DD)
Ukuran : 3 byte.
2. TIME
Penggunaan : digunakan untuk menyimpan data waktu.
Jangkauan : -838:59:59 s/d +838:59:59 (HH:MM:SS)
Ukuran : 3 byte.
Page17 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
3. DATETIME
Penggunaan : digunakan untuk menyimpan data tanggal dan waktu.
Jangkauan : '1000-01-01 00:00:00' s/d '9999-12-31 23:59:59'
Ukuran : 8 byte.
4. YEAR
Penggunaan : digunakan untuk menyimpan data tahun dari tanggal.
Jangkauan : 1900 s/d 2155
Ukuran : 1 byte.
Tipe String (Text)
Tipe data string digunakan untuk menyimpan data string (text). Ciri utama data string adalah suatu data yang memungkinkan untuk dikenaioperasi aritmatika seperti pertambahan, pengurangan, perkalian dan pembagian. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalamkelompok tipe string:
1. CHAR
Penggunaan : digunakan untuk menyimpan data string ukuran tetap.
Jangkauan : 0 s/d 255 karakter
2. VARCHAR
Penggunaan : digunakan untuk menyimpan data string ukuran dinamis.
Jangkauan : 0 s/d 255 karakter (versi 4.1), 0 s/d 65.535 (versi 5.0.3)
3. TINYTEXT
Penggunaan : digunakan untuk menyimpan data text.
Jangkauan : 0 s/d 255 karakter (versi 4.1), 0 s/d 65.535 (versi 5.0.3)
4. TEXT
Penggunaan : digunakan untuk menyimpan data text.
Jangkauan : 0 s/d 65.535 (216 - 1) karakter
5. MEDIUMTEXT
Penggunaan : digunakan untuk menyimpan data text.
Jangkauan : 0 s/d 224 - 1 karakter
6. LONGTEXT
Penggunaan : digunakan untuk menyimpan data text.
Jangkauan : 0 s/d 232 - 1 karakter
Tipe BLOB (Biner)
Tipe data blob digunakan untuk menyimpan data biner. Tipe ini biasanya digunakan untuk menyimpan kode-kode biner dari suatu file atau object.BLOBmerupakan singkatan dari Binary Large Object. Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalam kelompok tipe blob:
1. BIT (sejak versi 5.0.3)
Penggunaan : digunakan untuk menyimpan data biner.
Page18 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Jangkauan : 64 digit biner
2. TINYBLOB
Penggunaan : digunakan untuk menyimpan data biner.
Jangkauan : 255 byte
3. BLOB
Penggunaan : digunakan untuk menyimpan data biner.
Jangkauan : 216 - 1 byte
4. MEDIUMBLOB
Penggunaan : digunakan untuk menyimpan data biner.
Jangkauan : 224 - 1 byte
5. LONGBLOB
Penggunaan : digunakan untuk menyimpan data biner.
Jangkauan : 232 - 1 byte
Tipe Data yang Lain
Selain tipe data di atas, MySQL juga menyediakan tipe data yang lain. Tipe data di MySQL mungkin akan terus bertambah seiring denganperkembangan versi MySQL. Berikut ini beberapa tipe data tambahan MySQL:
1. ENUM
Penggunaan : enumerasi (kumpulan data).
Jangkauan : sampai dengan 65535 string.
2. SET
Penggunaan : combination (himpunan data).
Jangkauan : sampai dengan 255 string anggotas.
Merancang Database yang Baik
Seperti telah disebutkan sebelumnya, bahwa rancangan database menentukan suatu aplikasi efektif atau tidak, efisien atau tidak, baik atau tidak.Pembahasan mengenai bagaimana merancang database yang baik tentunya sangat panjang. Kita dapat mencari referensi terkait denganperancangan database.
Beberapa Aturan Merancang Database yang Baik.
1. Tabel dalam database tidak boleh mengandung record (data) ganda, atau dengan kata lain tidak boleh ada redudancy data. Jika terdapatdata yang sama, maka perlu dilihat kembali rancangan tabelnya.
2. Setiap tabel dalam database, harus memiliki field (kolom) yang unik. Field ini disebut sebagai Primary Key.3. Tabel harus sudah normal.4. Besar atau ukuran database hendaknya dibuat seminimal mungkin. Hal ini ditentukan oleh pemilihan tipe data yang tepat.5. Merancang database hendaknya memperhatikan apakah rancangan dapat menampung data (record) sesuai yang dibutuhkan oleh
aplikasi.
Tips Penamaan Identifier.
Page19 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
1. Penamaan identifier (database, tabel, kolom) di MySQL bersifat casesensitive. Penamaan identifier hendaknya konsisten untuk semua tabel dalamsuatu database. Kita dapat menggunakan model lower-case, UPPER-CASE, camelCase dll.
2. Nama database, tabel dan kolom maksimal 64 karakter.3. Hindari penggunaan karakter khusus, seperti üàû, karena bisa bermasalah dalam sistem operasi yang lain.4. Pilih nama untuk field (kolom) yang mencerminkan isi dari data yang disimpan.
Tugas
Cari dasar teori / konsep mengenai MySQL. Mulai dari pengertian, fitur-fitur, kelebihan/kekurangan, fungsi-fungsi, dan sintak dasar!
BAB IIIDASAR DDL SQL
Tujuan Kompetensi Khusus
1. Pendahuluan2. Perintah DDL
1. Pendahuluan
Perintah DDL dalam bahasa SQL :
DDL atau Data Definition Language
DDL merupakan perintah SQL yang berhubungan dengan pendefinisian suatu struktur database, dalam hal ini database dan table. Beberapaperintah dasar yang termasuk DDL ini antara lain :
CREATE ALTER RENAME DROP
Membuat, Menampilkan, Membuka dan Menghapus Database Membuat Database
Sintaks umum SQL untuk membuat suatu database adalah sebagai berikut :
CREATE DATABASE [ I F NOT EXI STS] nama_dat abase;
Bentuk perintah di atas akan membuat sebuah database baru dengan nama nama_database. Aturan penamaan sebuah database sama seperti aturanpenamaan sebuah variabel, dimana secara umum nama database boleh terdiri dari huruf, angka dan under-score (_). Jika database yang akan dibuatsudah ada, maka akan muncul pesan error. Namun jika ingin otomatis menghapus database yang lama jika sudah ada, aktifkan option IF NOTEXISTS.
Berikut ini contoh perintah untuk membuat database baru dengan nama “ penj ual an” :
CREATE DATABASE penj ual an;
Page20 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Jika query di atas berhasil dieksekusi dan database berhasil dibuat, maka akan ditampilkan pesan kurang lebih sebagai berikut :
Quer y OK, 1 r ow af f ect ed ( 0. 02 sec)
Menampilkan Database
Untuk melihat database yang baru saja dibuat atau yang sudah ada, dapat
menggunakan perintah sebagai berikut :
SHOW DATABASES;
Hasil dari perintah di atas akan menampilkan semua database yang sudah ada di
MySQL. Berikut ini contoh hasil dari query di atas :
+- - - - - - - - - - - - - - +
| Dat abase |
+- - - - - - - - - - - - - - +
| penj ual an |
| mysql |
| t est |
+- - - - - - - - - - - - - - +
3 r ows i n set ( 0. 02 sec)
Membuka Database
Sebelum melakukan manipulasi tabel dan record yang berada di dalamnya, kita harus membuka atau mengaktifkan databasenya terlebih dahulu.Untuk membuka database “penjualan”, berikut ini querynya :
USE penj ual an;
Jika perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai berikut :
Dat abase changed
Menghapus Database
Untuk menghapus suatu database, sintaks umumnya adalah sbb :
DROP DATABASE [ I F EXI STS] nama_dat abase;
Bentuk perintah di atas akan menghapus database dengan nama nama_database. Jika databasenya ada maka database dan juga seluruh tabel didalamnya akan dihapus. Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan dihapus tidak ditemukan, maka akan ditampilkanpesan error. Aktifkan option IF EXISTS untuk memastikan bahwa suatu database benar-benar ada.
Berikut ini contoh perintah untuk menghapus database dengan nama “penjualan”
DROP DATABASE penj ual an;
Membuat, Mengubah dan Menghapus TableMembuat Tabel Baru
Page21 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Bentuk umum SQL untuk membuat suatu table secara sederhana sebagai berikut :
CREATE TABLE nama_t abel (
f i el d1 t i pe( panj ang) ,
f i el d2 t i pe( panj ang) ,
. . .
f i el dn t i pe( panj ang) ,
PRI MARY KEY ( f i el d_key)
) ;
Bentuk umum di atas merupakan bentuk umum pembuatan tabel yang sudah disederhanakan. Penamaan tabel dan field memiliki aturan yangsama dengan penamaan database. Sebagai contoh, kita akan membuat tabel baru dengan struktur sebagai berikut :
Nama tabel : pelanggan
No Nama Field Tipe Panjang
1 id_pelanggan * Varchar 5
2 nm_pelanggan Varchar 30
3 alamat Text -
4 telepon Varchar 20
5 email Varchar 50
Untuk membuat tabel tersebut di atas, query atau perintah SQL-nya adalah sebagai berikut :
CREATE TABLE pel anggan (
i d_pel anggan var char ( 5) NOT NULL,
nm_pel anggan var char ( 30) NOT NULL,
al amat t ext ,
t el epon var char ( 20) ,
emai l var char ( 50) ,
PRI MARY KEY( i d_pel anggan)
) ;
Selanjutnya untuk melihat tabel mhs sudah benar-benar sudah ada atau belum, ketikkan perintah berikut ini :
SHOW TABLES;
Perintah di atas akan menampilkan seluruh tabel yang sudah ada dalam suatu
database. Contoh hasil dari perintah di atas adalah sebagai berikut :
+- - - - - - - - - - - - - - - - - - - - - +
| Tabl es_i n_penj ual an |
+- - - - - - - - - - - - - - - - - - - - - +
| pel anggan |
+- - - - - - - - - - - - - - - - - - - - - +
1 r ows i n set ( 0. 01 sec)
Page22 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Untuk melihat struktur tabel “mhs” secara lebih detail, cobalah perintah atau query sebagai berikut :
DESC pel anggan;
DESC merupakan singkatan dari DESCRIBE (dalam query bisa ditulis lengkap atau hanya 4 karakter pertama) dan pelanggan adalah nama tabelyang akan dilihat strukturnya. Dari perintah di atas, akan ditampilkan struktur tabel pelanggan sebagai berikut :
+- - - - - - - - - - - - - - +- - - - - - - - - - - - - +- - - - - - +- - - - - +- - - - - - - - - +- - - - - - - +
| Fi el d | Type | Nul l | Key | Def aul t | Ext r a |
+- - - - - - - - - - - - - - +- - - - - - - - - - - - - +- - - - - - +- - - - - +- - - - - - - - - +- - - - - - - +
| i d_pel anggan | var char ( 5) | NO | PRI | | |
| nm_pel anggan | var char ( 30) | NO | | | |
| al amat | t ext | YES | | NULL | |
| t el epon | var char ( 20) | YES | | NULL | |
| emai l | var char ( 50) | YES | | NULL | |
+- - - - - - - - - - - - - - +- - - - - - - - - - - - - +- - - - - - +- - - - - +- - - - - - - - - +- - - - - - - +
5 r ows i n set ( 0. 00 sec)
Mengubah Struktur Table dengan ALTER
Untuk mengubah struktur suatu tabel, bentuk umum perintah SQL-nya sebagai berikut :
ALTER TABLE nama_t abel al t er _opt i ons;
dimana :
ALTER TABLE merupakan perintah dasar untuk mengubah tabel. nama_tabel merupakan nama tabel yang akan diubah strukturnya. alter_options merupakan pilihan perubahan tabel. Option yang bisadigunakan, beberapa di antaranya sebagai berikut :
ADD definisi_field_baru
Option ini digunakan untuk menambahkan field baru dengan“definisi_field_baru” (nama field, tipe dan option lain).
ADD INDEX nama_index
Option ini digunakan untuk menambahkan index dengan nama “nama_index” pada tabel.
ADD PRIMARY KEY (field_kunci)
Option untuk menambahkan primary key pada tabel
CHANGE field_yang_diubah definisi_field_baru
Option untuk mengubah field_yang_diubah menjadi definisi_field_baru
MODIFY definisi_field
Option untuk mengubah suatu field menjadi definisi_field
DROP nama_field
Option untuk menghapus field nama_field
RENAME TO nama_tabel_baru
Option untuk mengganti nama tabel
Page23 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Beberapa contoh variasi perintah ALTER untuk mengubah struktur suatu tabel antara lain :
1. Menambahkan field “ tgllahir” ke tabel pelanggan
>>ALTER TABLE pel anggan ADD t gl l ahi r dat e NOT NULL;
2. Menambahkan primary key pada suatu tabel
>>ALTER TABLE pel anggan ADD PRI MARY KEY( i d_pel anggan) ;
3. Mengubah tipe field tgllahir menjadi varchar dalam tabel pelanggan
>>ALTER TABLE pel anggan MODI FY t gl l ahi r var char ( 8) NOTNULL;
4. Menghapus field tgllahir dari tabel pelanggan
>>ALTER TABLE pel anggan DROP t gl l ahi r ;
5. Mengubah Nama Tabel
Untuk mengubah nama suatu tabel, dapat menggunakan perintah SQL sbb :
>>RENAME TABLE pel anggan TO pl g;
>>ALTER TABLE pl g RENAME TO pel anggan;
Perintah di atas akan mengubah tabel pelanggan menjadi plg dan sebaliknya. Menghapus TabelUntuk menghapus sebuah tabel, bentuk umumdari perintah SQL adalah sebagai berikut :
DROP TABLE nama_t abel ;
Contohnya kita akan menghapus tabel dengan nama “pelanggan” maka perintah SQL-nya adalah :
DROP TABLE pel anggan;
Latihan DDL
Pemodelan data konseptual Sistem Pemesanan (Penjualan) Barang.
Gambar 3.1 Pemodelan Konseptual
1. Buatkan database DBPenjualan!2. Buatkan tabel pelanggan, tabel pesan, tabel produk, tabel kuitansi, tabel faktur dan tabel detail pesan!3. Lakukan eksperimen dengan merubah struktur tabel. Bisa dengan menambahkan field, menambah index, merubah nama field, merubah
nama tabel dan lain-lain.
/ * Tabl e st r uct ur e f or t abl e pel anggan * /
DROP TABLE I F EXI STS pel anggan;
CREATE TABLE pel anggan (
Page24 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
i d_pel anggan var char ( 5) NOT NULL,
nm_pel anggan var char ( 40) NOT NULL,
al amat t ext NOT NULL,
t el epon var char ( 20) NOT NULL,
emai l var char ( 50) NOT NULL,
PRI MARY KEY ( i d_pel anggan)
) ENGI NE=I nnoDB DEFAULT CHARSET=l at i n1 CHECKSUM=1
DELAY_KEY_WRI TE=1 ROW_FORMAT=DYNAMI C;
/ * Tabl e st r uct ur e f or t abl e pesan * /
DROP TABLE I F EXI STS pesan;
CREATE TABLE pesan (
i d_pesan i nt ( 5) NOT NULL aut o_i ncr ement ,
i d_pel anggan var char ( 5) NOT NULL,
t gl _pesan dat e NOT NULL,
PRI MARY KEY ( i d_pesan) ,
KEY i d_pel anggan ( i d_pel anggan) ,
CONSTRAI NT pesan_i bf k_1 FOREI GN KEY ( i d_pel anggan)
REFERENCES pel anggan ( i d_pel anggan)
) ENGI NE=I nnoDB AUTO_I NCREMENT=4 DEFAULT CHARSET=l at i n1;
/ * Tabl e st r uct ur e f or t abl e det i l _pesan * /
DROP TABLE I F EXI STS det i l _pesan;
CREATE TABLE det i l _pesan (
i d_pesan i nt ( 5) NOT NULL,
i d_pr oduk var char ( 5) NOT NULL,
j uml ah i nt ( 5) NOT NULL def aul t ' 0' ,
har ga deci mal ( 10, 0) NOT NULL def aul t ' 0' ,
PRI MARY KEY ( i d_pesan, i d_pr oduk) ,
KEY FK_det i l _pesan ( i d_pr oduk) ,
KEY i d_pesan ( i d_pesan) ,
CONSTRAI NT FK_det i l _pesan FOREI GN KEY ( i d_pr oduk)
REFERENCES pr oduk ( i d_pr oduk) ,
CONSTRAI NT FK_det i l _pesan2 FOREI GN KEY ( i d_pesan)
REFERENCES pesan ( i d_pesan)
) ENGI NE=I nnoDB DEFAULT CHARSET=l at i n1;
/ * Tabl e st r uct ur e f or t abl e pr oduk * /
DROP TABLE I F EXI STS pr oduk;
CREATE TABLE pr oduk (
i d_pr oduk var char ( 5) NOT NULL,
nm_pr oduk var char ( 30) NOT NULL,
sat uan var char ( 10) NOT NULL,
Page25 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
har ga deci mal ( 10, 0) NOT NULL def aul t ' 0' ,
s t ock i nt ( 3) NOT NULL def aul t ' 0' ,
PRI MARY KEY ( i d_pr oduk)
) ENGI NE=I nnoDB DEFAULT CHARSET=l at i n1;
/ * Tabl e st r uct ur e f or t abl e f akt ur * /
DROP TABLE I F EXI STS f akt ur ;
CREATE TABLE f akt ur (
i d_f akt ur i nt ( 5) NOT NULL aut o_i ncr ement ,
i d_pesan i nt ( 5) NOT NULL,
t gl _f akt ur dat e NOT NULL,
PRI MARY KEY ( i d_f akt ur ) ,
KEY i d_pesan ( i d_pesan) ,
CONSTRAI NT f akt ur _i bf k_1 FOREI GN KEY ( i d_pesan)
REFERENCES pesan ( i d_pesan)
) ENGI NE=I nnoDB DEFAULT CHARSET=l at i n1;
/ * Tabl e st r uct ur e f or t abl e kui t ansi * /
DROP TABLE I F EXI STS kui t ansi ;
CREATE TABLE kui t ansi (
i d_kui t ansi i nt ( 5) NOT NULL aut o_i ncr ement ,
i d_f akt ur i nt ( 5) NOT NULL,
t gl _kui t ansi dat e NOT NULL,
PRI MARY KEY ( i d_kui t ansi ) ,
KEY FK_kui t ansi ( i d_f akt ur ) ,
CONSTRAI NT FK_kui t ansi FOREI GN KEY ( i d_f akt ur )
REFERENCES f akt ur ( i d_f akt ur )
) ENGI NE=I nnoDB DEFAULT CHARSET=l at i n1;
Tugas
1. Cari contoh-contoh kode SQL untuk perintah DDL!2. Buatlah diagram relasi tabel sesuai dengan kasus Tugas Akhir seperti pada gambar 3.1!3. Buatlah databasenya dan buatkan tabel-tabelnya!
Page26 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
BAB IVDASAR DML SQL
Tujuan Kompetensi Khusus
1. Perintah DML
Perintah DML
DML atau Data Manipulation Language
DML merupakan perintah SQL yang berhubungan dengan manipulasi atau pengolahan data atau record dalam table. Perintah SQL yang termasukdalam DML antara lain :
SELECT INSERT UPDATE DELETE
Menambah Record dengan INSERT
Bentuk umum perintah SQL untuk menambahkan record atau data ke dalam suatu tabel adalah sebagai berikut :
I NSERT I NTO nama_t abel VALUES ( ‘ ni l ai 1’ , ’ ni l ai 2’ , . . . ) ;
atau dapat dengan bentuk sebagai berikut :
I NSERT I NTO nama_t abel ( f i el d1, f i el d2, . . . ) VALUES ( ‘ ni l ai 1’ , ’ ni l ai 2’ , . . . ) ;
atau dapat juga dengan bentuk sebagai berikut :
I NSERT I NTO nama_t abel SET f i el d1=’ ni l ai 1’ , f i el d2=’ ni l ai 2’ , . . . ;
Sebagai contoh, kita akan menambahkan sebuah record ke dalam tabel pelanggan yang telah kita buat sebelumnya. Berikut ini perintah SQL untukmenambahkan sebuah record ke dalam tabel pelanggan :
I NSERT I NTO pel anggan VALUES ( ' P0001' , ' Achmad Sol i chi n' , ' Jakar t a Sel at an' , ' 0217327762' , ' achmat i m@gmai l . com' ) ;
Jika perintah SQL di atas berhasil dieksekusi maka akan ditampilkan pesan sebagai berikut :
Quer y OK, 1 r ow af f ect ed ( 0. 00 sec)
Page27 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Setelah perintah SQL di atas berhasil dieksekusi, maka record atau data dalam tabel pelanggan akan bertambah. Jalankan perintah berikut ini untukmelihat isi tabel pelanggan !
SELECT * FROM pel anggan;
Dan berikut ini hasil dari perintah SQL di atas :
+- - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - +
| i d_pel anggan | nm_pel anggan | al amat | t el epon | emai l |
+- - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - +
| P0001 | Achmad Sol i chi n | Jakar t a Sel at an | 0217327762 | achmat i m@gmai l . com |
+- - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - +- - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - +
1 r ow i n set ( 0. 00 sec)
Latihan
1. Buatlah kode SQL untuk proses insert Pelanggan, Pesan, Produk, Kuitansi, Faktur, Detail_Pesan! (Minimal 5 buah data per tabel)
Mengedit Record dengan UPDATE
Bentuk umum perintah SQL untuk mengedit suatu record atau data dari suatu tabel adalah sebagai berikut :
UPDATE nama_t abel SET f i el d1=’ ni l ai bar u’ [ WHERE kondi s i ] ;
Perhatikan beberapa contoh perintah UPDATE tabel pelanggan berikut ini !
1. Mengubah alamat menjadi “Tangerang” untuk pelanggan yang mempunyai id‘P0001’
UPDATE pel anggan SET al amat =' Tanger ang' WHERE i d_pel anggan=' P0001' ;
Dan jika query di atas berhasil dieksekusi maka akan ditampilkan hasil sebagai berikut :
Quer y OK, 1 r ow af f ect ed ( 0. 27 sec)
Rows mat ched: 1 Changed: 1 War ni ngs: 0
2. Mengubah email menjadi “[email protected]” dan alamat menjadi “Bandung”untuk pelanggan yang mempunyai id_pelanggan ‘P0002’
UPDATE pel anggan SET emai l =' budi @l uhur . com' , al amat =' Bandung' WHERE i d_pel anggan=' P0002' ;
Latihan
1. Buatlah kode SQL untuk proses UPDATE dengan berbagai macam kriteria (lakukanlah eksperimen)
Menghapus Record dengan DELETE
Bentuk umum perintah SQL untuk menghapus suatu record atau data dari tabel adalah sebagai berikut :
DELETE FROM nama_t abel [ WHERE kondi s i ] ;
Pada perintah untuk delete di atas :
DELETE FROM merupakan perintah dasar untuk menghapus suatu recorddari tabel. nama_tabel merupakan nama tabel yang akan dihapus recordnya. Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang akan dihapus (didelete). Perintah WHERE ini boleh ada
boleh juga tidak.
Page28 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Perhatikan beberapa contoh perintah DELETE dari tabel pelanggan berikut ini !
1. Menghapus data pelanggan yang mempunyai id_pelanggan P0005
DELETE FROM pel anggan WHERE i d_pel anggan=' P0005' ;
Dan jika query di atas berhasil dieksekusi dan record yang akan dihapus ada,maka akan ditampilkan hasil sebagai berikut :
Quer y OK, 1 r ow af f ect ed ( 0. 11 sec)
2. Menghapus semua pelanggan yang beralamat di “Bandung”
DELETE FROM pel anggan WHERE al amat =' Bandung' ;
Latihan
1. Buatlah kode SQL untuk proses DELETE dengan berbagai macam kriteria (lakukanlah eksperimen)
Menampilkan Record dengan SELECT
Perintah SELECT digunakan untuk membaca informasi dari tabel. Bentuk dasar perintah SELECT data dari tabel adalah sebagai berikut :
SELECT [ f i el d | * ] FROM nama_t abel [ WHERE kondi s i ] ;
SELECT semua data :
SELECT * FROM PESAN;
Perintah SELECT ini berfungsi jika membaca seluruh data dari dalam tabel.
SELECT beberapa record :
SELECT * FROM PESAN WHERE I D_PELANGGAN = ‘ 11001’
Kita dapat menampilkan hanya beberapa data saja dari sebuah tabel. Field yang bisa dijadikan sebuah kriteria bisa apa saja. Contoh lain :
SELECT * FROM PESAN WHERE TGL_PESAN = ‘ 2011- 3- 2’
Dengan struktur = TAHUN-BULAN-TANGGAL
Contoh lain :
SELECT * FROM PESAN WHERE TGL_PESAN >‘ 2011- 3- 2’ AND TGL_PESAN <‘ 2011- 4- 1’
Contoh lain yang mengkombinasikan beberapa Field
SELECT * FROM PRODUK WHERE SATUAN = ‘ PCS’ AND HARGA >5000
Contoh lain menggunakan operator logika AND dan OR
Page29 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SELECT * FROM PRODUK WHERE HARGA > 1000 OR STOCK > 10
Contoh lain menggunakan operator logika AND dan OR yang dikombinasikan
SELECT * FROM PRODUK WHERE ( SATUAN = ‘ BUAH’ AND STOCK > 10) OR ( HARGA > 5000 AND STOCK < 5)
SELECT beberapa kolom/field
Jika kita hanya ingin melihat informasi tertentu dari sebuah tabel maka tinggal memilih kolom tertentu yang akan dibaca dan dipisahkanmenggunakan koma.
Contoh memilih nama produk dan harganya
SELECT NM_PRODUK, HARGA FROM PRODUK
Contoh lain
SELECT NM_PELANGGAN, ALAMAT FROM PELANGGAN
Contoh lain, jika kita ingin menampilkan nama pelanggan yang sama hanya satu kali saja :
SELECT DI STI NCT NM_PELANGGAN FROM PELANGGAN
Kita dapat mengkombinasikan perintah SELECT beberapa kolom dengan SELECT beberapa record
SELECT NM_PELANGGAN, ALAMAT WHERE ALAMAT = ‘ BANDUNG’ OR ALAMAT = ‘ JAKARTA’
Latihan
1. Buatlah perintah untuk menampilkan produk yang tersedia2. Buatlah perintah untuk menampilkan nama pelanggan dan emailnya3. Buatlah perintah yang mengkombinasikan ekspresi AND dan OR4. Lakukanlah eksperimen dengan untuk membaca data dari tabel dengan berbagai kombinasi perintah
Mengurutkan record
Pada latihan sebelumnya, semua record yang dihasilkan dari perintah SELECT tidak berurutan. Kita dapat mengurutkan data hasil perintahSELECT
Contoh, PESAN diurutkan berdasarkan tanggal pesan
SELECT * FROM PESAN ORDER BY TGL_PESAN
Metode sorting dapat dilakukan secara ascending atau desceinding
SELECT * FROM PESAN ORDER BY TGL_PESAN DESC
Juga dapat diurut berdasarkan lebih dari satu kriteria
SELECT * FROM PESAN ORDER BY I D_PELANGGAN, TGL_PESAN
Page30 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Latihan
Buatlah perintah beberapa macam perintah untuk membaca data dengan menggunakan metode pengurutan data ASCENDING danDESCENDING
Pattern
MySQL menyediakan pola standar untuk proses pembacaan data berdasarkan ekspresi tertentu. Gunakan perintah LIKE atau NOT LIKE
Contoh : mencari nama pelanggan dengan huruf awal ‘A’
SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LI KE ‘ A%’
Contoh : mencari nama pelanggan dengan akhiran ‘DI’
SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LI KE ‘ %DI ’
Contoh : mencari nama pelanggan yang mengandung kata ‘K’
SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LI KE ‘ %K%’
Contoh : mencari nama pelanggan yang namanya terdiri dari 5 karakter
SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LI KE ‘ _____’
Gunakan underscore sebanyak 5 kali
Latihan
Buatlah perintah SQL untuk membaca data dengan menggunakan ekspresi LIKE dan NOT LIKE
Menghitung jumlah Record
Kadang-kadang kita membutuhkan informasi mengenai jumlah record yang terdapat dalam satu buah tabel. Perintahnya adalah sebagai berikut
SELECT COUNT( * ) FROM PELANGGAN
Contoh : mengetahui jumlah pelanggan yang beralamat di Bandung
SELECT ALAMAT, COUNT( * ) FROM PELANGGAN GROUP BY ALAMAT
Contoh : menghitung jumlah produk yang memiliki satuan tertentu
SELECT SATUAN, COUNT( * ) FROM PRODUK WHERE SATUAN = ‘ PCS’ OR SATUAN = ‘ LEMBAR’ GROUP BY SATUAN
Page31 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Tugas
1. Buat kode SQL untuk mengisi beberapa buah record kedalam satu tabel dengan hanya satu perintah kode SQL2. Buat kode SQL untuk meng-UPDATE data dengan kriteria minimal 2 buah (Anda dapat menggunakan AND atau OR untuk kedua kriteria
tersebut)3. Buat kode SQL untuk men-DELETE data dengan kriteria minimal 2 buah (Anda dapat menggunakan AND atau OR untuk kedua kriteria
tersebut)4. Buat 5 jenis kode SQL SELECT yang berbeda (Anda dapat mengkombinasikan berbagai kriteria, teknik pengurutan, Pattern dan Perhitungan
jumlah record)
BAB VDML SQL LANJUT
Tujuan Kompetensi Khusus
1. Perintah Inner Join Tabel2. Perintah Outer Join Tabel3. Perintah HAVING
Perintah SELECT dari Banyak Tabel dengan JOIN
Di dalam suatu RDBMS tentunya sudah menjadi suatu kewajaran jika dalam satu database dapat terdiri dari beberapa tabel. Masing-masing tabeltersebut berhubungan satu sama lain atau dengan kata lain memiliki relasi. Relasi antartabel dapat berupa relasi 1-1, 1-M, atau M-N. Sebagai contohterlihat pada gambar pemodelan data konseptual (class diagram) di atas. Tabel pelangganberhubungan dengan pesan, pesan dengan barang, dsb.
Inner Join
Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data yang NULL di satu sisi. Sebagai contoh, kita akan menggabungkantabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi).
Cara 1 : Penggabungan dengan WHERE
Bentuk umum
SELECT tabel1.*, tabel2.* FROM tabel1, tabel2 WHERE tabel1.PK=tabel2.FK;
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
SELECT pel anggan. i d_pel anggan, pel anggan. nm_pel anggan, pesan. i d_pesan, pesan. t gl _pesan FROM pel anggan, pesan WHEREpel anggan. i d_pel anggan=pesan. i d_pel anggan;
Cara 2 : Penggabungan dengan INNER JOIN
Bentuk umum
Page32 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SELECT t abel 1. * , t abel 2. * FROM t abel 1 I NNER JOI N t abel 2 ON t abel 1. PK=t abel 2. FK;
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
SELECT pel anggan. i d_pel anggan, pel anggan. nm_pel anggan, pesan. i d_pesan, pesan. t gl _pesan FROM pel anggan I NNER JOI N pesan ONpel anggan. i d_pel anggan=pesan. i d_pel anggan;
Contoh lain :
SELECT
pesan. i d_pesan,
pesan. i d_pel anggan,
det i l _pesan. i d_pr oduk,
det i l _pesan. j uml ah
FROM
det i l _pesan
I NNER JOI N pesan ON ( det i l _pesan. i d_pesan = pesan. i d_pesan)
Contoh lain :
SELECT
pesan. i d_pesan,
pesan. i d_pel anggan,
pesan. t gl _pesan,
f akt ur . i d_f akt ur ,
f akt ur . t gl _f akt ur
FROM
f akt ur
I NNER JOI N pesan ON ( f akt ur . i d_pesan = pesan. i d_pesan)
Contoh lain :
SELECT
f akt ur . i d_f akt ur ,
f akt ur . t gl _f akt ur ,
kui t ansi . i d_kui t ansi ,
kui t ansi . t gl _kui t ansi
FROM
kui t ansi
I NNER JOI N f akt ur ON ( kui t ansi . i d_f akt ur = f akt ur . i d_f akt ur )
Contoh menggunakan tiga buah tabel
SELECT
pesan. i d_pesan,
Page33 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
pesan. t gl _pesan,
pr oduk. nm_pr oduk,
pr oduk. har ga,
det i l _pesan. j uml ah
FROM
det i l _pesan
I NNER JOI N pesan ON ( det i l _pesan. i d_pesan = pesan. i d_pesan)
I NNER JOI N pr oduk ON ( det i l _pesan. i d_pr oduk = pr oduk. i d_pr oduk)
Contoh lain :
SELECT
pesan. i d_pesan,
pel anggan. nm_pel anggan,
pel anggan. t el epon,
pesan. t gl _pesan,
det i l _pesan. j uml ah
FROM
det i l _pesan
I NNER JOI N pesan ON ( det i l _pesan. i d_pesan = pesan. i d_pesan)
I NNER JOI N pel anggan ON ( pesan. i d_pel anggan = pel anggan. i d_pel anggan)
Contoh lain :
SELECT
pesan. i d_pesan,
f akt ur . i d_f akt ur ,
kui t ansi . i d_kui t ansi ,
f akt ur . t gl _f akt ur ,
kui t ansi . t gl _kui t ansi
FROM
kui t ansi
I NNER JOI N f akt ur ON ( kui t ansi . i d_f akt ur = f akt ur . i d_f akt ur )
I NNER JOI N pesan ON ( f akt ur . i d_pesan = pesan. i d_pesan)
Contoh : perintah INNER JOIN dengan sebuah kriteria
SELECT
pel anggan. nm_pel anggan,
pel anggan. t el epon,
pesan. t gl _pesan
FROM
pesan
I NNER JOI N pel anggan ON ( pesan. i d_pel anggan = pel anggan. i d_pel anggan)
Page34 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
WHERE pesan. t gl _pesan > ' 2011- 3- 3'
Latihan
1. Buatlah kode SQL yang berbeda yang meng-QUERY data dari 2 tabel2. Tambahkanlah pada kode tersebut berupa kriteria3. Tambahkanlah kriterianya lebih dari satu buah (dapat menggunakan AND dan OR)
OUTER JOIN
Dengan outer join, tabel akan digabungkan satu arah, sehingga memungkinkan ada data yang NULL (kosong) di satu sisi. Sebagai contoh, kita akanmenggabungkan tabel pelanggan dan pesan dimana kita akan menampilkan daftar pelanggan yang pernah melakukan pemesanan (transaksi).Outer Join terbagi menjadi 2 (dua) yaitu LEFT JOIN dan RIGHT. Berikut ini bentuk umum dan contohnya:
LEFT JOIN
Bentuk umum
SELECT t abel 1. * , t abel 2. *
FROM t abel 1 LEFT JOI N t abel 2
ON t abel 1. PK=t abel 2. FK;
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
SELECT pel anggan. i d_pel anggan, pel anggan. nm_pel anggan,
pesan. i d_pesan, pesan. t gl _pesan
FROM pel anggan LEFT JOI N pesan
ON pel anggan. i d_pel anggan=pesan. i d_pel anggan;
Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan menampilkan juga data pelanggan dengan id P0003, walaupun pelanggantersebut belum pernah bertransaksi. Dan pada kolom id_pesan dan tgl_pesan untuk pelanggan P0003 isinya NULL, artinya di tabel kanan (pesan)pelanggan tersebut tidak ada.
RIGHT JOIN
Bentuk umum
SELECT t abel 1. * , t abel 2. *
FROM t abel 1 RI GHT JOI N t abel 2
ON t abel 1. PK=t abel 2. FK;
Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:
SELECT pel anggan. i d_pel anggan, pel anggan. nm_pel anggan, pesan. i d_pesan, pesan. t gl _pesan FROM pel anggan RI GHT JOI N pesan
ON pel anggan. i d_pel anggan=pesan. i d_pel anggan;
Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel pesan), jadi semua isi tabel pesan akan ditampilkan. Jika datapelanggan tidak ada di tabel pelanggan, maka isi tabel pesan tetap ditampilkan.
Pengelompokkan Hasil Query dengan GROUP BY
Hasil query terkadang perlu dikelompokkan berdasarkan kriteria atau kondisi tertentu. Misalnya kita akan menampilkan jumlah barang yangdibeli untuk masing-masing transaksi (pemesanan). Perhatikan perintah query berikut ini dan lihat hasilnya:
Page35 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SELECT pesan. i d_pesan, pesan. t gl _pesan, det i l _pesan. j uml ah
FROM pesan, det i l _pesan WHERE pesan. i d_pesan=det i l _pesan. i d_pesan;
Jika kita perhatikan hasil perintah query di atas, kita akan mendapatkan jumlah barang yang terjadi untuk setiap transaksi, namun hasiltampilannya masih per-barang. Artinya jumlah yang ditampilkan masih berupa jumlah barang untuk masing-masing barang. Agar jumlah barangditampilkan per-transaksi (pemesanan), maka kita dapat menggunakan fungsi GROUP BY dan juga SUM untuk menjumlahkan jumlah barang.Berikut ini perintah query dengan group by dan count.
SELECT pesan. i d_pesan, pesan. t gl _pesan, SUM( det i l _pesan. j uml ah) as j uml ah
FROM pesan, det i l _pesan
WHERE pesan. i d_pesan=det i l _pesan. i d_pesan
GROUP BY i d_pesan;
Selain hasil di atas, kita juga dapat menggunakan tambahan WITH ROLLUP di belakang group by untuk menampilkan jumlah total seluruhbarang. Berikut ini perintah query dan hasilnya:
SELECT pesan. i d_pesan, pesan. t gl _pesan, SUM( det i l _pesan. j uml ah) as j uml ah
FROM pesan, det i l _pesan
WHERE pesan. i d_pesan=det i l _pesan. i d_pesan
GROUP BY i d_pesan WI TH ROLLUP;HAVING
Perintah query berikut ini akan menampilkan jumlah item (jenis) barang untuk tiap transaksi.
SELECT pesan. i d_pesan, COUNT( det i l _pesan. i d_pr oduk) as j uml ah
FROM pesan, det i l _pesan
WHERE pesan. i d_pesan=det i l _pesan. i d_pesan
GROUP BY pesan. i d_pesan
Dari hasil query di atas tampak bahwa ditampilkan jumlah item barang untuk semua transaksi. Selanjutnya bagaimana jika kita ingin hanyamenampilkan data yang jumlah item barangnya lebih dari 2 (dua)? Mungkin kita langsung berfikir untuk menggunakan WHERE seperti perintahquery sebagai berikut:
SELECT pesan. i d_pesan, COUNT( det i l _pesan. i d_pr oduk) as j uml ah
FROM pesan, det i l _pesan
WHERE pesan. i d_pesan=det i l _pesan. i d_pesan
AND j uml ah > 2
GROUP BY pesan. i d_pesan
Hal tersebut terjadi karena kondisi dalam WHERE tidak dapat diterapkan pada fungsi agregrasi seperti COUNT, SUM, AVG dll. Untuk menyeleksisuatu fungsi agregasi, kita tidak dapat menggunakan WHERE, namun kita dapat menggunakan HAVING. Berikut ini perintah query yangmenggunakan HAVING:
SELECT pesan. i d_pesan, COUNT( det i l _pesan. i d_pr oduk) as j uml ah
FROM pesan, det i l _pesan
WHERE pesan. i d_pesan=det i l _pesan. i d_pesan
GROUP BY pesan. i d_pesan
HAVI NG j uml ah > 2
Page36 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SubSELECT
Perintah SubSELECT memiliki banyak variasi. Berikut ini beberapa variasi bentuk perintah SubSELECT.
SELECT . . . WHERE col =[ ANY| ALL] ( SELECT . . . ) ;
SELECT . . . WHERE col [ NOT] I N ( SELECT . . . ) ;
SELECT ROW( val 1, val 2, . . ) =[ ANY] ( SELECT col 1, col 2, . . ) ;
SELECT . . . WHERE col = [ NOT] EXI STS ( SELECT . . . ) ;
SELECT . . . FROM ( SELECT . . . ) AS name WHERE . . . ;
Dan berikut ini beberapa contoh perintah query yang menggunakan SubSELECT.
• Menampilkan daftar pelanggan yang pernah melakukan transaksi(pemesanan).
SELECT i d_pel anggan, nm_pel anggan FROM pel anggan
WHERE i d_pel anggan I N ( SELECT i d_pel anggan FROM pesan) ;
Menampilkan data pemesanan dengan jumlah barang terbanyak.
SELECT i d_pesan, j uml ah FROM det i l _pesan
WHERE j uml ah = ( SELECT MAX( j uml ah) FROM det i l _pesan) ;BAB VI
FUNGSI-FUNGSI MYSQL
Tujuan Kompetensi Khusus
1. Fungsi String2. Fungsi Tanggal dan Waktu3. Fungsi Numerik4. Fungsi Lainnya
Fungsi String
MySQL memiliki banyak sekali fungsi yang berhubungan dengan operasi String. Berikut ini beberapa fungsi string yang disediakan MySQL.
CONCAT ( st r 1, st r 2, . . . )
Fungsi ini digunakan untuk menggabungkan dua atau lebih string (kolom). Sebagai contoh, misalnya akan menggabungkan kolom alamat dantelepon pada tabel pelanggan menjadi sebuah kolom:
SELECT nm_pel anggan, CONCAT( al amat , ' ' , t el epon)
FROM pel anggan;
CONCAT_WS (separator, str1, str2, ...)
Fungsi ini digunakan untuk menggabungkan dua atau lebih string (kolom) dengan separator diantara masing-masing string. Contoh:
SELECT CONCAT_WS ( ' , ' , ' Adi ' , ' I da' , ' Edi ' ) ;
SUBSTR (string, awal, panjang)
SUBSTRING (string, awal, panjang)
SUBSTRING (string FROM awal FOR panjang)
Page37 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
MID (string, awal, panjang)
Fungsi ini digunakan untuk mengambil atau memotong string dimulai dari karakter awal sebanyak panjang karakter. Sebagai catatan bahwa diMySQL, index string dimulai dengan 1, bukan 0. Contoh:
SELECT SUBSTRI NG ( ' Budi Luhur ' , 1, 4) ;
Hasil keluarannya:
Budi
LENGTH (string)
OCTET_LENGTH (string)
CHAR_LENGTH (string)
CHARACTER_LENGTH (string)
Fungsi ini digunakan untuk menghitung panjang suatu string. Contoh:
SELECT LENGTH ( ' Budi Luhur ' ) ;
Hasil keluarannya:
5
LEFT (string, panjang)
Fungsi ini digunakan untuk memotong string dari sebelah kiri sebanyak panjang karakter. Contoh:
SELECT LEFT ( ' Budi Luhur ' , 4) ;
Hasil keluarannya:
Budi
RIGHT (string, panjang)
Fungsi ini digunakan untuk memotong string dari sebelah kanan sebanyak panjang karakter. Contoh:
SELECT RI GHT ( ' Budi Luhur ' , 4) ;
Hasil keluarannya:
Uhur
LTRIM (string)
Fungsi ini digunakan untuk menghilangkan spasi di awal string (kiri). Contoh:
SELECT LTRI M ( ' Budi Luhur ' ) ;
Hasil keluarannya:
Budi Luhur
RTRIM (string)
Fungsi ini digunakan untuk menghilangkan spasi di akhir string (kanan). Contoh:
SELECT RTRI M ( ' Budi Luhur ' ) ;
Hasil keluarannya:
Budi Luhur
TRIM (string)
Fungsi ini digunakan untuk menghilangkan spasi di awal dan akhir string (kiri dan kanan). Contoh:
Page38 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SELECT TRI M ( ' Budi Luhur ' ) ;
Hasil keluarannya:
Budi Luhur
REPLACE (string, from_str, to_str)
Fungsi ini digunakan untuk mengganti suatu string dengan string yang lain. Contoh:
SELECT REPLACE ( ' www. mysql . com' , ' w' , ' x' ) ;
Hasil keluarannya:
xxx. mysql . com
REPEAT (string, jumlah)
Fungsi ini digunakan untuk menduplikasi suatu string sebanyak jumlah. Contoh:
SELECT REPEAT ( ' Mont ' , 3) ;
Hasil keluarannya:
Mont Mont Mont
REVERSE (string)
Fungsi ini digunakan untuk membalik string. Contoh:
SELECT REVERSE ( ' mysql . com' ) ;
LCASE (string)
LOWER (string)
Fungsi ini digunakan untuk mengubah string menjadi huruf kecil (lowercase). Contoh:
SELECT LOWER ( ' MySQL' ) ;
Hasil keluarannya:
Mysql
UCASE (string)
UPPER (string)
Fungsi ini digunakan untuk mengubah string menjadi huruf kapital (uppercase). Contoh:
SELECT UPPER ( ' mysql ' ) ;
Hasil keluarannya:
MYSQL
Fungsi Tanggal dan Waktu
Selain fungsi string, MySQL juga memiliki fungsi-fungsi yang berhubungan dengan operasi tanggal dan waktu (date and time). Berikut inibeberapa fungsi tanggal dan waktu yang disediakan MySQL.
NOW ()
SYSDATE()
Fungsi ini digunakan untuk mendapatkan tanggal dan waktu system sekarang Contoh:
SELECT NOW( ) ;
Page39 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Hasil keluarannya:
2008- 02- 19 20: 00: 31
MONTH (tanggal)
Fungsi ini digunakan untuk mendapatkan urutan bulan (integer) dari suatu tanggal yang diberikan dalam setahun, dimana 1=Januari, 2=Februari,dst. Contoh:
SELECT MONTH ( ‘ 1982- 06- 05’ ) ;
Hasil keluarannya:
6
WEEK (tanggal)
Fungsi ini digunakan untuk mendapatkan urutan minggu (integer) dari suatu tanggal yang diberikan dalam setahun. Contoh:
SELECT WEEK ( ‘ 1982- 06- 05’ ) ;
Hasil keluarannya:
22
YEAR (tanggal)
Fungsi ini digunakan untuk mendapatkan bilangan tahun dari suatu tanggal yang diberikan. Contoh:
SELECT YEAR ( now( ) ) ;
HOUR (waktu)
Fungsi ini digunakan untuk mendapatkan bilangan jam dari suatu parameter waktu yang diberikan. Contoh:
SELECT HOUR ( now( ) ) ;
Hasil keluarannya:
20
MINUTE (waktu)
Fungsi ini digunakan untuk mendapatkan bilangan menit dari suatu parameter waktu yang diberikan. Contoh:
SELECT MI NUTE ( now( ) ) ;
Hasil keluarannya:
8
SECOND (waktu)
Fungsi ini digunakan untuk mendapatkan bilangan detik dari suatu waktu yang diberikan. Contoh:
SELECT SECOND ( now( ) ) ;
Hasil keluarannya:
53
DATE_ADD(date,INTERVAL expr type)
DATE_SUB(date,INTERVAL expr type)
ADDDATE(date,INTERVAL expr type)
SUBDATE(date,INTERVAL expr type)
Page40 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Fungsi-fungsi diatas digunakan untuk menambah suatu tanggal. Contoh:
SELECT DATE_ADD( now( ) , I NTERVAL 1 DAY) ;
Hasil keluarannya:
2011- 02- 20 20: 12: 17
DATE_FORMAT(date, format)
Fungsi ini digunakan untuk mem-format tampilan tanggal.
TIME_FORMAT(time, format)
Fungsi ini digunakan untuk mem-format tampilan waktu.
Berikut ini format tampilan tanggal dan waktu, dan penggunaannya:
%M : Nama bulan (January ... December)
%W : Nama hari dalam seminggu (Sunday...Saturday)
%D : Urutan hari dalam sebulan
%Y : Tahun, 4 digit
%y : Tahun, 2 digit
%a : Nama hari dalam seminggu (Sun...Saturday)
%H : Jam, dalam format 24.
%i : Menit, 00-59
%s : Detik, 00-59
SELECT DATE_FORMAT ( now( ) , ' %d- %M- %Y %H: %i : %s' ) ;
Fungsi Numerik
MySQL memiliki fungsi-fungsi yang berhubungan dengan operasi numerik, berikut ini contohnya:
OPERASI ARITMATIKA
Operasi aritmatika dalam MySQL terdiri dari:
+ : Pertambahan
- : Pengurangan
* : Perkalian
/ : Pembagian
% : Sisa hasil bagi, modulus
Contoh penggunaan:
SELECT 10+20;
Hasil keluarannya:
30
SELECT 10/ 3;
Hasil keluarannya:
Page41 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
3. 3333
ABS(x)
Fungsi digunakan untuk mengambil nilai absolut dari bilangan x. Contoh:
SELECT ABS( - 20) ;
Hasil keluarannya:
20
MOD(m, n)
Fungsi digunakan untuk mengoperasikan m modulus n. Contoh:
SELECT MOD( 10, 3) ;
Hasil keluarannya:1
FLOOR(x)
Fungsi digunakan untuk mengambil nilai integer terbesar yang tidak lebih besar dari x. Contoh:
SELECT FLOOR( 10. 3576) ;
Hasil keluarannya:
10
CEILING(x)
Fungsi digunakan untuk mengambil nilai integer terkecil yang tidak lebih kecil dari x. Contoh:
SELECT CEI LI NG( 10. 3576) ;
Hasil keluarannya:
11
ROUND(x)
ROUND(x, d)
Fungsi digunakan untuk melakukan pembulatan bilangan x sebanyak d tempat presisi. Contoh:
SELECT ROUND( 10. 3576, 2) ;
Hasil keluarannya:
10. 36
POW(x)
POWER(x, n)
Fungsi digunakan untuk melakukan mengambil hasil pemangkatan dari xn Contoh:
SELECT POW( 2, 10) ;
Hasil keluarannya:
1024
RAND()
RAND(x)
Fungsi digunakan untuk mengambil nilai random diantara 0 s/d 1.0. Contoh:
Page42 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
SELECT RAND( ) ;
Hasil keluarannya:
0. 96589817662341
TRUNCATE(x, d)
Fungsi digunakan untuk memotong bilangan x sepanjang d tempat desimal. Contoh:
SELECT TRUNCATE( 10. 28372, 1) ;
Hasil keluarannya:
10. 2
Fungsi Lainnya
Selain fungsi yang berhubungan dengan string, date-and-time, dan numeric MySQL juga memiliki fungsi-fungsi khusus, diantaranya :
GREATEST(nil1, nil2, ...)
Fungsi digunakan untuk mengambil nilai terbesar dari suatu kumpulan nilai. Contoh:
SELECT GREATEST( 2, 5, 2, 6, 3, 7, 4, 2, 5, 1) ;
Hasil keluarannya:
7
COUNT(range)
Fungsi digunakan untuk mengambil jumlah baris dari suatu query. Contoh:
SELECT COUNT( * ) FROM pel anggan;
Hasil keluarannya:
5
MAX(range)
Fungsi digunakan untuk mengambil nilai terbesar dari suatu ekspresi (query). Contoh:
SELECT MAX( ni l ai ) FROM ni l ai _uj i an;
MIN(range)
Fungsi digunakan untuk mengambil nilai terkecil dari suatu ekspresi (query).
Contoh:
SELECT MI N( ni l ai ) FROM ni l ai _uj i an;
Hasil keluarannya:
40
SUM(range)
Fungsi digunakan untuk menjumlahkan total nilai dari suatu ekspresi (query). Contoh:
SELECT SUM( ni l ai ) FROM ni l ai _uj i an;
Hasil keluarannya:
450
Page43 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
AVG(range)
Fungsi digunakan untuk menghitung rata-rata nilai dari suatu ekspresi (query). Contoh:
SELECT AVG( ni l ai ) FROM ni l ai _uj i an;
Hasil keluarannya:
78
DATABASE()
Fungsi digunakan untuk mengambil nama database yang sedang aktif (terbuka). Contoh:
SELECT DATABASE( ) ;
Hasil keluarannya:
Penj ual an
USER()
SYSTEM_USER()
SESSION_USER()
Fungsi digunakan untuk mengambil user yang sedang digunakan (aktif). Contoh:
SELECT USER( ) ;
Hasil keluarannya:
r oot @l ocal host
PASSWORD(str)
Fungsi digunakan untuk melakukan enkripsi suatu string. Sifat utama dari fungsi password() ini adalah hasilnya selalu sama untuk setiap stringyang sama. String hasil dari fungsi password() tidak dapat di-decript (decode). Biasanya fungsi ini digunakan untuk menyimpan password login.Contoh:
SELECT PASSWORD( ' qwer t y' ) ;
Hasil keluarannya:
* AA1420F182E88B9E5F874F6FBE7459291E8F4601
ENCODE(str, pass)
Fungsi digunakan untuk melakukan enkripsi suatu string str menggunakan password atau key pass. Contoh:
SELECT ENCODE( ' qwer t y' , ' passwor d' ) ;
Hasil keluarannya:
câ┬♠e|
DECODE(encripted_str, pass)
Fungsi digunakan untuk melakukan dekripsi suatu string encripted_str menggunakan password atau key pass. Jika passwordnya benar,makastring aslinya akan benar. Contoh:
SELECT DECODE( ' câ┬♠e| ' , ' passwor d' ) ;
Hasil keluarannya:
Qwer t y
Page44 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Contoh dengan password salah:
SELECT DECODE( ' câ┬♠e| ' , ' ngasal ' ) ;
Hasil keluarannya:
WkΦPH:
MD5(str)
Fungsi digunakan untuk melakukan enkripsi suatu string str menggunakan metode md5. Fungsi ini juga tidak dapat didekripsi. Contoh:
SELECT MD5( ' qwer t y' ) ;
Hasil keluarannya:
d8578edf 8458ce06f bc5bb76a58c5ca4
LAST_INSERT_ID()
Fungsi digunakan untuk mengambil id terakhir dalam proses insert dimana tabelnya mengandung field yang bersifat AUTO INCREMENT.Contoh:
SELECT LAST_I NSERT_I D( ) ;
Hasil keluarannya:
231
VERSION()
Fungsi digunakan untuk mengambil versi MySQL yang digunakan. Contoh:
SELECT VERSI ON( ) ;
Hasil keluarannya:
5. 0. 45- communi t y- nt
BAB VIIVIEW
Tujuan Kompetensi Khusus
1. Create view2. Alter view3. Drop view
View
View adalah tabel virtual, yang beroperasi layaknya tabel tetapi tidak berisikan data. View adalah hasil dari perintah SELECT. View tediri dari
Page45 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
kolom dan baris dari satu atau lebih tabel. View adalah QUERY yang disimpan menjadi sebuah objek. Dengan menggunakan View kita dapatmemastikan keamanan data dengan menerapkan pembatasan pada pengaksesan data seperti di bawah ini:
1. Kolom/Field pada tabel tertentu.2. Baris/Record pada tabel tertentu.3. Field dan Record pada tabel tertentu.4. Turunan dari view lain.5. Record menggunakan operasi join.6. Data statistik dari tabel.
Create View
Perintah CREATE VIEW digunakan untuk membuat sebuah view pada sebuah database. Syntak membuat view :
CREATE VI EW vi ew_name[ ( col umn_l i st ) ] [ WI TH ENCRYPTI ON] AS sel ect _st at ement [ WI TH CHECK OPTI ON]
View_name adalah nama view yang akan dibuat. Column_list mendefinisikan field yang akan digunakan dalam view. Column_list harus memilikijumlah field yang sama dengan yang didefinisikan pada select_statement. Jika column_list tidak ada maka view dibuat berdasarkan field yangdidefinisikan pada select_statement. With Encryption adalah opsi untuk menambahkan enkripsi pada view. AS berisi perintah yang digunakanuntuk membuat view.
Contoh
Cara membaca data pada sebuah tabel
SELECT * FROM PELANGGAN
SELECT * FROM PRODUCT
Create view statement
CREATE VI EW V_PELANGGAN AS SELECT * FROM PELANGGAN
Cara memanggil view :
SELECT * FROM V_PELANGGAN
Kita dapat memfilter data hasil dari pemanggilan VIEW menggunakan klausa WHERE
SELECT * FROM V_PELANGGAN WHERE ALAMAT = ‘ BANDUNG’
Alter view statement
Dengan menggunakan ALTER VIEW kita dapat merubah definisi dari sebuah view. Perintah ini digunakan untuk merubah VIEW tanpa harusmenghapusnya dan membuat yang baru. Syntak ALTER VIEW hampir sama dengan syntak CREATE VIEW. Syntak merubah view :
ALTER VI EW vi ew_name[ ( col umn_l i st ) ] [ WI TH ENCRYPTI ON] AS sel ect _st at ement [ WI TH CHECK OPTI ON]
ALTER VI EW V_PELANGGAN AS SELECT * FROM PELANGGAN WHERE ALAMAT =’ BANDUNG’
Cara memanggil view :
SELECT * FROM V_PELANGGAN
Drop view statement
Untuk menghapus objek view, dapat digunakan perintah DROP VIEW. Ketika VIEW dihapus maka tidak akan berpengaruh pada tabel referensi
Page46 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
untuk view yang dibuat. Dengan menghapus tabel yang digunakan untuk referensi objek view tidak akan menghapus objek VIEW. Objek viewharus dihapus secara eksplisit. Syntak untuk menghapus view :
DROP VI EW vi ew_name
Contoh:
DROP VI EW V_PELANGGAN
Latihan
1. Buat view untuk menampilkan data produk!2. Buat view untuk menampilkan data pesan dan pelanggan menggunakan perintah join!3. Modifikasi kedua view yang telah dibuat tersebut!4. Hapus kedua view tersebut!
BAB VIIISTORED PROCEDURE DAN FUNCTION
Tujuan Kompetensi Khusus
1. Membuat procedure2. Memodifikasi procedure3. Membuat function
Function dan Stored Procedure merupakan fitur utama yang paling pentingdi MySQL 5. Function dan Stored Procedure merupakan suatukumpulan perintah atau statement yang disimpan dan dieksekusi di server database MySQL. Dengan SP (Stored Procedure), kita dapat menyusunprogram sederhana berbasis sintaks SQL untuk menjalankan fungsi tertentu. Hal ini menjadikan aplikasi yang kita buat lebih efektif dan efisien.
Berikut ini beberapa keuntungan menggunakan Stored Procedure:
Lebih cepat. Hal ini karena kumpulan perintah query dijalankan langsung diserver. Berbeda dengan jika dijalankan secara sekuensial dibahasapemrograman, akan lebih lambat karena harus “bolak-balik” antara client danserver.
Menghilangkan duplikasi proses, pemeliharaan yang mudah. Padadasarnya operasi yang terjadi di suatu aplikasi terhadap databaseadalahsama. Secara umum, di dalam aplikasi biasanya terdapat operasi untukvalidasi data inputan, menambahkan record baru, mengubahrecord,menghapus record dan sebagainya. Dengan SP, mungkin kita dapatmenghindari adanya duplikasi proses yang kurang lebih sama,sehinggapemeliharaannya juga jadi lebih mudah.
Meningkatkan keamanan database. Dengan adanya SP, database akanlebih aman karena aplikasi yang memanggil SP tidak perlumengetahui isi didalamnya. Sebagai contoh, dalam proses menambahkan data (insert), kitamembuat suatu SP khusus. Dengan demikian, saatclient atau aplikasi akanmenambahkan data (insert) maka tidak perlu tahu nama tabelnya, karenahanya cukup memanggil SP tersebut denganmengirimkan parameter yangdiinginkan.
Hello World!
Sebagai contoh sederhana, kita akan membuat suatu SP yang akan menampilkan string “Hello World!” di layar hasil. Berikut ini perintah queryuntuk membuat SP tersebut:
CREATE PROCEDURE hel l o( )
BEGI N
SELECT "Hel l o Wor l d! " ;
END
Page47 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Untuk memanggil procedure tersebut, gunakanlah CALL. Berikut ini contoh pemanggilan procedure dan hasil tampilannya:
CALL hel l o( ) ;
Membuat, Mengubah dan Menghapus SP
Membuat SP
Untuk membuat SP baru, berikut ini bentuk umumnya:
CREATE
[ DEFI NER = { user | CURRENT_USER } ]
PROCEDURE sp_name ( [ pr oc_par amet er [ , . . . ] ] )
[ char act er i st i c . . . ] r out i ne_body
CREATE
[ DEFI NER = { user | CURRENT_USER } ]
FUNCTI ON sp_name ( [ f unc_par amet er [ , . . . ] ] )
RETURNS t ype
[ char act er i st i c . . . ] r out i ne_body
Contoh 1. Procedure untuk menghitung jumlah pelanggan
CREATE PROCEDURE j uml ahPel anggan( )
BEGI N
SELECT COUNT( * ) FROM pel anggan;
END
Cara pemanggilan dari procedure diatas adalah dengan menggunakan CALL jumlahPelanggan(). Hasilnya akan ditampilkan jumlah record daritabelpelanggan. Berikut ini bentuk lain dari contoh diatas:
CREATE PROCEDURE j uml ahPel anggan2( OUT hasi l AS I NT)
BEGI N
SELECT COUNT( * ) I NTO hasi l FROM pel anggan;
END
Pada bentuk procedure yang kedua di atas (jumlahPelanggan2), kita menyimpan hasil dari procedure ke dalam satu variabel bernama hasil yangbertipe INT. Perbedaan dari kedua bentuk di atas adalah, pada bentuk kedua, kita dapat memanggil procedure dengan SELECT, sedangkan padayang pertama tidak bisa. Berikut ini contoh pemanggilan untuk procedure yang kedua:
mysql > CALL j uml ahPel anggan2( @j uml ah) ;
Quer y OK, 0 r ows af f ect ed ( 0. 00 sec)
mysql > SELECT @j uml ah AS ` Juml ah Pel anggan` ;
Contoh 2. Procedure untuk menghitung jumlah item barang yang pernah dibeli oleh satu pelanggan.
CREATE PROCEDURE
j uml ahI t emBar ang ( pel anggan VARCHAR( 5) )
BEGI N
SELECT SUM( det i l _pesan. j uml ah)
FROM pesan, det i l _pesan
WHERE pesan. i d_pesan=det i l _pesan. i d_pesan
Page48 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
AND pesan. i d_pel anggan=pel anggan;
END
Contoh 3. Function untuk menghitung jumlah produk yang tersedia (stock) untuk satu produk tertentu.
CREATE FUNCTI ON j uml ahSt ockBar ang( pr oduk VARCHAR( 5) )
RETURNS I NT
BEGI N
DECLARE j uml ah I NT;
SELECT COUNT( * ) I NTO j uml ah FROM pr oduk
WHERE i d_pr oduk=pr oduk;
RETURN j uml ah;
END
Untuk memanggil suatu function, kita tidak menggunakan CALL, tetapi langsung dapat memanggil dengan SELECT. Berikut ini contohpemanggilan untuk fungsi di atas.
SELECT j uml ahSt ockBar ang( ' B0001' ) ;
Mengubah SP
Untuk mengubah SP yang sudah ada, berikut ini bentuk umumnya:
ALTER { PROCEDURE | FUNCTI ON} sp_name [characteristic ...]
Menghapus SP
Untuk menghapus SP yang sudah ada, berikut ini bentuk umumnya:
DROP { PROCEDURE | FUNCTI ON} [ I F EXI STS] sp_name
Sintaks Dasar dalam SP
SP dapat dikatakan sebagai bahasa pemrograman yang berada di dalam database. Oleh karena itu, tentunya terdapat sintaks-sintaks tertentuberhubungan dengan SP tersebut, misalnya bagaimana untuk mendeklarasikan variabel, penyeleksian kondisi, perulangan dsb. Pada bagian iniakan diuraikan beberapa sintaks dasar SP yang didukung oleh MySQL.
Variabel
Variabel digunakan untuk menyimpan suatu nilai secara temporer (sementara) di memory. Variabel akan hilang saat sudah tidak digunakan lagi.Variabel dalam MySQL sebelum dapat digunakan, pertama kali harus dideklarasikan terlebih dahulu. Berikut ini bentuk umum pendeklarasiansuatu variabel di MySQL:
DECLARE var i abl e_name DATATYPE [ DEFAULT val ue] ;
Contohnya:
DECLARE j uml ah I NT;
DECLARE kode VARCHAR( 5) ;
DECLARE t gl _l ahi r DATE DEFAULT ‘ 1982- 10- 20’ ;
Setelah dideklarasikan, suatu variabel dapat diisi dengan suatu nilai sesuai dengan tipe data yang didefinisikan saat pendeklarasian. Untukmengisikan nilaike dalam suatu variabel, digunakan perintah SET. Format umumnya sebagai berikut:
SET var i abl e_name = expr essi on| val ue;
Page49 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Contohnya:
SET j uml ah = 10;
SET kode = ( SELECT i d_pel anggan FROM pel anggan LI MI T 1) ;
SET t gl _l ahi r = now( ) ;
Berikut ini contoh function hitungUmur() untuk menghitung umur seseorang saat ini berdasarkan tahun kelahiran yang diberikan.
CREATE FUNCTI ON hi t ungUmur ( l ahi r DATE)
RETURNS I NT
BEGI N
DECLARE t hn_sekar ang, t hn_l ahi r I NT;
SET t hn_sekar ang = YEAR( now( ) ) ;
SET t hn_l ahi r = YEAR ( l ahi r ) ;
RETURN t hn_sekar ang - t hn_l ahi r ;
END
Penyeleksian Kondisi
Dengan adanya fasilitas penyeleksian kondisi, kita dapat mengatur alur proses yang terjadi dalam database kita. Di MySQL, penyeleksian kondisiterdiri dari IF, IF...ELSE dan CASE. Berikut ini bentuk umum ketiga perintah tersebut:
I F kondi si THEN
per i nt ah- j i ka- benar ;
END I F;
I F kondi si THEN
per i nt ah- j i ka- benar ;
ELSE
per i nt ah- j i ka- sal ah;
END I F;
CASE expr essi on
WHEN val ue THEN
st at ement s
[ WHEN val ue THEN
st at ement s . . . ]
[ ELSE
st at ement s]
END CASE;
Berikut ini contoh penggunaan perintah IF dalam fungsi cekPelanggan() dimana fungsi ini memeriksa apakah pelanggan sudah pernah melakukantransaksi pemesanan barang. Jika sudah pernah, tampilkan pesan berapa kali melakukan pemesanan, jika belum tampilkan pesan belum pernahmemesan.
CREATE FUNCTI ON cekPel anggan ( pel anggan var char ( 5) )
RETURNS VARCHAR ( 100)
BEGI N
DECLARE j uml ah I NT;
SELECT COUNT( i d_pesan) I NTO j uml ah FROM pesan
WHERE i d_pel anggan=pel anggan;
Page50 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
I F ( j uml ah > 0) THEN
RETURN CONCAT( "Anda sudah ber t r ansaksi sebanyak " ,
j uml ah, " kal i " ) ;
ELSE
RETURN "Anda bel um per nah mel akukan t r ansaksi " ;
END I F;
END
Dan berikut ini contoh penggunaan perintah CASE dalam fungsi getDiskon() dimana fungsi ini menentukan diskon berdasarkan jumlah pesananyang dilakukan.
CREATE FUNCTI ON get Di skon( j uml ah I NT) RETURNS i nt ( 11)
BEGI N
DECLARE di skon I NT;
CASE
WHEN ( j uml ah >= 100) THEN
SET di skon = 10;
WHEN ( j uml ah >= 50 AND j uml ah < 100) THEN
SET di skon = 5;
WHEN ( j uml ah >= 20 AND j uml ah < 50) THEN
SET di skon = 3;
ELSE SET di skon = 0;
END CASE;
RETURN di skon;
END
Perulangan
Selain penyeleksian kondisi, MySQL juga mendukung adanya perulangan dalam querynya. Perulangan biasanya digunakan untuk mengulangproses atau perintah yang sama. Dengan perulangan, perintah akan lebih efisien dan singkat. Berikut ini bentuk-bentuk perintah perulangan:
[label:] LOOP statements
END LOOP [ l abel ] ;
[ l abel : ] REPEAT
st at ement s
UNTI L expr essi on
END REPEAT [ l abel ]
[ l abel : ] WHI LE expr essi on DO
st at ement s
END WHI LE [ l abel ]
Contoh perulangan dengan LOOP
SET i =1;
ul ang: WHI LE i <=10 DO
I F MOD( i , 2) <>0 THEN
SELECT CONCAT( i , " adal ah bi l angan ganj i l " ) ;
Page51 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
END I F;
SET i =i +1;
END WHI LE ul ang;
BAB IXTRIGGER
Tujuan Kompetensi Khusus
1. Membuat Trigger2. Menghapus Trigger
Trigger
Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atauDELETE dari suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan secara otomatis ke tabel ‘log’ sebelum menghapus data ditabel pelanggan.
Triggers mulai dikenal di versi MySQL 5.0, dan di versi saat ini (5.0.4) fungsionalitasnya sudah bertambah. Pada versi selanjutnya (5.1) pihakpengembang MySQL berjanji akan lebih menguatkan (menambah) fitur trigger ini.
Trigger sering digunakan, antara lain untuk:
Melakukan update data otomatis jika terjadi perubahan. Contohnya adalahdalam sistem penjualan, jika dientri barang baru maka stock akanbertambahsecara otomatis.
Trigger dapat digunakan untuk mengimplementasikan suatu sistem log.Setiap terjadi perubahan, secara otomatis akan menyimpan ke tabellog.
Trigger dapat digunakan untuk melakukan validasi dan verifikasi datasebelum data tersebut disimpan.
Membuat Trigger Baru
Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRI GGER name
[ BEFORE| AFTER] [ I NSERT| UPDATE| DELETE]
ON t abl ename
FOR EACH ROW st at ement
Dimana
BEFORE | AFTER digunakan untuk menentukan kapan proses secara otomatis akan dieksekusi, sebelum atau sesudah proses.
INSERT | UPDATE | DELETE digunakan untuk menentukan event yang dijadikan trigger untuk menjalankan perintah-perintah di dalamtriggers. Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat juga beberapa perintah sekaligus. Jika terdapat beberapaperintah dalam trigger, maka gunakan perintah BEGIN dan END untuk mengawali dan mengakhiri perintah.
Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau sesudah proses dengan menggunakan NEW dan OLD. NEWdigunakanuntuk mengambil record yang akan diproses (insert atau update), sedangkan OLD digunakan untuk mengakses record yang sudahdiproses (update atau delete). Berikut ini contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi proses insert ke tabel pelanggan:
CREATE TRI GGER penj ual an. bef or e_i nser t BEFORE I NSERT ON
Page52 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
penj ual an. pel anggan
FOR EACH ROW BEGI N
I NSERT I NTO ` l og` ( descr i pt i on, ` dat et i me` , user _i d)
VALUES ( CONCAT( ' I nser t dat a ke t abel pel anggan i d_pl g
= ' , NEW. i d_pel anggan) , now( ) , user ( ) ) ;
END;
Menghapus Trigger
Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER dengan diikuti dengan nama tabel dan nama triggernya. Berikut inibentuk umumdan contoh perintah untuk menghapus trigger.
DROP TRIGGER tablename.triggername;
Contoh :
DROP TRI GGER penj ual an. bef or e_i nser t ;
BAB XMENGAKSES MYSQL MELALUI PHP
Tujuan Kompetensi Khusus
1. Membuat aplikasi untuk mengakses MySQL melalui PHP
Untuk mengakses database yang dibuat menggunakan MySQL maka kita dapat menggunakan berbagai macam bahasa pemrograman, salahsatunya adalah menggunakan bahasa pemrograman PHP. Bahasa pemrograman PHP digunakan untuk membuat dan mengembangkan website.Pada umumnya database back-end yang digunakan adalah MySQL. Berikut adalah contoh sintak dasar untuk mengakses database MySQLmenggunakan PHP
Page53 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
<?php
$conn = mysql _connect ( " l ocal host " , " r oot " , "" ) ;
i f ( ! $conn) {
echo "Unabl e t o connect t o DB: " . mysql _er r or ( ) ;
exi t ;
}
i f ( ! mysql _sel ect _db( "penj ual an" ) ) {
echo "Unabl e t o sel ect mydbname: " . mysql _er r or ( ) ;
exi t ;
}
$sql = "SELECT * FROM Pel anggan";
$r esul t = mysql _quer y( $sql ) ;
i f ( ! $r esul t ) {
echo "Coul d not successf ul l y r un quer y ( $sql ) f r om DB: " . mysql _er r or ( ) ;
exi t ;
}
i f ( mysql _num_r ows( $r esul t ) == 0) {
echo "No r ows f ound, not hi ng t o pr i nt so am exi t i ng" ;
exi t ;
}
whi l e ( $r ow = mysql _f et ch_assoc( $r esul t ) ) {
echo $r ow[ " i d_pel anggan"] . " | " ;
echo $r ow[ "nm_pel anggan"] . " | " ;
echo $r ow[ "al amat " ] . " | " ;
echo $r ow[ " t el epon"] . " | " ;
echo $r ow[ "emai l " ] . " | " ;
}
mysql _f r ee_r esul t ( $r esul t ) ;
?>
Page54 of 54
11/22/2012file:///D:/DOCUMENT/Modul%20DBMS.html
Top Related