">

Sabtu, 14 Mei 2011

STRUCTURE QUERY LANGUAGE (SQL)

·         Merupakan bahasa standar yang digunakan untuk mengakses basisdata relasional.
·         SQL mempunyai kemampuan :
o   Query (memperoleh data)
o   Pendefinisian Struktur Data
o   Pengubahan Data
o   Pengaturan Sekuritas dll
·         Antarmuka SQL terhadap DBMS
  1. SQL sebagai bahasa Administrasi basisdata
Dalam hal ini SQL dipakai oleh DBA untuk menciptakan serta mengendalikan pengaksesan basisdata.
  1. SQL sebagai Query Interaktif
Pengguna dapat memberikan perintah-perintah untuk mengakses basisdata yang sesuai dengan kebutuhannya.
  1. SQL sebagai bahasa Pemrograman basisdata
Pemrograman dapat menggunakan perintah-perintah SQL dalam program aplikasi yang dibuat guna mengakses basisdata.
  1. SQL sebagai bahasa Client/Server
SQL juga dapat dipakai untuk mengimplementasikan sistem client/server. Sebuah client dapat menjalankan sesuatu aplikasi yang mengakses basisdata yang ada pada server. Dalam hal ini SO antara server dengan client boleh berbeda. Di lingkungan PC, pengaksesan data antar DBMS yang berbeda dapat dilakukan dengan mudah berkat adanya ODBC(Open Database Connectivity).

·         Elemen SQL
Elemen dasar SQL mencakup pernyataan, nama, tipe data, konstanta, ekspresi dan fungsi kembali.
  1. Pernyataan SQL
Pernyataan adalah perintah SQL yang meminta sesuatu tindakan kepada DBMS. Pernyataan dasar SQL meliputi : INSERT, DELETE, UPDATE, SELECT, CREATE, dll.
  1. Nama
Nama digunakan sebagai identitas bagi objek-objek pada DBMS. Contoh Objek pada DBMS adalah tabel, kolom dan pengguna.
  1. Tipe Data
Setiap data mempunyai tipe data. Tipe data standar : CHAR, INTEGER, NUMERIC.
  1. Konstanta
Konstanta mempunyai nilai yang tetap.
Contoh konstanta :
    1. Konstanta numeric : 123, -245
    2. Konstanta String : ’ABC’
  1. Ekspresi
Segala sesuatu yang menghasilkan nilai. Ekspresi digunakan untuk menghitung nilai.
Contoh : (LABA/MODAL)*1000
Ekspresi aritmatika yang digunakan : *, /, +,-
  1. Fungsi Bawaan
Fungsi adalah sebuah sub program yang menghasilkan suatu nilai jika dipanggil.
SQL mempunyai sejumlah fungsi bawaan, yaitu : -, MIN, MAX, AVG

·         Kelompok Pernyataan SQL
Dikelompokkan menjadi 5 kelompok.
  1. Data Definition Languge (DDL)
·         Merupakan kelompok perintah yang berfungsi untuk mendefinisikan atribut-atribut basisdata, tabel, atribut, batasan terhadap satu atribut serta hubungan antar tabel.
·         Contoh : CREATE, ALTER, DROP
  1. Data Manipulation Language (DML)
·         Untuk memanipulasi data dalam basisdata.
·         Perintah yang termasukl dalam kategori DML : SELECT, INSERT, DELETE, UPDATE.
  1. Data Control Language (DCL)
·         Untuk mengendalikan pengaksesan data.
·         Pengendalian dapat dilakukan berdasar per pengguna, per tabel, per kolom maupun per operasi.
·         Termasuk DCL : GRANT, REVOKE, LOCK TABLE.
  1. Pengendali Transaksi
·         Adalah perintah-perintah yang berfungsi untuk mengendalikan pengeksekusian transaksi.
·         Yang termasuk kategori ini : COMMIT, ROLLBACK.
  1. Pengendali Programatik
