Senin, Mei 07, 2012

procedure dan trigger mysql


PROCEDURE DAN TRIGGER MYSQL


BERKENALAN DENGAN STORE PROCEDURE DAN TRIGGER
Stored Procedures which allow us to automate or program our way out of many tasks on directly on the server rather than having to write external scripts to do complex manipulation of data – MYSQL References
Prosedur merupakan program yang ditulis dan dieksekusi langsung dari Engine database. Beberapa situasi dimana stored procedure sangat bermanfaat :
1.         Pada system yang didalamnya terdapat bermacam-macam platform bahasa pemrograman, akan tetapi proses yang terjadi pada database harus tetap memiliki standard yang sama.
2.         Sistem dikerjakan pada lingkungan yang berbeda-beda dengan prioritas keamanan yang berbeda sehingga diperlukan pembatasan terhadap hak-hak penggunaan terhadap tabel-tabel tertentu.
3.         Dengan adanya multi koneksi , maka dengan store procedure akan memberikan performa yang lebih baik karena proses interkoneksi dari luar server menjadi lebih sedikit.
4.         Programmer gak perlu pusing melihat bertumpuk-tumpuk tabel karena hanya memakai prosedur yang sudah ada.
Sedangkan trigger merupakan store procedure yang digunakan untuk memicu  perubahan pada suatu tabel sesuai dengan event yang  terjadi (insert, delete, update). Trigger dapat digunakan untuk memicu  proses terhadap tabel lain maupun tabel itu sendiri.
Manfaat dari trigger :
1.       Pada pemanfaatan program aplikasi multi platform, proses bisnis dari sistem dapat dibuat langsung dilakukan didatabase sehingga perbedaan interpretasi di  program aplikasi menjadi lebih diminimalisisr
2.       Proses lebih cepat
3.       Programmer  tinggal ongkang-ongkang kaki karena yang pusing DBAnya hehehehe..
Contoh tabel dan sampel data untuk coba-coba trigger dan procedure
CREATE TABLE jurusan (
id CHAR(3),
nama VARCHAR(50) NOT NULL,
Constraint pk_jur primary key(id));
CREATE TABLE Mahasiswa (
Nim CHAR(7),
Nama VARCHAR(50) NOT NULL,
Tgl_lahir DATE,
Jn_Kelamin ENUM(‘L’,'P’),
jalan VARCHAR(50),
Kota VARCHAR(20),
jurusan varchar(3),
constraint pk_mhs primary key(nim),
constraint fk_mhs_jur foreign key(jurusan) references jurusan(id));
CREATE TABLE Dosen (
Nip CHAR(5),
Nama VARCHAR(50) NOT NULL,
Tgl_lahir DATE,
Jn_Kelamin ENUM(‘L’,'P’),
jalan VARCHAR(50),
Kota VARCHAR(20),
jurusan varchar(3),
constraint pk_dsn primary key(nip),
constraint fk_dsn_jur foreign key(jurusan) references jurusan(id));
CREATE TABLE MataKuliah (
Kode_mka CHAR(10) NOT NULL,
Nama VARCHAR(50) NOT NULL,
Semester CHAR(5) NoT NULL,
sks TINYINT NOT NULL,
jenis ENUM(‘P’,W’),
dosen char(5),
constraint pk_mka primary key(kode_mka),
constraint fk_mka_dsn foreign key(dosen) references dosen(nip));
CREATE TABLE Prasyarat(
ID_prasyarat int auto_increment,
Kode_prasyarat char(10),
Kode_mka char(10),
Nilai varchar(1),
constraint pk_pra primary key(id_prasyarat),
constraint fk_pra_mka foreign key(kode_mka) references matakuliah(kode_mka),
constraint fk_pra_pra foreign key(kode_prasyarat) references matakuliah(kode_mka));
CREATE TABLEkuliah (
id int(11) NOT NULL auto_increment,
nilai_angka tinyint(4)NULL,
nilai_huruf char(1)NULL,
bobot tinyint(4)NULL,
Th_akademik char(5) NOT NULL,
nim char(7)NULL,
mka char(10)NULL,
constraint pk_klh primary key(id),
constraint fk_klh_mhs foreign key(nim) references mahasiswa(nim),
constraint fk_klh_mka foreign key(nim) references matakuliah(kode_mka));
INSERT INTO jurusan (Id, Nama) VALUES
(‘J01′, ‘Ilmu Komputer’),
(‘J02′, ‘Teknologi Informasi’),
(‘J03′, ‘Manajemen Informatika’);
INSERT INTO Mahasiswa (Nim, Nama, Tgl_lahir, Jn_Kelamin, jalan, Kota, jurusan) VALUES
(’0110001′, ‘Angga Ramadhan’, ’1986-05-05′, ‘L’, ‘Jl. Brigjen Katamso 50′, ‘Yogyakarta’, ‘J01′),
(’0110002′, ‘Amir syarifudin’, ’1985-06-20′, ‘L’, ‘Jl. Ahmad Yani 47′, ‘Sleman’, ‘J01′),
(’0110003′, ‘Dian Arum Ndalu’, ’1979-03-14′, ‘P’, ‘Jl. Kapten Tendean 23′, ‘Bantul’, ‘J01′),
(’0110004′, ‘Imam Bagus’, ’1980-05-13′, ‘L’, ‘Jl. Karangwaru I/3′, ‘Magelang’, ‘J01′),
(’0110005′, ‘Marlina Zein’, ’1982-02-01′, ‘P’, ‘Jl. Batang 108′, ‘Yogyakarta’, ‘J01′),
(’0110006′, ‘Rahendra Putra’, ’1986-04-12′, ‘L’, ‘Jl. Kenari 2A’, ‘Sleman’, ‘J01′), (’0110007′, ‘Yasinta Priska Nadia’, ’1978-04-29′, ‘P’, ‘Jl. Kertosono 87′, ‘Bandung’, ‘J01′),
(’0210001′, ‘Vivi Pratami’, ’1987-03-13′, ‘P’, ‘Jl. Gambiran 23′, ‘Yogyakarta’, ‘J02′),
(’0210002′, ‘Yuanita Tiara Reni’, ’1985-06-21′, ‘P’, ‘Jl. Mahameru 46′, ‘Jakarta’, ‘J02′),
(’0210003′, ‘Yusuf Nizar’, ’1978-09-23′, ‘L’, ‘Jl. Colombo’, ‘Yogyakarta’, ‘J02′),
(’0210004′, ‘Imelda Nurinda’, ’1984-08-12′, ‘P’, ‘Jl. Antasari 55′, ‘Medan’, ‘J02′),
(’0210005′, ‘Khomaruzaman’, ’1982-10-26′, ‘L’, ‘Jl. Wachid Hasyim 47′, ‘Makasar’, ‘J02′),
(’0210006′, ‘Danis Mariaman’, ’1979-12-18′, ‘L’, ‘Jl. Warungboto 05′, ‘Yogyakarta’, ‘J02′),
(’0210007′, ‘Ardhi Nugroho’, ’1986-09-16′, ‘L’, ‘Jl. Wonosari 63′, ‘Bantul’, ‘J02′),
(’0310001′, ‘Rima Nurasmi’, ’1987-03-03′, ‘P’, ‘Jl. Panggang Indah 108′, ‘Gunung Kidul’, ‘J03′),
(’0310002′, ‘Reza Fitriawati’, ’1985-07-10′, ‘P’, ‘Jl. Samas 2A’, ‘Bantul’, ‘J03′),
(’0310003′, ‘Haris Prasetya’, ’1980-06-28′, ‘L’, ‘Jl. Maga 23′, ‘Semarang’, ‘J03′),
(’0310004′, ‘Binti Nur Fitriani’, ’1986-09-14′, ‘P’, ‘Jl. Randu Belang 23′, ‘Yogyakarta’, ‘J03′),
(’0310005′, ‘Evi Munandari’, ’1988-01-21′, ‘P’, ‘Jl. Kebon Agung 40′, ‘Surakarta’, ‘J03′),
(’0310006′, ‘Nur Yusman Aqim’, ’1979-02-28′, ‘L’, ‘Jl. Kamboja 12′, ‘Magelang’, ‘J03′);
INSERT INTO dosen (Nip, Nama, Tgl_lahir, Jn_Kelamin, jalan, Kota, jurusan) VALUES
(’03002′, ‘Diana Ginting,S.Pd.,M.Cs.’, ’1959-06-21′, ”, ‘Jl. Gatot Subroto 89′, ‘Jakarta’, ‘J03′),
(’03001′, ‘Septian Dwiyanto,S.T.,M.Cs.’, ’1964-03-13′, ‘P’, ‘Jl. Bulukan 03′, ‘Lampung’, ‘J03′),
(’02003′, ‘Wahyu Nirba Habibah,S.T.’, ’1963-04-29′, ”, ‘Jl. Mayoret’, ‘Bandung’, ‘J02′),
(’02002′, ‘Jamalludin,S.T.,M.Kom.’, ’1965-04-12′, ‘P’, ‘Jl. Jend. Sudirman’, ‘Sleman’, ‘J02′),
(’02001′, ‘Mahmudin,S.Ag.,M.Kom.’, ’1956-02-01′, ‘P’, ‘Jl. Disvus 20′, ‘Yogyakarta’, ‘J02′),
(’01003′, ‘Kitri Sri Rahayu,S.T.’, ’1958-03-14′, ‘P’, ‘Jl. Mrican 23′, ‘Yogyakarta’, ‘J01′),
(’01004′, ‘Eko Aribowo,S.T.,M.Kom.’, ’1961-05-13′, ‘P’, ‘Jl. Mawar 56′, ‘Magelang’, ‘J01′),
(’01002′, ‘Imana Kusuma,S.T.,M.Kom.’, ’1960-06-20′, ‘L’, ‘Jl. KOl. Sugiono’, ‘Sleman’, ‘J01′),
(’01001′, ‘Wahyu Pujiono,S.T.,M.Kom.’, ’1957-09-03′, ‘L’, ‘Jl. Ambassador’, ‘Jakarta’, ‘J01′),
(’03003′, ‘Yohanes Surya,S.T.’, ’1960-09-23′, ‘P’, ‘Jl. Tamantirto’, ‘Bantul’, ‘J03′);
INSERT INTO matakuliah (Kode_mka, Nama, Semester, sks, jenis, dosen) VALUES
(‘MI01002′, ‘Operating System’, ’1′, 2, ‘W’, ’03004′),
(‘MI01001′, ‘Konsep Basis Data’, ’1′, 2, ‘W’, ’03004′),
(‘IK02004′, ‘Basis Data’, ’2′, 3, ‘P’, ’01001′),
(‘IK02003′, ‘Arsitektur Komputer’, ’2′, 2, ‘P’, ’01004′),
(‘IK02002′, ‘Dasar Pemrograman II’, ’2′, 3, ‘W’, ’01002′),
(‘IK02001′, ‘Algoritma Pemrograman’, ’2′, 2, ‘W’, ’01003′),
(‘IK01004′, ‘E-Commerce’, ’1′, 2, ‘P’, ’01001′),
(‘IK01003′, ‘Organisasi Komputer’, ’1′, 2, ‘P’, ’01004′),
(‘IK01002′, ‘Dasar Pemrograman’, ’1′, 3, ‘W’, ’01003′),
(‘IK01001′, ‘Statistika & Probabilitas’, ’1′, 2, ‘W’, ’01002′),
(‘TI02004′, ‘Bahasa Rakitan’, ’1′, 2, ‘P’, ’02001′),
(‘TI02003′, ‘Kalkulus 2′, ’2′, 3, ‘W’, ’02003′),
(‘TI02002′, ‘Sistem Operasi’, ’2′, 2, ‘W’, ’02002′),
(‘TI02001′, ‘Algoritma Dan Pemrograman I’, ’2′, 3, ‘W’, ’02002′),
(‘TI01004′, ‘Matematika Diskrit’, ’1′, 2, ‘W’, ’02002′),
(‘TI01003′, ‘Kalkulus 1′, ’1′, 3, ‘W’, ’02003′),
(‘TI01002′, ‘Aljabar Linear’, ’1′, 3, ‘W’, ’02001′),
(‘TI01001′, ‘Statistik Dasar’, ’1′, 2, ‘W’, ’02001′),
(‘MI01003′, ‘Aljabar Elementer’, ’1′, 2, ‘W’, ’03003′),
(‘MI01004′, ‘Fuzzy Logic’, ’1′, 2, ‘P’, ’03001′),
(‘MI02001′, ‘Teknologi Basis Data’, ’2′, 2, ‘W’, ’03002′),
(‘MI02002′, ‘Sistem Operasi’, ’2′, 2, ‘W’, ’03001′),
(‘MI02003′, ‘Pemrograman Terstruktur’, ’3′, 2, ‘W’, ’03001′),
(‘MI02004′, ‘Web Programming’, ’2′, 3, ‘P’, ’03003′);
INSERT INTO prasyarat (ID_prasyarat, Kode_prasyarat, Kode_mka, Nilai) VALUES
(1, ‘IK02002′, ‘IK01002′, ‘C’),
(2, ‘IK02003′, ‘IK01003′, ‘C’),
(3, ‘MI02004′, ‘MI01001′, ‘C’),
(4, ‘MI02004′, ‘MI01002′, ‘C’);
INSERT INTO kuliah (nilai_angka, nilai_huruf, bobot, Th_akademik, nim, mka) VALUES
(66, ‘B’, 3, ’20101′, ’0210003′, ‘TI01001′),
(50, ‘C’, 2, ’20101′, ’0210002′, ‘TI01004′),
(90, ‘A’, 4, ’20101′, ’0210003′, ‘TI01003′),
(70, ‘B’, 3, ’20101′, ’0210001′, ‘TI01001′),
(80, ‘B’, 3, ’20101′, ’0110002′, ‘IK01004′),
(95, ‘A’, 4, ’20101′, ’0110001′, ‘IK01004′),
(70, ‘B’, 3, ’20101′, ’0110001′, ‘IK01003′),
(80, ‘B’, 3, ’20101′, ’0110001′, ‘IK01001′),
(NULL, NULL, NULL, ’20102′, ’0110001′, ‘IK02001′),
(NULL, NULL, NULL, ’20102′, ’0110001′, ‘IK02003′),
(NULL, NULL, NULL, ’20102′, ’0110001′, ‘IK02004′),
(95, ‘A’, 4, ’20102′, ’0110002′, ‘IK02004′),
(NULL, NULL, NULL, ’20102′, ’0210001′, ‘TI02001′),
(NULL, NULL, NULL, ’20102′, ’0210003′, ‘TI02003′),
(NULL, NULL, NULL, ’20102′, ’0210002′, ‘TI02004′),
(NULL, NULL, NULL, ’20102′, ’0210003′, ‘TI02001′),
(NULL, NULL, NULL, ’20102′, ’0110002′, ‘IK02001′);
A. TRIGGER
Contoh Trigger yang digunakan untuk memicu perubahan pada tabel kuliah, pada tabel kuliah proses insert diasumsikan hanya dilakukan pada kolom nilai_angka saja sedangkan nilai huruf dan bobot akan terisi secara otomatis (dg mekanisme trigger) dilakukan jika nilai_angka terisi dengan kriteria tertentu.
Trigger disini dilakukan ketika terjadi 2 event yaitu insert (Before Insert) pada nilai_angka atau update (before update) pada nilai_angka.
Kalo di oracle bisa dibuat satu saja tapi kok di mysql aku coba gak bisa :D, terpaksa bikin 2 trigger.
DELIMITER  &&
CREATE TRIGGER updatebobot before update on kuliah
for each row
begin
if new.nilai_angka < 20 then
set new.bobot = 0;
set new.nilai_huruf=’E’;
else if new.nilai_angka >= 20 and new.nilai_angka <=40 then
set new.bobot = 1;
set new.nilai_huruf=’D’;
else if new.nilai_angka >= 41 and new.nilai_angka <=60 then
set new.bobot = 2;
set new.nilai_huruf=’C’;
else if new.nilai_angka >= 61 and new.nilai_angka <=80 then
set new.bobot = 3;
set new.nilai_huruf=’B’;
else if new.nilai_angka >= 81 and new.nilai_angka <=100 then
set new.bobot = 4;
set new.nilai_huruf=’A’;
end if;
end if;
end if;
end if;
end if;
end &&
DELIMITER ;
DELIMITER  &&
CREATE TRIGGER insertbobot before insert on kuliah
for each row
begin
if new.nilai_angka < 20 then
set new.bobot = 0;
set new.nilai_huruf=’E’;
else if new.nilai_angka >= 20 and new.nilai_angka <=40 then
set new.bobot = 1;
set new.nilai_huruf=’D’;
else if new.nilai_angka >= 41 and new.nilai_angka <=60 then
set new.bobot = 2;
set new.nilai_huruf=’C’;
else if new.nilai_angka >= 61 and new.nilai_angka <=80 then
set new.bobot = 3;
set new.nilai_huruf=’B’;
else if new.nilai_angka >= 81 and new.nilai_angka <=100 then
set new.bobot = 4;
set new.nilai_huruf=’A’;
end if;
end if;
end if;
end if;
end if;
end &&
DELIMITER ;
Untuk mencoba trigger  :
UPDATE KULIAH set nilai_angka =60 where nim =’0110001′ and mka =’IK02001′ and th_akademik=’20102′;
INSERT INTO kuliah (nilai_angka, Th_akademik, nim, mka) VALUES (66, ’20102′, ’010004′, ‘TI01004′);
B. PROCEDURE
Contoh procedure untuk melakukan cetak KRS, cetak KHS dan melakukan Proses KRS (input KRS) dan juga Input Nilai.
a) Procedure cetak KRS
DELIMITER &&
CREATE PROCEDURE CetakKRS(nim char(7), ta char(7))
BEGIN
SELECT distinct concat(m.nim ,”, m.nama ,’ | TA :  ‘, k.th_akademik) as  “Data Mahasiswa” from mahasiswa m
inner join kuliah k on m.nim = k.nim
where k.nim =nim and k.Th_akademik =ta;
SELECT concat(k.mka ,’  | ‘ , mk.nama, ‘ ‘) as “Mata Kuliah”, d.nama as “Dosen”, mk.sks as “SKS” from kuliah k
inner join matakuliah mk on k.mka = mk.kode_mka
inner join mahasiswa mhs on k.nim = mhs.nim
inner join dosen d on d.nip = mk.dosen
where k.nim = nim and k.Th_akademik = ta;
SELECT Concat(‘Jumlah SKS = ‘, sum(mk.sks)) as ” Keterangan” from kuliah k
inner join mahasiswa m on k.nim = m.nim
inner join matakuliah mk on k.mka = mk.kode_mka
where k.nim = nim and k.Th_akademik = ta
group by m.nim  ;
END &&
DELIMITER ;
b) Procedure cetak KHS
DELIMITER &&
CREATE PROCEDURE CetakKHS(nim char(7), ta char(7))
BEGIN
SELECT distinct concat(m.nim ,’   ‘, m.nama ,’  | TA :  ‘, k.th_akademik) as  “Data Mahasiswa” from mahasiswa m
inner join kuliah k on m.nim = k.nim
where k.nim =nim and k.Th_akademik =ta;
SELECT k.mka, mk.nama, mk.sks, k.nilai_huruf as Nilai, k.bobot, (k.bobot * mk.sks) as “bobot (bobot x sks)” from kuliah k
inner join matakuliah mk on k.mka = mk.kode_mka
inner join mahasiswa mhs on k.nim = mhs.nim
where k.nim = nim and k.Th_akademik = ta;
SELECT Concat(‘Jumlah SKS = ‘, sum(mk.sks)) as ” Keterangan  “, (sum(k.bobot * mk.sks)) as “Total Bobot”, (sum(k.bobot * mk.sks)/ sum(mk.sks)) as “IP
Sementara” from kuliah k
inner join mahasiswa m on k.nim = m.nim
inner join matakuliah mk on k.mka = mk.kode_mka
where k.nim = nim and k.Th_akademik = ta
group by m.nim ;
END &&
DELIMITER ;
c)  Proses insert dan update tabel kuliah pada trigger diatas dapat juga  dijadikan procedure
DELIMITER &&
CREATE PROCEDURE InputKRS(nr char(7), mk char(10), ta char(5))
BEGIN
Insert into kuliah(nim , mka, th_akademik)
values (nr, mk, ta);
END &&
DELIMITER ;
DELIMITER &&
CREATE PROCEDURE InputNilai(nr char(7), mk char(10), ta char(5), nl tinyint)
BEGIN
Update kuliah set nilai_angka = nl
where kuliah.nim =nr and kuliah.mka = mk and kuliah.th_akademik = ta;
END &&
DELIMITER ;
Melihat status dari procedure yang aktif
SHOW PROCEDURE STATUS;
Memanggil Procedure yang sudah dibuat
CALL CETAKKRS(’0110001′,’20102′);
CALL CETAKKHS(’0110001′,’20101′);

