STRUCTURE QUERY LANGUAGE(SQL)

<!– @page { size: 8.5in 11in; margin: 0.79in } P { margin-bottom: 0.08in } –>

Sistem basis data komersial menghendaki adanya sebuah bahasa query yang lebih user-friendly. Oleh karena itu dikenal SQL sebagai bahasa query yang marketable. SQL menggunakan kombinasi aljabar relasional & kalkulus relasional. Meskipun SQL adalah bahasa query, namun SQL mempunyai banyak kemampuan lain disamping melakukan query terhadap basis data. SQL mempunyai kemampuan untuk mendefinisikan struktur data, modifikasi data dalam basis data dan menentukan konstrain sekuriti.

4.1 LATAR BELAKANG

SQL merupakan bahasa basis data relasional standard. Terdapat macam-macam versi SQL. Versi aslinya pertama kali dikembangkan oleh IBM San Jose Research Laboratory.

Bahasa SQL mempunyai bebrap bagian yaitu :

Data Definition Language (DDL)

DDL memberikan perintah untuk mendefinisikan skema relasi, penghapusan relasi, membuat indeks dan modifikasi skema relasi.

Interactive Data-Manipulation Language (DML)

DML merupakan bahasa query yang berdasarkan pada aljabar relasi dan kalkulus relasi tuple. Termasuk didalamnya adalah perintah untuk penyisipan, penghapusan dan modifikasi.

Embedded DML

Bentuk embedded SQL biasanya terdapat dalam bahasa pemrograman multi guna seperti PL/I, Cobol , Pascal dan Fortran.

View Definition

DDL SQL memasukkan perintah untuk mendefinisikan view.

Authorization

DDL SQL memasukkan perintah untuk menentukan hak-hak akses ke relasi dan view.

Integrity

DDL SQL memasukkan perintah untuk menentukan konstrain integritas yang harus dipenuhi oleh data yang tersimpan dalam basis data.

Transaction control

SQL memasukkan perintah-perintah untuk menentukan awal dan akhir transaksi. Beberapa implementasi juga memungkinkan locking data untuk concurrency control.

4.2 STRUKTUR DASAR

Struktur dasar dari ekspresi SQL terdiri dari tiga klausa yaitu : select, from dan where.

– Klausa Select berhubungan dengan operasi proyeksi dari aljabar relasional. Operasi ini digunakan untuk mendaftar semua atribut yang diinginkan sebagai hasil suatu query.

– Klausa From berhubungan dengan operasi Cartesian-product dari aljabar relasional. Operasi ini mencatat semua relasi yang di”scan” dalam evaluasi suatu query.

– Klausa Where berhubungan dengan operasi predikat seleksi dari aljabar relasional. Operasi ini terdiri dari sebuah predikat yang menyangkut atributatribut dari relasi yang muncul dalam klausa from.

Sebuah query SQL biasanya mempunyai bentuk :

Select A1,A2,…..An

From r1,r2,….rn

Where P

4.2.1 Klausa Select

Contoh : “ Tentukan nama-nama dari semua cabang bank dalam relasi loan “ Query-nya :

select branch-name from loan Hasil dari query tersebut adalah sebuah relasi yang berisi sebuah atribut tunggal dengan nama branch-name. Bahasa query formal bersifat matematis dimana relasi adalah sebuah himpunan sehingga tuple-tuple yang telah muncul tidak akan muncul lagi (tidak akan terjadi duplikasi tuple). Tapi dalam prakteknya untuk menghilangkan duplikasi tuple sangat memakan waktu. Oleh karenanya SQL memungkinkan terjadinya duplikasi tersebut. Dari contoh di atas, maka query-nya akan mencatat setiap branch-name setiap kali branch-name tersebut ditemukan dalam relasi loan. Untuk kasus di atas jika diinginkan untuk menghilangkan duplikasi maka dapat disisipkan distinct setelah select. Query di atas ditulis ulang sebagai berikut : Select distinct branch-name from loan

Jika tuple yang terduplikasi diinginkan hilang. Klausa selest dapat juga mengandung operasi aritmatika yaitu operator : +, -, *, / dan operasi terhadap konstanta atau atribut dari tuple. Contoh query berikut : Select branch-name, loan-number, amount * 100 From loan

