Tampilkan postingan dengan label Basis Data. Tampilkan semua postingan

Melacak Perubahan Data

By: Cha-Cha D AceWell

Sebagai DBA, tugas kita adalah mengamankan atau menjaga data dari kerusakan sehingga database bisa memberikan data yang valid. Dalam operasional bisa saja user melakukan kesalahan dalam melakukan update data sehingga data yang disajikan menjadi salah. Jika perubahan belum dibuat permanen (commit) perubahan tersebut masih bisa dibatalkan (rollback). Tentunya akan menjadi masalah besar jika perubahan baru disadari setelah beberapa jam, hari atau bulan. User yang mengupdate juga sudah lupa kapan melakukan kesalahan update. Tentunya ini akan menambah pusing DBA karena untuk mencari kapan persisnya kesalahan update itu terjadi.
Untuk Oracle 10g, DBA gak perlu pusing lagi, karena Oracle 10g menyediakan fitur Flashback Query, Flashback Version Query dan Flashback Transaction Query untuk melakukan pelacakan perubahan data yang terjadi.

  • Flashback Query
Fitur ini digunakan untuk mengetahui data (nilai suatu kolom) pada suatu waktu tertentu.
  • Flashbak Version Query
Fitur ini untuk mengetahui perubahan data yang terjadi antara waktu t1 sampai waktu t2
  • Flashback Transaction Query
untuk mengetahui semua perubahan yang disebabkan oleh satu transaction ID
Berikut ini adalah demo bagaimana cara melacak perubahan data dengan Flashback Query dan Flashback Transaction Query.
Login ke database sebagai user SCOTT
CONNECT SCOTT/TIGER;
create table peserta
(ID    NUMBER(4),
 NAMA  CHAR(15),
 NILAI NUMBER(4)) TABLESPACE USERS;
INSERT INTO PESERTA VALUES(1,'BUDI',60);
INSERT INTO PESERTA VALUES(2,'DINA',75);
COMMIT;
– Tunggu sekitar 1 menit
UPDATE PESERTA SET NILAI=65 WHERE ID=1;
INSERT INTO PESERTA VALUES(3,'MAWAR',68);
COMMIT;
– Tunggu sekitar 1 menit
UPDATE PESERTA SET NILAI=70 WHERE ID=1;
INSERT INTO PESERTA VALUES(4,'MAWARDI',80);
COMMIT;
– Lihat data di tabel PESERTA
SQL> SELECT * FROM PESERTA;

        ID NAMA                 NILAI
---------- --------------- ----------
         1 BUDI                    70
         2 DINA                    75
         3 MAWAR                   68
         4 MAWARDI                 80
– Tunggu sekitar 1 menit
– User melakukan kesalahan UPDATE.
UPDATE PESERTA SET NILAI=90;
COMMIT;
– sehingga data pada tabel PESERTA menjadi :
SQL> SELECT * FROM PESERTA;
ID NAMA                 NILAI
---------- --------------- ----------
         1 BUDI                    90
         2 DINA                    90
         3 MAWAR                   90
         4 MAWARDI                 90
– FLASHBACK VERSION QUERY berdasarkan WAKTU
COL AWAL FORMAT A20
COL AWAL FORMAT A20
COL NAMA FORMAT A5
SET LINESIZE 120
SELECT ID,NAMA,NILAI,
       VERSIONS_STARTSCN SCA_AWAL,
       VERSIONS_ENDSCN SCN_AKHIR,
       TO_CHAR(VERSIONS_STARTTIME,'DD-MM-YY:HH24:MI:SS') AWAL,
       TO_CHAR(VERSIONS_ENDTIME,'DD-MM-YY:HH24:MI:SS') AKHIR
FROM PESERTA
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE ID=1;
ID NAMA      NILAI AWAL                 AKHIR
----- ----- --------- ----------------- -----------------
    1 BUDI         90 06-03-09:09:25:19
    1 BUDI         70 06-03-09:09:23:37 06-03-09:09:25:19
    1 BUDI         65 06-03-09:09:20:55 06-03-09:09:23:37
    1 BUDI         60                   06-03-09:09:20:55
– FLASHBACK VERSION QUERY berdasarkan SCN
SELECT ID,NAMA,NILAI,
       VERSIONS_STARTSCN SCA_AWAL,
       VERSIONS_ENDSCN SCN_AKHIR
FROM PESERTA
VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE
WHERE ID=1;
ID NAMA      NILAI   SCA_AWAL  SCN_AKHIR
----- ----- --------- ---------- ----------
    1 BUDI         90    1380320
    1 BUDI         70    1380102    1380320
    1 BUDI         65    1379304    1380102
    1 BUDI         60               1379304
– FLASHBACK QUERY
SELECT * FROM PESERTA
AS OF TIMESTAMP
TO_TIMESTAMP('06-MAR-2009:09:24:00','DD-MON-YYYY:HH24:MI:SS');
ID NAMA                 NILAI
------ --------------- ----------
     1 BUDI                    70
     2 DINA                    75
     3 MAWAR                   68
     4 MAWARDI                 80
SELECT * FROM PESERTA
AS OF SCN 1380102;
ID NAMA                 NILAI
------ --------------- ----------
     1 BUDI                    70
     2 DINA                    75
     3 MAWAR                   68
     4 MAWARDI                 80
SQL> SELECT * FROM PESERTA
  2  AS OF TIMESTAMP TO_TIMESTAMP('04-DEC-2008','DD-MON-YYYY');
