Showing posts with label Database. Show all posts
Showing posts with label Database. Show all posts

Thursday, March 14, 2013


Aku mau share game android yang pernah aku buat. sebenarnya game ini adalah tugas dari mata kuliah Mobile Programming yang pernah aku ambil di semester kemarin. dan saya yakin kalian semua sudah pernah memainkan game ini, game ini seperti game (kalo dibahasa jawakan) Ingat-ingatan. jadi kita harus buka dua kartu ( memilih diantara banyak kartu yang disediakan ), tetapi gambar kartu yang kita buka harus sama, jika gambar kartu yang kita buka gg sama maka kartunya akan nutup lagi, jadi harus kita ingat baik - bak letak kartunya jika kita menemukan kartu lain yang mempunyai gambar yang sama dengan kartu yang pernah kita buka sebelumnya, kalo kedua kartu yang kita buka benar, maka dua kartu tersebut bakalan hilang, n jika kartunya sudah habis samua sebelum warktu yang ditentukan habis, maka kamu berhasil ...gampang kan. !!

Game ini ada ceritanya cob. sebenarnya sih awal aku buat gg ada ceritanya, tapi sma Dosenku di suruh dikasih cerita, kaya macam Angry birth gituu.. sempat kesulitan juga kasih cerita apa enaknya. nyari ide muter2 keliling surabaya "Ngalorr ngidulll gg karuan" mulai dari bunderan waru sampe kebun binatang surabaya aku jelajahi hanya untuk mencari sebuah ide. Nahh...! pas masuk ke kebun binatang aku ketemu sama saudara lama kita " Monyet ", pas aku ngelihat wajah monyet yang wajahnya sama kaya yang baca tulisan ini, ide cemerlang langsung datang dari kepala saya..Tiiiing...!! dialah yang bakal jadi pemeran utama di gameku ini.

jadi ceritanya gini... dengarin baik baik ?? jangan tidur dulu yaa...


Pada suatu hari, ada seorang monyet yang sangat gannnteeeeeng sekali, moyet itu kelaparan karena kehabiisan makanan di hutan.(apa hubungannya ama ganteng coba !). terus monyet itu turun dari hutan ke pemukiman penduduk untuk mencari makanan yang bisa dia makan. moyet itu masuk ke dalam rumah - rumah penduduk dan pada akhirnya dia menemukan sebuah lemari yang penuh dengan buah2an, ( Kulkas maksudnya ). sambil sembunyi - sembunyi dia memakan semua makanan di dalam kulkas tersebut, dia harus cepat agar tidak ketauan ama yang empunya kulkas. setalah menghabiskan semua makanan, tapi dia masih belum kenyang juga, karena rasa laparnya "kata tante Sahrini" sungguh cethar membahana terpampang luas ke luar angkasa. lalu dia pindah dari rumah satu kerumah lainnya untuk mencari makanan lagi. ternyata di rumah lainnya juga menemukan makanan tetapi yang dia temukan bukan buah - buahan seperti di rumah sebelumnya, dia menemukan roti2 n cake yang enak sekali. dia menghabiskan semua roti di dalam kulkas tersebut, yang pastinya dengan sembunyi2 jugaa.. tapi dia masih belum kenyang juga... "kasihan bangeeeet iyaaa ..!!" Kata tante Syahrini lagii. lalu dia pindah lagi kerumah lainnya..begitu seterusnya. kalian lanjutkan sendiri yaa lanjutanna... kalo ketauan yaa game over gitu aja..hehe.. 

