0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan65 halaman

Modul Dbms

Modul ini membahas tentang Database Management System (DBMS) dengan fokus pada MySQL, termasuk pengenalan, dasar penggunaan, dan teknik manipulasi data menggunakan SQL. Materi yang diajarkan mencakup pembuatan tabel, pengoperasian data, serta penggunaan fungsi-fungsi bawaan MySQL dan prosedur tersimpan. Tujuan dari perkuliahan ini adalah agar mahasiswa mampu mengelola basis data menggunakan MySQL dan menerapkannya dalam aplikasi nyata.

Diunggah oleh

dadanmulyana78
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
8 tayangan65 halaman

Modul Dbms

Modul ini membahas tentang Database Management System (DBMS) dengan fokus pada MySQL, termasuk pengenalan, dasar penggunaan, dan teknik manipulasi data menggunakan SQL. Materi yang diajarkan mencakup pembuatan tabel, pengoperasian data, serta penggunaan fungsi-fungsi bawaan MySQL dan prosedur tersimpan. Tujuan dari perkuliahan ini adalah agar mahasiswa mampu mengelola basis data menggunakan MySQL dan menerapkannya dalam aplikasi nyata.

Diunggah oleh

dadanmulyana78
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

MODUL

MATA KULIAH
DATABASE MANAGEMENT SYSTEM

Disusun Oleh:
Tim Dosen

Politeknik PIKSI Ganesha


Bandung
2011
Kata Pengantar

MySQL merupakan software database open source yang paling populer


didunia, dimana saat ini digunakan lebih dari 100 juta pengguna di seluruh dunia.
Dengan kehandalan, kecepatan dan kemudahan penggunaannya, MySQL menjadi
pilihan utama bagi banyak pengembang software dan aplikasi baik di platformweb
maupun desktop. Pengguna MySQL tidak hanya sebatas pengguna perseorangan
maupun perusahaan kecil, namun perusahaan 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. Mereka
mengembangkan 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 baik
3. Dasar DDL SQL. Dasar pembuatan objek database dan objek
tabel
4. 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.

Database Management Systen i


D AFTAR I SI
BAB I ................................................................................................................................ 1
PENDAHULUAN .......................................................................................................... 1
Pengenalan Database, DBMS dan RDBMS ............................................................... 1
Beberapa Istilah Database .......................................................................................... 2
Menggunakan MySQL dengan Tool EMS MySQL Manager .................................. 4
Berbagai MySQL Client untuk Administrasi Server MySQL ................................. 5
BAB II .............................................................................................................................. 9
DASAR MYSQL.............................................................................................................. 9
Tipe-tipe Tabel MySQL .............................................................................................. 9
MyISAM ...................................................................................................................... 9
Tipe Tabel yang Lain ................................................................................................ 10
Tipe-tipe Field (Kolom) MySQL .............................................................................. 10
Merancang Database yang Baik............................................................................... 14
BAB III ........................................................................................................................... 16
DASAR DDL SQL......................................................................................................... 16
2. Membuat, Menampilkan, Membuka dan Menghapus Database Membuat
Database..................................................................................................................... 16
BAB IV ........................................................................................................................... 23
DASAR DML SQL ........................................................................................................ 23
Perintah DML ............................................................................................................ 23
Menambah Record dengan INSERT ....................................................................... 23
Mengurutkan record................................................................................................. 27
Pattern ........................................................................................................................ 27
BAB V ............................................................................................................................ 29
DML SQL LANJUT ...................................................................................................... 29
Perintah SELECT dari Banyak Tabel dengan JOIN ............................................... 29
Inner Join ................................................................................................................... 29
OUTER JOIN ............................................................................................................. 31
LEFT JOIN ................................................................................................................. 31

Database Management Systen ii


RIGHT JOIN .............................................................................................................. 32
HAVING .................................................................................................................... 33
SubSELECT................................................................................................................ 33
BAB VI ........................................................................................................................... 35
FUNGSI-FUNGSI MYSQL ........................................................................................... 35
Fungsi String ............................................................................................................. 35
Fungsi Tanggal dan Waktu ...................................................................................... 37
Fungsi Lainnya .......................................................................................................... 40
BAB VII.......................................................................................................................... 43
VIEW ............................................................................................................................. 43
Create View ............................................................................................................... 43
Alter view statement................................................................................................. 44
Drop view statement ................................................................................................ 44
BAB VIII ........................................................................................................................ 45
STORED PROCEDURE DAN FUNCTION................................................................ 45
Membuat SP .............................................................................................................. 46
Mengubah SP ............................................................................................................ 47
Menghapus SP........................................................................................................... 47
Sintaks Dasar dalam SP ............................................................................................ 47
Variabel ...................................................................................................................... 47
Penyeleksian Kondisi ............................................................................................... 48
Perulangan................................................................................................................. 49
BAB IX ........................................................................................................................... 50
TRIGGER ....................................................................................................................... 50
Membuat Trigger Baru ............................................................................................. 50
Menghapus Trigger .................................................................................................. 51
BAB X ............................................................................................................................ 51
MENGAKSES MYSQL MELALUI PHP ..................................................................... 51

Database Management Systen iii


Database Management Systen iv
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 bahasa pemrograman, SQL digunakan untuk
memanipulasi sebuah basis data, bahasa SQL terdiri dari 3 kelompok yaitu, Data
Definition Language, Data Manipulation Language dan Data Control Language.
Materi-materi pokok yang akan dibahas dalam mata kuliah ini antara lain : Sekilas
tentang MySQL, 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 MySQL dalam aplikasi nyata. Backup,
Restore dan Import.

Tujuan Kompetensi Umum


Setelah mengikuti perkuliahan, mahasiswa diharapkan dapat 1) Menjelaskan
pengertian basis data dan MySQL, 2) Menjelaskan penggunaan MySQL Manager
sebagai tool developer, 3) Membuat objek-objek basis data, 4) Memanipulasi data
menggunakan kode SQL, 5) Menggunakan fungsi-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

Database Management Systen iii


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 © 2004
2. MySQL Stored Procedure Programming By Steven Feuerstein,
Guy Harrison Publisher: O'Reilly Pub Date: March 2006
3. Achmatim.Net

Tugas
1. Tugas diberikan setiap pertemuan kuliah dan wajib
dikumpulkan maksimal di pertemuan minggu berikutnya. Dosen
memberikan tugas yang berkaitan langsung dengan materi yang
disampaikan pada saat perkuliahan. Tugas dikumpulkan dengan
cara mengirim email ke alamat email dosen yang bersangkutan.
2. Tugas Akhir wajib dikerjakan per individu, berupa soal
kasus. Contohnya kasus : Perpustakaan. Mahasiswa wajib
merancang database perpustakaan, menggambarkan diagram ERD,
memanipulasi objek dan memanipulasi datanya. Semuanya dalam
bentuk kode SQL. Kode SQL tersebut dapat disalin kedalam file
Ms. Word. Tugas paling terakhir dikumpulkan 2 minggu setelah
UAS.

Penilaian Dan Bobot Penilaian


Penilaian yang diberikan meliputi 4 (empat) komponen, yaitu:

Komponen Bobot
Ujian Tengah Semester 30 %
Ujian Akhir Semester 40 %
Tugas 20 %
Absensi / partisipasi 10 %
Total Bobot semua komponen 100 %

Penilaian akhir merupakan gabungan nilai dari semua komponen tersebut di atas.
Kriteria penilaian yang digunakan adalah:

Angka Mutu Huruf Mutu


80 - 100 A
70 - 79 B
60 - 69 C
50 - 59 D
Database Management Systen iv
0 - 49 E

Kehadiran Dalam Perkuliahan


Kehadiran dalam perkuliahan minimal 10 kali dari 14 kali perkuliahan.

Database Management Systen v


Garis-Garis Besar Program Pembelajaran Berbasis Kompetensi (Yang lama)

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 menggunakan
perkakas Database Management System (DBMS) MySQL sebagai dasar dalam pembuatan aplikasi
lanjut yang berbasis client server maupun web based
Perkiraan Waktu :
Pembelajaran

Database Management System vi