Akan menghasilkan sebuah relasi yang sama dengan relasi loan, kecuali bahwa atribut amount dikalikan dengan 100. SQL-92 juga menyediakan tipe data spesial seperti tipe date, dan memungkinkan beberapa fungsi aritmatika untuk beroperasi pada tipe-tipe ini.

4.2.2 Klausa Where

Contoh query : “Temukan semua loan number untuk pinjaman-pinjaman yang dibuat pada cabang Perryridge dengan jumlah lebih besar dari $1200”. Query-nya ditulis sebagai berikut :

Select loan-number

From loan

Where branch-name = “Perryridge” and amount >1200

SQL menggunakan konektivitas lojik and, or dan not dalam klausa where. SQL juga memasukkan perintah between untuk menentukan apakah suatu nilai lebih kecil daripada atau sama dengan suatu nilai lain dan lebih besar daripada atau sama dengan suatu nilai lain. Contoh : jika diinginkan menemukan loan-number yang jumlah pinjamannya antara $90000 dan $100000, ditulis sebagai berikut :

Select loan-number

From loan

Where amount between 90000 and 100000

4.2.3 Klausa From

Contoh query : “Untuk semua customer yang mempunyai sebuah pinjaman dari bank, temukan nama dan loan number mereka”. Dalam SQL ditulis :

Select distinct customer-name, borrower.loan-number

From borrower, loan

Where borrower.loan-number = loan.loan.number

4.2.4 Operasi Rename

SQL menyediakan mekanisme operasi rename untuk relasi dan atribut. Operasi rename dalam SQL menggunakan klausa as dengan bentuk :

Nama-lama as nama-baru

Contoh : Jika atribut dengan nama loan-number akan diganti dengan nama loan-id, dapat ditulis sebagai berikut :

Select distinct customer-name, borrower.loan-number as loan-id

From borrower,loan

Where borrower.loan-number = loan.loan-number and

branch-name = “Perryridge”

4.3 OPERASI HIMPUNAN

Operasi operasi himpunan pada SQL-92 meliputi : union, intersect, dan except. Union identik dengan , intersect identik dengan ∩dan except identik dengan pada aljabar relasional.

4.3.1 Operasi Union

Contoh : Untuk mendapatkan semua customer yang mempunyai pinjaman, rekening atau keduannya pada bank ditulis :

(select customer-name from depositor)

union

(select customer-name from borrower)

Operasi union secara otomatis akan menghilangkan duplikasi, tidak seperti klausa select. Sehingga pada query di atas, jika Jones (seorang customer) mempunyai beberapa rekening atau pinjaman (atau keduannya) pada bank, maka Jones hanya akan muncul sekali. Jika duplikasi diinginkan ada maka harus ditulis union all.

4.3.2 Operasi Intersect

Contoh : untuk mendapatkan semua customer yang memiliki pinjaman dan rekening pada bank, query-nya ditulis :

(select distinct customer-name from depositor)

intersect

(select distinct customer-name from borrower)

Operasi intersect secara otomatis menghilangkan duplikasi. Jika diinginkan duplikasi tetap ada ditulis intersect all.

4.3.3 Operasi Except

Contoh : untuk mendapatkan semua customer yang mempunyai sebuah rekening tetapi tidak memiliki pinjaman pada bank, ditulis :

(select distinct customer-name from depositor)

except

(select customer-name from borrower)

Operasi except secara otomatis menghilangkan duplikasi. Jika diinginkan ada maka ditulis : except all.

4.4 FUNGSI-FUNGSI AGREGASI

Yang termasuk fungsi-fungsi agregasi adalah :

Average : avg

Minimum : min

Maximum : max

Total : sum

Count : count

Fungsi-fungsi di atas telah tersedia. Input untuk avg dan sum haruslah bertipe numerik. Untuk operator lainnya dapat non-numerik. Contoh : untuk mendapatkan rata-rata saldo rekening pada cabang Perryridge Query-nya dapat ditulis :

Select avg(balance)

From account

where branch-name = “Perryridge”

Jika fungsi agregasi iningn diterapkan pada kelompok himpunan tuple, maka digunakan klausa group by. Nama atribut/kel. Atribut dalam klausa group by digunakan untuk membentuk grup/kelompok. Artinya tuple-tuple yang mempunyai nilai yang sama pada semua atribut dalam klausa group-by dimasukkan dalam satu grup/kelompok.

Contoh :

Select branch-name, avg(balance)

From accountGroup by branch-name

