Anda di halaman 1dari 43

R Cheese Milk Bread Eggs Soap 1.34 0.80 0.60 1.20 1.

00

S Cream 5.00 Soap 1.00

R S Cheese Milk Bread Eggs Soap Cream 1.34 0.80 0.60 1.20 1.00 5.00

R Cheese Milk Bread Eggs Soap 1.34 0.80 0.60 1.20 1.00

S Cream 5.00 Soap 1.00

R S Cheese Milk Bread Eggs 1.34 0.80 0.60 1.20

R Cheese Milk Bread Eggs Soap 1.34 0.80 0.60 1.20 1.00

S Cream 5.00 Soap 1.00

R S Soap 1.00

R Cheese Milk Bread Eggs Soap 1.34 0.80 0.60 1.20 1.00

S Cream 5.00 Soap 1.00 Cheese Milk Bread Eggs Soap Cheese Milk Bread Eggs Soap

RS 1.34 Cream 0.80 Cream 0.60 Cream 1.20 Cream 1.00 Cream 1.34 Soap 0.80 Soap 0.60 Soap 1.20 Soap 1.00 Soap 5.00 5.00 5.00 5.00 5.00 1.00 1.00 1.00 1.00 1.00

R:

1 Anne Bob Chris

2 aaa@cs.nott.ac.uk bbb@cs.nott.ac.uk ccc@cs.nott.ac.uk

3 0115111111 0115222222 0115333333

13 ( R):

Anne Bob Chris

0115111111 0115222222 0115333333

Sejarah Struktur Dasar Operasi

IBM mengembangkan versi asli SQL di San Jose Research Laboratory (sekarang Almaden Research Center) Diberi nama SEQUEL, pada tahun 1970an sebagai bagian dari System R Project Sejak itu, bahasa sequel berevolusi dan bergantinama menjadi SQL Di-support banyak aplikasi produk, SQL menjadi bahasa standard basis data relasional

Tahun 1986, ANSI (American National Standards Institute) dan ISO mengumumkan standard SQL, SQL-86 IBM merilis Systems ApplicationArchitecture) SAA-SQL tahun 1987 Berturut-turut ANSI merilis SQL-89, SQL-92, dan SQL- 99

DDL, menyediakan perintah pendefinisian skema relasi, penghapusan relasi, dan modifikasi skema relasi DML, query berdasarkan aljabar relasional dan kalkulus relasional View definition, perintah pendefinisian view Transaction Control, perintah spesifikasi awal dan akhir transaksi

Embedded SQL dan dynamic SQL Integrity, perintah spesifikasi

integrity constraint yang harus dipenuhi data yang tersimpan di database


Authorization, perintah spesifikasi hak akses terhadap relasi dan view

Select, berkaitan dengan operasi proyeksi pada aljabar relasional. Digunakan untuk mendaftar atribut yang ingin dikeluarkan sebagai hasil query From, berkaitan dengan operasi produk kartesian (relasi mana yang akan di-scan) Where, berkaitan dengan predikat seleksi.

Pola umum: select A1, A2, ..., An from r1, r2, ..., rm where

Ai menunjukkan atribut ri menunjukkan relasi P adalah predikat Query di atas ekuivalen dengan ekspresi aljabar relasional berikut A1, A2, ..., An(sP (r1 x r2 x ... x rm)) Hasil dari SQL adalah sebuah relasi

Operasi select digunakan untuk mengambil sebagian atau seluruh isi tabel dari suatu basisdata. Contoh : Tentukan nama-nama dari semua

cabang bank dalam relasi loan

Query-nya : SELECT branch-name FROM loan Dalam sintaks aljabar relasional: branch-name(loan) Hasil dari query tersebut adalah sebuah relasi yang berisi sebuah atribut tunggal dengan nama

branch-name.

Bahasa query formal bersifat matematis dimana relasi adalah sebuah himpunan sehingga tupletuple yang telah muncul tidak akan muncul lagi (tidak akan terjadi duplikasi tuple). Tapi dalam prakteknya untuk menghilangkan duplikasi tuple sangat memakan waktu. Oleh karenanya SQL memungkinkan terjadinya duplikasi tersebut. Dari contoh sebelumnya, maka query-nya akan mencatatsetiap branch-name setiap kali branchname tersebut ditemukan dalam relasi loan.

Jika diinginkan untuk menghilangkan duplikasi maka dapat disisipkan distinct setelah SELECT. Query di atas ditulis ulang

sebagai