backup dan restore database mysql

Cara Backup dan Restore database MySQL




Biasanya backup dan restore data dilakukan menggunakan phpMyAdmin baik XAMPP ataupun sejenisnya.  Akan tetapi untuk data yang besar akan terasa lama untuk proses backup. Begitu juga sebaliknya untuk restore atau import data juga dibatasi hanya beberapa MB (Mega Byte). Bagaimana dengan ukuran data yang sampai dengan GB (Giga Byte). Backup data dapat dilakukan melalui console atau command. Langsung saja. Backup database dapat dilakukan dengan dua cara yaitu manual dan otomatis

.

1.Secara Manual

a. Backup data

#dump schema only
mysqldump -u root –no-data -p gsm &gt; skema_gsm_prod_01012010.sql

# dump data only
mysqldump -u root –disable-keys –no-create-info -p gsm &gt; data_gsm_prod_01012010.sql

#dump schema dan data

mysqldump -u root  -p gsm &gt; completedata_gsm_prod_01012010.sql

b. Restore data

#restore dump schema only
mysql -u root -p gsm &lt; skema_gsm_prod_01012010.sql

# restore dump data only
mysql -u root  -p gsm &lt; data_gsm_prod_01012010.sql

#restore dump schema dan data

mysql -u root  -p gsm &lt; completedata_gsm_prod_01012010.sql