ID NAMA            NILAI
---------- ---------- ----------
         1 BUDI               80
– FLASHBACK TABLE
SQL> ALTER TABLE PESERTA ENABLE ROW MOVEMENT;
Table altered.
– KEMBALIKAN TABEL KE KONDISI JAM ‘06-MAR-2009:09:24:00′
– ATAU SCN 1380102
FLASHBACK TABLE PESERTA TO TIMESTAMP
TO_TIMESTAMP('06-MAR-2009:09:24:00','DD-MON-YYYY:HH24:MI:SS');
Flashback complete.
– ATAU BERDASARKAN SCN
– FLASHBACK TABLE PESERTA TO SCN 1380102
SELECT * FROM PESERTA;
ID NAMA                 NILAI
------ --------------- ----------
     1 BUDI                    70
     2 DINA                    75
     3 MAWAR                   68
     4 MAWARDI                 80
Jika Anda ingin mengembalikan semua kondisi database ke waktu sebelumnya gunakan Flashback Database.
Selamat Mencoba

Flashback Database

By: Cha-Cha D AceWell

Flashback database merupakan fitur baru dalam Oracle 10g, dengan flashback database kita bisa mengembalikan database ke kondisi tertentu berdasarkan waktu atau SCN. Flashback database digunakan untuk melakukan recovery database karena user melakukan truncate large table, drop user atau terjadi kesalahan transaksi yang sangat kompleks sehingga terlalu sulit untuk telusuri.
Walaupun flashback database lebih mudah dan lebih simple dibandingkan dengan INCOMPLETE RECOVERY namun ada keterbatasan terhadap flashback database. Flashback database tidak bisa dilakukan dalam kondisi seperti:

  • Kerusakan media disk, kita tetap harus melakukan restore file database dari media backup dan melakukan recovery baik complete ataupun incomplete
  • Datafile sudah berubah ukuran menjadi lebih kecil atau biasa disebut shrinking datafiles (defrag datafile)
  • Control baru direstore atau recreate
  • Drop tablespace dan recovery dengan OPEN RESETLOGS
  • Tidak bisa melakukan flashback database ke SCN yang lebih kecil dari SCN yang ada di flashback log
KONFIGURASI FLASHBACK
Secara default database yang kita buat belum bisa untuk melakukan flashback database. Kita harus melakukan beberapa konfigurasi dulu
1. SETTING ARCHIVELOG MODE DATABASE
Flashback database mensyaratkan database harus ARCHIVELOG. Untuk mengetahui apakah database sudah archivelog atau belum, cek dengan perintah berikut:
SQL> ARCHIVE LOG LIST;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3
Info diatas menunjukkan database sudah ARCHIVELOG. Jika belum lakukan konfigurasi dengan cara seperti berikut :
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT ;
SQL> ALTER DATABASE ARCHIVELOG ;
SQL> ALTER DATABASE OPEN ;
2. SETTING UKURAN FLASH RECOVERY AREA
SQL> SHOW PARAMETER db_recovery_file_dest_size;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
db_recovery_file_dest_size           big integer 2G
Ukuran flash recovery area adalah 2 GB, jika ukuran dirasa kurang, flash recovery area bisa dibesarkan dengan perintah :
SQL> ALTER SYSTEM SET db_recovery_file_dest_size=3G;
System altered.
3. SETTING RETENTION FLASHBACK
Misalkan maksimum bisa flashbak sampai 2 hari ke belakang.
SQL> ALTER SYSTEM SET
2  DB_FLASHBACK_RETENTION_TARGET=2880
3  SCOPE=BOTH; System altered.

4. AKTIFKAN FITUR FLASHBACK DATABASE

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  272629760 bytes
Fixed Size                  1248504 bytes
Variable Size              88081160 bytes
Database Buffers          180355072 bytes
Redo Buffers                2945024 bytes
Database mounted.     

SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
MONITORING FLASHBACK
Flashback database bisa dimonitor melalui dynamic view V$DATABASE, V$FLASHBACK_DATABASE_LOG dan V$FLASHBACK_DATABASE STATS.
View V$DATABASE menampilkan informasi apakah Flashback Database enable atau disable, jika enable bernilai YES dan disable bernilai NO.
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
View V$FLASHBACK_DATABASE_LOG view baru di Oracle 10g dan dibuat untuk mendukung fasilitas Flashback Database. Informasi dari view ini adalah total space yang diperlukan di recovery area untuk mendukung aktifitas flashback database. View ini juga menampilkan ukuran flashback data yaitu pada kolom FLASHBACK_SIZE. Kolom ESTIMATED_FLASHBACK_SIZE digunakan untuk menentukan perkiraan ukuran flashback data yang diperlukan untuk setting retention target yang sudah kita lakukan.
SQL> select
2  oldest_flashback_scn AS OLD_SCN,
3  TO_CHAR(oldest_flashback_time,'DD-MM-YYYY:HH24:MI:SS') AS OLD_TIME,
4  retention_target as RET_TARGET,
5  estimated_flashback_size,
6  FLASHBACK_SIZE
7  from v$flashback_database_log;
OLD_SCN         OLD_TIME RET_TARGET EST_FB_SIZE FLASHBACK_SIZE
------- ---------------- ---------- ----------- --------------
741507 02-10-2007:13:16       2880           0        8192000
Database Anda sudah siap untuk fitur FLASHBACK DATABASE.
Untuk demo melakukan flasback datbabase silahkan download disini.

