database management system

52
MODUL MATA KULIAH DATABASE MANAGEMENT SYSTEM Disusun Oleh: Riky Faza, ST. Politeknik PIKSI Ganesha Bandung 2011 Page 1 of 54 11/22/2012 file:///D:/DOCUMENT/Modul%20DBMS.html

Upload: bayugoder

Post on 06-Aug-2015

324 views

Category:

Documents


3 download

DESCRIPTION

modul

TRANSCRIPT

Page 1: Database management system

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

Page 2: Database management system

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

Page 3: Database management system

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

Page 4: Database management system

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

Page 5: Database management system

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

Page 6: Database management system

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

Page 7: Database management system

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

Page 8: Database management system

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

Page 9: Database management system

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

Page 10: Database management system

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

Page 11: Database management system

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

Page 12: Database management system

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

Page 13: Database management system

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

Page 14: Database management system

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

Page 15: Database management system

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

Page 16: Database management system

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

Page 17: Database management system

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

Page 18: Database management system

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

Page 19: Database management system

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

Page 20: Database management system

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

Page 21: Database management system

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

Page 22: Database management system

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

Page 23: Database management system

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

Page 24: Database management system

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

Page 25: Database management system

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

Page 26: Database management system

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

Page 27: Database management system

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

Page 28: Database management system

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

Page 29: Database management system

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

Page 30: Database management system

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

Page 31: Database management system

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

Page 32: Database management system

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

Page 33: Database management system

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

Page 34: Database management system

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

Page 35: Database management system

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

Page 36: Database management system

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

Page 37: Database management system

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

Page 38: Database management system

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

Page 39: Database management system

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

Page 40: Database management system

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

Page 41: Database management system

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

Page 42: Database management system

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

Page 43: Database management system

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

Page 44: Database management system

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

Page 45: Database management system

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

Page 46: Database management system

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

Page 47: Database management system

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

Page 48: Database management system

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

Page 49: Database management system

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

Page 50: Database management system

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

Page 51: Database management system

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

Page 52: Database management system

<?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