2. Secara Otomatis

Dapat menggunakan @font-face { font-family: “Verdana”; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: “Times New Roman”; }div.Section1 { page: Section1; }third party tool seperti @font-face { font-family: “Tahoma”; }@font-face { font-family: “Verdana”; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: “Times New Roman”; }div.Section1 { page: Section1; }MySQL Administrator ver. 1.0.13.

a. Backup data

@font-face { font-family: “Wingdings”; }@font-face { font-family: “Verdana”; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: “Times New Roman”; }div.Section1 { page: Section1; }ol { margin-bottom: 0in; }ul { margin-bottom: 0in; }

Berikut adalah langkah-langkah yang harus diambil untuk melakukan konfigurasi proses backup secara terjadwal :

1.      Jalankan MySQL Administrator.

2.      Pilih koneksi yang akan digunakan, bila belum tersedia dapat membuat koneksi baru dengan mengklik tombol pada Connection.

3.      Setelah menentukan koneksi yang akan digunakan maka lanjutkan dengan mengklik OK.

4.      Setelah MySQL Administrator terhubung dengan database server maka selanjutnya pilih menu Backup.

5.      Maka tab yang akan aktif pertama kali adalah Backup Project.

6.      Klik New Project, lalu isikan proyek backup yang akan dilakukan pada isian Project Name (contoh diisi dengan gsm_backup). Kemudian pilih Schemata yang ingin dilakukan proses backup (misal yang dipilih adalah gsm).