Membuat Database

By: Cha-Cha D AceWell

Create database bisa dilakukan bersamaan dengan proses instalasi software Oracle, tetapi bisa juga database dibuat setelah proses instalasi.
Ketika kita berbicara tentang database Oracle, bayangkan database Oracle seperti sebuah bangunan yang terdiri dari beberapa struktur penyangga. Database Oracle merupakan struktur yang sangat kompleks. Secara garis besar arsitektur database Oracle dibagi dalam tiga bagian, yaitu :
  • struktur memory
  • struktur process
  • struktur penyimpanan (storage)
Setiap ketiga struktur diatas masih dibagi lagi menjadi beberapa komponen dimana setiap komponen mempunyai fungsi dan peran tersendiri tetapi saling berkaitan satu komponen dengan komponen lainnya. Jika salah satu komponen utama ada yang tidak berfungsi dengan baik atau rusak maka database tidak akan bisa digunakan.
Disini sebenarnya saya hanya ingin mengatakan, membuat database di Oracle bukan hanya sekedar membuat file tempat menyimpan data. Membuat database Oracle berarti membangun suatu infrastruktur tempat penyimpanan data.
Bagaimana membangun database ?, Oracle sudah menyediakan tools untuk membuat database yaitu Oracle Database Configuration Assistant (ODBCA). Tetapi jika Anda ingin sedikit bersusah payah, silahkan membuat database secara manual dengan menggunakan perintah CREATE DATABASE.
Untuk membuat database dengan ODBCA, silahkan lihat disini
Terima kasih

Materi 7

By: Cha-Cha D AceWell

Single Row Function

Oracle menyediakan banyak function untuk melakukan manipulasi data. Function yang ada di Oracle dibagi dalam dua kategori yaitu Single-row function dan Multi-row function atau Group Function. Perbedaan kedua kelompok function itu adalah pada jumlah data masuk dan jumlah data hasil function. Single row function memproses satu row data dan hasilnya juga satu row sedangkan Multi row atau Group function data yang diproses banyak sedangkan row yang dihasilkan satu atau lebih sedikit jumlah row-nya dari row data yang diproses. Ilustrasi perbedaan mendasar dari kedua kelompok function disajikan dalam gambar berikut :
Penjelasan:
Single-row function : setiap satu row sumber LAST_NAME, misalnya Raphaely diproses dengan function UPPER menjadi RAPHAELY
Multi-row function :Semua data 22000, 6200, 5800, 5600, 5200, 5000 ada 5 data diproses dengan SUM menjadi satu baris data 49800
Kedua kelompok function ini tidak bisa saling menggantikan, artinya ada situasi yang harus kita selesaikan dengan single-row dan ada situasi yang memang harus diselesaikan dengan group function.
Untuk lebih jelasnya tentang Single-row function silahkan DOWNLOAD materinya disini. Single-Row-Function
Untuk Multi-row function akan dibahas pada materi lain.
Terimakasih

Materi 6

By: Cha-Cha D AceWell

Menyeleksi dan Mengurutkan Data

Prasyarat :
- Anda sudah membaca dan memahami materi 5 yaitu tentang cara menampilkan data
Dengan perintah SELECT yang sederhana seperti sebelumnya, maka semua baris data akan ditampilkan. Terkadang kita perlu hanya menampilkan data dengan kriteria tertentu saja. Misalkan menampilkan data pegawai yang ada di kode bagian 12 atau menampilkan pegawai dengan gaji dibawah Rp. 3.000.000,-. Untuk memenuhi kebutuhan tersebut pada perintah SELECT perlu ditambahkan klausa WHERE yang bisa kita gunakan untuk menambahkan kriteria atau kondisi data yang akan ditampilkan. Syntax perintah SELECT menjadi sebagai berikut:
 
Jalankan dua perintah berikut ini dan perhatikan outputnya.
Perintah ini hanya menampilkan data pegawai dengan KODE_BAG=12
SELECT *
FROM pegawai
WHERE kode_bag=12;
Perintah ini hanya menampilkan data pegawai dengan GAJI dibawah 3000000
SELECT *
FROM pegawai
WHERE gaji < 3000000;
Semoga anda sudah semakin memahami cara menyeleksi data dengan perintah SQL.
Selanjutnya, jika kita perhatikan pada klausa WHERE, kriteria yang kita berikan berupa ekspresi yang terdiri dari nama_kolom, operator pembanding dan nilai_kriteria. Untuk komponen kriteria tersebut dijelaskan sebagai berikut:
nama_kolom
adalah nama kolom yang terdapat pada tabel yang akan ditampilkan datanya. Seperti kolom NIP, NAMA, JK, EMAIL, GAJI dan KODE_BAG pada tabel PEGAWAI.
operator_pembanding
adalah operator pembanding tunggal seperti = (sama dengan), > (lebih besar), < (lebih kecil), >= (lebih besar sama dengan), <= (lebih kecil sama dengan) dan <> (tidak sama dengan) atau operator pembanding jamak seperti IN, LIKE dan BETWEEN…AND…Operator pembanding juga bisa dikombinasikan dengan beberapa fungsi yang akan dijelaskan pada bagian lain.
nilai_pembanding
adalah nilai yang kita tentukan. Nilai yang kita isi ini harus sesuai tipe datanya dengan kolom yang kita bandingkan. Jika kolom bertype data karakter atau date(tanggal) maka nilai harus kita apit dengan tanda kutip tunggal, contohnya adalah WHERE nama=’YULI’
Sebagai latihan :
  • tampilkan pegawai dengan nama TONO
  • tampilkan pegawai dengan NIP 1302
