Saturday, October 23, 2010

Mengenal perintah SQL grant, Operasi DML, index, inner join


Tugas Pertemuan 4 Praktikum DBD

Pertemuan ke 4 praktikum dbd kemarin materi diisi dari modul dengan topik indeks, grant, commit, dan yang dijelaskan pada pertemuan ini adalah cara bikin indeks, grant melalui front-ent oracle-xe, dan fungsi commit pada SQL*PLUS.

Sedikit review, n overview tentang konsep topik di atas, dalam hal ini ane juga masih belajar, dan kemarin sempet membaca dari berbagi referensi.. :)
Berdasarkan referensi yang ane dapet, ke 3 topik di atas masing2 memiliki pembahasan yang berbeda dalam belajar oracle. Untuk konsep indeks, objek indeks cukup kompleks dan teknik atau cara pembuatan indeks di oracle bermacam2. Seperti unique index, function based index, bitmap index, dan masih banyak lagi. Indeks dibuat untuk mengalokasikan informasi secara lebih cepat dan efisien, sehingga mempermudah dalam proses pencarian data.

Grant, termasuk dalam Administrasi role dan Object privilage pada DBMS oracle. Dimana dengan feature ini kita bisa memberikan hak akses per objek, misalnya tabel, view, package, dsb, milik seorang user, ke user lainnya.

Sedangkan Commit merupakan salah satu perintah pada operasi transaksi DML (Data Manipulation Language).
Ada dua perintah pokok dalam operasi transaksi yaitu COMMIT dan ROLLBACK. Secara sederhana, perintah COMMIT digunakan untuk memberitahu kepada oracle bahwa semua transaksi yang telah dilakukan akan disimpan pada media database file, sehingga setelah dengan COMMIT, perintah2 manipulasi data melalui SQL command line, yang awalnya hanya tersimpan dalam memori oracle, akan dieksekusi dan disimpan ke dalam database file. Sedangkan ROLLBACK adalah perintah untuk membatalkan semua transaksi yang sudah dilakukan sampai waktu commit terakhir. :D
hmm..,, kalo semua tentang Administrasi role dan Object privilage, Semua Oerasi DML, DDL, Berbagai teknik pengindeks'an, itu aja kalo dbahas mua di praktikum, 1 semester kaga cukup :D, makanya dalam hal ini, praktikan harus kreatif meningkatkan skill untuk menjadi seorang dba... :D (nyadar & ngarep MODE ON)

O'ya, berkaitan dengan tugas bikin inner join, "apa seh inner join?" inner join kalo ga salah merupakan perintah yang digunakan untuk menggabungan 2 tabel ato lebih.

Langsung praktek,
##dimulai dari grants, sedikit operasi DML##
Kalo di modul kemarin membuat grants melalui front-end, di sini ane melalui SQL*PLUS
kmarin ane udah buat schema dbmobil di sini sekarang ane mo kasih hak akses ke user irfandz

=============================================
=--------------------------------- SQL*PLUS COMMANDS ----------------------------------------=
=============================================


conn dbmobil/dbmobil

grant select on dbmobil.mobil to irfandz;

grant select on dbmobil.mobil_inv to irfandz;

conn irfandz/passwordku

create table mobil as select* from dbmobil.mobil;

create table mobil_inv as select* from dbmobil.mobil_inv;


Dari pada ane lama musti ngetik lagi,, langsung ane tampilin SSnya aja ya,,

Masuk dulu ke schema dbmobil
conn dbmobil

Kasih hak akses select untuk tabel mobil, mobil_inv kepada user irfandz
grant

trz login sebagai user irfandz, n buat tabel mobil, mobil_inv mengambil dari schema dbmobil
conn_irfandz&create

Nah, untuk ngecheck hasil pembuatan tabel seperti ini
describe

Kalo udah skarang buat constraint untuk tabel mobil, mobil_inv
addConstraint

Abiz tuw ne ane gunakan perintah DML (Data Manipulation Language)
Oke, kita leat dulu data tabel mobil yang sekarang
datamobil

untuk menampilkan tabel mobil beserta tipe datanya,

describe mobil;


disini ane pengen nampilin no mobil (bukan no polisi, no_polisi ada di mobil_inv), nama mobil, th keluar, dan biaya sewa.

select no_mobil, nm_mobil, th_keluar, biy_sewa from mobil;

Truz ane pengen ngrubah biaya sewa untuk New Corolla Altis menjadi 550000,
updateCommit
Untuk mengeksekusi transaksi, menggunakan perintah COMMIT, kalo di mysql menggunakan flush privileges;.

##Create INDEX##

Dalam hal ini ane membuat index melalui SQL*PLUS, untuk jenis mobil dan no polisi

create index jns_mobil_idx on mobil (jns_mobil);

create index no_polisi_idx on mobil_inv (no_polisi);

Untuk menampilkan index dari mobil_inv, bisa menggunakan query


SELECT INDEX_NAME, INDEX_TYPE, UNIQUENESS, STATUS, SECONDARY FROM USER_INDEXES WHERE TABLE_NAME = 'MOBIL_INV';

huruf query harus kapital, coz kalo ga kapital ga mo kluar tuh "no row selected"
queryIndex


##Inner Join##

Ane menggunakan INNER JOIN untuk menampilkan gabungan tabel mobil dan mobil_inv

SELECT * FROM mobil INNER JOIN mobil_inv ON mobil.no_mobil = mobil_inv.no_mobil;

innerJoin

Pada gambar di atas, ane menggunakan front-end oracle, coz kalo di SQL*PLUS ga bisa muat mua column2na, tampilannya ancur deh..
itu masih gabungan 2 tabel, n skarang ane pengen nampilkan th_keluar, nm_mobil, biy_sewa, jns_mobil, no_polisi

SELECT mobil.th_keluar, mobil.nm_mobil, mobil.biy_sewa, mobil.jns_mobil, mobil_inv.no_polisi FROM mobil INNER JOIN mobil_inv ON mobil.no_mobil = mobil_inv.no_mobil
ORDER BY mobil.th_keluar;

InnerJoin2

Lebih selektif kan daripada perintah inner join yang pertama tadi.. :D, ORDER BY mobil.th_keluar digunakan untuk mensortir data berdasarkan th_keluar. Sebenarnya masih banyak perintah2 tentang SQL JOIN, kalo ane bahas mua,, tulisan ini ga kelar2.. :D

Referensi
Budi Susanto. Administrasi dan Pemrograman Database Oracle 10G XE. 2007. Jakarta: Elex Media Komputindo
http://di2n.blogsome.com/2010/01/25/memahami-sql-join-jilid-2/
http://www.w3schools.com/SQl/sql_join_inner.asp

Segitu dulu dah tulisan kale ne..
Semoga bermanfaaat...

© 2010 by Irfandz Lagi Enjoy

0 comments:

Post a Comment