nahh itu tadi cerita dari kak setoo adik2..  Looh yang belakang sendiri itu koq tidurr...!!!(*&((*%^&

Pada game ini, kartu yang bergambar makanan pada game, diibaratkan makanan yang ada di dalam kulkhas. jika pemain berhasil menyamakan 2 kartu otomatis 2 kartu tersebut bakalan hilang atau didalam cerita, monyet (kamu) berhasil memakan satu makanan.. begitu dan begitu seterusnya sampai makanannya habis, sebelum waktu yang ditentukan habis. jika waktunya habis sebelum makanannya habis, maka kamu ketauan sma yang empunya kulkas. bisa2 di gebukin kamuu hehe..begitulah hubungan antara cerita dan gamenya...
yaah agaak sedikit gg nyambung ya, cerita sma gamenya.. gimana lgii. itu ide yang paling BERLIAN menurut aku pada saat itu.

Nii ScreenShot SplashScreennya....!!


Yang punya HP android langsung download aja gamenya (dot) APK-nya disini.

dan buat yang pengen Ngembangin game ini aku kasih projectnya disini.

Game ini masih dalam masa pengembangan jadi jangan kaget jika masih menemukan bug yaa..hehe

Wednesday, February 8, 2012

Kali ini saya akan memberi contoh membuat sebuah Trigger Sederhana menggunakan PostgreSQL
Pertama kita akan buat tabel terlebih dahulu, kita akan buat tabel stokbarang, dan pembelian.

Membuat tabel stokbarang

CREATE TABLE stokbarang(
kode_barang character varying(20) NOT NULL,
nama_barang character varying(30),
stok_ketersediaan integer,
CONSTRAINT stokbarang_pkey PRIMARY KEY (kode_barang)
)WITH (
OIDS=FALSE
);
ALTER TABLE stokbarang OWNER TO postgres;

Membuat table pembelian

CREATE TABLE pembelian(
kode_barang character varying(20),
jumlah_beli integer,
CONSTRAINT pembelian_kode_barang_fkey FOREIGN KEY (kode_barang)
REFERENCES stokbarang (kode_barang) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)WITH (
OIDS=FALSE
);
ALTER TABLE pembelian OWNER TO postgres;

pada 2 tabel diatas sudah di relasikan, kemudian kita buat functionnya.

CREATE OR REPLACE FUNCTION update_stok()
RETURNS trigger AS
$BODY$
begin
update stokbarang set stok_ketersediaan=stok_ketersediaan-new.jumlah_beli where kode_barang=new.kode_barang;
return new;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION update_stok() OWNER TO postgres;

akan saya jelaskan sedikit, isi function diatas .
update stokbarang set stok_ketersediaan=stok_ketersediaan-new.jumlah_beli where kode_barang=new.kode_barang;
return new;

mengupdate tabel stokbarang pada kolom stok_ketersediaan=( stok_ketersediaan dikurangi jumlah_beli ) nilai jumlah beli diambil saat mengimputkan jumlah _beli pada table pembelian, karena trigger ini dipanggil setelah mengisi data pada tabel pembelian.

Kemudian kita masukkan data stokbarang.

insert into stokbarang values('10023','sikat gigi',50)
insert into stokbarang values('10024','sabun mandi',50)

Membuat trigger dengan nama “update_stok”

CREATE TRIGGER update_stok
AFTER INSERT ON pembelian
FOR EACH ROW
EXECUTE PROCEDURE update_stok();

maksud dari query diatas, membuat trigger namanya update_stok dan akan dijalankan setelah proses pemasukan/insert di tabel pembelian, isi dari trigger ini adalah memanggil function update_stok(); yang sudah kita buat tadi.

Untuk lebih jelasnya lihat contoh proses berikut ini.
















Terlihat stok barang yang telah kita masukkan tadi, dengan kode_barang, nama_barang, dan stok_barang. kedua barang mempunyai stok yang masih utuh ( 50 ).

Selanjutnya masukkan data ke tabel pembelian, kita misalkan ada pembelian membeli barang yang ( kode_barangnya 10023 dan jumlah barang yang dibeli 5 ) , setelah proses insert berhasil maka trigger akan otomatis berjalan ( memanggil function yang telah dibuat tadi ) , cara kerja function ( mengurangi stok ) dapat dilihat pada penjelasan diatas.









Setelah itu kita lihat apakah trigger kita berhasil memanggil function untuk mengpdate stokbarang dengan cara ketik “SELECT * from stokbarang” .













Kita lihat stok_ketersediaan pada kode_barang =10023 berubah menjadi 45 ( hasil dari 50 -5 )
trigger berhasil..

Friday, January 20, 2012

Penggunaan Alter sangat berperan penting dalam pembuatan database, alter ini mempunyai banyak fungsi beberapa diantaranya bisa menambah menghapus, bahkan mengubah data atau attribute tabel, menambahkan primary key, menambahkan foreign key dan masih banyak lainnya.Untuk lebih jelasnya pelajari query dibawah ini :

PostgreSQL Alter Table Add Column ( menambahkan colom di tabel)

PostgreSQL Alter Table Add Primary Key ( menambahkan primary key )

PostgreSQL Alter Table Add Foreign Key ( menambahkan foreign key )

PostgreSQL Alter Table Change Column Type ( mengubah type data suatu colom )

// pada contoh menganti tipe data “char” valuenya (25)

PostgreSQL Alter Table Drop Column ( menghapus kolom tabel )

PostgreSQL Alter Table Drop Constraint ( menghapus constraint )

PostgreSQL Alter Table Drop Primary Key ( menghapus primary key )

PostgreSQL Alter Table Drop Foreign Key ( menghapus foreign key )

PostgreSQL Rename Table ( mengubah nama tabel )

PostgreSQL Rename Column ( mengubah nama field / colom )


Semoga_Bermanfaat ;

Thursday, January 19, 2012

Pada tulisan yang akan saya bahas kali ini sebenarnya sangat sepele sekali, yaitu membuat auto increment di postgreSQL. Mungkin buat para master yang sudah tau cara membuatnya, sudah bukan masalah lagi. Tetapi buat para newbie yang baru belajar (Postgree) mungkin ini merupakan hal yang lumayan penting untuk dipelajari, karena hampir semua program menggunakan auto increment, untuk membuat nomer atau kode yang unik dari program secara otomatis. contohnya program pendaftaran mahasiswa baru disebuah universitas, setiap mahasiswa baru yang mendaftar akan di diberikan nomer urutan yang unik sesuai urutannya. Itulah salah satu fungsi dari auto increment. Untuk menambahkan auto increment di table pada database di mysql sangat berbeda dengan postgreSQL.

MySQL








Jika menggunakan mysql kita tinggal menambahkan sedikit code auto increment, contoh :

CREATE table contoh ( no_urutan int NOT NULL auto_increment,
Nama varchar(30),
Alamat varchar(30),
Primary key(no_urutan));

untuk memulai urutan angka pertama tambahkan
ALTER TABLE contoh AUTO_INCREMENT = 4; // ex: memulai urutan angka dari 4;

PostgreSQL




Untuk menambahkan auto increment di postgre kita bisa menggunakan type data serial. dengan menggunakan type data serial kita sudah menambahkan auto increment di postgree.

CREATE TABLE contoh(
nomer serial NOT NULL,
nama character varying(30),
alamat character varying(30),
CONSTRAINT contoh_pkey PRIMARY KEY (nomer))
WITH (
OIDS=FALSE
);
ALTER TABLE contoh OWNER TO postgres;

Atau anda juga bisa menggunakan ini.

CREATE SEQUENCE mulai; //membuat SEQUENCE dengan nama “mulai

ALTER SEQUENCE mulai RESTART WITH 100; //memasukkan nilai SEQUENCE 100;

Selanjutnya kita buat tabelnya ;
CREATE TABLE apples (
id INT4 DEFAULT nextval('mulai') NOT NULL,
price NUMERIC
);

nextval('mulai') //memanggil sequence yang telah dibuat tadi “mulai” yang mempunyai value 100, jadi pada id ini akan bertambah secara otomatis mulai dari angka 100.


semoga bermanfaat ...

Monday, January 16, 2012

Kali ini aku menuliskan cara membuat function di PostgreSQL, pada contoh yang akan saya buat ini terdapat saya akan membuat 6 tabel, diantaranya "mahasiswa", "mata_kuliah", "nilai_semester", "nilai_sp", "nilai_upas", "nilai_upta" . langsung saja disimak .

perta kita buat tabel mahasiswa .
CREATE TABLE mahasiswa
(
  nim character varying(10) NOT NULL,
  nama character varying(30),
  prodi character varying(5),
  CONSTRAINT mahasiswa_pkey PRIMARY KEY (nim)
)
WITH (
  OIDS=FALSE);
ALTER TABLE mahasiswa OWNER TO postgres;


buat tabel mata_kuliah 
CREATE TABLE mata_kuliah(
  kdmtk character varying(5) NOT NULL,
  nm_mtk character varying(15),
  sks integer,
  smt integer,
  CONSTRAINT mata_kuliah_pkey PRIMARY KEY (kdmtk)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE mata_kuliah OWNER TO postgres;


membuat tabel nilai_semester
CREATE TABLE nilai_semester(
  nim character varying(10) NOT NULL,
  kdmtk character varying(5),
  smt integer,
  tahun numeric,
  great character varying(1),
  CONSTRAINT nilai_semester_kdmtk_fkey FOREIGN KEY (kdmtk)
      REFERENCES mata_kuliah (kdmtk) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT nilai_semester_nim_fkey FOREIGN KEY (nim)
      REFERENCES mahasiswa (nim) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
  OIDS=FALSE
);
ALTER TABLE nilai_semester OWNER TO postgres;


membuat tabel nilai_sp
CREATE TABLE nilai_sp(
  nim character varying(10) NOT NULL,
  kdmtk character varying(5),
  smt integer,
  tahun numeric,
  great character varying(1),
  CONSTRAINT nilai_sp_kdmtk_fkey FOREIGN KEY (kdmtk)
      REFERENCES mata_kuliah (kdmtk) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT nilai_sp_nim_fkey FOREIGN KEY (nim)
      REFERENCES mahasiswa (nim) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
  OIDS=FALSE
);
ALTER TABLE nilai_sp OWNER TO postgres;


 membuat tabel nilai_upas
CREATE TABLE nilai_upas(
  nim character varying(10) NOT NULL,
  kdmtk character varying(5),
  smt integer,
  tahun numeric,
  great character varying(1),
  CONSTRAINT nilai_upas_kdmtk_fkey FOREIGN KEY (kdmtk)
      REFERENCES mata_kuliah (kdmtk) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT nilai_upas_nim_fkey FOREIGN KEY (nim)
      REFERENCES mahasiswa (nim) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
  OIDS=FALSE
);
ALTER TABLE nilai_upas OWNER TO postgres;


membuat tabel nilai_upta
CREATE TABLE nilai_upta(
  nim character varying(10) NOT NULL,
  kdmtk character varying(5),
  smt integer,
  tahun numeric,
  great character varying(1),
  CONSTRAINT nilai_upta_kdmtk_fkey FOREIGN KEY (kdmtk)
      REFERENCES mata_kuliah (kdmtk) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT nilai_upta_nim_fkey FOREIGN KEY (nim)
      REFERENCES mahasiswa (nim) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
  OIDS=FALSE
);
ALTER TABLE nilai_upta OWNER TO postgres;

Pada Data Definition Language (DDL) yang telah kita buat tadi, sudah mempunyai relasi antar tabel. Contoh pada tabel “nilai_semester” terdapat  query.

CONSTRAINT nilai_semester_kdmtk_fkey FOREIGN KEY (kdmtk)
      REFERENCES mata_kuliah (kdmtk) MATCH SIMPLE

Pada query diatas mempunyai foreign key pada attribute (kdmtk) yang mereferences attribute ( kdmtk) di tabel mata_kuliah. jadi jika kita mengisi data pada tabel “nilai_semester” tetapi pada attribute(kdmtk)  pada tabel “mata_kuliah” belum ada atau belum ditambahkan maka terjadi error / gagal menambahkan data..maka dengan relasi ini user tidak bisa menambahkan data sembarangan. Itu salah satu fungsi daripada relasi antar tabel .

Oke setelah kita selesai membuat tabel, sekarang kita memasukkan data ke tabel yang telah kita buat tadi.

memasukkan data ke tabel nilai_semester.
INSERT INTO nilai_semester(
            nim, kdmtk, smt, tahun, great)
    VALUES (2009420028, 'TI01', 3, 2008, 'B'),
    (2009420028, 'TI02', 3, 2008, 'A'),
    (2009420029, 'TI01', 3, 2008, 'C'),
    (2009420029, 'TI02', 3, 2008, 'D'),
    (2009420030, 'TI01', 3, 2008, 'C'),
    (2009420030, 'TI02', 3, 2008, 'A'),
    (2009420031, 'TI01', 3, 2008, 'D'),
    (2009420031, 'TI02', 3, 2008, 'D');


memasukkan data ke tabel mahasiswa
INSERT INTO mahasiswa(
            nim, nama,prodi)
    VALUES (2009420028, 'okin luberto','TIK'),
    (2009420029, 'mahasiswa1','TIK'),
    (2009420030, ' mahasiswa2','TIK'),
    (2009420031, ' mahasiswa3','TIK'),
    (2009420032, ' mahasiswa4','TIK');


memasukkan data ke tabel mata_kuliah
INSERT INTO mata_kuliah(
            kdmtk,nm_mtk,sks,smt)
    VALUES ('TI01', 'ALGO 1',3,5),
    ('TI02', 'SQBD',3,5);


memasukkan data ke tabel nilai_sp
INSERT INTO nilai_sp(
            nim, kdmtk, smt, tahun, great)
    VALUES (2009420028, 'TI01', 3, 2008, 'C'),
    (2009420028, 'TI02', 3, 2008, 'D'),
    (2009420029, 'TI01', 3, 2008, 'C'),
    (2009420029, 'TI02', 3, 2008, 'C'),
    (2009420030, 'TI01', 3, 2008, 'C'),
    (2009420030, 'TI02', 3, 2008, 'C'),
    (2009420031, 'TI01', 3, 2008, 'C'),
    (2009420031, 'TI02', 3, 2008, 'D');   


memasukkan data ke tabel nilai_upas
INSERT INTO nilai_upas(
            nim, kdmtk, smt, tahun, great)
    VALUES (2009420028, 'TI01', 3, 2008, 'A'),
    (2009420028, 'TI02', 3, 2008, 'A'),
    (2009420029, 'TI01', 3, 2008, 'B'),
    (2009420029, 'TI02', 3, 2008, 'B'),
    (2009420030, 'TI01', 3, 2008, 'C'),
    (2009420030, 'TI02', 3, 2008, 'B'),
    (2009420031, 'TI01', 3, 2008, 'C'),
    (2009420031, 'TI02', 3, 2008, 'C');    


memasukkan data ke tabel nilai_upta
INSERT INTO nilai_upta(
            nim, kdmtk, smt, tahun, great)
    VALUES (2009420028, 'TI01', 3, 2008, 'A'),
    (2009420028, 'TI02', 3, 2008, 'C'),
    (2009420029, 'TI01', 3, 2008, 'B'),
    (2009420029, 'TI02', 3, 2008, 'B'),
    (2009420030, 'TI01', 3, 2008, 'C'),
    (2009420030, 'TI02', 3, 2008, 'B'),
    (2009420031, 'TI01', 3, 2008, 'A'),
    (2009420031, 'TI02', 3, 2008, 'D');        


nah setelah memasukkan data ke tabel, kita cek apakah data yang kita masukkan tadi berhasil tersimpan
SELECT * from mata_kuliah
SELECT * from mahasiswa
SELECT * from nilai_semester
SELECT * from nilai_sp
SELECT * from nilai_upas
SELECT * from nilai_upta


setelah semua okke, baru kita buat functions - nya, pada contoh ini saya akan membuat 2 functions .
1. get_khs untuk menampilkan hasil ujiannya diambil dari ( diambil nilai terbesar dari 4 nilai ujian (nilai_semester, nilai_sp, nilai_upta, nilai_upas ) di kalikan jumlah sks dari mata_kulaih yang diambil.

2. get_ipk untuk menampilkan nilai_ipk ( diambil dari (jumlah hasil semua nilai terbesar dari tiap mata_kulaih) / ( jumlah sks yang diambil )

MEMBUAT FUNCTION get_khs.
create or replace function get_khs(varchar)
returns setof record as
$$
declare
     nim_mhs alias for $1;
     out record;
begin
     for out in execute
     'select nim,(select nama from mahasiswa where nim=ddd.nim) as nama,

kdmtk,(select nm_mtk from mata_kuliah where kdmtk=ddd.kdmtk) as nm_mtk,

smt,sks,tahun,nilai_akhir,

(case when nilai_akhir=''A'' then sks*4

when nilai_akhir=''B'' then sks*3

when nilai_akhir=''C'' then sks*2

when nilai_akhir=''D'' then sks*1
else sks*0 end)::integer as nxk from(

select nim,kdmtk,smt,(select sks from mata_kuliah where kdmtk=dd.kdmtk) as sks,tahun,nilai_akhir from (
select nim,kdmtk,smt,tahun,min(great) as nilai_akhir from (
select * from nilai_semester union all

select * from nilai_upta union all

select * from nilai_upas union all 

select * from nilai_sp
) as d group by nim,kdmtk,smt,tahun having nim='''||nim_mhs||''' order by nim
) as dd
) as ddd'
     loop
           return next out;
     end loop;
     return;
end
$$ language 'plpgsql';

tau gg maksud dari query pada function get_khs diatas okelah akan saya jelaskan, agar mudah dipahami saya akan menjelaskan mulai dari query yang paling bawah, atau lapisan yang paling tengah. karena, jika saya menjelaskan mulai dari yang paling atas mungkin akan susah untuk dimengeti ( kalau menurut saya hehehe ).
nah pada query diatas telah saya beri warna yang berbeda dan berlapis2, untuk mempermudah menjelaskannya. untuk memulai membuat function semua hampir sama caranya create or replace function [nama functions](varchar) dan seterusnya seperti pada query diatas.

berikut penjelasan pada lapisan query diatas .
lapisan merah --> terdapat select * [nama tabel] karena pada ke 4 tabel nilai yang saya buat attributnya sama jadi saya bisa menampilkan semua data pada ke 4 tabel secara bersamaan menggunakan union all 

lapisan kuning --> meminta menampilkan attribut nim,kdmtk,smt,tahun,min(great) as nilai_akhir, "min" mengambil nilai terbaik dari ke 4 tabel hasil ujian ."as nilai_akhir" dan diberi nama "nilai_akhir" ."having nim='''||nim_mhs||''' " akan menampilkan data meurut nim yang akan dimasukkan ke variabel "nim_mhs" ,"order by nim" hasil output diurutkan menurut nim .

lapisan hijau --> hampir sama dengan lapisan kuning, "(select sks from mata_kuliah where kdmtk=dd.kdmtk) as sks" mengambil sks dari tabel mata_kuliah dimana kdmtk=dd.kdmtk ( kdmtk hasil pemanggilan sebelumnya ), dd hanya sebagai variabel bayangan yang nantinya query harus diakhiri dengan ") as dd", dan diberi nama "sks"

lapisan biru --> terdapat case when "case when nilai_akhir=''A'' then sks*4", mengambil nilai akhir, jika nilai_akhir sama dengan 'A' maka (keluarannya) sks dikalikan 4, jika 'B' dikalikan 3, jika 'C' dikalikan 2, jika 'D' dikalikan 1, jika else lainnya dikalikan 0, dan hasil (keluarannya) tadi dimasukkan ke attribut "nxk".

 
MEMBUAT FUNCTION get_ipk.
create or replace function get_ipk(varchar)
returns setof record as
$$
declare
     nim_mhs alias for $1;
     out record;
begin
     for out in execute
     'select nim,nama,(sum(nxk)/sum(sks))::double precision as ipk from (
     select nim,(select nama from mahasiswa where nim=ddd.nim) as nama,

kdmtk,(select nm_mtk from mata_kuliah where kdmtk=ddd.kdmtk) as nm_mtk,

smt,sks,tahun,nilai_akhir,

(case when nilai_akhir=''A'' then smt*4

when nilai_akhir=''B'' then sks*3

when nilai_akhir=''C'' then sks*2

when nilai_akhir=''D'' then sks*1

else sks*0 end)::integer as nxk from(
select nim,kdmtk,smt,(select sks from mata_kuliah where kdmtk=dd.kdmtk) as sks,tahun,nilai_akhir from (
select nim,kdmtk,smt,tahun,min(great) as nilai_akhir from (
select * from nilai_semester union all

select * from nilai_upta union all

select * from nilai_upas union all 

select * from nilai_sp
) as d group by nim,kdmtk,smt,tahun having nim='''||nim_mhs||''' order by nim
) as dd
) as ddd
) as dddd group by nim,nama'
loop
           return next out;
     end loop;
     return;
end
$$ language 'plpgsql';

untuk menjelaskan query ini hampir sama dengan query diatas, tetapi saya hanya menambahkan sedikit penjelasan pada kapisan ungu "(sum(nxk)/sum(sks))::double precision as ipk" query ini untuk menghitung IPK ,jumlah "nxk" dibagi jumlah "sks" dan hasilnya nanti dimasukkan di variabel ipk yang ber-tipe data double .

Naaaaah , setelah buat functionnya kita penggil dengan mengetik query seperti ini:

panggil function get_khs yang nimnya= 2009420028
select * from get_khs('2009420028') as (
nim varchar,nama varchar,kdmtk varchar,nm_mtk varchar,smt int,sks int,tahun numeric,nilai_akhir text,nxk int)


 panggil function get_ipk yang nimnya= 2009420028
 select * from get_ipk('2009420028') as (nim varchar,nama varchar,ipk double precision)




Wednesday, November 16, 2011

     MySQl adalah salah satu perangkat lunak system management basisdata terbesar di dunia, selain memiliki kemampuan multithread perangkat lunak ini dapat menampung data dengan kapasitas yang besar. Pengaksesan data pada perangkat lunak dapat dilakukan dengan beberapa cara ,cara pertama  lewat commandline ( under DOS ) dengan cara user mengetikkan perintah di bash yang sudah disediakan. Cara kedua menggunakan beberapa tools untuk mempermudah pengaksesannya , tools yang biasa digunakan adalah MySQL-Font, PhpMyAdmin, SQLYog dan masih banyak tools lainnya.

     Pada kesempatan kali ini saya akan membahas cara Pengaksesan MySQL lewat Command Line. Cara ini lebih sulit daripada menggunakan tools yang sudah menggunakan user interface, karena kita harus tahu tiap code / perintah yang kita masukkan untuk mengakses data pada perangkat lunak ini. Tetapi cara ini sangat dibutuhkan untuk para programmer yang programnya harus terkoneksi ke database ( MySQL )

Langsung saja kita bahas materi yang pertama. Pertama – tama kita masuk ke MySQL CommandLine Client yang biasanya telah disediakan setelah kita menginstall database MySQL, setelah itu biasanya user diminta memasukkan password yang telah dibuat sebelumnya pada waktu penginstalan .
Untuk melihat perintah – perintah yang disediakan pada perangkat lunak ini kita dapat mengetikkan perintah "Help" , maka program akan menampilkan menu help.


Untuk melihat databases yang sudah dibuwat pada MySQL ketikkan perintah "show databases " terlihat di gambar beberapa databases yang sudah saya buwat. 


Sebelum memproses databases , kita harus menseleksi databases mana yang akan di proses, ketikkan perintah "use (nama database) ". Pertama tama kita buwat database dulu sebagai contoh.  Ketikkan perintah " create database Example " ( tanpa tanda petik ) . Maksud perintah tersebut adalah membuat database dengan nama Example. Kemudian seleksi database dengan mengetikkan " use Example " maksud perintah tersebut adalah memilih database Example yang akan di proses.


Jika perintah berhasil dieksekusi maka akan tampil pesan "Database changed". 

Membuat table 

Untuk membuat table ketikkan perintah dibawah ini.


Maksud perintah pada gambar adalah membuat tabel/entity dengan nama “coba” mempunyai attribut :
           1. nomer dengan type data "int" dan maksimum karakter "10",
           2. nama dengan type data "varchar" dan meksimum karakter "40",
           3. alamat dengan type data "varchar" dan maksimum katakter "50";

setelah selesai ,untuk melihat tabel yang telah dibuwat katikkan perintah "show tables" yang artinya menampilkan semua tabel pada database tersebut.


Insert data
Dalam pengimputan data lewat command line ,user harus mengetahui sifat - sifat dari type data . Jika attribut yang menggunakan type data "Varchar" data yang diinputkan harus diapit simbol single quote, jika attribut menggunakan type data integer , maka data tidak menggunakan single quote.

Perhatikan pada gambar diatas "insert into coba" maksud perintah tersebut adalah memasukkan data ke tabel coba yang isinya "10, okin luberto, ponorogo"( harus sama dengan type data di tiap attribut pada table coba ),  pada gambar terlihat bahwa pada inputan data "10" tidak menggunakan single quote karena type datanya integer, sedangkan pada inputan data " ponorogo " diapit dengan single quote karena bertype data varchar.

     Selain cara diatas, ada cara lain yang bisa digunakan dengan memasukkan nama attribut yang akan di isi sebelum perintah "values", cara ini sering digunakan untuk menghindari terjadinya error pada saat pemasukkan data, atau attribut yang menggunakan "auto_increment" . ( tentang auto increment akan saya bahas dilain kesempatan ).

Perintahnya lihat pada gambar dibawah.


Lihat pada perintah pada gambar, sebelum perintah values user bisa menseleksi tabel field apa saja yang akan di inputkan " (nomer,nama,alamat) " maksud pada perintah tersebut adalah user akan menginputkan data pada attribut nomer,nama, dan alamat  .field/attribut yang tidak disebutkan pada perintah tidak akan inputkan data, tetapi jika data tersebut mempunyai sifat "not null " (data tidak boleh kosong) maka perintah diatas akan mengakibatkan error.

Delete

Iihat perintah pada gambar.

"Delete from coba where nomer=10" maksud pada perintah tersebut adalah menghapus dari tabel coba dengan ciri – ciri attrib yang mempunyai nomer "10". selain 10 tidak akan dihapus. Atau jika ingin menghapus semua tabel ketikkan perintah “ delete from coba “ maka semua data pada table coba akan dihapus.

Alter

Fungsi penggunaan alter pada tabel salah satunya adalah merubah attribut pada tabel, bisa menambah, menghapus, dan juga mengganti (update ) attribut pada table. Pada gambar dbawah ini akan di contohkan perintah menambahkan field pada table yang telah dibuwat sebelumnya.


"alter table coba add website varchar(40) after alamat " yang artinya menambahkan attribut / field pada table coba, dengan field website, bertype data varchar, karakter maksimal 40 karakter, yang letaknya setelah (after) field alamat. Hasilnya dapat dilihat dengan mengetikkan perintah " select * from coba"
Isi ( record ) pada table akan berisi null karena tidak ada data yang diimputkan. User bisa menambahkan data pada field tersebut dengan perintah Update .

Update

Lihat pada gambar dibawah ini.


"update coba set website h ttp://catatan-luberto.blogspot.com "  pada perintah diatas maksudnya adalah mengganti (update) field yang bernama website dengan value "h ttp://catatan-luberto.blogspot.com" maka semua record (isi) pada field website akan berganti dengan "h ttp://catatan-luberto.blogspot.com" , jika ingin mengupdate record tertentu atau contohnya record yang pertama, user bisa menambahkan perintah "where nomer=11".

"update coba set website h ttp://catatan-luberto.blogspot.com where nomer=11". Maka yang berganti hanya record yang pertama saja.

Itu tadi beberapa perintah yang masih dasar untuk mengakses MySQL.Insert, update, delete, dan alter. Untuk query yang lain akan saya postingkan pada artikel selanjutnya ...

semoga bermanfaat ..!

Propellerads

Popular Posts