Jika suatu fungsi diterapkan pada grup/kelompok yang dibentuk oleh group by maka digunakan klausa having setelah group by. Contoh : ingin ditampilkan nama cabang yang mempunyai rata-rata saldo lebih dari

1200.

Query-nya :

Select branch-name, avg(balance)

From account

Group by branch-name having avg (balance)>1200

Fungsi agregrasi count sering digunakan untuk menghitung jumlah tuple dalam suatu relasi. Notasi fungsi ini dalam SQL adalah count (*). Jadi untuk menentukan jumlah tuple dalam relasi customer, ditulis :

Select count(*) from customer

4.5 SUBQUERI TERSARANG (NESTED SUBQUERYS)

Biasanya digunakan untuk melalukuan test keanggotaan himpunan, perbandingan himpunan dan kardinalitas himpunan.

4.5.1 Keanggotaan Himpunan

Digunakan in dan not in untuk melakukan test keanggotaan himpunan. Contoh : untuk mendapatkan semua customer yang mempunyai pinjaman dan rekening pada bank. Pertama : menemukan semua pemegang reeking dengan query :

(select customer-name from depositor)

Kedua : mencari semua customer yang merupakan peminjam dan yang muncul dalam daftar pemegang rekening. Maka dilakukan dengan “menyarangkansubquery di atas dalam sebuah select luar (outer select), menjadi :

Select distinct customer-name

from borrower

Where customer-name

in (select customer-name from depositor)

4.5.2 Perbandingan Himpunan

Perhatikan query berikut : “Temukan semua nama cabang bank yang mempunyai asset lebih besar dari bank-bank yang mempunyai minimal satu cabang berlokasi di Brooklyn”.

Query-nya ditulis :

Select branch-name from branch where assets > all

(select assets from branch where branch-city = “Brooklyn”)

4.6 MODIFIKASI BASIS DATA

Meliputi menambah, menghapus dan mengubah informasi menggunakan SQL.

4.6.1 Penghapusan (Deletion)

Yang dapat dihapus (delete) hanyalah tuple bukan nilai pada suatu atribut tertentu. Dalam SQL, deletion diekspresikan dengan

Delete from r where p

Dimana p menunjukkan predikat dan r adalah relasi. Contoh :

– Hapus semua rekening Smith, ditulis :

Delete from depositor where costomer-name = “Smith”

– Hapus semua pinjaman dengan jumlah pinjaman antara $1300 dan $1500

Delete from loan where amount between 1300 and 1500

– Hapus semua rekening pada setiap cabang yang berlokasi di Perryridge

Delete from account where branch-name in

(select branch-name

from branch where branch-city = “Perryridge”)

4.6.2 Penyisipan (Insertion)

Untuk menambahkan satu tuple dalam relasi digunakan statement insert. Contoh :

Insert into account values (“Perryridge”,”A-9732”,1200)

Query ini identik dengan

Insert into account (branch-name, account-number,balance)

Values (“Perryridge”,”A-9732”,1200)

Insert juga dapat dilakukan untuk suatu hasil dari query yang lain.

Contoh :

Insert into account select branch-name, loan-number, 200

From loan where branch-name = “Perryridge”

4.6.3 Update

Dalam situasi tertentu, diinginkan untuk mengganti nilai dalam sebuah tuple tanpa harus mengganti semua nilai dalam tuple tersebut. Untuk tujuan ini dapat digunakan statement update.

Contoh :

– untuk menaikkan saldo para nasabah sebesar 5% ditulis query sebagai berikut :

Update account set balance = balance * 1.05

– untuk menaikkan saldo nasabah sebesar 6% bagi nasabah yang saldonya lebih

dari $10000, ditulis query sebagai berikut :

Update account set balance = balance *1.06

Where balance >10000

4.7 BAHASA DEFINISI DATA ( DATA – DEFINITION LANGUAGE)

DDL SQL memungkinkan dilakukannya spesifikasi tidak hanya pada himpunan relasi tetapi juga informasi untuk setiap relasi, yang meliputi :

– Skema setiap relasi

– Domain nilai setiap atribut relasi

– Konstrain integritas

– Himpunan indeks untuk setiap relasi

– Sekuriti dan autorisasi setiap relasi

– Struktur penyimpanan secara fisik untuk setiap relasi dalam disk.

4.7.1 Tipe-tipe Domain dalam SQL