7.      Selanjutnya pilih tab Advanced Options.

8.      Aktifkan pilihan Backup selected Schemata completely.

9.      Aktifkan pilihan Add DROP TABLE Statements.

10.  Selanjutnya pilih tab Schedule.

11.  Aktifkan pilihan Schedule this backup project.

12.  Isikan Target Directory dengan direktori yang anda inginkan untuk menyimpan file backup.

13.  Isi Filename dengan nama file yang akan menjadi file hasil backup.

14.  Tentukan waktu eksekusi pada isian Execution Time.

15.  Dan juga tentukan jam berapa proses backup berjalan dengan mengisi data Time.

16.  Klik Save Project untuk menyimpannya.

Catatan :

Bila anda belum menentukan metode penyimpanan password maka anda harus mengisinya terlebih dahulu.

b. Restore data

@font-face { font-family: “Verdana”; }p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: “Times New Roman”; }div.Section1 { page: Section1; }ol { margin-bottom: 0in; }ul { margin-bottom: 0in; }

Berikut adalah langkah-langkah yang harus diambil untuk melakukan proses restore database :

1.      Jalankan MySQL Administrator.

2.      Pilih koneksi yang akan digunakan untuk melakukan koneksi dengan database.

3.      Setelah MySQL Administrator telah terhubung dengan database maka pilih menu Restore.

