Pages

Database MySQL

MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris: database management system) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.
Tidak sama dengan proyek-proyek seperti Apache, dimana perangkat lunak dikembangkan oleh komunitas umum, dan hak cipta untuk kode sumber dimiliki oleh penulisnya masing-masing, MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode sumbernya. Kedua orang Swedia dan satu orang Finlandia yang mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan Michael "Monty" Widenius.
Sistem manajemen basis data relasional
MySQL adalah sebuah implementasi dari sistem manajemen basisdata relasional (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Setiap pengguna dapat secara bebas menggunakan MySQL, namun dengan batasan perangkat lunak tersebut tidak boleh dijadikan produk turunan yang bersifat komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam basisdata yang telah ada sebelumnya; SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian basisdata, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis.
Kehandalan suatu sistem basisdata (DBMS) dapat diketahui dari cara kerja pengoptimasi-nya dalam melakukan proses perintah-perintah SQL yang dibuat oleh pengguna maupun program-program aplikasi yang memanfaatkannya. Sebagai peladen basis data, MySQL mendukung operasi basisdata transaksional maupun operasi basisdata non-transaksional. Pada modus operasi non-transaksional, MySQL dapat dikatakan unggul dalam hal unjuk kerja dibandingkan perangkat lunak peladen basisdata kompetitor lainnya. Namun demikian pada modus non-transaksional tidak ada jaminan atas reliabilitas terhadap data yang tersimpan, karenanya modus non-transaksional hanya cocok untuk jenis aplikasi yang tidak membutuhkan reliabilitas data seperti aplikasi blogging berbasis web (wordpress), CMS, dan sejenisnya. Untuk kebutuhan sistem yang ditujukan untuk bisnis sangat disarankan untuk menggunakan modus basisdata transaksional, hanya saja sebagai konsekuensinya unjuk kerja MySQL pada modus transaksional tidak secepat unjuk kerja pada modus non-transaksional.

Keistimewaan MySQL
MySQL memiliki beberapa keistimewaan, antara lain :

Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi.

Perangkat lunak sumber terbuka. MySQL didistribusikan sebagai perangkat lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.

Multi-user. MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.

'Performance tuning', MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.

Ragam tipe data. MySQL memiliki ragam tipe data yang sangat kaya, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain.


Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query).


Keamanan. MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi.


Skalabilitas dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.


Konektivitas. MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).


Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya.


Antar Muka. MySQL memiliki antar muka (interface) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).


Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online.


Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle.


Bahasa pemrograman
Terdapat beberapa API (Application Programming Interface) tersedia yang memungkinkan aplikasi-aplikasi komputer yang ditulis dalam berbagai bahasa pemrograman untuk dapat mengakses basis data MySQL antara lain: bahasa pemrograman C, C++, C#, bahasa pemrograman Eiffel, bahasa pemrograman Smalltalk, bahasa pemrograman Java, bahasa pemrograman Lisp, Perl, PHP, bahasa pemrograman Python, Ruby, REALbasic dan Tcl. Sebuah antarmuka ODBC memanggil MyODBC yang memungkinkan setiap bahasa pemrograman yang mendukung ODBC untuk berkomunikasi dengan basis data MySQL. Kebanyakan kode sumber MySQL dalam ANSI C.

Penggunaan

MySQL sangat populer dalam aplikasi web seperti MediaWiki (perangkat lunak yang dipakai Wikipedia dan proyek-proyek sejenis) dan PHP-Nuke dan berfungsi sebagai komponen basis data dalam LAMP. Popularitas sebagai aplikasi web dikarenakan kedekatannya dengan popularitas PHP, sehingga seringkali disebut sebagai Dynamic Duo. Text dicoret{{}}

Administrasi

Untuk melakukan administrasi dalam basis data MySQL, dapat menggunakan modul yang sudah termasuk yaitu command-line (perintah: mysql dan mysqladmin). Juga dapat diunduh dari situs MySQL yaitu sebuah modul berbasis grafik (GUI): MySQL Administrator dan MySQL Query Browser. Selain itu terdapat juga sebuah perangkat lunak gratis untuk administrasi basis data MySQL berbasis web yang sangat populer yaitu phpMyAdmin. Untuk perangkat lunak untuk administrasi basis data MySQL yang dijual secara komersial antara lain: MySQL front, Navicat dan EMS SQL Manager for MySQL.

