Nama Haidi
Matakuliah Basis Data
AMIK Wahana Mandiri
Kalkulus relasional è merupakan bahasa manipulasi teoritis yang non-prosedural, artinya bahasa ini hanya mengekspresikan ” what to do or what characteristics are required ” dan tidak mengekspresikan ” how to do it ” seperti pada bahasa queri prosedural.
Kalkulus relasional è dilandasi dengan teori predicate calculus yang menggunakan fungsi sebagai suatu ekspresi logik.
Predikat è adalah suatu fungsi yang dapat mengembalikan nilai benar ( true ) atau salah ( false ) tergantung dari subsitusi nilai argumen dari fungsi tersebut.
Jadi bila semua argumen dari sebuah fungsi disubstitusi dengan suatu nilai, maka fungsi tersebut menjadi suatu ekspresi yang disebut preposisi ( preposisition ) yaitu suatu ekspresi yang hanya bernilai benar atau salah.
Jika P è adalah suatu predikat, maka kita dapat mengekspresikan { x \ P(x) } yang berarti “semua x yang memenuhi suatu predikat P sehingga P bernilai benar untuk semua nilai x”.
Kita juga dapat menggunakan operator logika seperti And (Ù), Or (Ú) dan Not (~);
misalnya { y \ ~ (P(y) Ù Q(y))}.
Penerapan predicate calculus terhadap model data relasional menggunakan dua pendekatan teoritis:
-
Tuple Oriented Relational Calculus ( TOPC )
Pada TOPC, variable x pada { x \ P(x) } merepresentasikan suatu tuple ( record ).
Contoh :
-
Cari semua Norek, saldo dari semua rekening yang bertipe cek { T.Norek.T.saldo \ T.tipe = “cek ” } dimana T Î Rekening.
-
Cari semua No.KTP dari semua nasabah yang memiliki rekening tipe cek dengan saldo diatas 5 juta. { S.No.KTP \ T.tipe = “cek” Ù Saldo > 5.000.000 Ù Rekening.No.Rek = KusRek.No.Rek }
b) Domain-Oriented Predicate Calculus (DOPC)
Pada DOPC, variable x pada { x \ P(x) } merepresentasikan suatu set domain sehingga menjadi
{ d1,d2,…dn \ P (d1,d2 …, dn)}.
Contoh :
-
Cari semua NoRek, Saldo dari semua rekening yang bertipe cek .{ NoRek, Saldo \ ( NoRek, Saldo, Tipe Î att (Rekening )) Ù tipe = “cek”}.
-
Cari semua NoKTP dari semua nasabah yang memiliki rekening tipe cek dengan saldo diatas 5 juta.
{ NoKTP \ (NoRek, Saldo, Tipe Î (rekening)) Ù (NoRek, NoKTP Î att (KusRek)) Ù tipe=”cek” Ù Saldo > 5.000.000 Ù Rekening.NoRek = KusRek.NoRek}.
BAHASA QUERI KOMERSIAL
Berdasarkan acuan model relasional, ada 2 bahasa query komersial yang tersedia :
-
SQL (Structured Query Language)
-
QBE (Query By Example ) .
SQL dan QBE masing-masing mewakili bahasa query prosedural dan non-prosedural.
-
SQL ( Sructured Query Language )
-
SQL dibangun è dengan basis aljabar relasional yang dijelaskan bab sebelumnya.
-
SQL memberikan bahasa query tingkat tinggi ( a high level query language ) dengan struktur sederhana dengan kosakata dan gramatika yang sederhana pula, seperti berikut :
Select A1, A2, …, An
-
From T1, T2 ,…, Tn
Where P
Dimana :
A1,A2,…,An : himpunan dari semua atribut yang hendak ditampilkan.
T1,T2,…,Tn : himpunan dari semua tabel yang terlibat (diperlukan) dalam query.
P : predikat / kriteria yg diinginkan tentang informasi yg dicari.
c. Struktur dasar SQL tersebut equvalen dengan operasi pada aljabar relasional berikut:
p A1,A2,…An (s P(T1 X …X Tn))
d. Beberapa operator SQL yang berkorespondensi dengan operator aljabar relasional :
Aljabar Relasional |
SQL |
Ù |
AND |
Ú |
OR |
¹ |
<> or >< |
³ |
>= |
£ |
<= |
Contoh query untuk mencari semua KartuID dari semua kustomer yang memiliki rekening tipe tabungan adalah sebagai berikut:
Select KartuId
From rekening KusRek
Where Type =”tabungan” dan rekening.NoRek = kusRek.NoRek
e. Contoh Kasus Translasi Aljabar Relasional ke dalam SQL :
1. AR : s Balance > 4000000 ( account )
SQL : Select ………..
From ……………
Where …………
2. AR : s type = “saving” ^ balance > 4.000.000 ( account )
SQL: Select ………..
From ……………
Where …………
3. AR : s name = “Nyoman” V Street =
“Beringin” ( customer )
SQL: Select ………..
From ……………
Where …………
4. AR : p acc no, balance ( account )
SQL :
5. AR : p Acc no, balance (s balance > 4.000.000 ( account ) )
SQL :
f. SQL Sebagai Subbahasa memiliki kemampuan seperti :
-
Pendefinisian struktur data,
-
Pengubahan data,
-
Pengaturan sekuritas, dan lain-lain.
Alasan SQL dikatakan sebagai subbahasa data è karena SQL tidak mendukung persyaratan bahasa yang lengkap, sekalipun SQL dapat dipakai untuk mengakses basis data.
SQL tidak menyediakan hal-hal berikut :
-
Pernyataan penguji kondisi (semacam IF pada COBOL).
-
Pernyataan pengulangan/iterasi (semacam REPEAT pada Pascal).
g. Antarmuka SQL terhadap DBMS
SQL dapat dipakai oleh berbagai kalangan (DBA, Pemrogram, ataupun Pengguna).
-
SQL sebagai bahasa administrasi basis data
Dalam hal ini SQL dipakai oleh DBA untuk menciptakan serta mengendalikan pengaksesan basis data.
-
SQL sebagai bahasa qury interaktif.
User dapat memberikan perintah-perintah untuk mengakses basis data yang sesuai dengan kebutuhannya.
3. SQL sebagai bahasa pemrograman basis data
Pemrogram dapat menggunakan perintah-perintah SQL dalam program aplikasi yang dibuat, guna mengakses basis data.
4. SQL sebagai bahasa klien/server
SQL juga dipakai sebagai untuk mengimplementasikan sistem klien/server.
ELEMEN SQL
-
Elemen dasar SQL
-
Pernyataan
-
Tabel 6.1 Pernyataan-pernyataan dasar SQL.
Pernyataan |
Keterangan |
ALTER |
Mengubah struktur tabel |
COMMIT |
Mengakhiri sebuah eksekusi transakasi |
CREATE |
Menciptakan tabel, indeks, atau pandangan |
DELETE |
Menghapus baris pada tabel |
DROP |
Menghapus tabel, indeks, atau pandangan |
GRANT |
Menugaskan hak terhadap basis data kepada pengguna atau grup pengguna |
-
Nama
Nama digunakan sebagi identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel, kolom, dan pengguna.
-
Tipe Data
Tabel 6.2 Tipe data standar
Tipe Data |
Keterangan |
CHAR |
Untuk menyatakan deretan karakter (string). Misalnya untuk menyatakan nama orang, nama jalan, atau nama kota |
INTEGER |
Untuk menyatakan bilangan bulat |
NUMERIC |
Untuk menyatakan bilangan real |
Tabel 6.3 Tipe data perluasan
Tipe Data |
Keterangan |
VARCHAR |
Untuk menyatakan string yang panjangnya bervariasi |
MONEY |
Untuk menyatakan uang |
BOOLEAN |
Menyatakan tipe logis (True atau False) |
BLOB |
Untuk menyatakan data biner (gambar, suar, dan sebagainya |
SERIAL / AUTOINCREMENT |
Untuk menyatakan nilai yang urut |
ELEMEN SQL
-
Elemen dasar SQL
-
Konstanta
Konstanta è menyatakan nilai yang tetap (kebalikan dari konstanta adalah variabel).
Variabel :………..
Beberapa contoh konstanta :
Konstanta numerik :123, -245, 5.45
Konstanta : ‘Jl. Suikapura 23’
Konstanta simbolik (konstanta yang tersedia pada SQL dan mempunyai makna tersendiri) : SYSDATE (tanggal sistem), USER (nama pengguna yang menjalankan SQL). Konstanta simbolik seringkali disebut variable sistem.
-
Ekspresi
Ekspresi è segala sesuatu yang menghasilkan nilai. Ekspresi è digunakan untuk menghitung nilai. Sebagai contoh :
(LABA/MODAL) * 100
merupakan ekspresi untuk membagi isi variable LABA dengan MODAL, dan kemudian dikalikan dengan 100.
Tabel 6.3 Simbol pada ekspresi aritmatika.
Simbol |
Keterangan |
* |
Perkalian |
/ |
Pembagian |
+ |
Penjumlahan |
– |
Pengurangan |
KELOMPOK PERNYATAAN SQL
Pernyataan SQL dikelompokkan menjadi :
-
DDL
-
DML
-
DCL
-
Pengendali Transaksi
-
Pengendali Programatik.
1. DDL (Data Definition Language)
-
DDL
è perintah yang berfungsi untuk mendefinisikan atribut-atribut basis data, tebel, atribut (kolom), batasan-batasan terhadap suatu atribut, serta hubungan antar tabel.
-
Kelompok DDL : CREATE, ALTER, dan DROP.
-
Sintaks SQL untuk melakukan pembuatan tabel baru didalam basis data :
create table t (A1 D1, A2, D2, …., An Dn)
dimana :
-
t adalah nama tabel yang akan dibuat
-
A1, A2, …, An adalah nama-nama atribut yang akan terdapat di dalam tabel t
-
D1, D2, …, Dn adalah domain nilai masing-masing atribut tersebut yang di tentukan berdasarkan tipe datanya.
-
Contoh perintah perintah SQL
-
A. Membuat tabel Mahasiswa
Create table mahasiswa
(nim char (6),
nama_mhs varchar (30),
alamat_mhs varchar (50),
tgl_lahir (date)
B. Penghapusan terhadap tabel Mahasiswa :
drop tabel mahasiswa
C. Ekspresi SQL untuk pembuatan tabel Mahasiswa sekaligus dengan pendefinisian Indeks Primer berdasarkan nim :
create table mahasiswa
(nim char (6),
nama_mhs varchar (30),
alamat_mhs varchar (60),
tgl_lahir date,
primary key (nim))
d. Ekspresi SQL, jika jumlah atribut yang membentuk Indeks Primer ada lebih dari satu
Create table nilai
(nim char (6),
kode_kul char (6),
indeks_nilai char (1),
primary key (nim, kode_kul))
e. Ekspresi SQL untuk penghapusan tabel Mahasiswa :
drop tabel mahasiswa
f. Sintaks SQL untuk perubahan struktur tabel yang berbentuk penambahan atribut baru ke tabel t adalah :
alter table t add A D
g. Sintaks SQL untuk penghapusan atribut dari tabel t
Alter table t drop A
h. Ekspresi SQL untuk penambahan atribut baru bernama ip di tabel Mahasiswa :
Alter table mahasiswa add ip numeric (5, 2)
i. Jika atribut ip ingin dihapus dari tabel mahasiswa, ekspresi SQL-nya :
Alter table mahasiswa drop ip
2. DML (Data Manipulation Language)
-
DML
è kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan, dan penghapusan data.
-
Perintah yang masuk kategori DML adalah :
SELECT = Memilih data
INSERT = Menambah data
DELETE = Menghapus data
UPDATE = Mengibah data
-
Perintah Select (klausa select) digunakan untuk menetapkan daftar atribut (field) yang diinginkan sebagai hasil query. Perintah select (klausa select) tidak terlepas dari dua klausa, yaitu :
-
Klausa form digunakan untuk menetapkan tabel (atau gabungan tabel) yang akan ditelusuri selama query data dilakukan.
-
Klausa where, yang sifatnya opsional, digunakan sebagai predikat (kriteria) yang harus dipenuhi dalam memperoleh hasil query.
sintaks (cara penulisan) dari ekspresi SQL dasar dengan 3 klausa tersebit adalah :
select A1 [A1, A2, ……, An]
from t1 [t1, t2, ….,tm]
[where p]
dimana :
-
A1, A2, …..,An merupakan daftar atribut.
-
t1, t2, ….,tm merupakan daftar tabel.
-
P merupakan predikat query.
-
[ ] merupakan tanda opsional (boleh digunakan, boleh tidak digunakan).
STRUKTUR DASAR
-
Klausa Select
Perintah SQL untuk NIM dan nama mahasiswa yang ada di tabel Mahasiswa, maka perintah SQL berikut ini :
Select nim, nama_mhs
From mahasiswa
Sementara, perintah berikut ini :
Select nama_mhs
From mahasiswa
Apa bentuk tampilan dari klausa dibawah :
Select nim, nama_mhs as nama
Alamat_mhs as alamat
From mahasiswa
Apa bentuk tampilan dari klausa dibawah :
Select *
From mahasiswa
2. Klausa Where
Berikut ini adalah contoh untuk menampilkan semua atribut untuk mahasiswa dengan NIM=’980002′:
Select *
From mahsiswa
Where nim = ‘980002’
Apa tampilan dari perintah dibawah ini :
Select *
From kuliah
Where semester between 3 and 5
3. Klausa Form
Ekspresi berikut menghasilkan table seperti apa :
select *
from kuliah, dosen
where kuliah. kode_dos = dosen.kode_dos
Ekspresi berikut menghasilkan table seperti apa :
apa ? :
select *
from kuliah k, dosen d
where k.kode_dos = d.kode_dos
Ekspresi berikut menghasilkan table seperti apa :
select k.kode_kul, k.nama_kul, d.nama_dos
from kuliah k, dosen d
where k.kode_dos = d.kode_dos
Ekspresi berikut menghasilkan table seperti apa :
select k.kode_kul as kode,
k.nama_kul as kuliah, d.nama_dos as dosen
from kuliah k, dosen d
where k.kode_dos = d.kode_dos
and k.semester = 3
Ekspresi berikut menghasilkan table seperti apa :
select n.nim, m.nama_mhs
k.nama_kul, n.indeks_nilai
from nilai n, mahasiswa m, kuliah k
where n.nim = m.nim
and n.kode_kul = k.kode_kul
MANIPULASI DATA
-
SQL juga dilengkapi dengan sejumlah perintah untuk melakukan manipulasi data seperti penambahan record baru, pengubahan nilai atribut dan penghapusan record didalam suatu tabel.
1. Penambahan Record
Sintaks SQL untuk penambahan record baru ke sebuah tabel adalah :
Insert into t (A1, A2, …, An)
Values (V1, V2, … , Vn)
Di mana :
-
T è nama tabel yang akan mengalami penambahan record
-
A1, A2,… , An adalah nama-nama atribut yang akan di isi nilai
-
V1, V2, … , Vn adalah nilai-nilai yang akan mengisi atribut-atribut tersebut
MANIPULASI DATA
-
SQL juga dilengkapi dengan sejumlah perintah untuk melakukan manipulasi data seperti penambahan record baru, pengubahan nilai atribut dan penghapusan record didalam suatu tabel.
1. Penambahan Record
Sintaks SQL untuk penambahan record baru ke sebuah tabel adalah :
Insert into t (A1, A2, …, An)
Values (V1, V2, … , Vn)
-
T è nama tabel yang akan mengalami penambahan record
-
A1, A2,… , An adalah nama-nama atribut yang akan di isi nilai
-
V1, V2, … , Vn adalah nilai-nilai yang akan mengisi atribut-atribut tersebut
Ekspresi berikut menghasilkan table seperti apa :
Insert into Mahasiswa (nim, nama_mhs, alamat_mhs, tgl_lahir)
Values (‘980011’, ‘Siti Zubaedah’,
‘Jl. Guntur Kulon 12, Bogor’,
’02/03/1973′)
atau :
insert into Mahasiswa
values (‘980011’, ‘Siti Zubaedah’,
‘Jl. Guntur Kulon 12, Bogor’,
’02/03/1973′)
2. Penambahan record baru dengan perintah berikut :
Insert into Mahasiswa (nim, nama_mhs,
alamat_mhs)
Values (‘980011’, ‘Siti Zubaedah’,
‘Jl. Guntur Kulon 12, Bogor’)
2. Penghapusan Record
-
Sintaks SQL untuk penghapusan record dari sebuah tabel adalah :
Delete from t
[ where p ]
di mana :
-
t adalah nama tabel yang akan mengalami penghapusan record
-
p merupakan predikat atau kriteria untuk menentukan record mana saja yang akan dikenai penghapusan, jika klausa where ini tidak digunakan, maka penghapusan akan dilakukan pada semua record di dalam tabel t
-
Berikut ini adalah perintah SQL untuk menghapus record kuliah tertentu :
Delete from kuliah
Where kode_kul = ‘IF-310’
-
Berikut ini adalah perintah SQL untuk menghapus beberapa record di tabel kuliah :
Delete from kuliah
Where kode_kul like ‘MA%’
-
Sintaks SQL untuk pengubahan nilai atribut pada suatu record dari sebuah tabel adalah :
Update t
Set assignment
[ where P ]
-
t adalah nama tabel yang akan mengalami pengubahan record
-
assignment adalah ekspresi pemberian nilai baru untuk suatu atribut yang akan kita ubah
-
merupakan predikat atau kriteria untuk pemilihan record yang akan dikenai perubahan, jika klausa where ini tidak digunakan, maka perubahan akan dilakukan pada semua record di dalam tabel t
-
Berikut ini adalah perintah SQL untuk mengubah nilai atribut sks untuk mata kuliah tertentu :
Update kuliah
Set sks = 4
Where kode_kul = ‘IF-310’
-
Perintah update digunakan untuk melakukan penambahan gelar di depan nama dosen tertentu berikut ini :
Update dosen
Set nama_dosen = ‘Prof. ‘ + nama_dosen
Where kode_dos = 2
-
Perintah update tanpa klausa where berikut ini dilakukan untuk semua record :
Update nilai
Set indeks_nilai = null
Yang mengakibatkan terisinya null (pengosongan nilai untuk atribut indeks_nilai) pada semua record di tabel Nilai.
3. Pengurutan Hasil Query
-
Ekspresi dasar SQL (dengan tiga klausa : select, from, dan where), è akan menghasilkan query dengan urutan yang sesuai dengan struktur penyimpanan yang kita terapkan pada hasil query.
-
Jika kita menggunakan struktur penyimpanan Heap (tabel tanpa Indeks Primer), è query ditampilkan berdasarkan kronologis penyimpanannya.
-
Jika terhadap tabel query, kita menggunakan struktur penyimpanan Sekeunsial Berindeks (tabel yang memiliki Indeks Primer), maka hasil query akan ditampilkan sesuai dengan atribut yang menjadi dasar Imdeks Primer-nya.
-
Jika kita ingin menampilkan hasil query dengan urutan berdasarkan atribut tertentu, maka kita dapat menambahkan klausa order by.
-
Misalkan, tabel Mahasiswa memiliki Indeks Primer berdasarkan atribut nim (sehingga hasil query ke tabel ini akan disusun berdasarkan nilai atribut nim tersebut), ekspresi SQL untuk menampilkan record-record mahasiswa berdasarkan urutan namanya :
select *
from mahasiswa
order by nama_mhs
Urutan berdasarkan nama tersebut disusun secara ascending.
-
Jika ingin ditampilkan berdasarkan atribut tgl_lahir tapi secara descending, maka pada klausa order by di sertakan pula klausa desc :
select *
from mahasiswa
order by tgl_lahir desc
4. Beberapa contoh kasus Aljabar Relasional dan SQL (dikerjakan oleh mahasiswa secara bersamaan) dengan menggunakan table sbb :
Mahasiswa
Mhs |
Nim |
T_lahir |
Jones Dendi Tomy Paula |
61521 61300 61425 61230 |
05/12/77 28/04/78 01/11/75 14/06/77 |
Kuliah
M_kuliah |
Kode_mk |
Nilai |
Matematika Ekonomi Sejarah b.inggris |
Mat 231 Eko 220 Hst 211 Eng 202 |
3 3 2 2 |
Mhs_kul
Nim |
Kode |
Nilai |
61521 61521 61521 61300 61425 61425 61230 61230 |
Mat 231 Eko 220 Hst 211 Hst 211 Eng 202 Mat 231 Mat 231 Eng 202 |
B A B A C B D C |
Mutu
Nilai |
Bobot |
A B C D E |
4 3 2 1 0 |
a. Cari semua nim dan nama mahasiswa yang tidak lahir tgl 28/04/78
Jawab:
AR : π nim,nama(select t_lahir =|= 28/04/78)(mahasiswa)
SQL :
Select nim, nama
From : mahasiswa
Where : T_lahir <>28/04/78
b. Tampilkan nilai & nim dari mahasiswa yang memperoleh nilai “D”
Jawab : ……………..
c. Tampilkan nilai mahasiswa yang bobotnya diatas “dua”
Jawab : ……………..
d. Tampilkan bobot terkecil
Jawab : ……………..
e. Tampilkan semua entity dengan kode mata kuliah = mat231
Jawab : ……………..
f. Cari semua entity kuliah yang kreditnya “2” dan nama mata kuliahnya “sejarah”
Jawab : ……………..
QBE (QUERY BY EXAMPLE )
-
QBE menyediakan ekpresi query dalam bentuk tabular ( disebut Skeleton ).
-
Dengan menggunakan satu atau lebih tabel user dapat mengekspresikan suatu query dengan hanya memberikan karakteristik informasi yang dicari.
-
Query untuk mencari semua KartuID kustomer yang memiliki rekening tipe tabungan dengan saldo lebih dari 4 juta, dapat diekspresikan dengan menggunakan 2 skeleton rekening dan kusRek seperti berikut :
Rekening:
NoRek |
Type |
Saldo |
X |
” tabungan “ |
> 4.000.000 |
KusRek
KartuID |
NoRek |
P. y |
x |
-
Sembarang nama yang didahului dengan garis bawah ( _ ) menunjukkan bahwa nama tersebut adalah nama variabel. Hal ini untuk membedakan antara nama variabel dan nilai dari suatu variabel.
-
Pada contoh diatas ada dua variabel yaitu : _x dan y, dan ada dua nilai variabel yaitu 4.000.000 dan “tabungan”. Simbol P yang mendahului suatu variabel atau nilai variabel digunakan untuk menyatakan perintah cetak (print) atau tampilkan nilai dari suatu variabel. Jadi P.y berarti perintah cetak dari nilai variabel _y.
2. Query untuk mencari semua Nama dan KartuId kustomer yang memiliki rekening tipe tabungan atau tipe cek.
Rekening
NoRek |
Type |
Saldo |
X |
“tabungan” |
|
Z |
“cek” |
KusRek
KartuID |
NoRek |
Y |
X |
Y |
Z |
Kustomer
Nama |
KartuID |
Jalan |
Kota |
P.w |
P.y |