4.      Secara default tab yang pertama aktif adalah General.

5.      Isi File to restore dengan mengklik Open Backup File, lalu pilih Target Schema dengan Original Schema, kemudian aktifkan pilihan Create database(s) if they don’t exist.

6.      Untuk memeriksa file backup tersebut dapat dilakukan dengan mengklik tab Restore Content.

7.      Untuk menganalisa file backup tersebut dapat dilakukan dengan mengklik Analyze Backup File Content dan MySQL Administrator akan menganalisa file tersebut.

8.      Setelah anda yakin untuk melakukan proses restore maka lakukan dengan mengklik Start Restore.

procedure my sql

Awal Store Procedure Di MySQL



Store Procedure adalah inovasi terbaik dari MySQL 5.0. beberapa SQL prosedur atau fungsi dapat disimpan dan dieksekusi langsung di MySQL server. Layaknya pada penulisan code di bahasa pemrograman seperti C programming, penulisan prosedur dan fungsi kini bisa digunakan pada MySQL.

Lalu apa kegunaan dari adanya prosedur atau fungsi pada MySQL, berikut ini saya jelaskan singkatnya :

Mempercepat proses coding ( efesiensi ), maksudnya bila kita mengetikan SQL yang isinya memasukan data (insert) misalnya,

Insert into anggota values (1,’adiputra’,’bekasi’,’ad1.putr4@yahoo.co.id’);