·         Mencakup pernyataan-pernyataan yang berhubungan dengan pemanfaatan SQL dalam bahasa lain.
·         Contohnya seperti pada COBOL
·         Pengendali programatik : DECLARE, OPEN FETCH, CLOSE.

·         Bekerja dengan SQL
  1. Menciptakan sebuah Tabel
Sintaks : CREATE TABLE
Contoh :
Create Table Pengarang(
Kd_pengarang         INTEGER UNIQUE NOT NULL,
Nama                         CHAR(15) NOT NULL,
Alamat                       CHAR(30),
Kota                            CHAR(15))
Keterangan :
UNIQUE : nilai kolom tidak boleh ada yang sama hrs tunggal/unik.
NOT UNIQUE : nilai kolom boleh sama.
NULL : nilai kolom tidak boleh kosong.
NOT NULL : nilai kolom boleh kosong.
  1. Menciptakan Indeks
·         Tujuan dibuatnya indeks :
1.    Indeks dapat meningkatkan Kinerja.
2.    Indeks menjamin bahwa suatu kolom bersifat Unik.
·         Sintaks : CREATE INDEX idx_(nama atribut) ON nama tabel(Nama Atribut)
·         Contoh :
Create Indeks idx_Kd_Pengarang
ON Pengarang(Kd_pengarang)
·         Apabila atribut yang diindeks bersifat UNIQUE maka penulisannya :
Create Unique Indeks idx_Kd_Pengarang
ON Pengarang(Kd_pengarang)
  1. Menambahkan Data
·         Sintaksnya : INSERT INTO nama tabel VALUES (   ,   )
·         Contohnya : Insert Into Pengarang Values(1, ’A’, ’Jl.Dago’, ’Bandung’)
  1. Mengubah Data
·         Sintaksnya :        UPDATE nama tabel
            SET Atribut = Isi atribut baru(Values baru)
            WHERE kondisi
·         Contohnya :
UPDATE Pengarang
SET Alamat = ’Jl. Dago’ (’Jl. Dipatiukur’)
WHERE kd_Pengarang = 1
  1. Menghapus Data
·         Sintaksnya : DELETE FROM nama tabel WHERE Kondisi
·         Contohnya :
DELETE FROM Pengarang
WHERE Kd_pengarang = 1

  1. Pernyataan SELECT
·         Untuk menampilkan isi tabel
·         Contohnya : SELECT Kd_Pengarang, Nama
    FROM Pengarang
Hasilnya : Menampilkan semua isi atribut Kd_pengarang, Nama dari tabel Pengarang.
·         Pernyataan SELECT dengan berbagai Kondisi
1.    Mengurutkan menurut suatu kolom
SELECT nama atribut
FROM nama tabel
ORDER BY nama atribut yang akan diurutkan DESC/ASC
2.    Pernyataan SELECT dengan melakukan Pengelompokkan
SELECT nama atribut
FROM nama tabel
GROUP BY nama atribut /Kolom
3.    Pernyataan SELECT dengan menggunakan MAX, MIN, AVG, SUM
SELECT MAX(nama Atribut)
FROM nama tabel
Ket : untuk yang lainnya sama
  1. Menggunakan Klausa WHERE
a.    Untuk menampilkan dengan berbagai kondisi
b.    Operator pengikutnya : AND, OR, NOT, BETWEEN-AND, IN, LIKE
c.    Serta operator pembanding : >,<, =, >=, <=, <>
d.    Contoh :
SELECT nama_kota
FROM Pengarang
WHERE Kota = ”Bandung’ OR Kota = ’Solo”
  1. SELECT DISTINCT
a.    Untuk menampilkan isi tabel, dimana apabila ada isi record yang sama hanya ditampilkan 1 kali saja
b.    Contoh :
SELECT DISTINCT nama atribut
FROM nama tabel
WHERE kondisi
c.    Catatan pada klausa WHERE untuk operator LIKE pada penulisannya diikuti %.
SELECT DISTINCT nama atribut
FROM nama tabel
WHERE nama LIKE ’A%'