Akusisi Oleh Sun dan Oracle
Pada tanggal 16 Januari 2008 Sun Microsystems, Inc mengumumkan aksi korporasi - akuisisi terhadap MySQL AB sehingga menjadikan Sun sebagai salah satu perusahaan dengan produk platform open source terbesar seperti Java, OpenSolaris dan akhirnya MySQL.
Berselang setahun kemudian, tepatnya pada tanggal 20 April 2009 giliran Oracle melakukan akusisi terhadap Sun Microsystems. Sejak saat itu berkembang isu Oracle - yang memiliki produk database yang berkompetisi dengan MySQL - akan mematikan MySQL. Namun sampai sejauh ini hal tersebut belum terbukti.

Komunitas MySQL Indonesia

MySQL termasuk salah satu database utama yang digunakan di Indonesia terutama di kalangan developer PHP. Ini disebabkan native integration antara PHP dan MySQL serta banyaknya hosting yang menyertakan kedua produk tersebut karena bebas lisensi dan sudah terbukti tangguh dan efisien.
Website komunitas MySQL Indonesia yang terpisah dari komunitas PHP dapat Anda kunjungi di http://groups.google.com/group/mysql-indonesia.

Referensi

• (en) Situs web MySQL
• (en) http://www.mysqldevelopment.com MySQL development
• (en) http://www.planetmysql.org MySQL Weblogs
• (en) http://www.db4free.net Free MySQL 5 provider
• (en) http://db4free.blogspot.com/ Markus Popp's blog
• (en) http://gilfster.blogspot.com/ Andrew Gilfrin's blog
• (en) http://rpbouman.blogspot.com/ Roland Bouman's blog
• (en) http://www.futhark.ch/mysql/ Beat Vontobel's blog
• (en) http://datacharmer.blogspot.com/ Giuseppe Maxia's blog
• (en) http://www.jpipes.com/ Jay Pipe's blog
• (en) http://mike.kruckenberg.com/ Mike Kruckenberg's blog
• (en) http://sheeri.com/ Sheeri Kritzer's blog
• (en) http://mysqldatabaseadministration.blogspot.com/ MySQL Database Administration Blog
• (id) Buku Gratis MySQL 5: Dari Pemula Hingga Mahir


From: http://id.wikipedia.org/wiki/MySQL


Selengkapnya...

Database / Basis Data

Basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi.


Basis data (bahasa Inggris: database), atau sering pula dieja basisdata, adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sistem basis data dipelajari dalam ilmu informasi.

Istilah "basis data" berawal dari ilmu komputer. Meskipun kemudian artinya semakin luas, memasukkan hal-hal di luar bidang elektronika, artikel ini mengenai basis data komputer. Catatan yang mirip dengan basis data sebenarnya sudah ada sebelum revolusi industri yaitu dalam bentuk buku besar, kuitansi dan kumpulan data yang berhubungan dengan bisnis.

Konsep dasar dari basis data adalah kumpulan dari catatan-catatan, atau potongan dari pengetahuan. Sebuah basis data memiliki penjelasan terstruktur dari jenis fakta yang tersimpan di dalamnya: penjelasan ini disebut skema. Skema menggambarkan obyek yang diwakili suatu basis data, dan hubungan di antara obyek tersebut. Ada banyak cara untuk mengorganisasi skema, atau memodelkan struktur basis data: ini dikenal sebagai model basis data atau model data. Model yang umum digunakan sekarang adalah model relasional, yang menurut istilah layman mewakili semua informasi dalam bentuk tabel-tabel yang saling berhubungan dimana setiap tabel terdiri dari baris dan kolom (definisi yang sebenarnya menggunakan terminologi matematika). Dalam model ini, hubungan antar tabel diwakili denga menggunakan nilai yang sama antar tabel. Model yang lain seperti model hierarkis dan model jaringan menggunakan cara yang lebih eksplisit untuk mewakili hubungan antar tabel.

