Tampilkan postingan dengan label sql. Tampilkan semua postingan
Tampilkan postingan dengan label sql. Tampilkan semua postingan
0

Membuat Fungsi Pada MySql

Blog_ir@one ,


kelebihan dari mySQL adalah selain mempunyai fungsi – fungsi yang telah disediakan olehnya kita juga bisa menambahkan fungsi tersebut kedalam database.
Fungsi tersebut bisa digunakan selama masih dipanggil dan mengisikan parameter(jika menggunakanya) jika memberikan nilai balik(return) namun jika membuat fungsi yang tidak mengembalikan nilai dan tidak memerlukan parameter maka tidak perlu ditulisakan pun tidak menjadi masalah.
Berikut contoh cara pembuatan function pada mySQL


mysql> CREATE FUNCTION penjumlahan (a integer,b integer) RETURNS INTEGER
RETURN (a - b);


cara memanggilnya

mysql> SELECT penjumlahan(2,1)
Selain itu fungsi ini bisa digabungkan dengan fungsi – fungsi lain yang telah disediakan oleh mySQL berikut contoh fungsi untuk menghitung umur


mysql> CREATE FUNCTION age (_d DATETIME) RETURNS INTEGER
COMMENT 'Given birthdate, returns current age'
RETURN YEAR(NOW()) - YEAR(_d) - IF(DATE_FORMAT(_d, '%c%d') > DATE_FORMAT(NOW(), '%c%d'), 1, 0);
Cara memanggilnya


mysql> SELECT age('1987-09-21')


dengan begini kita tidak perlu membuat fungsi lagi di program karna sudah langsung didapatkan nilainya dari query yang kita buat.

Free Template Blogger collection template Hot Deals SEO
0

Triger, Function, Procedure dAn View pada MySql

Blog_ir@one ,


Berikut adalah dasar-dasar trigger, function, procedure serta view yang bisa diimplementasikan pada MYSQL 5 keatas. Dengan menggunakan trigger, function, procedure serta view, pemanfaatan MYSQL akan lebih bermanfaat. Contohnya : kita bisa membuat urutan langkah-langkah tertentu setelah suatu even dilakukan (ex: insert, update, delete). Tutorial ini ditujukan bagi yang belum mengenal trigger, function, procedure serta view sama sekali. Bagi yang sudah bisa, artikel ini boleh dan harus diabaikan

Procedure dan Function

Syntax Umum

procedure

Syntak untuk membuat procedure dalam MySQL adalah sebagai berikut.

CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body

Function

CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body

Keterangan

1. proc_parameter (hanya pada procedure):

[ IN | OUT | INOUT ] param_name type
  • IN parameter dilewatkan ke dalam procedure tetapi modifikasi nilai dari parameter ini tidak kelihatan setelah procedure tersebut dipanggil.
  • Out parameter merupakan parameter yang dilewatkan dari dalam procedure ke pemanggil procedure tersebut. Nilai inisialisasi saat memanggil adalah null dan hasil parameter akan kelihatan setelah procedure dipanggil.
  • INOUT parameter diinisilaisai oleh pemanggil procedure, kemudian hasil modifikasinya tersebut akan kelihatan setelah procedure tersebut dipanggil.

2. characteristic

LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'

3. routine_body:

Valid SQL procedure statement

Routine body berisi syntax-syntax sql yang valid, seperti insert atau select. Bisa juga berisi compound. Compount diapit oleh begin… end. Syntax dari compound system adalah sebagai berikut.

[begin_label:] BEGIN
[statement_list]
END [end_label]

Compound ini bisa diisi dengan label. Begin label dan end label harus sama. Di dalam compound juga bisa berisi deklarai variabel, looping atau kontrol program lainnya. Setiap Function harus punya return value untuk mengembalikan nilai yang dihasilkan

Contoh Procedure dan Function MySQL

Berikut adalah contoh penggunaan procedure. Pertama kita buat terlebih dahulu database dengan nama adakara. Kemudian silakan buat table berikut dengan isinya. Berikut ini adalah hasil dumping dari database adakara.

CREATE TABLE `siswa` (
`NIS` varchar(20) collate latin1_general_ci NOT NULL,
`Nama` varchar(30) collate latin1_general_ci NOT NULL,
`Angkatan` varchar(9) collate latin1_general_ci NOT NULL,
PRIMARY KEY  (`NIS`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
LOCK TABLES `siswa` WRITE;
/*!40000 ALTER TABLE `siswa` DISABLE KEYS */;
INSERT INTO `siswa` VALUES ('1024','resika arthana','2005/2006'),('1','cxfbsdjg','2005/2006'),('2','dshfk','2005/2006'),('3','dsfku','2005/2006'),('11','Ari damayanti','2005/2006'),('12','wedana','2005/2006'),('122','andika','2005/2006'),('123','mas ayu','2005/2006');
/*!40000 ALTER TABLE `siswa` ENABLE KEYS */;
UNLOCK TABLES;
-- Dump completed on 2007-03-21  7:47:58

Procedure

Berikut ini adalah proses pembuatan procedure, dibuat dalam command from.

mysql> delimiter //
mysql> CREATE PROCEDURE jumlahSiswa (OUT param1 INT)
-> BEGIN
->   SELECT COUNT(*) INTO param1 FROM siswa;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

Function

mysql> create function tmbhSaudara(nama char(20)) returns char(5)

-> return concat('Saudara ',nama);

Query OK, 0 rows affected (0.36 sec)

Pemanggilan Procedure dan Function

Pemanggilan procedure menggunakan syntax

CALL procedure_atau_function_name([parameter[,...]])

procedure_atau_function_name adalah nama procedure ata fungsi yang dipanggil dan parameter adalah nama-nama parameter procedure atau fungsi tersebut

Procedure

mysql> call jumlahSiswa(@a);
Query OK, 0 rows affected (0.00 sec)
mysql> select @a;
+------+
| @a   |
+------+
| 8    |
+------+
1 row in set (0.00 sec)

Function

mysql> select tmbhSaudara(' resika arthana');

+--------------------------------+

| tmbhSaudara(' resika arthana') |

+--------------------------------+

| Saudara resika arthana |

+--------------------------------+

1 row in set (0.00 sec)

Menghapus Procedure dan Function

Untuk menghapus procedure atau function digunakan perintah sebagai berikut

DROP {PROCEDURE | FUNCTION} [IF EXISTS] procedure_or_function_name

Trigers

Syntax Umum Triger

CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_stmt

Keterangan

  1. DEFINER menunjukkan nama user yang mempunyai hak akses untuk mengakses triger.
  2. Triger_time menunjukkan saat triger tersebut dijalankan. Terdiri dari Before atau After
  3. Triger_time menandakan saat keadaan bagaimana triger tersebut aktif. Terdiri dari
    1. Insert : Triger aktif saat baris baru dimasukkan ke dalam tabel
    2. Update : Triger aktif saat ada baris diperbaharui dimasukkan di dalam tabel
    3. Delete :Triger aktif saat baris dihapus dalam tabel

Contoh Trigers

CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|
DELIMITER ;
INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);
INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);

