Tuesday, June 5, 2007

View di MySQL - Part 1

-VIEW-
Secara definisi view merupakan table virtual yang didefinisikan berdasarkan query. Difokuskan pada aspek sekuritas, user tidak secara langsung mengakses databases yang asli.
contoh :
create view p as select *from departemen;
ket:
p merupakan view yang strukturnya berdasarkan "select *from departemen";
dengan adanya view kita dapat melakukan query pada table tanpa harus khawatir table yang sebenarnya rusak.

Trigger di MySQL - Part 1

--Trigger--
Suatu stored prosedure yang dijalankan sesudah atau pada saat terjadinya modifikasi data. Digunakan untuk menjaga integritas data. beberapa sintak :
- update(modifikasi), insert (utk proses insert), delete(menghapus data)
- before/after : apakah setelah atau pada saat DML dieksekusi
- for each row : diberlakukan untuk semua row
contoh:
buat dua databases sederhana :

CREATE TABLE siswa(
nis int(10) NOT NULL,
nama varchar(30) NOT NULL
)
CREATE TABLE wali(
nis int(10) NOT NULL,
namaWali varchar(30) NOT NULL
)


insert table--

-siswa
nis nama
2 budi
3 alif
4 didin
-wali

nis namaWali
2 udin
3 aldo
4 riki

1.Trigger delete
delimiter &&
create trigger hapuswali
before delete on siswa
for each row
begin
delete from wali where nis = OLD.nis; //OLD.nis merupaka nis yang didelete pada table siswa
end;
&&
delimiter ;
- elsekusi delete
delete from siswa where nis = 2;
--output--
- siswa
nis nama
3 alif
4 didin


- wali
nis namaWali
3 aldo
4 riki

2. Trigger update
delimiter &&
create trigger tambahsiswa
after update on siswa
for each row
begin
update nis from wali set nis = new.nis where nis = old.nis;
end;
&&
delimiter ;

siswa set nis = 12 where nis = 3;

output--
-siswa
nis nama
12 alif
4 didin

-wali
nis namaWali
12 aldo
4 riki

3. Trigger insert
Untuk insert kita akan buat suatu 2 table sederhana :
create table a (
bil int not null
)
create table b (
bil2 int not null
)
- trigger insert
delimiter &&
create trigger tambahdata
after insert on a
for each row
begin
insert into b values (2*new.bil);
end;
&&
delimiter ;


insert into a values (1),(2),(3),(4),(5);

output
- a
bil
1
2
3
4
5
- b
bil2
2
4
6
8
10

Stored Procedure di MySQL - Part 1

Apakah yang dimaksud dengan stored prosedure ?
Stored prosedure merupakan sql yang disimpan server atau stroed lainnya, berguna untuk dan efektifitas dalam query. tulisan ini, menjelaskan bagaimana stored prosedure di MySQL

a. Memulai Stored Prosedure
mysql> delimiter &&
mysql> drop procedure if exists Salam&&
Query OK, 0 rows affected (0.01 sec)
mysql> create procedure Salam()
-> begin
-> select "Assalamualaikum";
-> end;
-> &&
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call Salam();
+-----------------+
Assalamualaikum
+-----------------+
Assalamualaikum
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)


Ket :
- delimiter && untuk memulai suatu stored procedure
- drop procedure if exists Salam&& untuk drop/delete
telah ada stored procedure dengan nama Salam
- create procedure Salam(),membuat Sp dengan nama Salam()
- begin, untuk memulai menulisan sql yang akan dieksekusi
- end ;, sebagai akhir stored procedure
- && , tutup
- delimiter ;, akhir/tutup delimiter
- call Salam(), eksekusi stored procedure

2. SP dengan parameter output
mysql> create procedure RataanGaji(out rataangaji int) //adanya parameter output yaitu rataangaji
-> begin
-> select avg(salary) into rataangaji from employee; //Menyimpan hasil avg(salary) ke rataangaji
-> end;
-> &&
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call RataanGaji(@result); //@result sebagai parameter output
Query OK, 0 rows affected (0.00 sec)
mysql> select @result; //Keluarkan hasil di @result
+---------+
@result
+---------+
9905000
+---------+
1 row in set (0.00 sec)


3. SP dengan parameter input
delimiter &&
drop procedure if exists DataEmployee&&
create procedure DataEmployee(input int) //parameter int
begin
select *from employee where employee_id = input;
end;
&&
delimiter ;
call DataEmployee(101)
--outputnya--
101, 'ahmad yassin', 'yasin@yahoo.com', '081246798246', 15000000, , 1


4. SP menggunakan deklarasi variable
delimiter &&
drop procedure if exists DataEmployee2&&
create procedure DataEmployee2(input int)
begin
declare nama varchar(30);
declare gaji int;
select employee_name, salary into nama, gaji from employee where employee_id = input;
select nama,gaji;
end;
&&
delimiter ;
call DataEmployee2(101)
--output--
ahmad yassin,15000000