Modul MySQL 2010 PDF
Modul MySQL 2010 PDF
MySQL 5.1.30
MODUL I
BAHASA SQL – DDL
User dapat menggunakan MySQL melalui tampilan grafis (GUI) milik Xampp. Dalam GUI
user dapat menggunakan perpaduan fitur-fitur siap pakai pada Xampp (GUI) dengan
pemberian perintah SQL pada tab SQL (SQL).
1. Memulai MySQL
1
Secara default, MySQL diaktifkan dengan user root, host 127.0.0.1, dan privileges
all privileges. 127.0.0.1 merupakan IP Address localhost, dimana sistem MySQL
berada. Setiap orang dapat mengaktifkan sistem MySQL dengan status user
sebagai administrator, hal ini sangat tidak aman.
- Pastikan pada Xampp Control Panel Application running Apache dan MySQL
- Membuka browser, dan pada bagian URL ketikkan http://localhost/xampp/
- Klik phpMyAdmin untuk mengaktifkan MySQL
2. Membuat Database
Pemberian nama database tidak diperbolehkan menggunakan spasi atau karakter
khusus lainnya, dan tidak boleh hanya angka.
3. Menghapus Database
Adakalanya database dihapus karena tidak diperlukan lagi. Penghapusan suatu
database, mengakibatkan penghapusan semua tabel, data, dan relasi didalamnya.
GUI – Pada tab Database, berikan centang untuk database yang akan dihapus
Tekan tombol Hapus
SQL – Pada tab SQL, berikan perintah DROP DATABASE <nama_database>
Tekan tombol Go
4. Membuat Table
Pemberian nama table tidak diperbolehkan menggunakan spasi atau karakter
khusus lainnya. Setiap tabel mempunyai field-field yang masing-masing harus
ditentukan tipe datanya. Tipe data menyatakan jenis data, ukuran data, dan
jangkauan nilai yang diperbolehkan. MySQL mempunyai tipe data sebagai berikut :
2
tidak bertanda : 0 sampai dengan 65535.
MEDIUMINT Ukuran 3 byte. Bilangan bulat dengan jangkauan bilangan
bertanda : -8388608 sampai dengan 8388607 dan untuk
bertanda : 0 sampai dengan 16777215
INT Ukuran 4 byte. Bilangan bulat dengan jangkauan bilangan
bertanda : - 2147483648 sampai dengan 2147483647 dan
untuk yang tidak bertanda : 0 sampai dengan 4294967295
INTEGER Ukuran 4 byte. Sinonim dari INT
BIGINT Ukuran 8 byte. Bilangan bulat terbesar dengan jangkauan
bilangan bertanda : -9223372036854775808 sampai dengan
9223372036854775807 dan untuk yang tidak bertanda : 0
sampai dengan 18446744073709551615
FLOAT Ukuran 4 byte. Bilangan pecahan presisi tunggal dengan
jangkauan nilai 1.175494351E-38 (tanpa nilai 0) sampai
dengan 6.402823466E+38
DOUBLE Ukuran 8 byte. Bilangan pecahan presisi ganda dengan
jangkauan nilai 2.2250738580720E-308 (tanpa nilai 0)
sampai dengan 1.7976931348623157E+308
DOUBLE PRECISION Ukuran 8 byte. Bilangan pecahan berpresisi ganda
REAL Ukuran 8 byte. Sinonim dari DOUBLE
DECIMAL(M,D) Ukuran M byte. Bilangan pecahan. Misalnya DECIMAL(5,2)
dapat digunakan untuk menyimpan bilangan -99,99 sampai
dengan 99,99
NUMERICAL(M,D) Ukuran M byte. Sinonim dari DECIMAL. Misalnya
NUMERICAL(5,2) dapat digunakan untuk menyimpan
bilangan -99,99 sampai dengan 99,99
aturanFieldn berisi aturan untuk field yang bersangkutan, [] bersifat optional, dan
dapat berupa :
AUTO_INCREMENT Khusus field dengan tipe integer, kenaikan 1 setiap record
PRIMARY KEY Khusus field yang akan dijadikan sebagai kunci utama
NOT NULL Field tersebut tidak boleh kosong, harus diisi
DEFAULT <nilai> Jika tidak diisi, maka nilai default yang diberikan
UNSIGNED Bilangan tersebut tidak memiliki nilai negatif, hanya positif
ZEROFILL Menempatkan angka 0 didepan bilangan
Sedangkan aturanTabel berisi aturan untuk tabel yang bersangkutan. Jika aturan lebih
dari satu, maka dibatasi oleh tanda koma, dapat berupa :
4
PRIMARY KEY (<fields>)
FOREIGN KEY (<fields >) REFERENCES <nama_tabel> (<fields>)
[ON DELETE <aturanDelete>] [ON UPDATE <aturanUpdate>]
[ON INSERT <aturanInsert>]
Khusus untuk aturanTabel yang diberi nama_aturan, diberikan perintah :
CONSTRAINT <nama_aturan> <aturanTabel>
5. Menghapus Table
Adakalanya tabel dihapus karena tidak diperlukan lagi. Penghapusan suatu tabel,
mengakibatkan penghapusan semua field, data, dan relasi yang melekat pada tabel
tersebut.
5
Pada tab Struktur, tekan tombol Hapus () pada tabel yang bersangkutan
SQL – Pada tab SQL, berikan perintah DROP TABLE <nama_tabel>
Tekan tombol Go
7. Menentukan Relationship
Pengaturan terhadap relasi antara satu tabel dengan tabel lain yang berhubungan
sangat diperlukan untuk menjaga konsistensi record-record data antara dua buah
tabel atau penerapan aturan referential secara ketat terhadap modifikasi data
sehingga dapat meminimalkan kesalahan modifikasi yang sangat mungkin
dilakukan oleh user.
6
SQL – Pembuatan relationship terjadi saat pembuatan tabel child table dengan
perintah SQL dengan pemberian aturanTable seperti foreing key, dan
cascade, restrict, ignore pada on delete, on update, on insert
8
primary key(idPinjam,TglPinjam),
constraint refPinKol foreign key(idKoleksi) references tbKoleksi(idKoleksi)
on delete restrict on update cascade,
constraint refPinAnggota foreign key(idAnggota) references
tbAnggota(idAggota)
on delete restrict on update cascade
)
MODUL II
BAHASA SQL - DML
Setelah objek database, tabel, dan penentuan aturan referential selesai dibuat, maka
selanjutnya bagaimana melakukan pengisian data, perbaikan data, penghapusan data,
pengambilan dan pencarian kembali data.
Contoh :
INSERT INTO tbPenerbit VALUES (1, 'PT. Ilmu', 'Jl Karimata', '59911111');
INSERT INTO tbPenerbit (IdPenerbit, Nama) VALUES (2, 'PT. Graha Ilmu');
<nama_tabel> adalah tabel yang akan diperbaiki datanya. <Field1> adalah nama
field dalam tabel yang akan diubah. Nilai1 adalah data yang akan dimasukkan ke
dalam field1. field2 dan nilai2 adalah nama field dan datanya, dan seterusnya.
Kondisi adalah kriteria data dalam tabel yang akan diperbaiki.
9
Contoh :
UPDATE tbKoleksi SET Harga=Harga*1.1;
<nama_tabel> adalah nama tabel yang akan dihapus datanya. Kondisi adalah
kriteria data dalam tabel yang akan dihapus.
Contoh :
DELETE FROM tbPeminjaman ;
Perintah select merupakan perintah untuk mencari atau menampilkan data secara
keseluruhan atau sebagian sesuai dengan kriteria baik dalam satu tabel maupun
dalam banyak tabel. Perintah ini digunakan untuk menghasilkan informasi dalam
berbagai cara, gaya dan kebutuhan dalam bentuk pelaporan.
Perintah select secara bertahap dapat dijelaskan sebagai berikut :
FROM <table_source>
FROM merupakan perintah untuk menunjukkan asal dari sumber data.
<table_source> berisi daftar tabel atau view yang menjadi sumber data. Jika
melibatkan lebih dari satu tabel, maka dipisahkan oleh koma.
[WHERE <search_condition>]
10
WHERE merupakan perintah untuk melakukan penyaringan data (filter) sesuai
kriteria dalam <search_condition>, dan juga digunakan untuk merelasikan satu
tabel dengan tabel lain untuk menghasilkan query atau view yang melibatkan
banyak tabel. Jika melibatkan lebih dari satu <search_condition>, dapat
dihubungkan dengan operator AND atau OR sesuai kebutuhan.
Untuk tujuan filter, pada <search_condition> dapat digunakan (1) operasi
perbandingan (= < <= >= > <> is ), (2) operasi pendekatan pola (LIKE) dengan
simbol % menyatakan sembarang karakter tak terhingga, dan _ menyatakan satu
karakter tunggal. (3) operasi pembandingan dengan sekumpulan nilai dengan
perintah IN dan NOT IN.
[GROUP BY <group_by_expression>]
GROUP BY digunakan untuk pengelompokan data fungsi-fungsi agregate. Fungsi
agregate merupakan fungsi yang digunakan untuk summary atau akumulasi nilai
dari setiap baris record pada tabel atau view.
Fungsi agregate terdiri dari (1) COUNT(*) untuk mendapatkan jumlah baris, (2)
SUM(kolom) untuk mendapatkan hasil penjumlahan kolom, (3) MAX(kolom) untuk
mendapatkan nilai tertinggi, (4) MIN(kolom) untuk mendapatkan nilai terendah,
(5) AVG(kolom) untuk mendapatkan nilai rata-rata.
<group_by_expression> berisi daftar field yang akan dijadikan sebagai dasar dalam
pengelompokan. Field-field dalam <group_by_expression> harus sama dengan
field-field yang dinyatakan dalam SELECT selain fungsi aggregate.
[HAVING <search_condition>]
HAVING digunakan untuk penyaringan data (filter) yang hanya menggunakan
fungsi-fungsi aggregate.
11
c. Menggunakan distinct untuk menghilangkan duplikasi
SELECT DISTINCT idAnggota FROM tbPeminjaman ;
12
a. Mengambil informasi pada dua tabel tanpa kondisi tambahan
SELECT KL.idKoleksi,
KL.Judul,
PG.Nama
FROM tbKoleksi KL,
tbPengarang PG
WHERE KL.idPengarang=PG.idPengarang
b. Mengambil informasi dari dua tabel atau lebih dengan kondisi tambahan
SELECT ag.nama
KL.idKoleksi,
KL.Judul,
KL.Harga
FROM tbKoleksi KL,
tbPeminjaman PJ,
tbAnggota AG
WHERE PJ.idKoleksi=KL.idKoleksi AND
PJ.idAnggota=AG.idAnggota AND
AG.idAnggota = ‘101’
ORDER BY KL.Judul
============================================================
Contoh : SELECT ... FROM ... WHERE ... GROUP BY
a. Menggunakan fungsi-fungsi agregate
SELECT COUNT(*)
FROM tbAnggota ;
SELECT MIN(year(TglLahir))
FROM tbAnggota ;
b. Menggunakan Group By
SELECT JK, COUNT(*) FROM tbAnggota
GROUP BY JK;
SELECT idPenerbit, AVG(Harga) FROM tbKoleksi
GROUP BY idPenerbit ;
====================================================
SELECT idPenerbit, AVG(Harga) FROM tbKoleksi
WHERE Harga >=50000
GROUP BY idPenerbit ;
Contoh : SELECT ... FROM ... WHERE ... GROUP BY ... HAVING
SELECT idPenerbit, COUNT(*) FROM tbKoleksi
13
GROUP BY idPenerbit
HAVING COUNT(*)>10
tbKoleksi
tbTipeKoleksi
Inner Join
Contoh :
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
INNER JOIN tbTipeKoleksi TP ON KL.idTipeKoleksi=TP.idTipeKoleksi
14
Straight Join
Identik dengan Join
Contoh
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
STRAIGHT_JOIN tbTipeKoleksi TP ON KL.idTipeKoleksi=TP.idTipeKoleksi
Contoh :
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
LEFT JOIN tbTipeKoleksi TP ON KL.idTipeKoleksi=TP.idTipeKoleksi
Contoh :
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
15
RIGHT JOIN tbTipeKoleksi TP ON KL.idTipeKoleksi=TP.idTipeKoleksi
Contoh :
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
NATURAL RIGHT JOIN tbTipeKoleksi TP
Cross Join
Contoh :
SELECT * FROM tbKoleksi CROSS JOIN tbTipeKoleksi
MODUL III
BAHASA SQL – DDL,DML – Advance
16
Setelah objek database, tabel, aturan referential, dan manipulasi data selesai dipahami
dan dipraktekkan, maka selanjutnya mengenal fitur-fitur pengembangan yang akan
menjadikan database dapat berguna secara optimal (powerfull).
1. Membuat View
View menyimpan sebagian data yang memenuhi kondisi atau kriteria tertentu,
sumber datanya berasal dari tabel-tabel dalam sebuah database. Oleh karenanya,
jika pada tabel-tabel sumber terdapat modifikasi maka data-data yang
ditampilkan/tersimpan dalam view juga akan berubah mengikuti perubahan data
pada tabel-tabel sumber tersebut. Hal ini dapat dipahami karena view tidak
menyimpan data secara fisik, tetapi virtual.
Contoh :
Membuat view dengan nama Anggota_Dosen yang menyimpan data anggota
yang mempunyai idJenisAnggota 1, perintah yang diberikan :
CREATE VIEW Anggota_Dosen AS
SELECT * FROM tbAnggota WHERE idJenisAnggota=1;
Contoh :
17
Membuat View dengan nama KoleksiDipinjamAnggota yang menyimpan data-data
koleksi yang dipinjam oleh anggota tertentu, diberikan perintah :
CREATE VIEW KoleksiDipinjamAnggota AS
SELECT KL.idKoleksi, KL.Judul, KL.Harga
FROM tbKoleksi KL, tbPeminjaman PJ, tbAnggota AG
WHERE PJ.idKoleksi=KL.idKoleksi AND PJ.idAnggota=AG.idAnggota
AND AG.idAnggota = ‘101’ ORDER BY KL.Judul
Contoh : Penggunaan
SELECT * FROM Anggota_Dosen ;
SELECT * FROM Koleksi_Jogiyanto ;
SELECT * FROM AnggotaPria ;
SELECT * FROM KoleksiDipinjamAnggota;
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
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
18
routine_body:
Valid SQL procedure statement
Contoh : Pembuatan
CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
RETURN CONCAT('Hello ',s,'!');
Contoh : Penggunaan
SELECT hello('ladies');
CALL sp_name([parameter[,...]])
5. Menghapus Store Procedure
Perintah yang digunakan untuk menghapus store prosedur adalah :
Contoh :
19
DROP FUNCTION hello;
6. Membuat Trigger
Trigger adalah sebuah obyek dalam database yang berupa prosedur yang
merespon setiap kali terdapat proses modifikasi pada tabel . Proses modifikasi
dapat berupa: INSERT, UPDATE DAN DELETE.
Trigger berisi program yang dihubungkan dengan suatu tabel yang secara
otomatis melakukan suatu tindakan ketika suatu baris di dalam tabel dikenai
operasi tertentu.
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER <trigger_name> <trigger_time> <trigger_event>
ON <tbl_name> FOR EACH ROW <trigger_stmt>
Contoh :
Membuat trigger dg nama testUbahLogHistoris untuk setiap perubahan data
pada tabel tbAnggota, dilakukan penambahan data pada tabel
LogUbahHistoris.
7. Menghapus Trigger
DROP TRIGGER [schema_name.]trigger_name
21
MODUL IV
BAHASA SQL – DCL
Salah satu fungsi administrasi yang harus dilakukan agar MySQL dapat digunakan
secara aman, harus ada pengaturan siapa saja yang berhak mengakses sistem database
dengan melakukan konfigurasi bagaimana server mengelola user-user.
Saat pertama kali MySQL diaktifkan maka akan ada dua database penting yaitu
database mysql dan test. Database mysql adalah database sistem, database yang
berisi informasi yang digunakan oleh server MySQL untuk melakukan kendali
terhadap siapa saja yang bisa mengakses server MySQL dan dari mana saja,
kemudian apa saja hak (privilege) yang diberikan oleh pemakai tersebut pada saat
telah berada dalam lingkungan MySQL.
Pada tabel db, Struktur tabel db hampir sama dengan tabel user, hanya saja tabel
db memiliki tambahan field yaitu field db. Field db digunakan untuk mendefinisikan
nama tabel yang dapat diakses oleh setiap pemakai, dari host mana dan apa saja
privilegenya
Pada tabel host, Tabel ini digunakan untuk memudahkan pendefinisian akses
kepada suatu database dari suatu host, sehingga entri dalam tabel db tidak perlu
mendefinisikan nama host, cukup pada tabel host saja didefinisikan, field host pada
tabel db dapat dikosongkan.
Tabel tables_priv, mendefinisikan privilege lebih detail untuk seorang pemakai pada
level tabel mana saja yang diberikan privilegenya kepada pemakai tersebut dan
privilege apa yang dimiliki.
Host, adalah nama host untuk mengakses database
Db, adalah nama database yang didefinisikan.
Use, mendefinisikan pemakai yang diberi privelege tabel yang didefinisikan.
Table_name, mendefinisikan nama tabel yang didefinisikan
Grantor, adalah pemakai yang memberikan privilege kepada pemakai
24
Timestamp, mencatat kapan (waktu) perubahan dilakukan.
Pada tabel columns_priv, Isi tabel columns_priv seperti halnya tables_priv,
digunakan untuk lebih merinci lagi privilege yang dimiliki oleh seseorang pemakai
sampai dengan level kolom dari suatu tabel.
25