Silakan masukkan nilai ke test1

mysql> INSERT INTO test1 VALUES 
-> (1), (3), (1), (7), (1), (8), (4), (4);
Query OK, 8 rows affected (0.01 sec)
Records: 8  Duplicates: 0  Warnings: 0

As a result, the data in the four tables will be as follows:

mysql> SELECT * FROM test1;
+------+
| a1   |
+------+
|    1 |
|    3 |
|    1 |
|    7 |
|    1 |
|    8 |
|    4 |
|    4 |
+------+
8 rows in set (0.00 sec)
mysql> SELECT * FROM test2;
+------+
| a2   |
+------+
|    1 |
|    3 |
|    1 |
|    7 |
|    1 |
|    8 |
|    4 |
|    4 |
+------+
8 rows in set (0.00 sec)
mysql> SELECT * FROM test3;
+----+
| a3 |
+----+
|  2 |
|  5 |
|  6 |
|  9 |
| 10 |
+----+
5 rows in set (0.00 sec)
mysql> SELECT * FROM test4;
+----+------+
| a4 | b4   |
+----+------+
|  1 |    3 |
|  2 |    0 |
|  3 |    1 |
|  4 |    2 |
|  5 |    0 |
|  6 |    0 |
|  7 |    1 |
|  8 |    1 |
|  9 |    0 |
| 10 |    0 |
+----+------+
10 rows in set (0.00 sec)


Free Template Blogger collection template Hot Deals SEO
0

contoh fungsi pada MySql

Blog_ir@one ,


FUNCTION adalah salah satu feature yang terdapat di mysql 5.0 sedang-kan Function adalah

kumpulan-kumpulan SQL berupa rountine yang di simpan dalam database MySQL Server. biasanya function ini dikombinasikan dengan store pocedure atau bisa juga tidak di kombinasikan dengan store procedure





oke berikut ini cara membuat function


dalam contoh dibawah ini kasus tentang sistem informasi sekolah, yang mana function yang dibuat akan mengembalikan nilai berupa jumlah siswa dari setiap kelas.








sturuktur tabel siswa



CREATE TABLE `data_siswa`.`tbl_siswa` (

`nis` char(10) NOT NULL,

`nama` varchar(255) NOT NULL,

`kelas` int(11) NOT NULL


) ENGINE=MyISAM DEFAULT CHARSET=latin1





function untuk mengembalikan jumlah data dari setiap kelas



DELIMITER $$

CREATE FUNCTION sf_tampil_siswa_kelas (p_kelas int) RETURNS INT DETERMINISTIC



BEGIN

DECLARE jml INT;


SELECT COUNT(*) AS jml_kelas INTO jml FROM tb_siswa WHERE kelas = p_kelas;

RETURN jml;

END$$



DELIMITER 
;




penjelasannya sebagai berikut:

  • DELIMITER = adalah untuk memberi tahu kepada myql soal delimiter yang digunakan, secara default menggunakan ; jadi bila ada tanda ; mysql akan mengartikan akhir dari statement, pada contoh di atas delimeter yang digunakan $$ jadi akhir statementnya adalah $$
  • CREATE FUNCTION = adalah header untuk membuat function
  • RETURNS = adalah untuk menentukan tipe data yang di return-kan oleh function
  • DETERMINISTIC/ NOT DETERMINISTIC = adalah untuk menentukan yang bisa menggunakan function ini adalah user pembuatnya saja (determinisric) atau user siapa saja (not determinisric).

  • BEGIN END = adalah body dari function jadi semua SQL nya di tulis disini.


contoh pemanggilannya seperiti dibawah ini:



select sf_tampil_siswa_kelas("2");



sebuah function hanya bisa memberikan return berupa nilai saja dan tidak bisa berupa resutlset



untuk penulisan DETEMINISTIC bisa ditulis secara implisit dengan memberikan setting global pada mysql dan secara default benilai NOT DETEMINISTIC , caranya dibawah ini:




SET GLOBAL log_bin_trust_function_creators = 1;



oke bro... semoga membatu... selamat mencoba juga...

Free Template Blogger collection template Hot Deals SEO
 
Copyright 2010 Iraones blog's