Operator BETWEEN…AND…
Operator BETWEEN..AND.. digunakan untuk menampilkan data yang berada dalam interval nilai tertentu. Untuk menggunakan operator ini harus ditentukan nilai batas bawah dan batas atas. Sebagai contoh, tampilkan pegawai yang gajinya berada dalam interval 5000000 sampai 7000000, maka perintahnya ditulis seperti berikut:
SELECT NIP,NAMA,GAJI
FROM PEGAWAI
WHERE GAJI BETWEEN 5000000 AND 7000000;
Operator IN
Jika dengan operator = (sama dengan) nilai pembanding yang bisa diberikan cuma satu nilai, seperti pegawai yang gajinya 3000000 maka ditulis (WHERE GAJI = 3000000) sehingga yang ditampilkan adalah hanya pegawai yang gajinya 3000000. Bagaimana jika ingin menampilkan pegawai yang gajinya 2000000, 3000000 dan 5000000 dengan satu perintah SELECT. Untuk kasus seperti ini gunakanlah operator IN. Perintahnya ditulis seperti berikut:
SELECT NIP,NAMA,GAJI
FROM PEGAWAI
WHERE GAJI IN (2000000,3000000,5000000);
Operator LIKE
Operator LIKE digunakan untuk menampilkan data yang sesuai dengan format tertentu. Untuk menentukan format baik untuk data karakter maupun numerik digunakan wildcard _ (underscore) dan % (persen)
  • _ (underscore) format untuk mewakili satu karakter
  • % (persen) format untuk mewakili beberapa karakter
Contoh:Tampilkan pegawai yang Namanya diawali dengan hurus E.
perintahnya :
SELECT NIP,NAMA
FROM PEGAWAI
WHERE NAMA LIKE ‘E%’;
Tampilkan pegawai yang karakter kedua dari namanya adalah huruf I.
perintahnya:
SELECT NIP,NAMA
FROM PEGAWAI
WHERE NAMA LIKE ‘_I%’;
Cobalah dengan kombinasi format lainnya.
OPERATOR LOGIK
Kita memerlukan logika operator dalam menyeleksi data jika kondisi atau kriteria yang kita inginkan lebih dari satu. Operator logika berfungsi untuk menghubungkan kondisi-kondisi tersebut. Operator logika yang bisa digunakan seperti tertera di bawah ini.
Operator AND
Dengan operator AND, data yang akan dimunculkan adalah data-data yang memenuhi kedua kondisi. Sebagai contoh akan ditampilkan data pegawai yang kode_bagian=11 dan gajinya diatas 3000000, perintahnya adalah sebagai berikut:
SELECT * FROM PEGAWAI
WHERE KODE_BAG=11 AND GAJI > 3000000;
Operator OR
Data akan ditampilkan jika minimal memenuhi salah satu kondisi. Sebagai contoh akan ditampilkan data pegawai yang kode_bagian=11 atau pegawai gajinya diatas 3000000, perintahnya adalah sebagai berikut:
SELECT * FROM PEGAWAI
WHERE KODE_BAG=11 OR GAJI > 3000000;
Operator NOT
Data akan ditampilkan jika tidak memenuhi kondisi. Operator NOT berfungsi untuk menegasikan kondisi. Sebagai contoh, tampilkan pegawai yang bukan KODE_BAG 11, perintahnya sebagai berikut:
SELECT * FROM PEGAWAI
WHERE NOT (KODE_BAG=11);
ORDER BY
Klausa ORDER BY digunakan untuk melakukan pengurutan data berdasarkan kolom tertentu. ORDER BY diletakkan di akhir dari perintah SELECT. Syntax perintah SELECT dengan ORDER BY menjadi seperti berikut:
    Keterangan :
  • ASC : mengurutkan dari kecil ke besar
  • DESC : mengurutkan dari besar ke kecil
  • Defaultnya adalah ASC
Tulis perintah-perintah berikut untuk lebih memahami pengurutan data
SQL> SELECT * FROM PEGAWAI
2 ORDER BY NIP;
SQL> SELECT * FROM PEGAWAI
2 ORDER BY NAMA;
SQL> SELECT * FROM PEGAWAI
2 ORDER BY GAJI DESC;
Sorting berdasarkan kolom ALIAS
SQL> SELECT NIP, NAMA, (GAJI*0.5) AS “BONUS”
2 FROM PEGAWAI
3 ORDER BY BONUS DESC;
Sorting lebih dari satu kolom
SQL> SELECT KODE_BAG, NIP, NAMA, GAJI
2 FROM PEGAWAI
3 ORDER BY KODE_BAG, GAJI;
SQL> SELECT KODE_BAG, NIP, NAMA, GAJI
2 FROM PEGAWAI
3 ORDER BY KODE_BAG, GAJI DESC;
Sekian dan Terimakasih

Materi 5

By: Cha-Cha D AceWell

Menampilkan Data dari Tabel dengan perintah SELECT

Prasyarat :
  • Anda sudah mempelajari dan mengisi tabel-tabel yang dibuat di Materi 4.