Aljabar Relasional


Relational Algebra (aljabar relasional) merupakan kumpulan operasi terhadap relasi dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru dan termasuk kategori prosedural dan juga menyediakan seperangkat operator untuk memanipulasi data.
Terdapat lima operasi dasar dalam aljabar relasional, yaitu:
1. Selection ( s)
2. Projection ( p)
3. Cartesian – product ( X, juga disebut sebagai cross product )
4. Union ( È)
5. Set – difference ( - )
6. Rename ( r)

Operasi – operasi turunan dari operasi – operasi dasar tersebut adalah:
1. Set intersection Ç
2. Theta join ( q)
3. Natural-join ( )
4. Outer-join ( )
5. Division ( :)
Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karenabahasa berdasar sejumlah operator yang beroperasi pada relasi – relasi (tabel – tabel). Masing – masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi – relasi lain sebagai hasil. Query adalah sekedar ekspresi yang melibatkan operator – operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap query.
SQL adalah bahasa yang deklaratif yang berarti tidak menspesifikasikan algoritma yang digunakan untuk pengolahan query. Ekspresi relasional dapat dipandang sebagai spesifikasi algoritma (meskipun dalam level lebih tinggi dibanding algoritma untuk bahasa pemrograman konvensional). Pemrogram menggunakan query SQL, DBMS menggunakan aljabar relasional sebagai bahasa antara dalam spesifikasi algoritma query. Langkah – langkah dalam DBMS untuk pengolahan query adalah:
1. DBMS melakukan parsing terhadap string dari query SQL dan menerjemahkannya menjadi ekspresi aljabar relasional yang dapat menuntun kedalam algoritma sederhana yang tidak efisien.
2. Setelah itu, bagian query optimizer mengkonversi ekspresi aljabar relasional ini menjadi ekspresi lain yang ekvivalen nemun lebih efisien untuk dieksekusi.
3. Berdasarkan ekpresi aljabar relasional yang telah dioptimasi, query optimizer
mempesiapkan rencana eksekusi query (query execution plan) yang kemudian
ditransformasikan menjadi kode yang dapat dieksekusi pembangkit kode di DBMS.
4. Karena ekspresi aljabar mempunyai semantik matematika yang presisi maka sistem dapat memferifikasi ekvivalensi ekspresi yang dioptimasi yang dihasilkan dari manipulasi ekpresi asal. Semantiks ini juga memungkinkan pembandingan rencana – rencana evaluasi query yang berbeda.
Aljabar relasional merupakan kunci pemahaman kerja internal DBMS relasional, pemahaman aljabar relasional merupakan hal yang esensi dlam merancang query SQL yang diolah secara efisien. Aljabar relasional banyak digunakan pada optimasi query dan pengolahan query tersebar. Aljabar relasional mendefinisikan sekumpulan operator dan rumus untuk memanipulasi himpunan data.
.1. Operasi aljabar relasional
Untuk mengimplementasikan kedalam operasi aljabar relasional, berikut ini diberikan relasi – relasi dari database Penjadwalan_mengajar_dosen pada STMIK ‘Revanda Jaya’ Bekasi. Relasi – relasi tersebut meliputi:
1. Dosen
Dosen ={nid,nama_d,tempat_lhr,tgl_lahir,jkelamin,alamat,kota,kodepos,gpokok}
Primary key relasi Dosen adalah nid, karena tidak ada seorang dosen yang nid (nomor induk dosen) sama dengan dosen yang lainnya.

2. Matakuliah
Matakuliah ={kdmk,nama_mk,sks,semester}
Primary key relasi Matakuliah adalah kdmk, karena tidak ada kode suatu matakuliah yang kdmk (kode matakuliah) sama dengan matakuliah yang lainnya.
Dengan data value sebagai berikut:

3. Jurusan

