Modul #2
mampu menggunakan perintah CREATE, dan ALTER untuk pemeliharaan struktur fisik tabel data
mampu menggunakan perintah INSERT, UPDATE, dan DELETE untuk pemeliharaan data
mampu memahami perintah COMMIT, ROLLBACK dan SAVEPOINT untuk penentuan transaksi data
mampu menggunakan perintah SELECT ... FROM ... WHERE dan aggregation function.
Persiapan
Untuk dapat mengerjakan modul ini, ada satu hal yang perlu dilakukan terlebih dahulu, yaitu :
Anda harus memiliki user account sendiri untuk melakukan percobaan ini. Jika belum memiliki, silahkan
jalankan command prompt DOS, kemudian ketikkan perintah berikut :
prompt> set ORACLE_SID=XE
prompt> sqlplus /nolog
SQL> conn / as sysdba
SQL> create user namauseranda identified by passwordanda quota 10M on users;
SQL> alter user namauseranda quota 10M on system
SQL> grant connect, create any table, create sequence to namauseranda;
SQL> quit
Perintah DDL
Perintah DDL adalah perintah yang dipergunakan untuk pembuatan dan pemeliharaan tabel fisik serta definisi
relasi dan constraint lainnya. Oleh karena kita menggunakan OracleXE sebagai sistem basis data relational,
maka perintah DDL yang akan diujicoba mengikuti karakteristik dari DDL yang disediakan oleh Oracle. Berikut
adalah bentuk umum dari perintah CREATE TABLE :
CREATE TABLE namatable (
nama_field tipedata [constraint],
...
);
Saat ini kita akan membuat dua tabel yang saling berelasi seperti yang ditunjukkan dengan diagram relasi pada
gambar 2.1.
Anggota
Kunjungan
email (PK)
password
nama
telepon
ID
(PK)
Anggota$email (FK)
waktu_masuk
waktu_keluar
Gambar 2.1 Diagram Relasi Member-Visit
Pertama-tama kita akan membuat tabel Anggota terlebih dahulu, karena tabel ini merupakan tabel yang memiliki
kunci primer yang akan digunakan oleh tabel Kunjungan untuk relasinya. Untuk pembuatan tabel Anggota dapat
dilakukan dari prompt SQL*Plus berikut :
prompt> sqlplus useranda/password
SQL> create table Anggota (
email char(50) constraint anggota_pk primary key,
password char(50) not null,
nama varchar2(50) not null,
telepon char(20)
);
Untuk melihat hasil dari pekerjaan Anda, silahkan ketikkan perintah berikut dari prompt SQL:
SQL> select table_name from user_tables;
SQL> desc anggota;
Berikutnya kita akan membuat tabel Kunjungan yang berhubungan dengan tabel Anggota :
SQL> create table Kunjungan (
Cobalah Anda periksa pekerjaan Anda seperti yang sudah dilakukan terhadap tabel Anggota!
Untuk mengisi kolom ID dari tabel Kunjungan, kita akan menyiapkan sebuah objek sequence yang nantinya
dapat kita panggil setiap saat melakukan penambahan data. Dengan memanggil nilai dari objek sequence, maka
nilai yang akan tersimpan pada kolom ID akan selalu unique karena nilai yang dihasilkan dari objek sequence
akan selalu bertambah untuk setiap kali pemanggilan. Untuk membuat objek sequence, kita dapat memberikan
perintah berikut :
SQL> create sequence kunjungan_id_seq;
anda dapat memeriksa objek sequence Anda dengan memberikan perintah berikut :
SQL> select * from user_objects where object_type='SEQUENCE';
atau
SQL> select * from user_sequences;
Bagaimana caranya Anda dapat mengetahui semua object constraint Anda dari dynamic
view USER_CONSTRAINTS? Constraint apa saja yang dibuatkan untuk Anda terkait
dengan tabel yang sudah dibuat?
Dari tabel Anggota yang sudah kita definisikan, kita akan menambahkan dua field baru yang akan menyimpan
jenis kelamin dan tanggal daftar. Untuk melakukan hal ini, Anda dapat memberikan perintah berikut dari prompt
SQL :
SQL> alter table anggota add seks char(1) check (seks in ('L','P')) not null;
SQL> alter table anggota add tgl_daftar date default sysdate not null;
Lakukan penambahan kolom pada tabel Kunjungan untuk field berikut :
* Keterangan varchar2(100)
* Jns_kunjungan char(1) dengan nilai valid adalah 'R', 'I', 'K'
Perintah DML
Setelah struktur tabel telah terbentuk, selanjutnya Anda dapat menggunakan perintah DML (Data Manipulation
Language) untuk memanipulasi data yang terdapat pada sebuah tabel. Untuk menambahkan data baru ke sebuah
tabel, Anda dapat memberikan perintah INSERT dengan bentuk umum sebagai berikut :
INSERT INTO Anggota VALUES (nilaiemail, nilaipassword, nilainama, nilaitelp, nilaiseks, nilaitgldaftar);
atau
INSERT INTO Anggota [(field_yang_akan_diisi)] VALUES (nilai_nilainya);
contoh:
INSERT INTO Anggota VALUES ('dayj@yahoo.com', 'rocket', 'Joni Hari', '592-0646',
'L', DEFAULT);
INSERT INTO Anggota (email, password,
'bullet', 'Tomy Lusiana', 'P');
nama,
seks)
VALUES
('luce@yahoo.com',
Selanjutnya, silahkan Anda coba menambahkan 2 data berikut dengan perintah INSERT :
Email
Password
Nama
Telepon
Seks
TglDaftar
mcgann@gmail.com
arrow
Sony Galang
NULL
10-MAR-07
email_anda
passw_anda
nama_anda
telp_anda
seks_anda
DEFAULT
Untuk menambahkan data baru ke tabel Kunjungan, kita dapat melakukan dengan memberikan perintah berikut :
INSERT INTO Kunjungan VALUES (kunjungan_id_seq.nextval, 'dayj@yahoo.com',
to_date('25-JUN-06 14:00:00', 'DD-MON-YY HH24:MI:SS'),
to_date('25-JUN-06 17:30:00', 'DD-MON-YY HH24:MI:SS'),
NULL, 'R');
Lakukan hal yang sama terhadap tabel Kunjungan dengan data-data sebagai berikut :
Anggota$email
wkt_masuk
wkt_keluar
jns_kunjungan
luce@yahoo.com
25/6/2006 06:00:00 PM
25/6/2006 08:00:00 PM
dayj@yahoo.com
26/6/2006 10:00:00 AM
26/6/2006 11:30:00 AM
luce@yahoo.com
27/6/2006 09:00:00 AM
27/6/2006 10:00:00 AM
mcgann@gmail.com
27/6/2006 04:00:00 PM
27/6/2006 06:00:00 PM
Untuk Latihan:
- ubahlah data telepon untuk anggota yang memiliki email mcgann@gmail.com dengan '0274-512322'
- ubahlah data tanggal daftar untuk anggota bernama Anda sendiri menjadi tanggal 1 MARET 2006
- tambahkan data kunjungan untuk anggota bernama Anda sendiri dimana untuk data wkt_masuk
menggunakan nilai default, wkt_keluar kosong dan jenis kunjungan adalah K.
Perintah Transaksional
Pada database Oracle, Anda dapat melakukan kontrol terhadap transaksi yang Anda lakukan. Yang dimaksud
transaksi di sini adalah semua perintah DML yang Anda berikan ke database Oracle. Perlu diketahui bahwa
perintah transaksional tidak berlaku untuk semua perintah DDL, artinya setelah Anda melakukan operasi
CREATE TABLE misalnya, Anda tidak dapat melakukan pembatalan transaksi. Untuk membatalkan CREATE
TABLE anda harus menggunakan perintah DDL lainnya, yaitu DROP TABLE.
Ada dua perintah pokok pada transaksional, 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. Sedangkan untuk ROLLBACK memberitahukan Oracle untuk membatalkan
semua transaksi yang sudah dilakukan sampai waktu commit terakhir. Untuk membantu Anda memahami hal
ini, silahkan lakukan percobaan berikut ini :
SQL> insert into Anggota values ('owdp@ukdw.ac.id', 'owdp', 'OWDP UKDW', NULL, 'L',
DEFAULT);
SQL> commit;
SQL> select * from anggota;
SQL> delete from anggota;
SQL> select * from anggota;
SQL> rollback;
SQL> select * from anggota;
Pada lingkungan SQL*Plus, Anda dapat juga menggunakan perintah SAVEPOINT yang bermanfaat untuk
meberi tanda pada beberapa titik transaksi yang Anda anggap perlu untuk diberi catatan. Dengan titik-titik
catatan transaksi yang sudah dibuat, Anda dapat melakukan ROLLBACK pada satu titik transaksi tertentu.
Silahkan lakukan percobaan berikut :
SQL> insert into Anggota values ('info@ukdw.ac.id', 'info', 'Bagian Informasi UKDW', '0274-563929',
'L', DEFAULT);
SQL> savepoint tambah_info;
SQL> insert into Anggota values ('tv@ukdw.ac.id', 'tv', 'TV Kampus UKDW', '0274-563929', 'P',
DEFAULT);
SQL> savepoint tambah_tv;
SQL> select * from anggota;
SQL> delete from anggota;
SQL> savepoint hapus_semua;
SQL> update anggota set seks = 'L';
SQL> select * from anggota;
cobalah Anda berikan perintah berikut :
For Database System Practice at DWCU Only
Query Data
Pada bagian ini kita akan lebih mendalami tentang perintah untuk pengambilan data dari tabel-tabel yang sudah
kita definisikan. Pertama dan yang termudah adalah untuk mengambil semua data :
SQL> select * from anggota;
SQL> select * from Kunjungan;
untuk melakukan ini, Anda dapat menggunakan SQL Command yang tersedia dari lingkungan Front End Oracle
XE.
Jika dari perintah dasar SELECT tersebut, Anda ingin melakukan penyaringan data berdasarkan suatu field dan
data tertentu, Anda dapat meletakkan definisi kondisi penyaringan tersebut pada klausa WHERE setelah klausa
FROM. Sebagai contoh :
Cobalah untuk melakukan query dengan nilai 'joni%'. Bagaimana hasilnya? Silahkan
diskusikan dengan asisten dan teman Anda!
tampilkan semua anggota yang memiliki email dari domain yahoo.com dan berjenis kelamin P.
SQL> select * from anggota where email like '%yahoo.com%' AND seks = 'P';
atau
SQL> select * from anggota where trim(email) like '%yahoo.com' AND seks = 'P';
Catatan: fungsi trim() di atas akan membuang semua spasi di awal dan di akhir dari email. Hal ini tidak perlu
dilakukan untuk tipe data varchar.
Jika masih ada waktu, silahkan mencoba latihan yang diberikan oleh asisten Anda!