berikut : SELECT DISTINCT branch-name FROM loan Jika tuple yang terduplikasi diinginkan hilang. Klausa all, jika duplikasi tidak ingin dihilangkan. SELECT ALL branch-name FROM loan

Tanda bintang (*) berarti semua atribut SELECT * FROM loan Klausa select dapat juga mengandung operasi aritmatika yaitu operator : +, -, *, / dan operasi terhadap konstanta atau atribut dari tuple. Contoh query berikut : SELECT branch-name, loan-number, amount * 100 FROM loan Akan menghasilkan sebuah relasi yang sama dengan relasi loan, kecuali bahwa atribut amount dikalikan dengan 100.

Klausa where menspesifikasi kondisi yang harus dipenuhi oleh hasil query Berkaitan dengan predikat seleksi pada aljabar relasional. Contoh : Temukan semua loan number untuk

pinjamanpinjaman yang dibuat pada cabang Jati Bening dengan jumlah lebih besar dari $1200.
Query-nya ditulis sebagai berikut : SELECT loan-number FROM loan WHERE >1200

Perbandingan dapat dikombinasikan dengan menggunakan operasi logika and, or, dan not. Operand hubungan logika dapat menggunakan operasi perbandingan <,<=,>,>=,=, dan <> Contoh: SELECT loan-number FROM loan WHERE amount <=100000 and amount >=90000

SQL juga memasukkan perintah between untuk menentukan apakah suatu nilai lebih kecil daripada atau sama dengan suatu nilai lain dan lebih besar daripada atausama dengan suatu nilai lain. Contoh : jika diinginkan menemukan loan-

number yang jumlah pinjamannya antara $90000 dan $100000


Query ditulis sebagai berikut : SELECT loan-number FROM loan WHERE amount between 90000 and 100000

Klausa from menunjukkan daftar relasi yang dilibatkan dalam query Contoh: Produk Kartesian dari borrower x
Berkaitan dengan operasi produk kartesian pada aljabar relasional

loan

select * from borrower, loan

Contoh query : Untuk semua customer yang mempunyai

sebuah pinjaman dari bank, temukan nama dan loan number mereka.

Dalam SQL ditulis : SELECT distinct customer-name,borrower.loan-number FROM borrower, loan WHERE borrower.loan-number = loan.loan.number Contoh: Tampilkan nama,loan number and loan amount

dari semua customer yang memiliki pinjaman di cabang Jati Bening select customer-name, borrower.loan-number, amount from borrower, loan where borrower.loan-number = loan.loan-number and branch-name = Jati Bening

Operasi operasi himpunan pada SQL meliputi : union, intersect, dan except. Union identik dengan , intersect identik dengan dan except identik dengan pada aljabar relasional. Setiap operasi tersebut secara otomatis menghilangkan duplikasi; untuk mempertahankan duplikasi gunakan union all, intersect all dan except all. Misalkan sebuah tuple muncul m kali di r dan n kali di s, maka, tuple tersebut akan muncul: m + n kali di r union all s min(m,n) kali di r intersect all s max(0, m n) kali di r except all s

Operator UNION atau UNION ALL digunakan untuk menggabungkan hasil dua buah Query atau lebih dalam satu tampilan Contoh : Untuk mendapatkan semua customer yang mempunyai pinjaman, rekening atau keduanya pada bank Ditulis: (SELECT customer-name FROM depositor) UNION (SELECT customer-name FROM borrower)

Operator INTERSECT digunakan untukmemperoleh data hasil irisan dari dua buah Query atau lebih Contoh : Untuk mendapatkan semua customer yang memiliki pinjaman dan rekening pada bank Ditulis: (SELECT distinct customer-name FROM

depositor)

INTERSECT (SELECT distinct customer-name FROM borrower)

Digunakan untuk memperoleh data hasil Query kiri yang tidak terdapat pada hasil Query kanan. Contoh : Untuk mendapatkan semua customer yang mempunyai sebuah rekening tetapi tidak memiliki pinjaman pada bank Ditulis : (SELECT distinct

depositor)

customer-name

FROM

EXCEPT (SELECT customer-name FROM borrower)

Fungsi agregasi digunakan untuk melakukanoperasi pada kelompok-kelompok baris data. Fungsi ini akan menghasilkan satu baris data untuk setiap kelompok baris data yang ada. Yang termasuk fungsi-fungsi agregasi adalah : Average : AVG Minimum : MIN Maximum : MAX Total : SUM Count : COUNT

Fungsi AVG digunakan untuk memperoleh nilai rata-rata dari seluruh nilai pada suatu kolom. Pemakaian Fungsi Avg: SELECT AVG (nama_kolom) FROM (nama_tabel);

