BAHASA QUERI KOMERSIAL
Berdasarkan acuan model
relasional, ada 2 bahasa query komersial yang tersedia :
SQL dan QBE masing-masing
mewakili bahasa query prosedural dan non-prosedural.
1. SQL ( Sructured
Query Language )
a. SQL dibangun è dengan basis aljabar
relasional yang dijelaskan bab sebelumnya.
b. 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.
SQL tidak menyediakan
hal-hal berikut :
1. Pernyataan penguji
kondisi (semacam IF pada COBOL).
2. Pernyataan
pengulangan/iterasi (semacam REPEAT pada Pascal).
g. Antarmuka SQL terhadap DBMS
SQL dapat dipakai oleh
berbagai kalangan (DBA, Pemrogram, ataupun Pengguna).
1. SQL sebagai bahasa
administrasi basis data
2. SQL sebagai bahasa
qury interaktif.
3. SQL sebagai bahasa
pemrograman basis data
4. SQL sebagai bahasa
klien/server
ELEMEN SQL
· Elemen dasar SQL
1. 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
|
2. Nama
Nama digunakan sebagi
identitas bagi objek-objek pada DBMS. Contoh objek pada DBMS adalah tabel,
kolom, dan pengguna.
3. 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
4. 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.
5. 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 :
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
1. 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)
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
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 ]
Di mana :
¨ 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.
1. 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
|