Sebanyak 1000 anggota, maka akan pegel ngetik SQLnya. Solusinya adalah pembuatan prosedur seperti berikut ini,



1
Create procedure insert_anggota (in no int, nm varchar(255), kota varchar(50), email varchar(255))
2



3
Begin
4



5
Insert into anggota values (no,nm,kota,email);
6



7
End
Nah setelah prosedur insert_anggota dibuat, kita cukup memanggilnya dengan perintah call, seperti :

Call insert_anggota(1,’adiputra’,’bekasi’,’ad1.putr4@yahoo.co.id’);

Jadi lebih mudah kan….itu hanya secuil code,, dan akan sangat berguna nanti bila bermain dengan data yang lebih banyak seperti pada data-data perusahaan.

Salah Satu Keamanan di MySQL, maksudnya misalkan seorang front office atau pekerja biasa yang mengakses data pada database, dia tidak boleh mengotak-atik setingan yang ada pada MySQL. Pekerja biasa biasanya hanya memasukan atau melihat data pada database. Nah dengan prosedur atau fungsi, kita suruh dan wajibkan pekerja kita dalam memasukan atau melihat data pada database dengan perintah-perintah prosedur. Jadi pekerja juga tidak mesti seorang yang ahli dalam ilmu database. Seorang pekerja biasanya cukup mengetikan code call insert_anggota().