Digunakan untuk memperoleh nilai minimum (yang terkecil) dari suatu kolom. Pemakaian Fungsi Min: SELECT MIN (nama_kolom) FROM (nama_tabel);

Digunakan untuk memperoleh nilai maksimum (yang terbesar) dari suatu kolom. Pemakaian Fungsi Max: SELECT MAX (nama_kolom) FROM (nama_tabel);

Digunakan untuk memperoleh nilai penjumlahan seluruh baris pada suatukolom. Pemakaian Fungsi Sum: SELECT SUM (nama_kolom) FROM (nama_tabel);

Fungsi agregrasi count sering digunakan untukmenghitung jumlah tuple dalam suatu relasi. Pemakaian Fungsi Count: SELECT COUNT (nama_kolom) FROM (nama_tabel); Contoh: Untuk menentukan jumlah tuple dalamrelasi customer, ditulis : SELECT count(*) FROM customer

Jika fungsi agregasi ini ingin diterapkan pada kelompok himpunan tuple, maka digunakan klausa GROUP BY. Nama atribut/kel. Atribut dalam klausa group by digunakan untuk membentuk grup/kelompok. Artinya tuple-tuple yang mempunyai nilai yang sama pada semua atribut dalam klausa group-by dimasukkan dalam satu grup/kelompok. Contoh : tampilkan jumlah depositor untuk setiap cabang select branch-name, count (distinct customer-name) from depositor D, account A where D.account-number = A.account-number group by branch-name Note: Atribut pada klausa select (selain pada fungsi agregasi) harus muncul dalam daftar group by

Jika suatu fungsi diterapkan pada grup/kelompok yang dibentuk oleh group by maka digunakan klausa having setelah group by. Contoh : tampilkan nama cabang yang mempunyai rata-rata saldo lebih dari 1200 SELECT branch-name, avg(balance) FROM account GROUP BY branch-name HAVING avg (balance)>1200

Yang dapat dihapus (delete) hanyalah tuple bukan nilai pada suatu atribut tertentu. Dalam SQL, deletion diekspresikan dengan DELETE FROM r WHERE p Dimana p menunjukkan predikat dan r adalah relasi. Contoh : Hapus semua rekening Ujang DELETE FROM depositor WHERE customer-name = Ujang Contoh: Hapus semua pinjaman dengan jumlah pinjaman antara $1300 dan $1500 DELETE FROM loan WHERE amount between

1300 and 1500

Untuk menambahkan satu tuple dalam relasi digunakan statement insert. Contoh : INSERT INTO account values (Jati Bening,A9732,1200) Query ini identik dengan INSERT INTO account (branch-name, account-number,balance) values (Jati Bening,A-9732,1200)

Dalam situasi tertentu, diinginkan untuk mengganti nilai dalam sebuah tuple tanpa harus mengganti semua nilai dalam tuple tersebut. Untuk tujuan ini dapat digunakan statement update. Contoh : untuk menaikkan saldo para nasabah sebesar 5% ditulis query sebagai berikut : UPDATE account SET balance = balance * 1.05

Untuk menaikkan saldo nasabah sebesar 6% bagi nasabah yang saldonya lebih dari $10000 UPDATE account SET balance = balance *1.06 WHERE balance >10000

Relasi SQL didefinisikan dengan perintah create table: create table r (A1 D1, A2 D2, ..., An Dn, (integrity-constraint1),...,(integrity-constraintk)) r adalah nama relasi setiap Ai adalah nama atribut pada skema relasi

Di adalah tipe data dari domain nilai atribut Ai Contoh: create table branch (branch-name char(15) not null,

branch-city char(30), assets integer)

not null primary key (A1, ..., An) check (P), dimana P adalah predikat Contoh: Deklarasikan branch-name sebagai primary key branch dan pastikan bahwa nilai

dari asset non negatif create table branch (branch-name char(15), branch-city char(30)assets integer, primary key (branch-name),check (assets >= 0))

Perintah drop table menghapus semua informasi mengenai relasi yang di-drop dari basis data. Perintah alter table digunakan untuk menambahkan atribut pada relasi yang ada alter table r add A D dimana A adalah nama atribut yang akan ditambahkan ke relasi r dan D merupakan domain dari A. Semua tuple pada relasi diisi dengan NULL sebagai nilai pada atribut baru. Perintah alter table dapat juga digunakan untuk mendrop atribut dari relasi alter table r drop A dimana A

adalah nama atribut dari relasi r

Dropping atribut tidak didukung pada banyak basis data

Anda mungkin juga menyukai