Basis Data Bagian IV SQL (3) Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan
Deletion
Yang dapat dihapus (delete) hanyalah tuple bukan nilai ada 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 Smith”
DELETE FROM depositor WHERE customer-name = “Smith”
Contoh: “Hapus semua pinjaman dengan jumlah pinjaman antara $1300 dan $1500”
DELETE FROM loan WHERE amount between 1300 and 1500
Contoh Query
“Hapus semua account pada cabang Perryridge”
delete from account where branch-name = „Perryridge‟
“Hapus semua account di setiap cabang yang berlokasi di Needham city”
delete from account where branch-name in (select branch-name from branch where branch-city = „Needham‟) delete from depositor where account-number in (select account-number from branch, account where branch-city = „Needham‟ and branch.branch-name = account.branch-name)
Insertion
Untuk menambahkan satu tuple dalam relasi digunakan statement insert. Contoh :
INSERT INTO account values (“Perryridge”, ”A-9732”,1200)
Query ini identik dengan
INSERT INTO account (branch-name, account-number, balance) values (“Perryridge”,”A-9732”,1200)
Insert juga dapat dilakukan untuk suatu hasil dari query yang lain. Contoh :
INSERT INTO account SELECT branch-name, loan-number, 200 FROM loan WHERE branch-name = “Perryridge”
Contoh Query
Semua loan customer yang mempunyai account di branch Perryridge mendapat tambahan $200. Dimana loan number menjadi account number untuk setiap account yang baru
insert into account select loan-number, branch-name, 200 from loan where branch-name = „Perryridge‟ insert into depositor select customer-name, loan-number from loan, borrower where branch-name = ‘Perryridge‟ and loan.account-number = borrower.account-number
Update
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
Contoh Query
Untuk menaikkan saldo nasabah sebesar 6% bagi nasabah yang saldonya lebih dari $10000
UPDATE account SET balance = balance *1.06 WHERE balance >10000
Contoh Query
Naikkan semua account dengan saldo di atas $10,000 sebesar 6%, account yang lain sebesar 5%. Ada dua dua statemen update:
update account set balance = balance * 1.06 where balance > 10000 update account set balance = balance * 1.05 where balance £ 10000
Urutan statemen PENTING!!
Contoh Query
Query yang sama dengan sebelumnya: Naikkan semua account dengan saldo di atas $10,000 sebesar 6%, account yang lain sebesar 5%.
update account set balance = case when balance <= 10000 then balance *1.05 else balance * 1.06 end
Relasi Join
Operasi join melibatkan dua buah relasi dan mengembalikan satu relasi baru sebagai hasil. Biasanya digunakan sebagai ekspresi subquery pada klausa from Kondisi Join – mendefinisikan tuple mana dari dua relasi yang sesuai dan atribut apa yang ditampilkan pada hasil join. Tipe Join – mendefinisikan bagaimana tuple dari tiap relasi yang tidak memenuhi kondisi diperlakukan.
Contoh Dataset
Inner Join
Left Outer Join
Natural Inner Join
Natural Right Outer Join
Full Outer Join
Contoh Query
“Tampilkan semua customer yang memiliki account atau loan (tapi tidak keduanya) di bank”
select customer-name from (depositor natural full outer join borrower) where account-number is null or loan-number is null
Definisi Skema Di SQL
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 r – 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)
Integrity Constraint
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 nonnegatif”
create table branch (branch-name char(15), branch-city char(30) assets integer, primary key (branch-name), check (assets >= 0))
Drop dan Alter Table
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