Setelah data kita input ke tabel, sekarang saatnya menampilkan data. Untuk menampilkan data yang pernah kita input digunakan perintah SELECT. Syntax Perintah SELECT yang sederhana adalah sebagai berikut :
Terdiri dari dari dua klausa, yaitu klausa SELECT yang menentukan kolom apa yang akan ditampilkan dan klausa FROM yang menentukan dari tabel data akan diambil.
CARA MENULIS PERINTAH SQL
  • Perintah SQL not case sensitif, artinya perintah SQL bisa ditulis dengan huruf kapital atau huruf kecil
  • Perintah SQL bisa ditulis dalam satu baris atau dalam beberapa baris
  • Setiap perintah SQL diakhiri dengan tanda titik koma atau semicolon “;”
  • Keyword tidak boleh disingkat atau ditulis pada baris yang berbeda
  • Untuk memudahkan pembacaan sebaiknya setiap klausa ditulis pada baris yang berbeda
Sebagai contoh, tampilkan data pegawai NIP, NAMA, GAJI dan KODE_BAG, maka perintahnya adalah sebagai berikut :
SQL> SELECT nip, nama, gaji, kode_bag
2  FROM pegawai;
NIP NAMA           GAJI KODE_BAG
---- -------- ---------- --------
1000 WIRA        7000000   10
1100 BUDI        5000000   12
1200 ERTIN       4250000   10
1300 NOVI        5500000   11
1201 AHMAD       2575000   10
1202 ESTI        3000000   10
1305 EDWIN       3250000   11
1306 AMRA        3100000   11
1101 TONO        2250000   12
1102 SUTEJO      2750000   12
1301 DIANA       3000000   11
1302 YULI        2750000   11
1303 RINA        3100000   11
1304 DHILA       2500000   11
1103 ZAENAL      1800000   12
15 rows selected.
Bagaimana jika akan menampilkan data dari semua kolom yang ada ?. Ada dua cara yang bisa anda lakukan yaitu dengan menuliskan semua kolom pada perintah SELECT seperti ini :
SQL> SELECT NIP, NAMA, JK, EMAIL, GAJI, KODE_BAG
2  FROM PEGAWAI;
atau ganti semua kolom dengan tanda asterik “*” setelah SELECT seperti ini :
SQL> SELECT *
2  FROM PEGAWAI;
Hasil kedua perintah diatas adalah sama.
EKSPRESI ARITMATIKA
Pada perintah SQL kita bisa menggunakan ekspresi aritmatik dengan menggunakan Operator Aritmatika seperti di bawah ini.
Jalankan perintah berikut ini dan perhatikan pada kolom GAJI+500000:
SELECT NIP,NAMA,GAJI,GAJI+500000
FROM PEGAWAI;
Cobalah dengan operator yang lainnya.
OPERATOR PRECEDENCE
Jika dalam satu ekspresi terdapat banyak operator, maka urutan pengerjaannya adalah *, /, +, - (kali, bagi, tambah, kurang) dengan aturan sebagai berikut:
  • Perkalian dan pembagian akan dikerjakan lebih dulu dari penjumlahan dan pengurungan
  • Operator dengan prioritas yang sama akan dikerjakan dari sisi kiri ke kanan
  • Untuk menentukan urutan pengerjaan sebaiknya gunakan tanda kurung
Jalankan dua perintah berikut:
SELECT NIP,NAMA,GAJI,12*GAJI+500000
FROM PEGAWAI;
SELECT NIP,NAMA,GAJI,12*(GAJI+500000)
FROM PEGAWAI;
KOLOM ALIAS
  • Kolom alias digunakan untuk menggantikan judul kolom
  • Biasa digunakan untuk kolom-kolom yang ada ekspresinya
  • Ditulis sesudah kolom yang akan diganti judul kolomnya, bisa juga digunakan keyword AS antara nama kolom dengan kolom alias
  • Jika kolom alias terdapat karakter space atau karakter khusus lainnya maka apit kolom alias dengan tanda kutip ganda
Contoh penulisan kolom alias
SELECT NIP,NAMA,GAJI,12*GAJI+500000 AS Total
FROM PEGAWAI;
SELECT NIP,NAMA,GAJI,12*GAJI+500000 AS “Total Gaji”
FROM PEGAWAI;
Sampai disini penjelasan tentang cara menampilkan data dari tabel.

Materi 4

By: Cha-Cha D AceWell

Input Data ke dalam Tabel

Prasyarat :
  • Anda sudah membaca dan menjalankan perintah-perintah yang ada di Materi 3 tentang Membuat Tabel dan Mendefinisikan Constraint
Perintah INSERT
Untuk mengisi data ke tabel digunakan perintah INSERT. Syntax perintah INSERT adalah sebagai berikut :
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
Sebelum melakukan pengisian data dengan perintah INSERT, kita harus lihat dulu strukutr tabel yang akan kita isi, karena urutan kolom dalam perintah INSERT sangat penting.
Lakukan koneksi ke database dengan user HRD
SQL> connect hrd
Enter password: ******
Connected.
Lihat, tabel apa saja yang dimiliki oleh user HRD
SQL> SELECT table_name
2  FROM user_tables;
TABLE_NAME
------------
PEGAWAI
BAGIAN
Lihat struktur tabel BAGIAN dan PEGAWAI
SQL> desc BAGIAN
Name              Null?    Type
----------------- -------- ------------
KODE                       NUMBER(2)
NAMA_BAGIAN                VARCHAR2(20)

