Sabtu, 25 April 2015

Resume Basis Data Pertemuan 5



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