SQL-92 standar mendukung bermacam-macam tipe domain yang built-in sebagai

berikut :

char(n) : tipe karakter dengan panjang yang tetap (n) (fixed-length character)

varchar(n) : tipe karakter dengan panjang bervariasi. Maksimum panjang n.

int : integer

smallint : small integer

numeric (p,d) : p menunjukkan jumlah digit bilangan dan d menunjukkan julah

digit dibelakang titik desimal.

real, double precision : floating-point dan double-precision floating point

float (n) : floating-point number

date : tipe kalender

time : tipe hari dalam jam,menit dan detik

SQL-92 menggunakan klausa create domain untuk mendefinisikan domain.

Contoh :

create domain person-name char(20)

4.7.2 Definisi Skema dalam SQL

Untuk mendefinisikan sebuah relasi dengan perintah create table :

Create table r(A1D1,A2D2,….AnDn,

<integrity contraint1>,

……………,

<integrity contrantk>)

Dimana r adalah nama relasi, setiap AI adalah nama atribut dalam skema relasi, dan DI

adalah tipe domain dari nilai dalam domain atribut Ai. Integrity constraint yang

diperbolehkan antara lain : primary key (Aj1, Aj2,….Ajn) dan check (P)

Contoh :

Create table customer

(customer-name char(20) not null,

customer-street char(30),

customer-city char(30),

primary key (customer-name))

create table branch

(branch-name char(15) not null,

branch-city char(30),

assets integer,

primary key (branch-name), check(assets >=0))

create table account

(account-number char(10) not null,

branch-name char(15),

balance integer, primary key (account-number),

check (balance >=0))

create table depositor

(customer-name char(20) not null,

account-number char(10) not null,

primary key (customer-name, account-number))

program stopwatch sederhana menggunakan java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Proses extends Thread
{
private  JLabel tampilan;
private boolean selesai;
private boolean aktif;
private int jam,menit,detik,perSeratusDetik;

public Proses (JLabel tampilan)
{
super();
this.tampilan = tampilan;
this.selesai = false;
this.aktif=false;
this.jam=0;
this.menit=0;
this.detik=0;
this.perSeratusDetik=0;
}
public void run()
{
String tampil=””;
while (!selesai)
{
if(aktif)
{
tampil=Integer.toString(jam)+”:”;
tampil+=Integer.toString(menit)+”:”;
tampil+=Integer.toString(detik)+”:”;
tampil+=Integer.toString(perSeratusDetik);

tampilan.setText(tampil);

perSeratusDetik++;
if(perSeratusDetik==100);
{
perSeratusDetik=0;

detik++;
if(detik==60)
{
detik = 0;

menit++;
if(menit==60)
{
menit=0;

jam++;
if (jam==24);
{
jam=0;

}
}
}

}
try
{
sleep(10);
}
catch(Exception e){}
}
}
}

public void aktifkan()
{
aktif=true;
}
public void mati()
{
selesai=true;
}
}

public class Stopwatch extends JFrame implements ActionListener
{
private JLabel penghitung = new JLabel(“0:0:0:0”);
private Proses proses = new Proses (penghitung);
private Button mulai = new Button(“Mulai”);
private Button keluar = new Button(“Keluar”);
private JPanel panel  = new JPanel();

public Stopwatch()
{
super(“Stopwatch”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,150);
setLocation(200,100);
setResizable(false);

penghitung.setFont(new Font (“verdana”,Font.BOLD,25));
penghitung.setForeground(Color.red);
penghitung.setHorizontalAlignment(JLabel.CENTER);

mulai.setFont(new Font (“verdana”,Font.PLAIN,20));
mulai.setForeground(Color.blue);

keluar.setFont(new Font (“verdana”,Font.PLAIN,20));
keluar.setForeground(Color.blue);

mulai.addActionListener(this);
keluar.addActionListener(this);

panel.setLayout(new GridLayout (1,2));
panel.add(mulai);
panel.add(keluar);

getContentPane().setLayout(new BorderLayout());
getContentPane().add(penghitung,BorderLayout.CENTER);
getContentPane().add(panel,BorderLayout.SOUTH);

show();

proses.start();

}

public void actionPerformed(ActionEvent e)
{
Object obyek = e.getSource();

if(obyek==mulai)

{
if(mulai.getLabel().equals(“Mulai”))
{
mulai.setLabel(“Berhenti”);
proses.aktifkan();
}

else
{
mulai.setLabel(“Mulai”);

proses.mati();
}
}
else

if(obyek==keluar)
{
System.exit(0);
}

}

public static void main(String[]args)
{
new Stopwatch();
}
}