SQL> desc PEGAWAI
Name              Null?    Type
----------------- -------- ------------
NIP                        NUMBER(4)
NAMA                       VARCHAR2(15)
JK                         CHAR(1)
EMAIL                      VARCHAR2(20)
GAJI                       NUMBER(10)
KODE_BAG                   NUMBER(2)
Input data dengan urutan kolom sesuai dengan struktur tabel
Isi tabel BAGIAN dengan data kode : 10, nama_bagian : ADMINISTRATION
SQL> INSERT INTO bagian(kode,nama_bagian) VALUES(10,’ADMINISTRASI’);
1 row created.
Sebenarnya jika kita akan memasukkan data dan kita sudah mengetahui struktur tabelnya dan data tersebut akan diinput urut sesuai nama kolom, maka nama kolom tidak perlu disebutkan. Dengan demikian maka penulisan perintah INSERT menjadi lebih sederhana, seperti dibawah ini :
SQL> INSERT INTO bagian VALUES(20,’MARKETING’);
1 row created.
Input data untuk kolom tertentu saja
Nama kolom perlu disebutkan jika kita akan mengisi nilai hanya ke beberapa kolom saja. Misalkan isi data PEGAWAI untuk kolom NIP: 100 NAMA: ‘EDWIN’, maka perintah INSERT ditulis sebagai berikut:
SQL> INSERT INTO pegawai (nip,nama) VALUES(100,’ANTON’);
1 row created.
Untuk kolom lain pada baris tersebut akan diisi dengan NULL(kosong).
Jika kita lihat, dengan menggunakan perintah INSERT untuk menginput satu baris data diperlukan satu perintah INSERT. Sebenarnya masih ada beberapa utility lain di Oracle yang bisa digunakan untuk memasukkan data ke tabel seperti External Table, SQL*Loader dan Data Pump. Utility itu nanti akan dibahas pada bagian tersendiri.
Untuk latihan dan nanti akan digunakan untuk materi selanjutnya, isi tabel BAGIAN dan PEGAWAI dengan data berikut :
-- isi tabel BAGIAN
insert into bagian values(10,'Administrasi');
insert into bagian values(11,'Penjualan');
insert into bagian values(12,'Gudang');
-- isi data pegawai
insert into pegawai values(1000,'WIRA', 'L',null,7000000,10);
insert into pegawai values(1100,'BUDI', 'L',null,5000000,12);
insert into pegawai values(1200,'ERTIN', 'P',null,4250000,10);
insert into pegawai values(1300,'NOVI', 'P',null,5500000,11);
insert into pegawai values(1201,'AHMAD', 'L',null,2575000,10);
insert into pegawai values(1202,'ESTI', 'P',null,3000000,10);
insert into pegawai values(1305,'EDWIN', 'L',null,3250000,11);
insert into pegawai values(1306,'AMRA', 'L',null,3100000,11);
insert into pegawai values(1101,'TONO', 'L',null,2250000,12);
insert into pegawai values(1102,'SUTEJO','L',null,2750000,12);
insert into pegawai values(1301,'DIANA', 'P',null,3000000,11);
insert into pegawai values(1302,'YULI', 'P',null,2750000,11);
insert into pegawai values(1303,'RINA', 'P',null,3100000,11);
insert into pegawai values(1304,'DHILA', 'P',null,2500000,11);
insert into pegawai values(1103,'ZAENAL','L',null,1800000,12);
commit;
/
Materi tentang input data selesai.

Materi 3

By: Cha-Cha D AceWell

Membuat Tabel dan Mendefinisikan Constraint

Prasyarat :
  • Instalasi Software Oracle database sudah berhasil, jika belum silahkan install dengan mengikuti petunjuk Instalasi Oracle Database
  • Anda sudah membuat database Oracle, jika belum buat database dengan mengikuti petunjuk Membangun Database
  • Sebaiknya anda baca Materi 2 tentang User dan Schema
Membuat Tabel
Ingat, di materi 2 Anda sudah membuat user/schema HRD. Disini kita akan coba membuat dua tabel sederhana untuk menyimpan data-data pegawai yaitu tabel BAGIAN dan tabel PEGAWAI. Rancangan tabel dibuat seperti berikut :
Tabel HRD 
sederhana
Login ke database sebagai user HRD.
SQL> CONNECT budi
Enter password: ******
Connected.
Buat tabel PEGAWAI dan BAGIAN
SQL> CREATE TABLE PEGAWAI
2 NIP NUMBER(4)
3 NAMA VARCHAR2(15),
4 JK CHAR(1),
5 EMAIL VARCHAR2(20),
6 GAJI NUMBER(10),
7 KODE_BAG NUMBER(2));
SQL> CREATE TABLE BAGIAN
2 (KODE NUMBER(2),
3 NAMA_BAGIAN VARCHAR2(20));
Mendefinisikan Constraint
Constraint adalah batasan atau ketentuan yang diterapkan di tabel untuk menjaga konsistensi dan integritas data. Ada 5 jenis constraint di Oracle, yaitu :
  • Primary Key
  • Unique
  • Not Null
  • Check
  • Foreign Key
Penggunaan dan cara mendefinisikan constraint adalah sebagai berikut:
Primary key
Defenisikan kolom NIP pada tabel PEGAWAI sebagai primary key.
SQL> ALTER TABLE PEGAWAI
 2 ADD CONSTRAINT PK_PEGAWAI PRIMARY KEY (nip);