Istilah basis data mengacu pada koleksi dari data-data yang saling berhubungan, dan perangkat lunaknya seharusnya mengacu sebagai sistem manajemen basis data (database management system/DBMS). Jika konteksnya sudah jelas, banyak administrator dan programer menggunakan istilah basis data untuk kedua arti tersebut.

from:id.wikipedia.orgwiki/Basis_data
Selengkapnya...

Basis Data Terdistribusi

Pada basis data terdistribusi (distributed database), data disimpan pada beberapa tempat (site), setiap tempat diatur dengan suatu DBMS (Database Management System)

BASIS DATA TERDISTRIBUSI
yang dapat berjalan secara independent. Properti yang terutama terdapat pada basis data terdistribusi :
• Independensi data terdistribusi : pemakai tidak perlu mengetahui dimana data berada (merupakan pengembangan prinsip independensi data fisik dan logika).
• Transaksi terdistribusi yang atomic : pemakai dapat menulis transaksi yang mengakses dan mengubah data pada beberapa tempat seperti mengakses transaksi local.
Untuk trend basis data terdistribusi saat ini, pemakai harus mengetahui dimana data ditempatkan, juga harus mengetahui dimana system yang tidak mendukung independensi data terdistribusi dan transaksi terdistribusi atomic. Kedua property tersebut harus mendukung system secara efisien. Untuk system terdistribusi yang bersifat global, properti-properti tersebut kemungkinan tidak tepat karena adanya administrasi yang terlalu berlebihan dalam membuat lokasi data yang transparan.


Pada basis data terdistribusi (distributed database), data disimpan pada beberapa tempat (site), setiap tempat diatur dengan suatu DBMS (Database Management System)

BASIS DATA TERDISTRIBUSI
yang dapat berjalan secara independent. Properti yang terutama terdapat pada basis data terdistribusi :
• Independensi data terdistribusi : pemakai tidak perlu mengetahui dimana data berada (merupakan pengembangan prinsip independensi data fisik dan logika).
• Transaksi terdistribusi yang atomic : pemakai dapat menulis transaksi yang mengakses dan mengubah data pada beberapa tempat seperti mengakses transaksi local.
Untuk trend basis data terdistribusi saat ini, pemakai harus mengetahui dimana data ditempatkan, juga harus mengetahui dimana system yang tidak mendukung independensi data terdistribusi dan transaksi terdistribusi atomic. Kedua property tersebut harus mendukung system secara efisien. Untuk system terdistribusi yang bersifat global, properti-properti tersebut kemungkinan tidak tepat karena adanya administrasi yang terlalu berlebihan dalam membuat lokasi data yang transparan.
TIPE BASIS DATA TERDISTRIBUSI
Terdapat dua tipe basis data terdistribusi :
• Homogen : yaitu sistem dimana setiap tempat menjalankan tipe DBMS yang sama
• Heterogen : yaitu sistem dimana setiap tempat yang berbeda menjalankan DBMS yang berbeda, baik Relational DBMS (RDBMS) atau non relational DBMS.
ARSITEKTUR BASIS DATA TERDISTRIBUSI
Terdapat tiga pendekatan alternatif untuk membagi fungsi pada proses DBMS yang berbeda. Dua arsitektur alternatif DBMS terdistribusi adalah Client/Server dan Collaboration Server.
• Client-Server
Sistem client-server mempunyai satu atau lebih proses client dan satu atau lebih proses server, dan sebuah proses client dapat mengirim query ke sembarang proses server Client bertanggung jawab pada antar muka untuk user, sedangkan server mengatur data dan mengeksekusi transaksi. Sehingga suatu proses client berjalan pada sebuah personal computer dan mengirim query ke sebuah server yang berjalan pada mainframe. Arsitektur ini menjadi sangat popular untuk beberapa alasan. Pertama, implementasi yang relatif sederhana karena pembagian fungis yang baik dank arena server tersentralisasi. Kedua, mesin server yang mahal utilisasinya tidak terpengaruh pada interaksi pemakai, meskipun mesin client tidak mahal. Ketiga,
pemakai dapat menjalankan antarmuka berbasis grafis sehingga pemakai lebih mudah dibandingkan antar muka pada server yang tidak user-friendly. Pada saat menulis aplikasi client-server, perlu diingat batasan antara client dan server dan untuk menjaga komunikasi antara keduanya yang berorientasi himpunan.
Khususnya membuka kursor dan mengambil tupel pada satu waktu membangkitkan beberapa pesan dan dapat diabaikan.

