SQL 2006
SQL 2006
Relation schemas
Branch_schema = (branch_name, branch_city, assets) Customer_schema = (customer_name, customer_street, customer_city) Loan_schema = (branch_name, loan_number, amount) Borrower_schema = (customer_name, loan_number) Account_schema = (branch_name, account_number, balance) Depositor_schema = (customer_name, account_number)
Basic Structure
select A1, A2, , An from r1, r2, , rm where P Ekuivalen dengan ekspresi aljabar relasional A1,
A2, , An(P
(r1 r2 rm))
select distinct customer_name, borrower.loan_number from borrower, loan where borrower.loan_number=loan.loan_number and branch_name=STIE
Rename Operation
Bentuk umum : old_name as new_name select distinct customer_name, borrower.loan_number as loan_id from borrower, loan where borrower.loan_number=loan.loan_ number and branch_name=STIE
Tuple Variables
select distinct customer_name, T.loan_number from borrower as T, loan as S where T.loan_number=S.loan_number
select distinct T.branch_name from branch as T, branch as S where T.assets > S.assets and S.branch_name=UGM
String Operations
Pattern matching : operator like, dengan dua karakter khusus : Percent (%) : % karakter matches sebarang substring. Underscore ( _ ) : karakter _ matches sebarang karakter
Functions on character strings : concatenation (biasanya ||), menentukan panjang strings, meng-extract substrings, mengkonversi antara uppercase dan lowercase, dst.
Duplicates
Diketahui multiset relation r1 dan r2, 1) Jika ada c copies t1 r1, dan t1 memenuhi pemilihan , maka ada c1 copies dari t1 (r1). 2) Untuk masing-masing copy dari t1 r1, ada copy dari tuple A(t1) dalam A(r1), di mana A(t1) menunjukkan projeksi dari tuple tunggal t1. 3) Jika ada c1 copies dari t1 r1, dan c2 copies dari t2 r2, ada c1*c2 copies dari t1.t2 r1 r2.
Set Operations
Union Operasi union secara otomatis menghilangkan duplicates union all. Intersect Seperti operasi union, jika ingin mempertahankan duplicates, digunakan intersect all. Except Seperti operasi union dan intersection (dalam memperlakukan duplicates).
Aggrregate Functions
select avg(balance) from account where branch_name=UGM select branch_name, avg(balance) from account group by branch_name having avg(balance) > 1200
Nested Subqueries
Set membership
select distinct customer from borrower where customer_name in (select customer from depositor) select distinct customer_name from borrower where customer_name not in (select customer_name from depositor)
Set Comparison
select distinct T.branch_name from branch as T, branch as S where T.assets > S.assets and S.branch_city = Bandung select branch_name from branch where assets >some (select assets from branch where branch_city = Bandung)
select branch_name from branch where assets >all (select assets from branch where branch_name = UGM) select branch_name from account group by branch_name having avg(balance) >=all (select avg(balance) from account group by branch_name)
Derived Relations
(select branch-name, avg(balance) from depositor group by branch-name) as result(branch-name, avg-balance)
select branch-name,avg-balance from (select branch-name, avg(balance) from depositor group by branch-name) as result (branch-name, avg-balance) where avg-balance > 1200
Views
Bentuk perintah membuat view : create view v as <query expression> dengan <query expression> merupakan ekspresi query yang syah. create view branch-total-loan(branch-name, total-loan) as select branch-name, sum(amount) from loan group by branch-name