Defenisikan kolom KODE pada tabel BAGIAN sebagai primary key.
SQL> ALTER TABLE BAGIAN
 2 ADD CONSTRAINT PK_BAGIAN PRIMARY KEY (kode);
Not Null
Definisikan kolom NAMA pada tabel PEGAWAI harus selalu diisi (Not Null)
SQL> ALTER TABLE PEGAWAI
 2 MODIFY nama NOT NULL;
Check
Definisikan kolom JK (jenis kelamin) pada tabel PEGAWAI hanya boleh diisi oleh ‘L’ dan ‘P’
SQL> ALTER TABLE PEGAWAI
 2 ADD CONSTRAINT ck_jk CHECK (JK IN (’L’,’P’));
Pastikan kolom GAJI pada tabel PEGAWAI minimal 1000000
SQL> ALTER TABLE PEGAWAI
 2 ADD CONSTRAINT ck_gaji_1jt CHECK (GAJI >= 1000000);
Unique
Pastikan data untuk kolom EMAIL pada tabel PEGAWAI tidak boleh ada yang sama (Unique)
SQL> ALTER TABLE PEGAWAI
 2 ADD CONSTRAINT UQ_EMAIL UNIQUE(email);
Foreign Key
Definisikan agar kolom KODE_BAG pada tabel PEGAWAI selalu merujuk ke kolom KODE pada tabel BAGIAN. (pendefinisian Foreign Key)
SQL> ALTER TABLE PEGAWAI
 2 ADD CONSTRAINT fk_kode_bag FOREIGN KEY (kode_bag)
 3* REFERENCES bagian(kode);
Bahasan Create table dan Constraint selesai…….

Download Disini

Materi 2

By: Cha-Cha D AceWell

User dan Schema Database


Konsep
Setiap orang yang akan mengakses ke suatu database Oracle harus memiliki database user account atau biasa dikenal dengan user name. Pada database Oracle, user ada didalam database artinya user merupakan bagian dari suatu database. Berbeda dengan konsep user yang ada di database lain seperti MySQL atau SQL Server 2000, pada kedua database tersebut user ada diluar database. Ilustrasi perbedaan konsep user antara database Oracle dengan database MySQL atau SQL Server 2000 bisa dilihat pada gambar berikut:
Konsep User dan Schema di database Oracle
Jadi agar user bisa mengakses ke database database dibuat dulu user account-nya. User yang berhak membuat user account adalah user SYS atau user SYSTEM. User SYS dan SYSTEM adalah user yang sudah ada di dalam database dan mempunyai wewenang untuk melakukan administrasi database. User SYS dan SYSTEM dibuat bersamaan dengan proses membuat database. Jadi begitu anda selesai membuat database atomatis sudah ada user SYS dan SYSTEM.
Perhatikan lagi gambar diatas, dalam satu database akan terdapat banyak user dan setiap user akan mempunyai banyak objek seperti tabel, indek, trigger, procedure dan function. Pengelompokan objek-objek secara logik di dalam database berdasarkan user pemiliknya disebut schema. Jadi setiap user pasti punya schema, schema atomatis terbentuk ketika user dibuat. Satu user hanya dihubungkan ke satu schema dan nama user sama dengan nama schema. Berarti user dan schema adalah hal yang sama.
Pemahaman lebih kanjut, secara logik user atau schema di database Oracle sebenarnya sama dengan apa yang disebut database di My SQL atau SQL Server 2000.
Kapan kita harus membuat user atau schema ?. Berdasarkan konsep diatas, user dan schema dibuat ketika ingin membangun suatu aplikasi. Sebagai contoh, ketika Anda ingin membuat aplikasi Sistem Informasi Kepegawaian atau HRD sebaiknya buat user atau schema dengan nama HRD (Masalah nama schema terserah Anda, tetapi sebaiknya mencerminkan nama aplikasi). Selanjutnya semua tabel dan object database lain yang berkaitan dengan aplikasi Sistem Informasi Kepegawaian akan di simpan di schema HRD.
Membuat User/Schema
Ingat, tadi sudah disebutkan bahwa yang berhak untuk membuat user adalah user SYS atau SYSTEM atau user yang sudah diberi privilege untuk CREATE USER (tentang privilige akan dibahas tersendiri). Lakukan koneksi ke database sebagai user SYS.
1. Pada form login SQL*Plus, ketik sebagai berikut:
atau pada prompt SQL> ketik :
SQL> connect / as sysdba
Connected.
2. Buat user/schema HRD dengan password ORACLE
SQL> CREATE USER hrd
 2 IDENTIFIED BY oracle
 3 DEFAULT TABLESPACE users
 4 QUOTA 10 M ON users;
3. Beri ijin user HRD untuk login ke database, buat tabel dan buat index
SQL> GRANT CREATE SESSION,
 2 CREATE TABLE,
 3 CREATE INDEXTYPE
 4 TO hrd;
4. Lakukan koneksi ke database menggunakan user account HRD
SQL> CONNECT hrd
 Enter password: ******
 Connected.
SQL> show user
 USER is “HRD”
Materi User dan Schema selesai, Terima kasih.

Materi 1

By: Cha-Cha D AceWell

Relational Database dan RDBMS 