MATERI
ELEMEN KRITERIA UNJUK INDIKATOR UNJUK PEMBELAJARAN PEMBELAJARAN
NO KOMPETENSI KERJA KERJA ALAT
SIKAP PENGETAHUAN KETERAMPILAN METODE
BANTU
1 2 3 4 5 6 7 8 9
1 Mengenal Memahami DBMS Dapat menjelaskan Menggunakan aplikasi Dapat menjelaskan Dapat menggunakan Praktek Kompute
DBMS dan Mengenal MySQL mengenai DBMS dan EMS MySQL Manager DBMS secara umum aplikasi EMS MySQL menggunakan r
EMS MySQL Menggunakan EMS Salah satu Aplikasinya dan Mempelajari lebih serta fungsinya dan Manager untuk aplikasi Modul
Manager MySQL Manager (MySQL) dan dapat dalam mengenai Memahami pengelolaan database
menggunakan EMS DBMS penggunaan EMS
MySQL Manager MySQL Manager
2 Membuat tabel Tabel di buat dengan Dapat membuat Membuat database Dapat menjelaskan Dapat membuat Presentasi Kompute
menggunakan wizard. database dan table pada dan tabel cara pembuatan database dan tabel r
Wizard table merupakan MySQL menggunakan database dan tabel menggunakan kode Membuat Modul
fitur aplikasi untuk kode SQL dan fitur beserta jenis-jenis tipe SQL dan fitur Grafik database dan
membantu membuat grafik pada EMS data tabel
table dengan MySQL Manager
memanfaatkan fasilitas
yang tersedia
Tabel di buat dengan
menggunakan fitur
pembuat table. Fitur
pembuat table
menyediakan kolom
nama field, tipe data dan
deskripsi field
Tabel di buat dengan
menggunakan bahasa
data deskripsi (SQL)
3 Mengisi tabel Pengisian data pada table Dapat memanipulasi Mengisi data pada Dapat menjelaskan Dapat melakukan Presentasi Kompute
menggunakan perintah data dalam database tabel dengan perintah cara penyisipan data operasi penyisipan r
standar seperti, insert, dengan operasi DML insert dan pada tabel dan dapat data dan pembuatan Membuat Modul
update dan delete yang penyisipan data (insert) menambahkan index menjelaskan index database dan
di sesuaikan dengan dan dapat dengan perintah DDL pembuatan index tabel
informasi dan kondisi menambahkan index Alter Tabel
nya
Tabel sudah disimpan, di
beri nama dan terisi data
Index table di buat dan di
atur dengan
menggunakan perintah
standar berupa : create
index dan drop index.

Database Management System vii


4 Merubah data Merubah data yang Dapat melakukan operasi Merubah data dan Dapat menjelaskan Dapat melakukan Presentasi Kompute
dan menghapus sudah disisipkan pada perubahan data simple menghapus tanpa operasi manipulasi operasi manipulasi r
data tabel dan lanjut dan kriteria dan dengan data berupa perubahan data dengan update Praktek Modul
Menghapus data menghapus data simple kriteria dan penghapusan data dan delete manipulasi
dan lanjut data
5 Merubah Merubah struktur tabel Dapat melakukan proses Merubah struktur Dapat menjelaskan Dapat merubah Presentasi Kompute
struktur tabel yang sudah jadi perubahan struktur tabel tabel cara merubah struktur struktur tabel yang r
yang sudah jadi tabel yang sudah jadi sudah jadi dengan Praktek Modul
perintah alter dengan manipulasi
beberapa kondisi tabel
6 Membuat table View di buat dengan Dapat membuat objek Membuat objek view Dapat menjelaskan Dapat membuat dan Presentasi Kompute
view (query) wizard view yang ada, view untuk membaca untuk dapat cara pembuatan view menghapus view dan r
wizar view merupakan data dari satu atau menampilkan data dan fungsi dari view dapat membuat view Membuat Modul
fitur aplikasi untuk beberapa tabel dari satu atau tersebut sesuai dengan view
membantu membuat beberapa tabel dengan kebutuhan
view dari table yang ada cepat
dengan memanfaatkan
fasilitas yang telah di
sediakan
Fitur-fitur view di
pahami dan di
aplikasikan
Field telah di pilih sesuai
dengan tabelnya
7 Mengoperasika Data table di tampilkan Dapat mengoperasikan Mengoperasikan view Dapat menjelaskan Dapat Presentasi Kompute
n table dan dengan perintah select. tabel dan view dengan dan tabel dengan cara pengoperasian mengoperasikan tabel r
view Perintah select yang perintah select dengan berbagai kondisi view dan tabel dan view dengan Mengoperasik Modul
digunakan dapat berupa kondisinya seperti : berbagai macam an tabel dan
select dengan distinct, where, order by, kondisi view
kondisinya seperti : group by, having dsb
distinct, where, order by,
group by, having dsb.
8 UJIAN TENGAH SEMESTER
9 Mengoperasika Data table di tampilkan Dapat mengoperasikan Mengoperasikan Dapat menjelaskan Dapat Presentasi Kompute
n table dan dengan perintah select perintah select dengan perintah select dari cara pengoperasian mengoperasikan r
view yang melibatkan (join) beberapa tabel yang di beberapa tabel dengan perintah select dan perintah select dengan Mengoperasik Modul
dengan beberapa table join seperti inner join dan join join perintah select dan an tabel dan
yang lain . outer join join view
Perintah select yang di
gunakan dapat berupa
select dengan kondisinya
seperti : distinct, where,
order by, group by,

Database Management System viii


having dsb.
10 Mengoperasika Dapat mengoperasikan Dapat mengoperasikan Mengoperasikan Dapat menjelaskan Dapat Mengoperasik Kompute
n fungsi-fungsi fungsi string built in function MySQL fungsi-fungsi built in cara menggunakan mengoperasikan an fungsi r
mysql Dapat mengoperasikan (string, Date Time, (string, datetime, fungsi-fungsi bawaan fungsi-fungsi mysql mysql Modul
fungsi Tanggal dan Numeric) numeric) mysql dan standar (built in)
Waktu menggunakannya
Dapat mengoperasikan pada aplikasi
fungsi numerik
11 Membuat dan Prosedur di buat dan di Dapat Membuat dan Membuat dan Dapat menjelaskan Dapat membuat dan Membuat dan Kompute
mengoperasika atur dengan mengoperasikan mengoperasikan cara kerja prosedur mengoperasikan mengoperasik r
n prosedur menggunakan perintah prosedur tanpa prosedur sesuai dan cara penggunaan prosedur an prosedur Modul
standar pada DDL dan parameter dan kebutuhan prosedur tersebut
DML berparameter
Parameter prosedur di
proses sesuai dengan
kebutuhan di dalam
prosedur
Prosedur di simpan dan
di beri nama
Prosedur dapat di
jalankan dan bekerja
dengan benar
12 Membuat dan Fungsi di buat dan di Dapat Membuat dan Membuat dan Dapat menjelaskan Dapat membuat dan Membuat dan Kompute
mengoperasika atur dengan mengoperasikan Fungsi mengoperasikan cara kerja fungsi dan mengoperasikan mengoperasik r
n fungsi menggunakan perintah tanpa parameter dan fungsi sesuai cara penggunaan fungsi an fungsi Modul
standar pada DDL dan berparameter kebutuhan fungsi tersebut
DML
Parameter fungsi di
proses sesuai dengan
kebutuhan di dalam
fungsi
Fungsi di simpan dan di
beri nama
Fungsi dapat di jalankan
dan bekerja dengan
benar
13 Membuat dan Trigger di buat dan di Dapat membuat dan Membuat dan Dapat menjelaskan Dapat membuat dan Membuat dan Kompute
mengoperasika atur dengan menggunakan trigger menggunakan trigger cara kerja trigger menggunakan trigger mengoperasik r
n trigger menggunakan perintah an trigger Modul
standar pada DDL dan
DML
Triger di simpan dan di
beri nama

Database Management System ix


Trigger dapat di jalankan
dan bekerja dengan
benar
14 Menulis kode Kode program di tulis Dapat membuat program Membuat program Dapat menjelaskan Dapat membuat Membuat Kompute
program berdasarkan diagram pembangkit data pembangkit data cara pembuatan program pembangkit program r
pembangkitan program pembangkitan menggunakan PHP menggunakan PHP program untuk data menggunakan pembangkit Modul
data data sesuai dengan pembangkit data pemrograman PHP data
bahasa yang di gunakan
Kode program di
kompilasi dan dicari
kesalahan sintak atau
penulisan kode program
Kode program di
kompilasi menjadi paket
program (executable file)
15 Backup, Restore Melakukan operasi Dapat melakukan operasi Melakukan operasi Dapat menjelaskan Dapat melakukan Melakukan Kompute
dan Import di backup, Restore dan backup, restore dan backup, restore dan cara backup, import operasi backup, restore operasi r
MySQL Import import import dan restore dan import backup, Modul
restore dan
import
16 UJIAN AKHIR SEMESTER

Database Management System x


BAB I
PENDAHULUAN

A. Tujuan Kompetensi Khusus

11.Pengenalan Database, DBMS dan RDBMS


12.Beberapa istilah database
13.Hirarki database
14.Pengenalan Database MySQL
15.Penggunaan EMS MySQL Manager

B. Sekilas Tentang MySQL

P ENGENALAN D ATABASE , DBMS DAN RDBMS