Jurusan ={kode_jur,nama_jur,sjenjang,nama_kajur}
Primary key relasi Jurusan adalah kode_jur, karena tidak ada kode_jur (kode jurusan) yang sama dengan jurusan yang lainnya.
Dengan data value sebagai berikut:

4. Mengajar
Mengajar ={nid,thn_akademik,smt,hari,jam_ke,kdmk,waktu,kelas,kode_jur}
Primary key relasi Matakuliah adalah nid,thn_akademik,smt,hari,jam_ke, kondisi :
*     Bila primary key nid,thn_akademik, maka tidak bisa karena seorang dosen pada tahun akademik yang sama bisa mengajar lebih dari satu matakuliah.
*     Bila primary key nid,thn_akademik,smt, maka tidak bisa karena seorang dosen pada tahun akademik dan semester yang sama bisa mengajar lebih dari satu matakuliah.
*     Bila primary key nid,thn_akademik,smt,hari, maka tidak bisa karena seorang
dosen pada tahun akademik, semester dan hari yang sama bisa mengajar lebih dari satu matakuliah.
*     Sehingga primary key pada relasi mengajar adalah    nid,thn_akademik,smt,hari,jam_ke, maka unik dan dijadikan primary key pada
 relasi tersebut.

2. Operasi Selection ( s)
Selection / Select (s), adalah operasi untuk menyeleksi tupel – tupel yang memenuhi suatu
predikat, kita dapat menggunakan operator perbandingan (<,>,>=,<=,=,#) pada predikat. Beberapa
predikat dapat dikombinasikan menjadi predikat manjemuk menggunakan penghubung AND ( ∧) dan
OR (È).
Contoh operasi Select:
a. Contoh 1
1. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Bekasi’.
2. Aljabar relasional:
tempat_lhr=’Bekasi’ (Dosen)
3. Hasilnya 

b. Contoh 2
1. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Jakarta’ atau ‘Bogor’
2. Aljabar relasional:
tempat_lhr=’Jakarta’ ∨tempat_lhr=’Bogor’ (Dosen)
3. Hasilnya adalah:
c. Contoh 3
1. Query : Tampilkan daftar dosen yang tempat lahirnya di ‘Bogor’ dan jenis kelaminnya ‘Pria’
2. Aljabar relasional:
tempat_lhr=’Bogor’ ∧jkelamin=’Pria’ (Dosen)
3. Operasi Projection ( p)
            Projection / Project ( p), adalah operasi untuk memperoleh kolom – kolom tertentu. Operasi project adalah operasi unary yang mengirim relasi argument dengan kolom – kolom tertentu. Karena relasi adalah himpunan, maka baris – baris duplikasi dihilangkan.
Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :
pcolum1,…,column ( tabel)
Contoh operasi Project:
a. Contoh 1
1. Query : Tampilkan nid,nama_d,alamat,kota dari relasi Dosen
2. Aljabar relasional:
pnid,nama_d,alamat,kota(Dosen)
3. Hasilnya adalah:
b. Contoh 2
1. Query : Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana gaji
pokoknya lebih besar dari Rp.1200000
2. Aljabar relasional:
nid,nama_d,alamat,kota,gajipokok( sgajipokok>1200000 (Dosen))
3. Hasilnya adalah:
c. Contoh 3
4. Query : Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana kota
alamatnya ‘Cibitung’ dan gaji pokoknya lebih besar dari Rp.1000000
5. Aljabar relasional:
pnid,nama_d,alamat,kota,gajipokok( kota=’Cibitung’ ∧gajipokok>1000000 (Dosen))
6. Hasilnya adalah:
4. Operasi Cartesian-product ( X )
Cartesian-product ( X ), adalah operasi untuk menghasilkan table hasil perkalian kartesian.
Sintaks yang digunakan dalam operasi proyeksi ini adalah sebagai berikut :
R X S = {(x,y) | xÎR dan yÎS}
Operasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa relasi, operasi ini adalah operasi biner. Sebagaimana telah dinyatakan bahwa relasi adalah subset hasil cartesian-product dan himpunan domain relasi – relasi tersebut. Kita harus memilih atribut – atribut untuk relasi yang dihasilkan dari cartesian-product.
Contoh operasi Cartesian-product:
a. Contoh 1
1. Query : Tampilkan nid,nama_d (dari relasi Dosen), nama_mk (dari relasi Matakuliah), thn_akademik,smt,hari,jam_ke,waktu,kelas (dari relasi Mengajar) dimana semester mengajar adalah pada semester ‘1’.
2. Aljabar relasional:
pnid,nama_d,nama_mk, thn_akademik,smt,hari,jam_ke,waktu,kelas ( ssmt=1 ∧
Dosen.nid=Mengajar.nid ∧Mengjar.kdmk=Matakuliah.kdmk(DosenxMatakuliahxMengajar))
atau:
s(Mengajar.nid=Dosen.nid ∧Mengajar.kdmk=Matakuliah.kdmk) ∧smt=1 ((( 
nid,nama_d (Dosen)) X (pnama_mk (Matakuliah)) X (p thn_akademik,smt,hari,jam_ke,waktu,kelas (Mengajar)))))
3. Hasilnya adalah:
b. Contoh 2
1. Query : Tampilkan nama_d (dari relasi Dosen), nama_mk,sks (dari relasi Matakuliah),
hari,jam_ke,waktu (dari relasi Mengajar) dimana sks matakuliah >3 atau hari mengajar = ‘Jumat’.
2. Aljabar relasional:
pnama_d,nama_mk,sks,hari,jam_ke,waktu ( ssks>3 ∨hari=’Jumat’ ∧
Mengajar.nid=Dosen.nid ∧Mengajar.kdmk=Matakuliah.kdmk(MengajarxDosenxMatakuliah))
atau:
s(Mengajar.nid=Dosen.nid ∧Mengajar.kdmk=Matakuliah.kdmk) ∧(sks>3 ∨hari=’Jumat’
((( pnama_d (Dosen)) X (pnama_mk,sks (Matakuliah)) X (phari,jam_ke,waktu (Mengajar)))))
3. Hasilnya adalah:
b. Contoh 3
1. Query : Tampilkan kdmk,nama_mk,sks (dari relasi Matakuliah), smt,hari,jam_ke,waktu (dari relasi Mengajar) dimana semester (smt) yang diajar dosen pada semester ‘1’ dan jam_ke ‘1’
2. Aljabar relasional:
pkdmk,nama_mk,sks,smt,hari,jam_ke,waktu ( ssmt=1 ∧jam_ke=’1’ ∧
Mengajar.kdmk=Matakuliah.kdmk(MengajarxMatakuliah))
atau:
sMengajar.kdmk=Matakuliah.kdmk ∧smt=1 ∧jam_ke=’1’ (( pkdmk,nama_mk,sks
(Matakuliah)) X ( phari,jam_ke,waktu (Mengajar)))
3. Hasilnya adalah:
.5. Operasi Union ( È)
Union ( È), adalah operasi untuk menghasilkan gabungan table degan syarat kedua table memiliki atribut yangsama, yaitu domain atribut ke-i masing – masing table harus sama. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :
R ÈS = {x | x€R atau X €S}
Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang sama sehingga jumlah komponennya sama.
      R                                             S