Sebelum membahas berbagai jenis perintah SQL akan lebih baik kalau kita bicara tentang Relational Database dan Relational Database Management System atau biasa dikenal dengan RDBMS.
Relational Database sebenarnya adalah salah satu konsep penyimpanan data, sebelum konsep database relasional muncul sebenarnya sudah ada dua model database yaitu Network Database dan Hierarchie Database. Dalam database relasional, data disimpan dalam bentuk relasi atau tabel dua dimensi, dan antar tabel satu dengan tabel lainnya terdapat hubungan atau relationship, sehingga sering kita baca diberbagai literatur, database didefinisikan sebagai “kumpulan dari sejumlah tabel yang saling hubungan atau keterkaitan”. Nah, kumpulan dari data yang diorganisasikan sebagai tabel tadi disimpan dalam bentuk data elektronik di dalam hardisk komputer. Untuk membuat struktur tabel, mengisi data ke tabel, mengubah data jika diperlukan dan menghapus data dari tabel diperlukan software. Software yang digunakan membuat tabel, isi data, ubah data dan hapus data disebut Relational Database Management System atau dikenal dengan singkatan RDBMS sedangkan perintah yang digunakan untuk membuat tabel, isi, ubah dan hapus data disebut perintah SQL yang merupakan singkatan dari Structure Query Language. Jadi, setiap software RDBMS pasti bisa digunakan untuk menjalankan perintah SQL.
Sebenarnya fungsi RDBMS bukan cuma buat tabel, isi data, ubah dan hapus data, untuk manajemen data dalam skala besar dan agar bisa mendukung proses bisnis yang kontinyu dan real time suatu RDBMS dituntut untuk mempunyai kemampuan manajemen user dan keamanan data, backup dan recovery data serta kemampuan lainnya yang berkaitan dengan kecepatan pemrosesan data (performance).
Salah satu software RDBMS yang ada dipasaran saat ini dan cukup banyak digunakan adalah Oracle Database.
Berinteraksi dengan Database Oracle
Untuk mengakses data yang ada di database digunakan perintah SQL, perintah-perintah SQL ini ditulis atau diinput dengan tools yang sudah disediakan oleh Oracle yaitu SQL*PLus, iSQL*Plus dan SQL Developer.Perintah SQL dikelompokkan berdasarkan fungsinya sebagai berikut:
Perintah untuk pendefinisian/pembuatan objek (Data Definition Language / DDL)
  • CREATE
  • ALTER
  • RENAME
  • DROP
  • TRUNCATE
Perintah untuk menampilkan data (Data Retrieval)
  • SELECT
Perintah untuk memanipulasi data (Data Manipulation Language /DML)
  • INSERT
  • UPDATE
  • DELETE
  • MERGE
Perintah untuk mengontrol transaksi (Transaction Control Language /TCL)
  • COMMIT
  • ROLLBACK
  • SAVEPOINT
Perintah untuk mengatur wewenang atau privilege ( Data Control Language /DCL)
  • GRANT
  • REVOKE
Sekian bahasan tentang Relational Database dan RDBMS.

Melakukan perintah DML (Data Manipulation Language)

By: Cha-Cha D AceWell

Untuk melakukan manipulasi atau pengolahan data dalam suatu table digunakan perintah DML. Macam-macam dari perintah DML adalah:
1. Insert : untuk memasukkan / menambahkan data baru
INSERT INTO nama_table (nama_kolom) values (values);
contoh –>
insert into mahasiswa (nim, nama, alamat, jurusan) values (12345,’andhi’,’yogya’,’informatika’);
keterangan:
insert into –> perintah untuk menambah data
mahasiswa –> nama table yang akan ditambahkan datanya
nim, nama, alamat, jurusan –> nama kolom dari table mahasiswa
12345,’andhi’,’yogya’,’informatika’ –> data yang dimasukkan ke dalam table mahasiswa (sesuai dengan urutan kolom yang telah disebutkan sebelumnya)
nb: untuk data yang bertipe karakter harus diapit tanda petik tunggal (‘ ‘)
2. Select : untuk menyeleksi / memilih data yang akan ditampilkan
SELECT * | {nama_kolom} FROM nama_table [WHERE condition];
contoh –>
select nim, nama, jurusan from mahasiswa;
keterangan: perintah di atas menampilkan data nim, nama dan jurusan pada table mahasiswa.
nb: untuk menampilkan semua kolom dapat menggunakan tanda (*) contoh: select * from mahasiswa, sedangkan jika ada syarat/kondisi untuk data yang akan ditampilkan dapat menggunakan klausa where contoh: select nim, nama from mahasiswa where nama=’andhi’;
3. Update : untuk membperbaharui data yang sudah ada
UPDATE nama_table SET nama_kolom = value [WHERE condition];
contoh –>
update mahasiswa set jurusan =’kedokteran’ where nama=’andhi’;
keterangan: perintah di atas akan mengubah data mahasiswa yang bernama andhi dengan mengganti data pada kolom jurusan, yang sebelumnya informatika menjadi kedokteran.
Nb: kita dapat mengubah lebih dari satu kolom dalam satu perintah update contoh: update mahasiswa set nim=45678, jurusan=’kedokteran’ where nama=’andhi’;
Perhatian : Jika kita tidak menggunakan klausa where maka semua baris pada kolom yang akan di update akan berubah.
4. Delete : untuk menghapus baris data
DELETE [FROM] nama_table [ WHERE condition];
contoh –>
delete mahasiswa where nama=’andhi’;
keterangan: perintah di atas menghapus baris data pada tabel mahasiswa yang bernaa andhi
Perhatian : Jika tidak menggunakan klausa where maka semua baris data pada tabel tersebut akan dihapus.