Berikut ini saya praktikan membuat prosedur sederhana di MySQL.

Pertama, kita buat database dan table baru untuk percobaan belajar kita mengenai prosedur. Disini saya buat database dengan nama prosedur_test.

Create database prosedur_test;

Lalu kita buat tablenya,



01
Create table anggota(
02



03
  no int not null primary key,
04



05
  nama varchar(255) not null,
06



07
  kota varchar(50) not null,
08



09
  email varchar(255) not null
10



11
);
Setelah kita buat database dan tablenya, sekarang kita buat prosedurnya.

Awalnya kita mesti mengganti delimiter (tanda akhir code, defaultnya adalah titik koma ;)dengan symbol lain.

Delimiter $

Setelah kita ganti delimiternya, kita sekarang buat prosedurnya.



01
Create procedure insert_anggota
02



03
(in no int, nm varchar(255), kota varchar(50), email varchar(255))
04



05
Begin
06



07
Insert into anggota values (no,nm,kota,email);
08



09
End
10



11
$
Yang udah pernah belajar konsep programming dengan procedure pasti sudah paham mengenai parameter masukan dan keluaran.  Pada SQL diatas, parameternya ada pada SQL

(in no int, nm varchar(255), kota varchar(50), email varchar(255))

Nama prosedur adalah insert_anggota. Kamu bisa mengetikan bebas mengenai nama prosedur. Perintah Procedure diawali dengan Begin dan diakhir dengan End (seperti pada Pascal).