A         B                                A         B
D         A                                 D         A
C         F                                H           T
G         H                               G           H
         R ÈS adalah:

A         B
D         A
C         F
G         H
H         T

Contoh operasi Union:
a. Contoh 1
1. Query : Tampilkan nid (dari relasi Dosen) Union dari nid (dari relasi Mengajar) .
2. Aljabar relasional:
pnid (Dosen) Ènid (Mengajar)
3. Hasilnya adalah



.6. Set-difference ( --- )
Set-difference ( -- ), adalah operasi untuk mendapatkan table pada suatu relasi, tapi tidak ada pada relasi yang lainnya. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :
R – S = { x | xÎR dan X ÏS}
Operasi ini dapat dilaksanakan apabila R dan S mempunyai atribut yang tidak sama yang akan ditampilkan, artinya adalah atribut R yang tidak ada di S akan ditampilkan, sedangkan atribut yang sama tidak ditampilkan.
a. Contoh 1
1. Query : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar).
2. Aljabar relasional:
pnid (Dosen) -- nid (Mengajar              
3. Hasilnya adalah:

.7. Rename ( r)
Rename ( r), adalah operasi untuk menyalin table lama kedalam table yang baru. Sintaks yang digunakan dalam operasi union ini adalah sebagai berikut :
[nama_table] (table_lama)
a. Contoh 1
1. Query : Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis
kelaminnya adalah ‘Pria’.
2. Aljabar relasional:
µDosenNew ( µjkelamin=’Pria’) (Dosen))
3. Hasilnya adalah:
Untuk operasi rename ini hasil dari perintah tersebut adalah membentuk table baru
dengan nama DosenNew beserta datanya dimana jenis kelaminnya adalah ‘Pria’
.8. Set-intersection ( Ç)
Set-intersection / Intersection ( Ç) termasuk kedalam operator tambahan, karena operator ini dapat diderivikasi dari operator dasar seperti berikut:
A ÇB = A - ( A – B ), atau A ∩B = B - ( B – A )
Operasi ini merupakan operasi binary, yang digunakan untuk membentuk sebuah relasi baru dengan tuple yang berasal dari kedua relasi yang dihubungkan, misalkan:
     R1                                                                   R2