program untuk mengurutkan data,mencari nilai min,max,modus yang menggunakan fungsi dan prosedur.

Berikut ini adalah program untuk mengurutkan data,mencari nilai min,max,modus yang menggunakan fungsi dan prosedur.

/*fungsi
1.mengurutkan data
2.mencari data sequantial
3.mencari data binari search+
4.mengubah data int k string
5.pengolahan statistik
-rata2
-nilai min max modus
-koefisiensi korelasi
*/

import java.io.*;
class tugas060508fungsi
{

static int[] isiarray(int angka)throws Exception // fungsi untuk memasukkan data kedalam array
{
BufferedReader inputan = new BufferedReader(new InputStreamReader(System.in));
int data [] = new int [angka];

//perulangan untuk user memasukkan data nya kedalam array
for (int i=0;i<angka;i++)
{
System.out.print(“masukkan data anda: “);
data[i]=Integer.parseInt(inputan.readLine());
}

return data;
}

static int[] urutarray(int[] datapinh)//fungsi untuk mengurutkan data array
{
//teknik mengurutkan data pada array secara sederhana menggunakan perulangan for
for(int i=0;i<datapinh.length-1;i++)

{
for (int j=i;j<datapinh.length-1;j++)

{

if (datapinh[i] > datapinh[j+1]) //jika data ke j > j+1 maka tukar
{
int help=datapinh[i];
datapinh[i]=datapinh[j+1];
datapinh[j+1]=help;
}
}
}

return datapinh;
}

static void tampilarray(int[] datapinh)throws Exception//prosedur untuk menampilkan data array sebelum diurut dan setelah diurut
{
BufferedReader inputan = new BufferedReader(new InputStreamReader(System.in));

System.out.print(“Data array sebelum diurut adalah\n”);
for(int i=0;i<datapinh.length;i++)
{
System.out.print(datapinh[i]+” “);
}

//datapinh yang baru yaitu data array yang sudah diurutkan
datapinh = urutarray(datapinh);
System.out.println(“\nData setelah diurut”);

//perulangan untuk menampilkan data array urut
for (int y=0;y<datapinh.length;y++)
{
System.out.print(datapinh[y]+” “);
}

// pesan untuk user mamasukkan data yang ingin dicari menggunakan binary search dan sekuaential search
System.out.print(“\nMasukkan data yang ingin anda cari: “);
int carilin = Integer.parseInt(inputan.readLine());

System.out.print(“\nMetode pencarian dimulai dari indeks array ke [0] sampai array ke [n] “);

//melemparkan isi data array untuk pencarian dengan sekuential search
int hasilcari = sekuential(datapinh,carilin);
System.out.print(“\nHasil pencarian menggunakan sekuential search adalah: “+hasilcari);

//melemparkan isi data array untuk pencarian dengan binari search
int hasilyutta = binarisearch(datapinh,carilin);
System.out.print(“\nHasil pencarian menggunakan binari search adalah: “+hasilyutta);

//menampilkan nilai terkecil dan terbesar dari data array
System.out.print(“\nNilai terkecil adalah: “+datapinh[0]);
System.out.print(“\nNilai terbesar adalah: “+datapinh.length);

//menampilkan rata2 dari data array
double pypynk = rata2(datapinh);
System.out.print(“\nNilai rata adalah: “+pypynk);

//melempar isi data array untuk melihat modus
int modus = Modus(datapinh);
System.out.print(“\nNilai modus adalah: “+modus);
}

static int sekuential(int[] datapinh,int cari)
{
boolean ada=false;

//melakukan perulangan untuk mengecek data pada array satu persatu
//dan jika data yang dicari ada maka akan ditampilkan
int hasilcari=0;
for(int i=0;i<datapinh.length;i++)
{
if (cari==datapinh[i])
{
ada = true;
hasilcari=i;
}
}
return hasilcari;
}

static int binarisearch(int[]datapinh,int cari)//fungsi untuk melakukan pencarian menggunakan binary search
{
boolean ada;
int kiri,kanan,n,mid,lokasi=0;
ada = false;kiri=0;kanan=datapinh.length;mid=0;
do
{
mid=(kiri+kanan)/2;//mencari nilai tengah yaitu posisi awal + posisi akhir dibagi 2
if (cari>datapinh[mid])//jika data yang dicari lebih besar dari nilai tengah
{
kiri = mid+1;//maka posisi awal dianggap posisi tengah + 1
}
else
{
if(cari<datapinh[mid])//jika data yang dicari lebih kecil dari nilai tengah
{
kanan = mid-1;//maka posisi akhir dianggap posisi tengah dikurangi 1
}
else
{
if(cari==datapinh[mid]) //jika data yang dicari sama dg nilai tengah maka akan perulangan akan selesai
{                // dan akan menampilkan letak posisi nya
ada = true;
lokasi=mid;
kiri=kanan+1;
//System.out.print(“mid”+mid);
//System.out.print(“\nMengguanakan Binary search data ketemu pada posisi: “+lokasi);
}
}
}
kiri++;
}while(kanan>=kiri);

return lokasi;
}

static double rata2(int[] datapinh)
{
int jumlah=0;
for (int i=0;i<datapinh.length;i++)
{
jumlah += datapinh[i];
}
double total=(double) jumlah/datapinh.length;
//System.out.print(“\nRata-rata adalah: “+total);
return total;
}

static int Modus(int[] datapinh)
{
//menampilkan data modus
int[] t=new int[datapinh.length];
for(int i=0;i<datapinh.length;i++)
{   int f=0;
int sama=datapinh[i];
for (int j=0;j<datapinh.length;j++)
{
if (datapinh[j]==sama) f++;
}
t[i]=f;
}

//mencari terbanyak
int terbesar=t[0];
int indek=0;
for (int i=0;i<t.length;i++)
{ if (terbesar<t[i])
{ terbesar=t[i]; indek=i;}
}
//System.out.println(“\nmodus: “+datana[indek]);
return datapinh[indek];
}
public static void main(String[]args)throws Exception
{
BufferedReader inputan = new BufferedReader(new InputStreamReader(System.in));
System.out.print(“Masukkan jumlah data anda: “);

int angka = Integer.parseInt(inputan.readLine());
int dataarray []=isiarray(angka);//memanggil fungsi isiarray untuk memasukkan data kedalam array

tampilarray(dataarray);//memanggil prosedur tampilarray untuk menampilkan data array sebelum diurut

}
}

