Modul MySQL 2010
Modul MySQL 2010
MySQL 5.1.30
MODUL I
BAHASA SQL DDL
1
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
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.
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.
4. Membuat Table
2
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 :
3
NUMERICAL(M, Ukuran M byte. Sinonim dari DECIMAL. Misalnya
D) NUMERICAL(5,2) dapat digunakan untuk
menyimpan bilangan -99,99 sampai dengan
99,99
4
GUI Pilih database yang akan diaktifkan
Pada kotak ciptakan tabel baru, Masukkan nama tabel dan
jumlah field
Tekan tombol Go
Mengisi struktur tabel pada kotak isian yang tersedia
Tekan tombol Simpan
SQL Pada tab SQL, berikan perintah
USE <nama_database>
CREATE TABLE <nama_table> (
<field1> <tipedata1> [<aturanField1>],
<field2> <tipedata2> [<aturanField2>],
...
<fieldn> <tipedatan> [<aturan_fieldn>],
[<aturanTabel] )
Tekan tombol Go
5
unique, juga mengatur atau menentukan hubungan (relations)
dengan tabel lain seperti :
- FOREING KEY yang merujuk ke primary key dari tabel lain
- <aturanDelete> dapat terdiri dari salah satu dari cascade,
restrict, ignore
Cascade : penghapusan record di parent table, akan diikuti
oleh penghapusan record-record yang terelasi pada
child table
Restrict : mencegah proses penghapusan record di parent table,
jika record tersebut berelasi dengan record-record
pada child table
Ignore : mengabaikan referensi
- <aturanUpdate> dapat terdiri dari salah satu dari cascade,
restrict, ignore
Cascade : pembaharuan record di parent table, akan diikuti
oleh pembaharuan record-record yang terelasi pada
child table
Restrict : mencegah proses pembaharuan record di parent table,
jika record tersebut berelasi dengan record-record
pada child table
Ignore : mengabaikan referensi
- <aturanInsert> dapat terdiri dari salah satu dari restrict, ignore
Restrict : mencegah proses penambahan record baru di child
table, jika data yang dimasukkan pada kolom foreing
key child table tersebut tidak terdapat pada parent
table
Ignore : mengabaikan referensi
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.
6
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.
7
Untuk melihat visualisasi dari relationship, Pilih database, dan
tab Designer
Pengaturan relations juga dapat dilakukan langsung pada
tab Designer
8
Diberikan sekumpulan perintah SQL untuk
mengimplementasikannya :
9
constraint refKolPengarang foreign key(idPengarang) references
tbPengarang(idPengarang) on delete restrict on update
cascade,
constraint refKolPenerbit foreign key(idPenerbit) references
tbPenerbit(idPenerbit) on delete restrict on update cascade
)
create table tbPeminjaman(
idPinjam smallint auto_increment not null, TglPinjam date,
idKoleksi smallint not null, idAnggota smallint not null,
TglHarusKembali date, TglKembali date, BayarDenda int,
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
10
Contoh :
INSERT INTO tbPenerbit VALUES (1, 'PT. Ilmu', 'Jl Karimata',
'59911111');
INSERT INTO tbPenerbit (IdPenerbit, Nama) VALUES (2, 'PT. Graha
Ilmu');
Contoh :
UPDATE tbKoleksi SET Harga=Harga*1.1;
UPDATE tbKoleksi SET Keterangan = 'Buku TA' WHERE
idTipeKoleksi=4;
Contoh :
DELETE FROM tbPeminjaman ;
DELETE FROM tbKoleksi WHERE idTipeKoleksi=4 ;
11
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>]
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
12
<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.
13
SELECT * FROM tbAnggota WHERE JK=P;
SELECT * FROM tbAnggota WHERE year(TglLahir) > 1985
SELECT * FROM tbAnggota WHERE JK="P" AND
month(TglLahir)=1
SELECT * FROM tbPeminjaman WHERE TglKembali IS NULL
b. Menggunakan Group By
SELECT JK, COUNT(*) FROM tbAnggota
GROUP BY JK;
14
SELECT idPenerbit, AVG(Harga) FROM tbKoleksi
GROUP BY idPenerbit ;
tbKoleksi
tbTipeKoleksi
15
Perintah-perintah yang biasa digunakan yaitu :
Inner Join
Contoh :
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
INNER JOIN tbTipeKoleksi TP ON
KL.idTipeKoleksi=TP.idTipeKoleksi
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
16
Right (outer) Join
Kebalikan dengan left outer join, jika data di sebelah kanan
tabel tidak dapat menemukan hubungannya dengan tabel
disebelah kiri, akan ditampilkan NULL.
Contoh :
SELECT KL.idKoleksi, KL.Judul, TP.idTipeKoleksi, TP.TipeKoleksi
FROM tbKoleksi KL
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
17
MODUL III
BAHASA SQL DDL,DML Advance
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.
Filter berdasarkan
Dilakukan Query=>hasil
18
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 :
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;
19
clien tidak perlu membuat lagi tetapi cukup memanggil store
procedure yang sudah ada.
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'
routine_body:
Valid SQL procedure statement
Contoh : Pembuatan
CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
20
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 :
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>
21
Trigger diasosiasikan dengan sebuah tabel yang bernama
<tbl_name>, yang harus berupa tabel permanen, tidak boleh
berupa tabel sementara atau view.
Ketika trigger diaktifkan, DEFINER memperkirakan privilege yang
berlaku untuk user tersebut.
<Trigger_time> adalah waktu aksi bagi trigger, dapat berupa
BEFORE atau AFTER yang mengindikasikan bahwa trigger aktif
sebelum atau sesudah pernyataan yang mengaktifkan trigger.
<Trigger_event> mengindikasikan macam pernyataan yang
mengaktifkan trigger, yaitu :
INSERT.
Trigger aktif ketika sebuah baris baru dimasukkan ke dalam
tabel melalui pernyataan INSERT, LOAD DATA dan REPLACE
UPDATE.
Trigger aktif ketika sebuah baris data diubah melalui
pernyataan UPDATE
DELETE.
Trigger aktif ketika sebuah baris dihapus dari tabel melalui
pernyataan
DELETE atau REPLACE.
Meskipun demikian, DROP TABLE dan TRUNCATE pada sebuah
tabel tidak mengaktifkan trigger karena tidak menggunakan
DELETE.
22
memberikan respon dengan memasukkan data pada tabel
LogHistoris :
INSERT INTO tbAnggota VALUES ('123','adi s',1,'Jl.
Jawa','P','1976-01-10')
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
23
MODUL IV
BAHASA SQL DCL
24
Berisi informasi database mana saja yang bisa diakses oleh
setiap pemakai dan dari komputer mana
Tabel user
Digunakan untuk menyimpan data pemakai database dan data
privilege-nya pada saat melakukan akses ke dalam database.
Tabel host
Digunakan untuk menyimpan informasi komputer mana saja
yang dapat mengakses database MySQL, siapa nama
pemakainya.
Tabel tables_priv
Tabel ini menyimpan informasi privilege pemakai pada level
tabel.
Tabel column_priv
Tabel ini digunakan untuk menyimpan informasi privilege
pemakai sampai pada level kolom (field).
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.
25
Field lain dari tabel user ini adalah informasi privilege yang
diberikan kepada host untuk mengakses database yang
didefinisikan.
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
26
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
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.
27