X            Y                                                        X          Y
A            C                                                       D          F
B             F                                                       A           C
H          I
 R1 ÇR2 adalah:
    A           B
    A            C
a. Contoh 1
1. Query : Tampilkan nid (dari relasi Dosen) Set-intersection dari nid (dari relasi Mengajar).
2. Aljabar relasional:
pnid (Dosen) Çnid (Mengajar)            
3. Hasilnya adalah:
.9. Theta-join ( ) / Equi-join ( )
Theta-join ( ) dan equi-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria
a. Contoh 1
1. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar
2. Aljabar relasional:
Matakuliah Mengajar.kdmk=Matakuliah.kdmk Mengajar
3. Hasilnya adalah:
10. Natural-join (       )
Natural-join (        ) sama seperti operasi equi-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang sama.
a. Contoh 1
1. Query : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar
2. Aljabar relasional:
Matakuliah         Mengajar.kdmk=Matakuliah.kdmk Mengajar
3. Hasilnya adalah:
11. Outer-join (                  )
Outer-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang sama.
a. Contoh 1
1. Query : Tampilkan nid_nama_d (dari relasi Dosen) dan thn_akademik,smt,hari,jam_ke,waktu (dari relasi Mengajar) dengan outer join, artinya adalah pada kolom nid,nama_d pada relasi Dosen akan ditampilkan walaupun dosen tersebut tidak melakukan transaksi mengajar.
2. Aljabar relasional:
pnid,nama_d (Dosen)                               pthn_akademik,smt,hari,jam_ke,waktu (Mengajar)
3. Hasilnya adalah:
12 Devision ( ¸)
Devision ( ¸) adalah operasi yang banyak digunakan dlam query yang mencakup frase “setiap” atau “untuk semua”, operasi ini juga merupakan pembagian atas tuple – tuple dari dua relasi.
a. Contoh 1
1. Query : Tampilkan nid,hari, waktu (dari relasi Mengajar) dan nid (dari relasi Dosen) dimana dosen yang jenis kelaminnya ‘Pria’ dan lakukan devision pada kedua relasi tersebut.
2. Aljabar relasional:
pnid,hari,waktu (Mengajar)) ( pnid (sjkelamin=’Pria’ (Dosen)))
4. Hasilnya adalah:
pnid,hari,waktu (Mengajar                               pnid (sgajipokok>1300000 (Dosen))
   

1 komentar: