PENGANTAR DASAR DATABASE
DEFINISI
Basis data adalah penyimpanan kumpulan informasi secara sistematik dalam sebuah komputer sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak yang digunakan untuk mengelola dan memanggil kueri (query) basis data disebut sistem manajemen basis data (database management system, DBMS). Sedangkan sistem adalah sebuah tatanan yang terdiri atas sejumlah komponen fungsional yang saling berhubungan dan secara bersama-sama bertujuan untuk memenuhi suatu proses pekerjaan. Sehingga bisa dikatakan bahwa sistem basis data adalah sistem yang terdiri atas kumpulan file-file yang saling berhubungan dan sekumpulan program (DBMS) yang memungkinkan beberapa pemakai dan atau program lain untuk mengakses dan memanipulasi data tersebut.
Komponen Sistem Basis Data
Komponen-komponen pada sebuah sistem basis data antara lain:
· Perangkat keras
· Sistem operasi
· Basis data
· DBMS (Database Management System)
· Pemakai
· Aplikasi lain
Sistem Basis Data dan Sistem File
aplikasi memiliki file-file dalam sistem operasi yang digunakan untuk menyimpan data-data. Seiring dengan berkembangnya institusi, bertambahnya bagian/divisi, bertambah pula data dan aplikasi yang digunakan. Bertambahnya aplikasi, bertambah pula file-file yang dibuat.
Gaya sistem pemrosesan-file tersebut menyebabkan setiap data disimpan dalam bentuk record dalam berbagai macam file, dan diperlukan aplikasi yang berbeda dalam melakukan pengambilan record dari, dan penambahan record ke dalam file. Hal ini berlaku pada masa sebelum adanya Sistem Basis Data (DBMS).
Menyimpan data dalam bentuk file yang berbeda-beda, memiliki kekurangan-kekurangan:
· Data redundancy dan inconsistency.
Dikarenakan programer yang berbeda membuat file dan aplikasi masing-masing, menyebabkan beragam format dan aplikasi yang dibuat. Bahkan, aplikasi pun dibuat menggunakan bahasa pemrograman yang berbeda-beda. Lebih jauh lagi, data atau informasi yang sama bisa terdapat dalam beberapa file yang berbeda. Ini yang disebut dengan redundancy. Redundancy data ini lama kelamaan akan menyebabkan inconsystency dari data.
· Kesulitan dalam pengaksesan data.
Dikarenakan setiap aplikasi memiliki file tersendiri untuk penyimpanan dan pengambilan data, maka jika suatu bagian dari institusi membutuhkan data dari bagian lain, akan menemui kesulitan. Hal ini dikarenakan aplikasi yang dimiliki bagian tersebut, tidak dapat membaca file yang terdapat di bagian lain.
· Isolasi data.
Dikarenakan data tersebar dalam berbagai macam file, dan file tersebut dalam beragam format, pembuatan aplikasi baru akan terasa sulit ketika harus membaca format dari masing-masing file tersebut.
· Masalah integritas.
Data yang disimpan harus memenuhi hal yang dinamakan dengan consistency constraint. Jika sebuah constraint berubah, maka seluruh aplikasi yang digunakan harus mengakomodasinya. Masalah akan muncul, jika constraint melibatkan beberapa data dari file yang berbeda-beda.
· Masalah keamanan.
Tidak semua pengguna dari basis data dapat mengakses semua data. Hal ini akan sulit dilakukan jika menggunakan gaya penyimpanan data dalam file.
Abstraksi Data
Tujuan utama dari sistem basis data adalah untuk menyediakan fasilitas untuk view data secara abstrak bagi penggunanya. Namun bagaimana sistem menyimpan dan mengelola data tersebut, hanya diketahui oleh sistem itu sendiri. Abstraksi data merupakan level dalam bagaimana melihat data dalam sebuah sistem basis data. Berikut ini tiga level abstraksi data:
1. Level fisik
Merupakan level terendah pada abstraksi data yang menunjukkan bagaimana sesungguhnya data disimpan. Pada level ini pemakai melihat data sebagai gabungan dari struktur dan datanya sendiri.
2. Level lojik
Merupakan level berikutnya pada abstraksi data, menggambarkan data apa yang disimpan pada basis data dan hubungan apa saja yang ada di antara data tersebut.
3. Level view
Merupakan level tertinggi dari abstraksi data yang hanya menunjukkan sebagian dari basis data. Banyak user dalam sistem basis data tidak akan terlibat dengan semua data atau informasi yang ada atau yang disimpan. Para user umumnya hanya membutuhkan sebagian data atau informasi dalam basis data yang kemunculannya di mata user diatur oleh aplikasi end user.
Database Administrator
Salah satu alasan dari pemanfaatan DBMS adalah untuk mendapatkan kontrol yang terpusat atas data dan program yang mengakses data tersebut. Orang yang memiliki kontrol atas sistem seperti yang telah disebutkan tersebut adalah database administrator (DBA).
Fungsi-fungsi DBA antara lain:
· Definisi skema
· Definisi struktur penyimpanan dan metode akses
· Modifikasi skema dan organisasi fisik
· Memberikan otorisasi untuk akese data
· Spesifikasi integritas constraint
Struktur Sistem
Sebuah sistem basis data terbagi ke dalam beberapa modul yang masing-masing mempunyai tanggung jawab dalam membentuk struktur sistem secara keseluruhan. Beberapa fungsi dari sistem basis data mungkin telah diberikan oleh sistem operasi. Tetapi dalam sebagian besar kondisi, sistem operasi hanya menyediakan servis-servis dasar dan sistem basis data harus dibangun di atasnya.
Komponen-komponen fungsional dari sebuah sistem basis data dibagi menjadi dua, yaitu komponen query processor dan komponen storage manager.
Query processor terdiri atas:
· DML compiler, menerjemahkan perintah DML pada suatu query ke dalam instruksi level rendah yang dimengerti oleh mesin evaluasi query. Dengan kata lain, DML compiler berusaha mengubah suatu permintaan user menjadi bentuk yang ekivalen namun lebih efisien sekaligus juga menentukan sebuah strategi yang tepat untuk mengeksekusi query tersebut.
· Embedded DML precompiler, mengkonversi perintah DML yang embed pada sebuah program aplikasi ke procedure call yang normal dalam bahasa host. Precompiler ini harus nerinteraksi dengan DML compiler untuk menghasilkjan kode yang sesuai.
· DDL interpreter, menginterpretasikan perintah DDL dan mencatatnya dalam sekumpulan tabel yang mengandung metadata.
· Query evaluation engine, mengeksekusi instruksi level rendah yang dihasilkan oleh DML compiler.
Komponen storage manager menyediakan antarmuka antara data level rendah yang tersimpan dalam basis data dan program aplikasi serta query yang diberikan ke sistem. Yang termasuk komponen ini adalah:
· Manajer otorisasi dan integritas, menguji integritas dari constraint yang ada serta otoritas user untuk mengakses data.
· Manajer transaksi, meyakinkan basis data tetap pada kondisi konsisten (benar) saat terjadi kegagalan sistem serta meyakinkan bahawa eksekusi dari transaksi yang konkuren (terjadi “bersamaan”) berlangsung tanpa adanya konflik.
· Manajer file, mengelola alokasi ruang pada disk penyimpanan struktur data yang digunakan untuk mewakili informasi yang disimpan pada disk.
· Manajer buffer, bertanggung jawab untuk mengambil data dari disk penyimpanan ke dalam memori utama serta menetukan data yang mana yang akan ditempatkan di memory
CREATE TABLE nama_tabel ( nama_field_1 tipe_data, nama_field_2 tipe_data, ………, [ CONSTRAINT nama_constraint PRIMARY KEY (nama_field) ] [ CONSTRAINT nama_constraint FOREIGN KEY (nama_field) REFERENCE nama_table (nama_field) ON DELETE CASCADE ] ); |
Keterangan :
nama_field1, nama_field2 adalah nama kolom (field) yang akan ada di dalam tabel.
tipe_data adalah tipe data yang bisa ditampung oleh field.
tipe_constraint adalah batasan yang menentukan suatu field.
Tanda [ ] menyatakan bahwa yang didalamnya boleh ada atau tidak.
Macam – macam tipe constraint yang mungkin adalah :
· NULL atau NOT NULL
Constraint NOT NULL ini berfungsi untuk menjamin field harus diisi sedangkan constraint NULL memperbolehkan suatu field untuk dikosongi
· UNIQUE
Constraint ini berfungsi untuk menjamin bahwa nilai pada setiap record di dalam sebuah tabel adalah unik
· PRIMARY KEY
· FOREIGN KEY
· CHECK
Constraint ini berfungsi untuk menjamin bahwa nilai yang akan dimasukkan ke dalam sebuah field sudah sesuai dengan aturan yang dibuat
Contoh : pembuatan tabel mahasiswa dengan atribut nim bertipe char(9) dan nama bertipe varchar(20) yang tidak boleh kosong.
Sintaks : CREATE TABLE mahasiswa
(
Nim char(9),
Nama varchar(20) not null,
CONSTRAINT pk_mhs PRIMARY KEY (Nim)
);
· Memanipulasi tabel (ALTER TABLE)
Sebuah struktur tabel yang sudah didefinisikan dapat dimodifikasi dengan menggunakan perintah ALTER TABLE.
Ada beberapa jenis modifikasi pada tabel :
1. Menambahkan constraint baru untuk sebuah tabel
Query :
ALTER TABLE nama_tabel
ADD CONSTRAINT nama_constraint_baru
(definisi_constraint);
Contoh : (misal pada tabel mahasiswa belum ada primary key)
SQL > ALTER TABLE mahasiswa
ADD CONSTRAINT pk_mhs PRIMARY KEY (Nim);
2. Menghapus sebuah constraint di dalam tabel.
Query :
ALTER TABLE nama_tabel
DROP CONSTRAINT nama_constraint;
Contoh :
SQL > ALTER TABLE mahasiswa
DROP CONSTRAINT pk_ mhs;
3. Manambahkan field baru pada sebuah tabel.
Query :
ALTER TABLE nama_tabel
ADD(nama_field tipe_data [definisi_konstraint]);
Contoh :
SQL > ALTER TABLE mahasiswa
ADD(alamat varchar(50) NOT NULL);
4. Mengubah definisi field yang telah ada pada sebuah tabel.
Query :
ALTER TABLE nama_tabel
MODIFY(nama_field tipe_field definisi_konstraint);
INSERT INTO nama_tabel [(nama_field1, nama_field2, ….)] VALUES (nilai1, nilai2, …); |
Perlu diperhatikan bahwa nama_field1, nama_field2, … dapat dihilangkan. Hal ini dapat dilakukan bila nilai yang dimasukkan user, urutan sesuai dengan urutan field di dalam tabel tersebut, dan jumlah nilai yang dimasukkan juga harus sama dengan jumlah field pada tabel. Selain itu, proses penyisipan juga harus mematuhi aturan constraint yang telah didefinisikan pada sebuah tabel
Contoh :
insert into mahasiswa
values('30108001', 'paijo', 'skp');
atau
insert into mahasiswa (nim,nama,alamat)
values('30108001', 'paijo', 'skp');
· UPDATE RECORD
Setiap nilai record yang telah disimpan di dalam tabel dapat dimodifikasi kembali berdasarkan kondisi tertentu. Jika kondisi tidak didefinisikan, maka nilai semua record akan terupdate
Query :
UPDATE nama_tabel SET nama_field1 = nilai_baru1, nama_field2 = nilai_baru2, …. [WHERE kondisi]; |
Contoh :
SQL > update mahasiswa
set nama = 'paimin',
alamat = 'skb'
where nim = '30108001';
· DELETE RECORD
Record yang telah disimpan di dalam sebuah tabel dapat dihapus berdasarkan kondisi tertentu. Jika kondisi untuk menghapus tidak didefinisikan maka seluruh record pada tabel tersebut akan dihapus.
Query :
DELETE nama_tabel [WHERE kondisi]; |
Contoh :
SQL > delete mahasiswa
where nim = '30108001';
(menghapus sebuah record pada tabel mahasiswa dimana nimnya ‘30108001’)
SQL > delete mahasiswa;
(menghapus semua record pada table mahasiswa)
Select Statement
Statement SELECT digunakan untuk mengambil record dari sebuah tabel atau lebih. Record yang diambil dengan SELECT dapat disaring dengan menggunakan kondisi yang terdefinisi.
Statement SELECT mempunyai format sebagai berikut :
SELECT [DISTINCT | ALL] * | nama_field 1, nama_field 2, …… FROM nama_tabel [WHERE kondisi1] [GROUP BY nama_field] [HAVING kondisi2] [ORDER BY nama_field [ASC | DSC]]; |
DISTINCT digunakan untuk mengambil record yang nilainya tidak ganda.
FROM digunakan untuk mendefinisikan tabel yang menjadi sumber data dari suatu perintah SELECT.
WHERE digunakan untuk mendefinisikan kondisi pengambilan data pada tabel yang disebutkan di klausa FROM.
GROUP BY digunakan untuk mengelompokkan baris – baris data berdasarkan ekspresi group – group tertentu yaitu untuk field tertentu.
HAVING digunakan untuk memilih / mendefinisikan kriteria kelompok group yang akan ditampilkan berdasarkan group yang akan dibuat. Penggunaa klausa HAVING dipakai sebagai pengganti klausa WHERE pada GROUP BY.
ORDER BY digunakan untuk mengurutkan seleksi berdasarkan kondisi yang diinginkan.
ASC (ascending) berarti pengurutan menaik – 1, 2, 3, 4 ….
DSC (descending) berarti pengurutan menurun – 10, 7, 4, 2, ….
Untuk mengambil semua field pada setiap record, maka ganti semua nama field menjadi tanda bintang ‘*’ (tanpa tanda kutip)
SELECT *
FROM nama_tabel
[WHERE kondisi];
Contoh : SELECT * FROM mahasiswa;
Untuk mengambil record yang memenuhi kondisi tertentu maka statement SELECT digabung dengan klausa WHERE. Format WHERE :
WHERE nama_field operator_kondisional nilai
Operator kondisional yang diganakan adalah :
Operator | Arti |
= | Sama dengan |
<>, !=, ^= | Tidak sama dengan |
> | Lebih besar |
< | Lebih kecil |
>= | Lebih besar atau sama dengan |
<= | Lebih kecil atau sama dengan |
BETWEEN … AND … | Mengambil nilai yang berada pada antara 2 buah bilangan. |
IN | Mengetes nilai – nilai pada list yang disepsifikasikan |
LIKE | Menyocokkan sebuah pola karekter |
IS NULL | Apakah sebuah nilai null? |
Untuk menggabungkan beberapa kondisi didalam klausa WHERE, maka digunakan operator boolean AND, OR, dan NOT.
AND : apabila setiap kondisi harus dipenuhi.
OR : apabila cukup salah satu kondisi yang terpenuhi.
NOT : apabila merupakan kebalikan / negasi dari kondisi yang dipenuhi.
Contoh :
Select * from mahasiswa where nama not ‘paimen’;
BETWEEN … AND …
Untuk mengambil record dengan nilai field berada pada batas tertentu, maka digunakan statement BETWEEN atau NOT BETWEEN.
Statement ini bergabung menjadi satu dengan klausa WHERE.
WHERE nama_field BETWEEN nilai_awal AND nilai_akhir WHERE nama_field NOT BETWEEN nilai_awal AND nilai_akhir |
IN dan NOT IN
Untuk menampilkan record yang nilai fieldnya berada pada suatu kelompok nilai tertentu maka gunakan statement : IN atau NOT IN yang dipakai bersama klausa WHERE
WHERE nama_field IN (nilai1, nilai2, nilai3, …) WHERE nama_field NOT IN (nilai1, nilai2, nilai3, …) |
LIKE dan NOT LIKE
WHERE nama_field LIKE pola; WHERE nama_field NOT LIKE pola; |
Untuk menampilkan record yang nilai fieldnya mengandung nilai tertentu, digunakan statement LIKE atau NOT LIKE yang diletakkan pada klausa WHERE.
Pola adalah karekter atau string, yang dapat dipadukan dengan dua macam wild character, yaitu :
% : mewakili 0,1 atau beberapa karakter
_ : mewakili tempat sebuah karakter.
Contoh :
1. %JO%
String yang sesuai dengan %JO% adalah : JOHAN, IJO, PAIJO, JOJON
2. _ELO_
String yang sesuai dengan _ELO_ adalah : BELOK, KELOK, BELON
Field yang dapat menggunakan statement LIKE atau NOT LIKE adalah field yang bertipe Char, Varchar, atau Varchar2.
IS NULL dan IS NOT NULL
WHERE nama_field IS NULL; WHERE nama_field IS NOT NULL; |
Salah satu kegunaan nilai NULL adalah untuk merepresentasikan sebuah nilai yang belum ada. Dalam hal ini nilai field untuk sebuah record belum terisi. Sebuah nilai NULL tidak idektik dengan spasi atau 0.
Untuk menampilkan record yang mempunyai nilai field NULL atau tidak, gunakan statement IS NULL atau IS NOT NULL yang dimasukkan dalam statement WHERE
OPERATOR ARITMATIKA
Ada kemungkinan, pada saat menampilkan nilai, kita ingin memodifikasi nilai yang ingin ditampilkan, misalnya kita ingin menampilkan harga barang, namun harga barang tersebut ditambah 500.
Untuk memodifikasi nilai tersebut kita gunakan operator aritmatika yang diletakkan pada klausa SELECT.
SELECT nama_field1 operator nilai_tambahan, … FROM nama_tabel [WHERE kondisi]; |
Operator yang digunakan adalah : *, /, +, dan –
Field yang bisa menggunakan operator ini harus bertipe numerik, date?
Contoh :
SQL > SELECT nim, spp + 50000
FROM keuangan;