Program mencari data pada Array menggunakan sequential Search

import java.io.*;
class tugasModul6
{
public static void main (String args []) throws Exception
{
int pilih = 0;
BufferedReader inputan = new BufferedReader (new InputStreamReader(System.in));
String [][] data = new String [100][100];
String ulang = “”;

while (true)
{

System.out.println(“\tMENU”);
System.out.print(“=====================\n”);
System.out.println(“1. Input Data”);
System.out.println(“2. Pencarian Data”);
System.out.println(“3. Keluar”);
System.out.print(“=====================\n”);
System.out.print(“Masukkan Pilihan Anda :”);
pilih = Integer.parseInt(inputan.readLine());

switch (pilih)
{

case 3 : System.exit(0);
case 1 :

for (int i=0;;i++)
{

System.out.print(“Masukkan Kode Barang : “);
data [i][0]  = inputan.readLine();
if (data [i][0].equals(“/”)) break;

else
{

System.out.print(“Masukkan Nama Barang : “);
data [i][1] = inputan.readLine();
System.out.print(“Masukkan Jumlah Barang : “);
data [i][2] = inputan.readLine();
System.out.print(“Masukkan Harga Barang : “);
data [i][3] = inputan.readLine();
System.out.println();

}

}

break;

case 2 :

System.out.print(“Masukkan kode barang yang ingin anda cari: “);
String cari = inputan.readLine();

for (int i=0;i<100;i++)
{
if (cari.equals(data [i][0]))
{
System.out.print(“====================================”);
System.out.print(“Kode Barang\t : “+data[i][0]+”\n”);
System.out.print(“Nama Barang\t : “+data[i][1]+”\n”);
System.out.print(“Jumlah Barang\t : “+data[i][2]+”\n”);
System.out.print(“Harga Barang\t : “+data[i][3]+”\n”);
System.out.print(“====================================”);
break;
}

else System.out.println(“Data Tidak Ditemukan”);
}
break;
default : System.out.print(“Pilihan Tidak Ada /n”);

}
}
}
}