Basis data (atau database) adalah kumpulan informasi yang disimpan di dalam
komputer secara sistematik sehingga dapat diperiksa menggunakan suatu
program komputer untuk memperoleh informasi dari basis data tersebut
(http://id.wikipedia.org/wiki/Database). Database digunakan untuk
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 system perangkat lunak
yang memungkinkan user (pengguna) untuk membuat, memelihara, mengontrol,
dan mengakses database secara praktis dan efisien. 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 atau hubungan antar
tabel. Di samping RDBMS, terdapat jenis DBMS lain, misalnya Hierarchy DBMS,
Object Oriented DBMS, dsb. Beberapa software atau 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/

Database Management System Hal -1


 Firebird - http://www.firebirdsql.org/
 MySQL – http://www.mysql.com
 PostgreSQL - http://www.postgresql.org/

B EBERAPA I STI LAH D AT ABA SE

Table
Sebuah tabel merupakan kumpulan data (nilai) yang diorganisasikan ke dalam
baris (record) dan kolom (field). Masing-masing kolom memiliki nama yang
spesifik dan unik.

Field
Field merupakan kolom dari sebuah table. Field memiliki ukuran type data tertentu
yang menentukan bagaimana data nantinya tersimpan.

Record
Record 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 diantaranya Primary Key,
Foreign Key, Composite Key, dll.

SQL
SQL atau Structured Query Language merupakan suatu bahasa (language) yang
digunakan untuk mengakses database. SQL sering disebut juga sebagai query.

Hierarki Database
Dalam konsep database, urutan atau hierarki database sangatlah penting. Urutan
atau hierarki database digambarkan dalam gambar sbb :

Database Management System Hal -2


Gambar 1.1 Hirarki Database

1. MySQL

MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa
Inggris: database management system) atau DBMS yang multithread, multi-user,
dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL
tersedia sebagai perangkat lunak gratis di bawah lisensi GNU GeneralPublic License
(GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus
dimana penggunaannya tidak cocok dengan penggunaan GPL.

Tidak seperti PHP atau Apache yang merupakan software yang dikembangkan
oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya
masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan
komersial Swedia yaitu MySQL AB. MySQL AB memegang penuh hak cipta
hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang
Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan
Michael "Monty" Widenius.

MySQL dapat didownload di situs resminya, http://www.mysql.com.


Fitur-fitur MySQL antara lain :
a. Relational Database System. Seperti halnya software database
lain yang ada di pasaran, MySQL termasuk RDBMS.
b. 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 bahkan internet.
c. Mengenal perintah SQL standar. SQL (Structured Query
Language)merupakan suatu bahasa standar yang berlaku di
hampir semua softwaredatabase. MySQL mendukung SQL versi
SQL:2003.
d. Mendukung Sub Select. Mulai versi 4.1 MySQL telah
mendukung select dalam select (sub select).
e. Mendukung Views. MySQL mendukung views sejak versi 5.0
f. Mendukung Stored Prosedured (SP). MySQL mendukung SP
sejak versi 5.0

Database Management System Hal -3


g. Mendukung Triggers. MySQL mendukung trigger pada versi 5.0
namunmasih terbatas. Pengembang MySQL berjanji akan
meningkatkan kemampuantrigger pada versi 5.1.
h. Mendukung replication.
i. Mendukung transaksi.
j. Mendukung foreign key.
k. Tersedia fungsi GIS.
l. Free (bebas didownload)
m. Stabil dan tangguh
n. Fleksibel dengan berbagai pemrograman
o. Security yang baik
p. Dukungan dari banyak komunitas
q. Perkembangan software yang cukup cepat.
M ENGGUNAKAN M Y SQL DENGAN T OOL E MS M Y SQL M ANAGER

a. Koneksi ke server MySQL

Untuk menggunakan MySQL Server maka terlebih dahulu harus dilakukan


proses instalasi pada komputer yang kita gunakan. Software MySQL dapat di
download secara gratis di situs : www.mysql.com . Anda bisa mendownload versi
terakhir dari situs tersebut. Terdapat banyak pilihan platform 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 instalasi MySQL Server.

Sebelum bisa digunakan maka pastikan terlebih dahulu bahwa service MySQL
sudah RUNNING.

Database Management System Hal -4


Gambar 1.2 XAMPP Control Panel

B ERBAGAI M Y SQL C LIENT UNTUK A D MIN ISTRA SI S ERVER M Y SQL

Berikut ini beberapa tools yang biasa digunakan dalam mempermudah


administrasi server MySQL. Tools berikut ini hanya digunakan untuk
mempermudah 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 digunakan untuk
melakukan koneksi ke MySQL melalui text-based mode.

Gambar 1.3 MySQL Command Line Client

Database Management System Hal -5


2. PHPMyAdmin

PHPMyAdmin merupakan front-end MySQL berbasis web. PHPMyAdmin dibuat


dengan menggunakan PHP. Saat ini, PHPMyAdmin banyak digunakan dalam
hampir semua penyedia hosting yang ada di internet. PHPMyAdminmendukung
berbagai fitur administrasi MySQL termasuk manipulasi database,tabel, index dan
juga dapat mengeksport data ke dalam berbagai format data.PHPMyAdmin juga
tersedia dalam 50 bahasa lebih, 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 MySQL memiliki user interface
yang cukup mudah digunakan, bahkan oleh user pemula.

Database Management System Hal -6


Gambar 1.5 EMS SQL Manager For MySQL

Langkah penggunaan
1. Dari menu Database ->Register Host

Database Management System Hal -7


Gambar 1.6 Register Host
2. Hostname diisi dengan nama komputer server, username diisi
dengan nama user, password diisi dengan password milik user
tersebut, klik Next.

Gambar 1.7 Register Database Wizard


3. Secara default server database MySQL memiliki 3 buah database
yaitu : information_scheme, mysql, test. Pindahkan database
tersebut ke bagian kanan lalu klik Next, terakhir klik Finish.
Langkah pembuatan database
Dari menu database pilih Create Database, lalu ikuti langkah-langkah Create
Database Wizard.

Gambar 1.8 Create Database Wizard

Database Management System Hal -8


BAB II
DASAR MYSQL

A. Tujuan Kompetensi Khusus

1. Tipe Tabel MySQL


2. Tipe Field MySQL
3. Merancang database yang baik

B. Tabel MySQL

T IPE - TIPE T ABEL M Y SQL

Salah satu kelebihan dari MySQL adalah Anda dapat mendefinisikan tipe untuk
tiap tabel. MySQL mendukung beberapa tipe tabel, tergantung konfigurasi 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 ini ditentukan
oleh variabel default-table-type di file konfigurasi MySQL.

M Y ISAM

Tipe tabel MyISAM merupakan tipe tabel yang sederhana, stabil dan mudah
digunakan. Jika kita akan menyimpan data sederhana yang tidak terlalu 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 :

a. MyISAM static. Jenis ini digunakan ketika semua kolom dalam


tabel didefinisikan dengan ukuran yang pasti (fixed). Dengan kata
lain, tidak ada kolom yang memiliki tipe seperti VARCHAR, TEXT
dan BLOB. Karena sifatnya yang fixed, maka jenis ini akan lebih
cepat, aman dan stabil.
b. MyISAM dymanic. Jenis ini digunakan ketika terdapat kolom
dengan tipe yang dinamis, seperti tipe kolom VARCHAR.
Keuntungan utama dari jenis ini adalah ukuran yang dinamis. Jadi
sifatnya lebih efektif karena ukuran data (file) menyesuaikan isi
dari masing-masing kolom (field).

Database Management System Hal -9


c. MyISAM Compressed. Kedua jenis MyISAM, static dan dynamic
dapat dikompresi menjadi satu jenis yaitu MyISAM Compressed
dengan perintah myisamchk. Tentunya hasilnya lebih kecil dari
segi ukuran. Tabel yang terkompresi tidak dapat dikenakan operasi
seperti 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.

HEAP

Tabel dengan tipe HEAP tidak menyimpan datanya di hardisk, tetapi menyimpan
di RAM (memori). Tipe tabel ini biasanya digunakan sebagai tabel sementara
(temporary). Tabel secara otomatis akan dihapus (hilang) dari MySQL saat
koneksi ke server diputus atau server MySQL dimatikan.

T IPE T ABEL Y ANG L AIN

Selain 3 (tiga) tipe tabel diatas, yaitu MyISAM, InnoDB dan HEAP, MySQL juga
mendukung tipe tabel yang lain, yaitu:

a. BDB. Tipe tabel ini mirip tipe tabel InnoDB, namun


penggunaannya belum maksimal.
b. Archieve. Tipe ini tersedia sejak MySQL versi 4.1. Tipe ini
digunakan untuk menyimpan tabel yang terkompresi, dimana
biasanya digunakan dalam proses backup.
c. CSV. Tipe ini digunakan untuk menyimpan data dalam bentuk file
text yang dibatasi dengan koma (delimiter). Tipe ini tersedia sejak
MySQL versi 4.1.
d. NDB Table (MySQL Cluster). Tersedia sejak MySQL versi 4.1.
e. Federated (External Tables). Tipe ini tersedia sejak MySQL versi
5.0.

T IPE - TIPE F IELD (K O LO M ) M Y SQL

Database Management System Hal -10


MySQL memiliki cukup banyak tipe data untuk field (kolom) tabel. Tipe field
(kolom) ini menentukan besar kecilnya ukuran suatu tabel. Tipe field di 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 untuk dikenai
operasi aritmatika seperti pertambahan, pengurangan, perkalian dan pembagian.
Berikut ini tipe field (kolom) di MySQL yang termasuk ke dalam 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
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

Database Management System Hal -11


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 dalam kelompok 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.
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'

Database Management System Hal -12


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 dikenai operasi aritmatika
seperti pertambahan, pengurangan, perkalian dan pembagian. Berikut ini tipe
field (kolom) di MySQL yang termasuk ke dalam kelompok 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.

Database Management System Hal -13


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.
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 dengan perkembangan 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.

M ERANCANG D ATABASE Y ANG B AIK

Seperti telah disebutkan sebelumnya, bahwa rancangan database menentukan


suatu aplikasi efektif atau tidak, efisien atau tidak, baik atau tidak. Pembahasan

Database Management System Hal -14


mengenai bagaimana merancang database yang baik tentunya sangat panjang.
Kita dapat mencari referensi terkait dengan perancangan database.

Beberapa Aturan Merancang Database yang Baik.

a. Tabel dalam database tidak boleh mengandung record (data)


ganda, atau dengan kata lain tidak boleh ada redudancy data. Jika
terdapat data yang sama, maka perlu dilihat kembali rancangan
tabelnya.
b. Setiap tabel dalam database, harus memiliki field (kolom) yang
unik. Field ini disebut sebagai Primary Key.
c. Tabel harus sudah normal.
d. Besar atau ukuran database hendaknya dibuat seminimal mungkin.
Hal ini ditentukan oleh pemilihan tipe data yang tepat.
e. Merancang database hendaknya memperhatikan apakah rancangan
dapat menampung data (record) sesuai yang dibutuhkan oleh
aplikasi.

Tips Penamaan Identifier.

a. Penamaan identifier (database, tabel, kolom) di MySQL bersifat


casesensitive. Penamaan identifier hendaknya konsisten untuk
semua tabel dalam suatu database. Kita dapat menggunakan model
lower-case, UPPER-CASE, camelCase dll.
b. Nama database, tabel dan kolom maksimal 64 karakter.
c. Hindari penggunaan karakter khusus, seperti üàû, karena bisa
bermasalah dalam sistem operasi yang lain.
d. 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!

Database Management System Hal -15


BAB III
DASAR DDL SQL

Tujuan Kompetensi Khusus

1. Pendahuluan
2. 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. Beberapa perintah dasar yang
termasuk DDL ini antara lain :
 CREATE
 ALTER
 RENAME
 DROP

2. M EMBUAT , M ENAMP ILKAN , M E MBUKA D AN M ENGHAPUS D ATABASE


M EMBUAT D ATABASE

Sintaks umum SQL untuk membuat suatu database adalah sebagai berikut :

CREATE DATABASE [IF NOT EXISTS] nama_database;

Bentuk perintah di atas akan membuat sebuah database baru dengan nama
nama_database. Aturan penamaan sebuah database sama seperti aturan
penamaan sebuah variabel, dimana secara umum nama database boleh terdiri dari
huruf, angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka
akan muncul pesan error. Namun jika ingin otomatis menghapus database yang
lama jika sudah ada, aktifkan option IF NOT EXISTS.

Berikut ini contoh perintah untuk membuat database baru dengan nama
“penjualan” :

CREATE DATABASE penjualan;

Jika query di atas berhasil dieksekusi dan database berhasil dibuat, maka akan
ditampilkan pesan kurang lebih sebagai berikut :

Query OK, 1 row affected (0.02 sec)

Menampilkan Database
Database Management System Hal -16
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 :

+--------------+
| Database |
+--------------+
| penjualan |
| mysql |
| test |
+--------------+
3 rows in 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 penjualan;

Jika perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai
berikut :

Database changed

Menghapus Database
Untuk menghapus suatu database, sintaks umumnya adalah sbb :

DROP DATABASE [IF EXISTS] nama_database;

Bentuk perintah di atas akan menghapus database dengan nama nama_database.


Jika databasenya ada maka database dan juga seluruh tabel di dalamnya akan
dihapus. Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan
dihapus tidak ditemukan, maka akan ditampilkan pesan 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 penjualan;

Membuat, Mengubah dan Menghapus Table Membuat Tabel Baru


Bentuk umum SQL untuk membuat suatu table secara sederhana sebagai berikut :

CREATE TABLE nama_tabel (


field1 tipe(panjang),
field2 tipe(panjang),

Database Management System Hal -17


...
fieldn tipe(panjang),
PRIMARY KEY (field_key)
);

Bentuk umum di atas merupakan bentuk umum pembuatan tabel yang sudah
disederhanakan. Penamaan tabel dan field memiliki aturan yang sama 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 pelanggan (


id_pelanggan varchar(5) NOT NULL,
nm_pelanggan varchar(30) NOT NULL,
alamat text,
telepon varchar (20),
email varchar (50),
PRIMARY KEY(id_pelanggan)
);

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 :
+---------------------+
| Tables_in_penjualan |
+---------------------+
| pelanggan |
+---------------------+
1 rows in set (0.01 sec)

Untuk melihat struktur tabel “mhs” secara lebih detail, cobalah perintah atau
query sebagai berikut :

DESC pelanggan;

DESC merupakan singkatan dari DESCRIBE (dalam query bisa ditulis lengkap
atau hanya 4 karakter pertama) dan pelanggan adalah nama tabel yang akan

Database Management System Hal -18


dilihat strukturnya. Dari perintah di atas, akan ditampilkan struktur tabel
pelanggan sebagai berikut :

+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null| Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id_pelanggan | varchar(5) | NO | PRI | | |
| nm_pelanggan | varchar(30) | NO | | | |
| alamat | text | YES | | NULL | |
| telepon | varchar(20) | YES | | NULL | |
| email | varchar(50) | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Mengubah Struktur Table dengan ALTER


Untuk mengubah struktur suatu tabel, bentuk umum perintah SQL-nya sebagai
berikut :

ALTER TABLE nama_tabel alter_options;

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 :
o 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

Database Management System Hal -19


Beberapa contoh variasi perintah ALTER untuk mengubah struktur suatu tabel
antara lain :
1. Menambahkan field “tgllahir” ke tabel pelanggan
>>ALTER TABLE pelanggan ADD tgllahir date NOT NULL;
2. Menambahkan primary key pada suatu tabel
>>ALTER TABLE pelanggan ADD PRIMARY KEY(id_pelanggan);
3. Mengubah tipe field tgllahir menjadi varchar dalam tabel
pelanggan
>>ALTER TABLE pelanggan MODIFY tgllahir varchar(8) NOTNULL;
4. Menghapus field tgllahir dari tabel pelanggan
>>ALTER TABLE pelanggan DROP tgllahir;
5. Mengubah Nama Tabel
Untuk mengubah nama suatu tabel, dapat menggunakan perintah
SQL sbb :
>>RENAME TABLE pelanggan TO plg;
>>ALTER TABLE plg RENAME TO pelanggan;

Perintah di atas akan mengubah tabel pelanggan menjadi plg dan sebaliknya.
Menghapus TabelUntuk menghapus sebuah tabel, bentuk umum dari perintah
SQL adalah sebagai berikut :

DROP TABLE nama_tabel;

Contohnya kita akan menghapus tabel dengan nama “pelanggan” maka perintah
SQL-nya adalah :

DROP TABLE pelanggan;

Latihan DDL
Pemodelan data konseptual Sistem Pemesanan (Penjualan) Barang.

Gambar 3.1 Pemodelan Konseptual

1. Buatka
n database DBPenjualan!
Database Management System Hal -20
2. Buatka
n tabel pelanggan, tabel pesan, tabel produk, tabel kuitansi,
tabel faktur dan tabel detail pesan!
3. Lakuka
n eksperimen dengan merubah struktur tabel. Bisa dengan
menambahkan field, menambah index, merubah nama field,
merubah nama tabel dan lain-lain.

/*Table structure for table pelanggan */


DROP TABLE IF EXISTS pelanggan;
CREATE TABLE pelanggan (
id_pelanggan varchar(5) NOT NULL,
nm_pelanggan varchar(40) NOT NULL,
alamat text NOT NULL,
telepon varchar(20) NOT NULL,
email varchar(50) NOT NULL,
PRIMARY KEY (id_pelanggan)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 CHECKSUM=1
DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;

/*Table structure for table pesan */


DROP TABLE IF EXISTS pesan;
CREATE TABLE pesan (
id_pesan int(5) NOT NULL auto_increment,
id_pelanggan varchar(5) NOT NULL,
tgl_pesan date NOT NULL,
PRIMARY KEY (id_pesan),
KEY id_pelanggan (id_pelanggan),
CONSTRAINT pesan_ibfk_1 FOREIGN KEY (id_pelanggan)
REFERENCES pelanggan (id_pelanggan)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

/*Table structure for table detil_pesan */


DROP TABLE IF EXISTS detil_pesan;
CREATE TABLE detil_pesan (
id_pesan int(5) NOT NULL,
id_produk varchar(5) NOT NULL,
jumlah int(5) NOT NULL default '0',
harga decimal(10,0) NOT NULL default '0',
PRIMARY KEY (id_pesan,id_produk),
KEY FK_detil_pesan (id_produk),
KEY id_pesan (id_pesan),
CONSTRAINT FK_detil_pesan FOREIGN KEY (id_produk)
REFERENCES produk (id_produk),
CONSTRAINT FK_detil_pesan2 FOREIGN KEY (id_pesan)
REFERENCES pesan (id_pesan)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Table structure for table produk */


DROP TABLE IF EXISTS produk;
CREATE TABLE produk (
id_produk varchar(5) NOT NULL,

Database Management System Hal -21


nm_produk varchar(30) NOT NULL,
satuan varchar(10) NOT NULL,
harga decimal(10,0) NOT NULL default '0',
stock int(3) NOT NULL default '0',
PRIMARY KEY (id_produk)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Table structure for table faktur */


DROP TABLE IF EXISTS faktur;
CREATE TABLE faktur (
id_faktur int(5) NOT NULL auto_increment,
id_pesan int(5) NOT NULL,
tgl_faktur date NOT NULL,
PRIMARY KEY (id_faktur),
KEY id_pesan (id_pesan),
CONSTRAINT faktur_ibfk_1 FOREIGN KEY (id_pesan)
REFERENCES pesan (id_pesan)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Table structure for table kuitansi */


DROP TABLE IF EXISTS kuitansi;
CREATE TABLE kuitansi (
id_kuitansi int(5) NOT NULL auto_increment,
id_faktur int(5) NOT NULL,
tgl_kuitansi date NOT NULL,
PRIMARY KEY (id_kuitansi),
KEY FK_kuitansi (id_faktur),
CONSTRAINT FK_kuitansi FOREIGN KEY (id_faktur)
REFERENCES faktur (id_faktur)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

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!

Database Management System Hal -22


BAB IV
DASAR DML SQL

Tujuan Kompetensi Khusus

1. Perintah DML

P ERINTAH DML

DML atau Data Manipulation Language


DML merupakan perintah SQL yang berhubungan dengan manipulasi atau
pengolahan data atau record dalam table. Perintah SQL yang termasuk dalam
DML antara lain :
 SELECT
 INSERT
 UPDATE
 DELETE

M ENAMBAH R EC ORD DENGAN INSERT


Bentuk umum perintah SQL untuk menambahkan record atau data ke dalam suatu
tabel adalah sebagai berikut :

INSERT INTO nama_tabel VALUES (‘nilai1’,’nilai2’,...);

atau dapat dengan bentuk sebagai berikut :

INSERT INTO nama_tabel(field1,field2,...) VALUES (‘nilai1’,’nilai2’,...);

atau dapat juga dengan bentuk sebagai berikut :

INSERT INTO nama_tabel SET field1=’nilai1’, field2=’nilai2’,...;

Sebagai contoh, kita akan menambahkan sebuah record ke dalam tabel pelanggan
yang telah kita buat sebelumnya. Berikut ini perintah SQL untuk menambahkan
sebuah record ke dalam tabel pelanggan :

INSERT INTO pelanggan VALUES ('P0001', 'Achmad Solichin','Jakarta


Selatan', '0217327762', '[email protected]');

Jika perintah SQL di atas berhasil dieksekusi maka akan ditampilkan pesan
sebagai berikut :

Query OK, 1 row affected (0.00 sec)

Database Management System Hal -23


Setelah perintah SQL di atas berhasil dieksekusi, maka record atau data dalam
tabel pelanggan akan bertambah. Jalankan perintah berikut ini untuk melihat isi
tabel pelanggan !

SELECT * FROM pelanggan;

Dan berikut ini hasil dari perintah SQL di atas :


+--------------+-----------------+-----------------+------------+--------------------+
| id_pelanggan | nm_pelanggan | alamat | telepon | email |
+--------------+-----------------+-----------------+------------+--------------------+
| P0001 | Achmad Solichin | Jakarta Selatan | 0217327762 |[email protected] |
+--------------+-----------------+-----------------+------------+--------------------+

1 row in 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_tabel SET field1=’nilaibaru’ [WHERE kondisi];

Perhatikan beberapa contoh perintah UPDATE tabel pelanggan berikut ini !


1. Mengubah alamat menjadi “Tangerang” untuk pelanggan yang
mempunyai id‘P0001’
UPDATE pelanggan SET alamat='Tangerang' WHERE id_pelanggan='P0001';

Dan jika query di atas berhasil dieksekusi maka akan ditampilkan hasil sebagai
berikut :

Query OK, 1 row affected (0.27 sec)


Rows matched: 1 Changed: 1 Warnings: 0

2. Mengubah email menjadi “[email protected]” dan alamat


menjadi “Bandung”untuk pelanggan yang mempunyai
id_pelanggan ‘P0002’
UPDATE pelanggan SET email='[email protected]', alamat='Bandung' WHERE
id_pelanggan='P0002';

Latihan
1. Buatlah kode SQL untuk proses UPDATE dengan berbagai
macam kriteria (lakukanlah eksperimen)
Database Management System Hal -24
Menghapus Record dengan DELETE
Bentuk umum perintah SQL untuk menghapus suatu record atau data dari tabel
adalah sebagai berikut :

DELETE FROM nama_tabel [WHERE kondisi];

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.

Perhatikan beberapa contoh perintah DELETE dari tabel pelanggan berikut ini !
1. Menghapus data pelanggan yang mempunyai id_pelanggan
P0005
DELETE FROM pelanggan WHERE id_pelanggan='P0005';

Dan jika query di atas berhasil dieksekusi dan record yang akan dihapus
ada,maka akan ditampilkan hasil sebagai berikut :

Query OK, 1 row affected (0.11 sec)

2. Menghapus semua pelanggan yang beralamat di “Bandung”


DELETE FROM pelanggan WHERE alamat='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 [field | *] FROM nama_tabel [WHERE kondisi];

SELECT semua data :

SELECT * FROM PESAN;

Perintah SELECT ini berfungsi jika membaca seluruh data dari dalam tabel.

Database Management System Hal -25


SELECT beberapa record :

SELECT * FROM PESAN WHERE ID_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

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 dipisahkan menggunakan 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 DISTINCT NM_PELANGGAN FROM PELANGGAN

Database Management System Hal -26


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 tersedia
2. Buatlah perintah untuk menampilkan nama pelanggan dan
emailnya
3. Buatlah perintah yang mengkombinasikan ekspresi AND dan
OR
4. Lakukanlah eksperimen dengan untuk membaca data dari
tabel dengan berbagai kombinasi perintah

M ENGURUTKAN RE CORD
Pada latihan sebelumnya, semua record yang dihasilkan dari perintah SELECT
tidak berurutan. Kita dapat mengurutkan data hasil perintah SELECT

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 ID_PELANGGAN, TGL_PESAN

Latihan
Buatlah perintah beberapa macam perintah untuk membaca data dengan
menggunakan metode pengurutan data ASCENDING dan DESCENDING

P ATTERN

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 LIKE ‘A%’

Contoh : mencari nama pelanggan dengan akhiran ‘DI’

Database Management System Hal -27


SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LIKE ‘%DI’

Contoh : mencari nama pelanggan yang mengandung kata ‘K’

SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LIKE ‘%K%’

Contoh : mencari nama pelanggan yang namanya terdiri dari 5 karakter

SELECT * FROM PELANGGAN WHERE NM_PELANGGAN LIKE ‘_____’

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

Tugas
1. Buat kode SQL untuk mengisi beberapa buah record kedalam
satu tabel dengan hanya satu perintah kode SQL
2. 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)
Database Management System Hal -28
BAB V
DML SQL LANJUT

Tujuan Kompetensi Khusus

1. Perintah Inner Join Tabel


2. Perintah Outer Join Tabel
3. Perintah HAVING

P ERINTAH SELECT DARI B ANY AK T ABEL DENGAN JOIN


Di dalam suatu RDBMS tentunya sudah menjadi suatu kewajaran jika dalam satu
database dapat terdiri dari beberapa tabel. Masing-masing tabel tersebut
berhubungan satu sama lain atau dengan kata lain memiliki relasi. Relasi
antartabel dapat berupa relasi 1-1, 1-M, atau M-N. Sebagai contoh terlihat pada
gambar pemodelan data konseptual (class diagram) di atas. Tabel
pelangganberhubungan dengan pesan, pesan dengan barang, dsb.

I NNER J OIN
Dengan inner join, tabel akan digabungkan dua arah, sehingga tidak ada data
yang NULL di satu sisi. Sebagai contoh, kita akan menggabungkan tabel
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 pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,
pesan.tgl_pesan FROM pelanggan, pesan WHERE
pelanggan.id_pelanggan=pesan.id_pelanggan;

Cara 2 : Penggabungan dengan INNER JOIN


Bentuk umum
SELECT tabel1.*, tabel2.* FROM tabel1 INNER JOIN tabel2 ON
tabel1.PK=tabel2.FK;

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,


pesan.tgl_pesan FROM pelanggan INNER JOIN pesan ON
pelanggan.id_pelanggan=pesan.id_pelanggan;

Database Management System Hal -29


Contoh lain :
SELECT
pesan.id_pesan,
pesan.id_pelanggan,
detil_pesan.id_produk,
detil_pesan.jumlah
FROM
detil_pesan
INNER JOIN pesan ON (detil_pesan.id_pesan = pesan.id_pesan)

Contoh lain :
SELECT
pesan.id_pesan,
pesan.id_pelanggan,
pesan.tgl_pesan,
faktur.id_faktur,
faktur.tgl_faktur
FROM
faktur
INNER JOIN pesan ON (faktur.id_pesan = pesan.id_pesan)

Contoh lain :
SELECT
faktur.id_faktur,
faktur.tgl_faktur,
kuitansi.id_kuitansi,
kuitansi.tgl_kuitansi
FROM
kuitansi
INNER JOIN faktur ON (kuitansi.id_faktur = faktur.id_faktur)

Contoh menggunakan tiga buah tabel


SELECT
pesan.id_pesan,
pesan.tgl_pesan,
produk.nm_produk,
produk.harga,
detil_pesan.jumlah
FROM
detil_pesan
INNER JOIN pesan ON (detil_pesan.id_pesan = pesan.id_pesan)
INNER JOIN produk ON (detil_pesan.id_produk = produk.id_produk)

Contoh lain :
SELECT
pesan.id_pesan,
pelanggan.nm_pelanggan,
pelanggan.telepon,
pesan.tgl_pesan,
detil_pesan.jumlah
FROM
detil_pesan
INNER JOIN pesan ON (detil_pesan.id_pesan = pesan.id_pesan)

Database Management System Hal -30


INNER JOIN pelanggan ON (pesan.id_pelanggan = pelanggan.id_pelanggan)

Contoh lain :
SELECT
pesan.id_pesan,
faktur.id_faktur,
kuitansi.id_kuitansi,
faktur.tgl_faktur,
kuitansi.tgl_kuitansi
FROM
kuitansi
INNER JOIN faktur ON (kuitansi.id_faktur = faktur.id_faktur)
INNER JOIN pesan ON (faktur.id_pesan = pesan.id_pesan)

Contoh : perintah INNER JOIN dengan sebuah kriteria


SELECT
pelanggan.nm_pelanggan,
pelanggan.telepon,
pesan.tgl_pesan
FROM
pesan
INNER JOIN pelanggan ON (pesan.id_pelanggan = pelanggan.id_pelanggan)
WHERE pesan.tgl_pesan > '2011-3-3'

Latihan
1. Buatlah kode SQL yang berbeda yang meng-QUERY data dari
2 tabel
2. Tambahkanlah pada kode tersebut berupa kriteria
3. 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 akan
menggabungkan 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 tabel1.*, tabel2.*


FROM tabel1 LEFT JOIN tabel2
ON tabel1.PK=tabel2.FK;

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

Database Management System Hal -31


SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan,
pesan.id_pesan, pesan.tgl_pesan
FROM pelanggan LEFT JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Berbeda dengan hasil sebelumnya (inner join), penggunaan left join akan
menampilkan juga data pelanggan dengan id P0003, walaupun pelanggan
tersebut 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 tabel1.*, tabel2.*


FROM tabel1 RIGHT JOIN tabel2
ON tabel1.PK=tabel2.FK;

Berikut ini perintah SQL untuk menggabungkan tabel pelanggan dan pesan:

SELECT pelanggan.id_pelanggan, pelanggan.nm_pelanggan, pesan.id_pesan,


pesan.tgl_pesan FROM pelanggan RIGHT JOIN pesan
ON pelanggan.id_pelanggan=pesan.id_pelanggan;

Dengan right join, tabel yang menjadi acuan adalah tabel sebelah kanan (tabel
pesan), jadi semua isi tabel pesan akan ditampilkan. Jika data pelanggan 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 yang dibeli untuk
masing-masing transaksi (pemesanan). Perhatikan perintah query berikut ini dan
lihat hasilnya:

SELECT pesan.id_pesan, pesan.tgl_pesan, detil_pesan.jumlah


FROM pesan, detil_pesan WHERE pesan.id_pesan=detil_pesan.id_pesan;

Jika kita perhatikan hasil perintah query di atas, kita akan mendapatkan jumlah
barang yang terjadi untuk setiap transaksi, namun hasil tampilannya masih per-
barang. Artinya jumlah yang ditampilkan masih berupa jumlah barang untuk
masing-masing barang. Agar jumlah barang ditampilkan 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.id_pesan, pesan.tgl_pesan, SUM(detil_pesan.jumlah) as jumlah


FROM pesan, detil_pesan
WHERE pesan.id_pesan=detil_pesan.id_pesan
GROUP BY id_pesan;

Database Management System Hal -32


Selain hasil di atas, kita juga dapat menggunakan tambahan WITH ROLLUP di
belakang group by untuk menampilkan jumlah total seluruh barang. Berikut ini
perintah query dan hasilnya:

SELECT pesan.id_pesan, pesan.tgl_pesan, SUM(detil_pesan.jumlah) as jumlah


FROM pesan, detil_pesan
WHERE pesan.id_pesan=detil_pesan.id_pesan
GROUP BY id_pesan WITH ROLLUP;

HAVING
Perintah query berikut ini akan menampilkan jumlah item (jenis) barang untuk
tiap transaksi.

SELECT pesan.id_pesan, COUNT(detil_pesan.id_produk) as jumlah


FROM pesan, detil_pesan
WHERE pesan.id_pesan=detil_pesan.id_pesan
GROUP BY pesan.id_pesan

Dari hasil query di atas tampak bahwa ditampilkan jumlah item barang untuk
semua transaksi. Selanjutnya bagaimana jika kita ingin hanya menampilkan data
yang jumlah item barangnya lebih dari 2 (dua)? Mungkin kita langsung berfikir
untuk menggunakan WHERE seperti perintah query sebagai berikut:

SELECT pesan.id_pesan, COUNT(detil_pesan.id_produk) as jumlah


FROM pesan, detil_pesan
WHERE pesan.id_pesan=detil_pesan.id_pesan
AND jumlah > 2
GROUP BY pesan.id_pesan

Hal tersebut terjadi karena kondisi dalam WHERE tidak dapat diterapkan pada
fungsi agregrasi seperti COUNT, SUM, AVG dll. Untuk menyeleksi suatu fungsi
agregasi, kita tidak dapat menggunakan WHERE, namun kita dapat
menggunakan HAVING. Berikut ini perintah query yang menggunakan
HAVING:

SELECT pesan.id_pesan, COUNT(detil_pesan.id_produk) as jumlah


FROM pesan, detil_pesan
WHERE pesan.id_pesan=detil_pesan.id_pesan
GROUP BY pesan.id_pesan
HAVING jumlah > 2

S UB SELECT
Perintah SubSELECT memiliki banyak variasi. Berikut ini beberapa variasi bentuk
perintah SubSELECT.

SELECT ... WHERE col=[ANY|ALL] (SELECT ...);


SELECT ... WHERE col [NOT] IN (SELECT ...);
SELECT ROW(val1,val2,..) =[ANY] (SELECT col1,col2,..);
SELECT ... WHERE col = [NOT] EXISTS (SELECT ...);
SELECT ... FROM (SELECT ...) AS name WHERE ...;

Database Management System Hal -33


Dan berikut ini beberapa contoh perintah query yang menggunakan SubSELECT.
• Menampilkan daftar pelanggan yang pernah melakukan transaksi(pemesanan).
SELECT id_pelanggan, nm_pelanggan FROM pelanggan
WHERE id_pelanggan IN (SELECT id_pelanggan FROM pesan);

Menampilkan data pemesanan dengan jumlah barang terbanyak.

SELECT id_pesan, jumlah FROM detil_pesan


WHERE jumlah = ( SELECT MAX(jumlah) FROM detil_pesan);

Database Management System Hal -34


BAB VI
FUNGSI-FUNGSI MYSQL

Tujuan Kompetensi Khusus

1. Fungsi String
2. Fungsi Tanggal dan Waktu
3. Fungsi Numerik
4. Fungsi Lainnya

F UNGSI S T RIN G
MySQL memiliki banyak sekali fungsi yang berhubungan dengan operasi String.
Berikut ini beberapa fungsi string yang disediakan MySQL.

CONCAT (str1, str2, ...)

Fungsi ini digunakan untuk menggabungkan dua atau lebih string (kolom).
Sebagai contoh, misalnya akan menggabungkan kolom alamat dan telepon pada
tabel pelanggan menjadi sebuah kolom:
SELECT nm_pelanggan, CONCAT(alamat,' ',telepon)
FROM pelanggan;

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','Ida','Edi');

SUBSTR (string, awal, panjang)


SUBSTRING (string, awal, panjang)
SUBSTRING (string FROM awal FOR panjang)
MID (string, awal, panjang)
Fungsi ini digunakan untuk mengambil atau memotong string dimulai dari
karakter awal sebanyak panjang karakter. Sebagai catatan bahwa di MySQL,
index string dimulai dengan 1, bukan 0. Contoh:
SELECT SUBSTRING ('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

Database Management System Hal -35


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 RIGHT ('Budi Luhur', 4);
Hasil keluarannya:
Uhur

LTRIM (string)
Fungsi ini digunakan untuk menghilangkan spasi di awal string (kiri). Contoh:
SELECT LTRIM (' Budi Luhur');
Hasil keluarannya:
Budi Luhur

RTRIM (string)
Fungsi ini digunakan untuk menghilangkan spasi di akhir string (kanan). Contoh:
SELECT RTRIM ('Budi Luhur ');
Hasil keluarannya:
Budi Luhur

TRIM (string)
Fungsi ini digunakan untuk menghilangkan spasi di awal dan akhir string (kiri
dan kanan). Contoh:
SELECT TRIM (' 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:
MontMontMont

REVERSE (string)
Fungsi ini digunakan untuk membalik string. Contoh:
SELECT REVERSE ('mysql.com');

Database Management System Hal -36


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

F UNGSI T ANGGA L DAN W AKTU


Selain fungsi string, MySQL juga memiliki fungsi-fungsi yang berhubungan
dengan operasi tanggal dan waktu (date and time). Berikut ini beberapa fungsi
tanggal dan waktu yang disediakan MySQL.

NOW ()
SYSDATE()
Fungsi ini digunakan untuk mendapatkan tanggal dan waktu system sekarang
Contoh:
SELECT NOW();
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:

Database Management System Hal -37


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 MINUTE (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)
Fungsi-fungsi diatas digunakan untuk menambah suatu tanggal. Contoh:
SELECT DATE_ADD(now(), INTERVAL 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

Database Management System Hal -38


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:
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 CEILING(10.3576);
Hasil keluarannya:
11

ROUND(x)
ROUND(x, d)

Database Management System Hal -39


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

F UNGSI L AINNY A
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 pelanggan;
Hasil keluarannya:
5

MAX(range)
Fungsi digunakan untuk mengambil nilai terbesar dari suatu ekspresi (query).
Contoh:

Database Management System Hal -40


SELECT MAX(nilai) FROM nilai_ujian;

MIN(range)
Fungsi digunakan untuk mengambil nilai terkecil dari suatu ekspresi (query).
Contoh:
SELECT MIN(nilai) FROM nilai_ujian;
Hasil keluarannya:
40

SUM(range)
Fungsi digunakan untuk menjumlahkan total nilai dari suatu ekspresi (query).
Contoh:
SELECT SUM(nilai) FROM nilai_ujian;
Hasil keluarannya:
450

AVG(range)
Fungsi digunakan untuk menghitung rata-rata nilai dari suatu ekspresi (query).
Contoh:
SELECT AVG(nilai) FROM nilai_ujian;
Hasil keluarannya:
78

DATABASE()
Fungsi digunakan untuk mengambil nama database yang sedang aktif (terbuka).
Contoh:
SELECT DATABASE();
Hasil keluarannya:
Penjualan

USER()
SYSTEM_USER()
SESSION_USER()
Fungsi digunakan untuk mengambil user yang sedang digunakan (aktif). Contoh:
SELECT USER();
Hasil keluarannya:
root@localhost

PASSWORD(str)
Fungsi digunakan untuk melakukan enkripsi suatu string. Sifat utama dari fungsi
password() ini adalah hasilnya selalu sama untuk setiap string yang sama. String
hasil dari fungsi password() tidak dapat di-decript (decode). Biasanya fungsi ini
digunakan untuk menyimpan password login. Contoh:
SELECT PASSWORD('qwerty');
Hasil keluarannya:
*AA1420F182E88B9E5F874F6FBE7459291E8F4601

ENCODE(str, pass)

Database Management System Hal -41


Fungsi digunakan untuk melakukan enkripsi suatu string str menggunakan
password atau key pass. Contoh:
SELECT ENCODE('qwerty', 'password');
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|', 'password');
Hasil keluarannya:
Qwerty

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('qwerty');
Hasil keluarannya:
d8578edf8458ce06fbc5bb76a58c5ca4

LAST_INSERT_ID()
Fungsi digunakan untuk mengambil id terakhir dalam proses insert dimana
tabelnya mengandung field yang bersifat AUTO INCREMENT. Contoh:
SELECT LAST_INSERT_ID();
Hasil keluarannya:
231

VERSION()
Fungsi digunakan untuk mengambil versi MySQL yang digunakan. Contoh:
SELECT VERSION();
Hasil keluarannya:
5.0.45-community-nt

Database Management System Hal -42


BAB VII
VIEW

Tujuan Kompetensi Khusus

1. Create view
2. Alter view
3. Drop view

View
View adalah tabel virtual, yang beroperasi layaknya tabel tetapi tidak berisikan
data. View adalah hasil dari perintah SELECT. View tediri dari kolom dan baris
dari satu atau lebih tabel. View adalah QUERY yang disimpan menjadi sebuah
objek. Dengan menggunakan View kita dapat memastikan 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.

C REATE V IEW
Perintah CREATE VIEW digunakan untuk membuat sebuah view pada sebuah
database. Syntak membuat view :

CREATE VIEW view_name[(column_list)] [WITH ENCRYPTION] AS


select_statement [WITH CHECK OPTION]

View_name adalah nama view yang akan dibuat. Column_list mendefinisikan


field yang akan digunakan dalam view. Column_list harus memiliki jumlah field
yang sama dengan yang didefinisikan pada select_statement. Jika column_list
tidak ada maka view dibuat berdasarkan field yang didefinisikan pada
select_statement. With Encryption adalah opsi untuk menambahkan enkripsi
pada view. AS berisi perintah yang digunakan untuk membuat view.

Contoh
Cara membaca data pada sebuah tabel
SELECT * FROM PELANGGAN

SELECT * FROM PRODUCT

Database Management System Hal -43


Create view statement

CREATE VIEW 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’

A LTER VIE W ST ATEMENT

Dengan menggunakan ALTER VIEW kita dapat merubah definisi dari sebuah
view. Perintah ini digunakan untuk merubah VIEW tanpa harus menghapusnya
dan membuat yang baru. Syntak ALTER VIEW hampir sama dengan syntak
CREATE VIEW. Syntak merubah view :

ALTER VIEW view_name[(column_list)] [WITH ENCRYPTION] AS


select_statement [WITH CHECK OPTION]

ALTER VIEW V_PELANGGAN AS SELECT * FROM PELANGGAN WHERE ALAMAT =’BANDUNG’


Cara memanggil view :
SELECT * FROM V_PELANGGAN

D ROP VIEW STATEMEN T


Untuk menghapus objek view, dapat digunakan perintah DROP VIEW. Ketika
VIEW dihapus maka tidak akan berpengaruh pada tabel referensi untuk view
yang dibuat. Dengan menghapus tabel yang digunakan untuk referensi objek
view tidak akan menghapus objek VIEW. Objek view harus dihapus secara
eksplisit. Syntak untuk menghapus view :

DROP VIEW view_name

Contoh:

DROP VIEW 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!

Database Management System Hal -44


BAB VIII
STORED PROCEDURE DAN FUNCTION

Tujuan Kompetensi Khusus

1. Membuat procedure
2. Memodifikasi procedure
3. Membuat function

Function dan Stored Procedure merupakan fitur utama yang paling pentingdi
MySQL 5. Function dan Stored Procedure merupakan suatu kumpulan perintah
atau statement yang disimpan dan dieksekusi di server database MySQL. Dengan
SP (Stored Procedure), kita dapat menyusun program 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 di bahasapemrograman, akan lebih lambat karena
harus “bolak-balik” antara client danserver.
 Menghilangkan duplikasi proses, pemeliharaan yang mudah.
Padadasarnya operasi yang terjadi di suatu aplikasi terhadap
database adalahsama. Secara umum, di dalam aplikasi biasanya
terdapat operasi untukvalidasi data inputan, menambahkan
record baru, mengubah record,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 perlu mengetahui isi didalamnya. Sebagai contoh, dalam
proses menambahkan data (insert), kitamembuat suatu SP
khusus. Dengan demikian, saat client atau aplikasi
akanmenambahkan data (insert) maka tidak perlu tahu nama
tabelnya, karenahanya cukup memanggil SP tersebut dengan
mengirimkan parameter yangdiinginkan.

Hello World!
Sebagai contoh sederhana, kita akan membuat suatu SP yang akan menampilkan
string “Hello World!” di layar hasil. Berikut ini perintah query untuk membuat SP
tersebut:

Database Management System Hal -45


CREATE PROCEDURE hello()
BEGIN
SELECT "Hello World!";
END

Untuk memanggil procedure tersebut, gunakanlah CALL. Berikut ini contoh


pemanggilan procedure dan hasil tampilannya:
CALL hello();

Membuat, Mengubah dan Menghapus SP

M EMBUAT SP
Untuk membuat SP baru, berikut ini bentuk umumnya:
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body

Contoh 1. Procedure untuk menghitung jumlah pelanggan


CREATE PROCEDURE jumlahPelanggan()
BEGIN
SELECT COUNT(*) FROM pelanggan;
END

Cara pemanggilan dari procedure diatas adalah dengan menggunakan CALL


jumlahPelanggan(). Hasilnya akan ditampilkan jumlah record dari
tabelpelanggan. Berikut ini bentuk lain dari contoh diatas:
CREATE PROCEDURE jumlahPelanggan2(OUT hasil AS INT)
BEGIN
SELECT COUNT(*) INTO hasil FROM pelanggan;
END

Pada bentuk procedure yang kedua di atas (jumlahPelanggan2), kita menyimpan


hasil dari procedure ke dalam satu variabel bernama hasil yang bertipe INT.
Perbedaan dari kedua bentuk di atas adalah, pada bentuk kedua, kita dapat
memanggil procedure dengan SELECT, sedangkan pada yang pertama tidak bisa.
Berikut ini contoh pemanggilan untuk procedure yang kedua:
mysql> CALL jumlahPelanggan2(@jumlah);
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @jumlah AS `Jumlah Pelanggan`;

Contoh 2. Procedure untuk menghitung jumlah item barang yang pernah dibeli
oleh satu pelanggan.
CREATE PROCEDURE
jumlahItemBarang (pelanggan VARCHAR(5))
BEGIN

Database Management System Hal -46


SELECT SUM(detil_pesan.jumlah)
FROM pesan, detil_pesan
WHERE pesan.id_pesan=detil_pesan.id_pesan
AND pesan.id_pelanggan=pelanggan;
END

Contoh 3. Function untuk menghitung jumlah produk yang tersedia (stock) untuk
satu produk tertentu.
CREATE FUNCTION jumlahStockBarang(produk VARCHAR(5))
RETURNS INT
BEGIN
DECLARE jumlah INT;
SELECT COUNT(*) INTO jumlah FROM produk
WHERE id_produk=produk;
RETURN jumlah;
END

Untuk memanggil suatu function, kita tidak menggunakan CALL, tetapi langsung
dapat memanggil dengan SELECT. Berikut ini contoh pemanggilan untuk fungsi
di atas.
SELECT jumlahStockBarang('B0001');

M ENGUBAH SP
Untuk mengubah SP yang sudah ada, berikut ini bentuk umumnya:
ALTER {PROCEDURE | FUNCTION} sp_name [characteristic ...]

M ENGHAPUS SP
Untuk menghapus SP yang sudah ada, berikut ini bentuk umumnya:
DROP {PROCEDURE | FUNCTION} [IF EXISTS] sp_name

S INTAKS D A SAR DA LAM SP


SP dapat dikatakan sebagai bahasa pemrograman yang berada di dalam database.
Oleh karena itu, tentunya terdapat sintaks-sintaks tertentu berhubungan dengan
SP tersebut, misalnya bagaimana untuk mendeklarasikan variabel, penyeleksian
kondisi, perulangan dsb. Pada bagian ini akan diuraikan beberapa sintaks dasar
SP yang didukung oleh MySQL.

V ARIABEL
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 pendeklarasian suatu variabel di MySQL:
DECLARE variable_name DATATYPE [DEFAULT value];

Contohnya:
DECLARE jumlah INT;

Database Management System Hal -47


DECLARE kode VARCHAR(5);
DECLARE tgl_lahir DATE DEFAULT ‘1982-10-20’;

Setelah dideklarasikan, suatu variabel dapat diisi dengan suatu nilai sesuai
dengan tipe data yang didefinisikan saat pendeklarasian. Untuk mengisikan
nilaike dalam suatu variabel, digunakan perintah SET. Format umumnya sebagai
berikut:
SET variable_name = expression|value;

Contohnya:
SET jumlah = 10;
SET kode = (SELECT id_pelanggan FROM pelanggan LIMIT 1);
SET tgl_lahir = now();

Berikut ini contoh function hitungUmur() untuk menghitung umur seseorang saat
ini berdasarkan tahun kelahiran yang diberikan.
CREATE FUNCTION hitungUmur (lahir DATE)
RETURNS INT
BEGIN
DECLARE thn_sekarang, thn_lahir INT;
SET thn_sekarang = YEAR(now());
SET thn_lahir = YEAR (lahir);
RETURN thn_sekarang - thn_lahir;
END

P ENY ELEKSIAN K ONDISI


Dengan adanya fasilitas penyeleksian kondisi, kita dapat mengatur alur proses
yang terjadi dalam database kita. Di MySQL, penyeleksian kondisi terdiri dari IF,
IF...ELSE dan CASE. Berikut ini bentuk umum ketiga perintah tersebut:
IF kondisi THEN
perintah-jika-benar;
END IF;
IF kondisi THEN
perintah-jika-benar;
ELSE
perintah-jika-salah;
END IF;
CASE expression
WHEN value THEN
statements
[WHEN value THEN
statements ...]
[ELSE
statements]
END CASE;

Berikut ini contoh penggunaan perintah IF dalam fungsi cekPelanggan() dimana


fungsi ini memeriksa apakah pelanggan sudah pernah melakukan transaksi
pemesanan barang. Jika sudah pernah, tampilkan pesan berapa kali melakukan
pemesanan, jika belum tampilkan pesan belum pernah memesan.
CREATE FUNCTION cekPelanggan (pelanggan varchar(5))
RETURNS VARCHAR (100)
BEGIN

Database Management System Hal -48


DECLARE jumlah INT;
SELECT COUNT(id_pesan) INTO jumlah FROM pesan
WHERE id_pelanggan=pelanggan;
IF (jumlah > 0) THEN
RETURN CONCAT("Anda sudah bertransaksi sebanyak ",
jumlah, " kali");
ELSE
RETURN "Anda belum pernah melakukan transaksi";
END IF;
END

Dan berikut ini contoh penggunaan perintah CASE dalam fungsi getDiskon()
dimana fungsi ini menentukan diskon berdasarkan jumlah pesanan yang
dilakukan.
CREATE FUNCTION getDiskon(jumlah INT) RETURNS int(11)
BEGIN
DECLARE diskon INT;
CASE
WHEN (jumlah >= 100) THEN
SET diskon = 10;
WHEN (jumlah >= 50 AND jumlah < 100) THEN
SET diskon = 5;
WHEN (jumlah >= 20 AND jumlah < 50) THEN
SET diskon = 3;
ELSE SET diskon = 0;
END CASE;
RETURN diskon;
END

P ERULANGAN
Selain penyeleksian kondisi, MySQL juga mendukung adanya perulangan dalam
querynya. Perulangan biasanya digunakan untuk mengulang proses atau perintah
yang sama. Dengan perulangan, perintah akan lebih efisien dan singkat. Berikut
ini bentuk-bentuk perintah perulangan:

[label:] LOOP statements


END LOOP [label];
[label:] REPEAT
statements
UNTIL expression
END REPEAT [label]
[label:] WHILE expression DO
statements
END WHILE [label]

Contoh perulangan dengan LOOP


SET i=1;
ulang: WHILE i<=10 DO
IF MOD(i,2)<>0 THEN
SELECT CONCAT(i," adalah bilangan ganjil");
END IF;
SET i=i+1;
END WHILE ulang;

Database Management System Hal -49


BAB IX
TRIGGER

Tujuan Kompetensi Khusus

1. Membuat Trigger
2. Menghapus Trigger

Trigger
Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara
otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE
dari suatu tabel. Sebagai contoh misalnya kita ingin menyimpan id pelanggan
secara otomatis ke tabel ‘log’ sebelum menghapus data di tabel 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) pihak
pengembang 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 akan bertambahsecara otomatis.
 Trigger dapat digunakan untuk mengimplementasikan suatu
sistem log.Setiap terjadi perubahan, secara otomatis akan
menyimpan ke tabel log.
 Trigger dapat digunakan untuk melakukan validasi dan
verifikasi datasebelum data tersebut disimpan.

M EMBUAT T RIGGER B ARU


Berikut ini bentuk umum perintah untuk membuat triggers:
CREATE TRIGGER name
[BEFORE|AFTER] [INSERT|UPDATE|DELETE]
ON tablename
FOR EACH ROW statement

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 dalam triggers.
Statement atau perintah dalam trigger dapat berupa satu perintah saja, dan dapat
juga beberapa perintah sekaligus. Jika terdapat beberapa perintah dalam trigger,
maka gunakan perintah BEGIN dan END untuk mengawali dan mengakhiri
perintah.

Database Management System Hal -50


Di dalam statement trigger, kita dapat mengakses record tabel sebelum atau
sesudah proses dengan menggunakan NEW dan OLD. NEW digunakanuntuk
mengambil record yang akan diproses (insert atau update), sedangkan OLD
digunakan untuk mengakses record yang sudah diproses (update atau delete).
Berikut ini contoh trigger yang akan mencatat aktivitas ke tabel log setiap terjadi
proses insert ke tabel pelanggan:

CREATE TRIGGER penjualan.before_insert BEFORE INSERT ON


penjualan.pelanggan
FOR EACH ROW BEGIN
INSERT INTO `log` (description, `datetime`, user_id)
VALUES (CONCAT('Insert data ke tabel pelanggan id_plg
= ', NEW.id_pelanggan), now(), user());
END;

M ENGHAPUS T RIGG ER
Untuk menghapus trigger, dapat menggunakan perintah DROP TRIGGER
dengan diikuti dengan nama tabel dan nama triggernya. Berikut ini bentuk
umumdan contoh perintah untuk menghapus trigger.
DROP TRIGGER tablename.triggername;
Contoh :

DROP TRIGGER penjualan.before_insert;

BAB X
MENGAKSES 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, salah satunya 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 MySQL menggunakan PHP

<?php

$conn = mysql_connect("localhost", "root", "");

Database Management System Hal -51


if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}

if (!mysql_select_db("penjualan")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}

$sql = "SELECT * FROM Pelanggan";

$result = mysql_query($sql);

if (!$result) {
echo "Could not successfully run query ($sql) from DB: " .
mysql_error();
exit;
}

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}

while ($row = mysql_fetch_assoc($result)) {


echo $row["id_pelanggan"]." | ";
echo $row["nm_pelanggan"]." | ";
echo $row["alamat"]." | ";
echo $row["telepon"]." | ";
echo $row["email"]." | ";
}

mysql_free_result($result);

?>

Database Management System Hal -52

Anda mungkin juga menyukai