Tanda $ diatas, adalah delimiter (tanda akhir code) yang telah kita ubah sebelum membuat procedure. Sekarang kita ubah lagi delimiternya.

Delimiter ;

Dan sekarang kita coba untuk panggil prosedur yang telah kita buat dengan perintah :

Call insert_anggota(1,’adiputra’,’bekasi’,’ad1.putr4@yahoo.co.id’);

Ingat parameternya mesti sesuai (tipe data) dengan prosedur yang telah kita buat.

Bila sudah silakan cek apakah data telah masuk apa blum…

Select * from anggota;

Variable Local

Seperti pada algoritma pemrograman lainnya, di prosedur MySQL juga mengenal variable local. Variable ini juga mempunyai fungsi yang sama pada pemrograman lainnya yaitu tempat penyimpanan value / nilai sementara. Cara mendeklarasikan suatu variable adalah seperti berikut :

DECLARE angka INTEGER;

DECLARE nama VARCHAR(20);

Untuk meng-inisialisasi nilai awal dari variable yang kita buat dengan nilai, dapat menggunakan perintah SET, seperti berikut :

SET angka = 4;

SET angka := 4;

Misalkan saya contohkan seperti ini :


Perulangan / Looping

Logika perulangan juga bisa dimainkan di prosedur atau fungsi pada MySQL, statement perulangan yang bisa dijalankan di MySQL adalah

If – else

Case

While – do

Repeat – until

Berikut contoh sederhananya :


Cara panggilnya :

Call if_test(4,2,@n3) $

Select @n3 $