• Collaboration Server
Arsitektur client-server tidak mengijinkan satu query mengakses banyak server karena proses client harus dapat membagi sebuah quer ke dalam beberapa subquery untuk dieksekusi pada tempat yang berbeda dan kemudian membagi jawaban ke subquery. Proses client cukup komplek dan terjadi overlap dengan server; sehingga perbedaan antara client dan server menjadi jelas. Untuk mengurangi perbedaan diguankan alternatif arsitektur client-server yaitu sistem Collaboration Server. Pada sistem ini terdapat sekumpulan server basis data, yang menjalankan transaksi data lokal yang bekerjasama mengeksekusi transaksi pada beberapa serve. Jika server menerima query yang membutuhkan akses ke data pada server lain, sistem membangkitkan subquery yang dieksekusi server lain dan mengambil hasilnya bersama-sama untuk menggabungkan jawaban menjadi query asal.
Selengkapnya...

Program C++ : Searching

#include
void main()
{
//deklarasi variabel
int A[10],index[10], i,j,k;
//proses penginputan data
for(i=0;i<10;i++)
{
printf("Data ke-%d:",i+1);
scanf("%d",&A[i]);
}


#include
void main()
{
//deklarasi variabel
int A[10],index[10], i,j,k;
//proses penginputan data
for(i=0;i<10;i++)
{
printf("Data ke-%d:",i+1);
scanf("%d",&A[i]);
}
//memasukkan data yang akan dicari ke dalam K
printf("Masukkan data yang akan anda cari:");
scanf("%d",&k);
//proses pencarian data
j=0;
for (i=0;i<10;i++)
{
if(A[i]==k)
{
index[j]=i;
j++;
}
}
//jika data ditemukan dalam array
if (j>0)
{
printf("Data %d yang dicari ada %d buah\n",k,j);
printf("Data tersebut terdapat dalam index ke :");
for(i=0;i {
printf(" %d ",index[i]);
}
printf("\n");
}
//jika tidak ditemukan
else
{
printf("Data tidak ditemukan dalam array\n");
}
}

Selengkapnya...

Program C++ : Array

#include
#include
void main()
{
char str[100],cari[100];
char hasil[5][5];
int n,i,j,t,a,b,c,d,e;
printf("Masukkan string: ");
gets(str);
n=strlen(str);
j=0;
for(i=0;i {
if (i!=(n-1))
{
if(str[i]==32)
j++;
}
else if(i==(n-1))
j++;
}

#include
#include
void main()
{
char str[100],cari[100];
char hasil[5][5];
int n,i,j,t,a,b,c,d,e;
printf("Masukkan string: ");
gets(str);
n=strlen(str);
j=0;
for(i=0;i {
if (i!=(n-1))
{
if(str[i]==32)
j++;
}
else if(i==(n-1))
j++;
}
t=0;
for(i=0;i {
e=0;
for(a=t;a {
if(str[a]!=32)
{
hasil[i][e]=str[a];
printf("Indeks [%d][%d] = %c\n",i,e,hasil[i][e]); //untuk melihat hasil splice
e++;
}
else
{
t=a+1;
break;
}
}
printf("\n");
}

printf("Kata yang ingin dicari : ");
gets(cari);
b=strlen(cari);
printf("Panjang kata cari %i\n",b);
c=-1;
d=0;
for(i=0;i {
t=e=0;
for(a=0;a {
if(hasil[i][a]<=0 && cari[e]<=0)
break;
else
{
if(cari[e]==hasil[i][a])
t++;
}
e++;
}

if(t==b)
{
c=i;
break;
}
}
if(c!=-1)
{
printf("Kata %s yang dicari ada di indeks [%d][%d] sampai [%d][%d]\n",cari,c,0,c,a-1);
}
else
printf("Kata tidak ada dalam string!\n");
}
Selengkapnya...

Java Thread

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package ari_thread2;

/**
*
* @author poltek
*/
class thread implements Runnable{
Thread t;
public thread(){
t = new Thread (this,"Demo Thread");
System.out.println("Thread anak mulai - " + t);
t.start();
}

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package ari_thread2;

/**
*
* @author poltek
*/
class thread implements Runnable{
Thread t;
public thread(){
t = new Thread (this,"Demo Thread");
System.out.println("Thread anak mulai - " + t);
t.start();
}
public void run(){
try{
for(int i=5;i>=1;i--){
System.out.println("Thread anak : "+i);
Thread.sleep(500);
}
}catch (InterruptedException ie){
System.out.println("Thread anak diinterupsi");
}
System.out.println("Thread anak selesai");
}
}

public class Main {

/**
* @param args the command line arguments
*/


public static void main(String[] args) {
// TODO code application logic here
new thethread();
System.out.println("Thread utama mulai");
try{
for(int i=0;i<10;i++)
System.out.println("Thread utama : " + (i+1));
Thread.sleep(1000);
}
catch (InterruptedException ie){
System.out.println("Thread utama diinterupsi");
}
System.out.println("Thread utama selesai");

}

}
Selengkapnya...

Program C++ : Mengganti Karakter dengan Karakter Lain

#include

int partisi(int a[], int atas, int bawah);

void kuiksot(int a[], int atas, int bawah);

void main()

{

int b[10]={1,2,3,4,5,6,7,8,9,0};

kuiksot(b,0,9);

for (int k=0;k<10;k++) cout<<”b["<

#include

int partisi(int a[], int atas, int bawah);

void kuiksot(int a[], int atas, int bawah);

void main()

{

int b[10]={1,2,3,4,5,6,7,8,9,0};

kuiksot(b,0,9);

for (int k=0;k<10;k++) cout<<”b["<
}

int partisi(int a[], int atas, int bawah)

{

int x = a[atas];

int i = atas – 1;

int j = bawah + 1;

int temp;

do

{

do

{

j–;

}while (x >a[j]);

do

{

i++;

} while (x
if (i < j)

{

temp = a[i]; // switch elemen posisi i dan j

a[i] = a[j];

a[j] = temp;

}

}while (i < j);

return j; // returns index tengah

}

void kuiksot(int a[], int atas, int bawah)

{

int tengah;

if (atas < bawah)

{

tengah = partisi(a, atas, bawah);

kuiksot(a, atas, tengah); // sort partisi atas

kuiksot(a, tengah+1, bawah); // sort partisi bawah

}

return;

}
Selengkapnya...

SQL : Procedure dan Function

Procedure dan Function
Procedure
Penulisan 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
| [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


Procedure dan Function
Procedure
Penulisan 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
| [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
Implementasi 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..
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;

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);
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 |
+------+

Function
mysql> select tmbhSaudara(' resika arthana');
+--------------------------------+
| tmbhSaudara(' resika arthana') |
+--------------------------------+
| Saudara resika arthana |
+--------------------------------+
Menghapus Procedure dan Function
Untuk menghapus procedure atau function digunakan perintah sebagai berikut
DROP {PROCEDURE | FUNCTION} [IF EXISTS] procedure_or_function_name


Selengkapnya...

Program C++ : Quicksort

#include

int partisi(int a[], int atas, int bawah);

void kuiksot(int a[], int atas, int bawah);

void main()

{

int b[10]={1,2,3,4,5,6,7,8,9,0};

kuiksot(b,0,9);

for (int k=0;k<10;k++) cout<<”b["<
}

int partisi(int a[], int atas, int bawah)

{

int x = a[atas];

int i = atas – 1;

int j = bawah + 1;

int temp;

do

{

do

{

j–;

}while (x >a[j]);

do

{

i++;

} while (x
if (i < j)

{

temp = a[i]; // switch elemen posisi i dan j

a[i] = a[j];

a[j] = temp;

}

}while (i < j);

return j; // returns index tengah

}

void kuiksot(int a[], int atas, int bawah)

{

int tengah;

if (atas < bawah)

{

tengah = partisi(a, atas, bawah);

kuiksot(a, atas, tengah); // sort partisi atas

kuiksot(a, tengah+1, bawah); // sort partisi bawah

}

return;

}
Selengkapnya...