Download presentation
Presentation is loading. Please wait.
1
SQL Structured Query Language Meizhen Huang
2
Content (4.1 – 4.4) Background Parts of SQL Basic Structure Set Operations Aggregate Functions
3
Background SQL – Structured Query Language Developed by IBM in the 1970 ’ s, originally called Sequel The standard relational-database language Uses relational-algebra and relational- calculus constructs
4
Parts of SQL DDL: commands for defining relation schemas, deleting relations, and modifying relation schemas. DML: based on the relational algebra and the tuple relational calculus. Integrity: commands for specifying integrity constraints for the data in the DB. Authorization: commands for specifying access rights to relations and views.
5
Relations using in Examples Branch-schema = (branch-name, branch-city, assets) Customer-schema = (customer-name, customer- street, customer-city) Loan-schema = (loan-number,branch-name, amount) Borrower-schema = (customer-name, loan-number) Account-schema = (account-number, branch-name, balance) Depositor-schema = (customer-name, account- number)
6
Basic Structure Basic structure of SQL includes three clauses: select, from and where. A typical SQL has the form select A1, A2, …, An from r1,r2, …,rm where P Ai – an attribute ri – a relation p – a predicate This query is equivalent to the relational algebra expression: A1, A2,..., An ( P (r 1 x r 2 x... x r m ))
7
select select – projection in RA select without elimination of duplicates “ Find the names of all branches in the loan relation. ” select branch-name select all branch-name from loan from loan select with elimination of duplicates select distinct branch-name from loan
8
select “ * ” can be used to denote “ all attributes ”. select * from loan The select clause may also contain arithmetic expressions involving the operators +, -, *, and / operating on constants or attributes of tuples. select loan-number, branch-name, amount*100 from loan
9
where where – selection predicate of RA e.g. “ Find all loan numbers for loans made at the Perryridge branch with loan amounts greater that $1200. ” select loan-number from loan where branch-name = ‘ Perryridge ’ and amount > 1200 Note: SQL uses and, or, and not instead of , v, and in the where clause. e.g., select loan-number from loan where amount between 90000 and 100000 Note: similarly, we can use the not between comparison operator.
10
from from – Cartesian-product in RA. “ Find the Cartesian product borrower x loan ” select from borrower, loan
11
from n SQL uses relation-name.attribute-name, as does relational algebra, to avoid ambiguity n “ Find the name, loan number and loan amount of all customers having a loan at the Perryridge branch. ” select customer-name, borrower.loan-number, amount from borrower, loan where borrower.loan-number = loan.loan-number and branch-name = ‘ Perryridge ’
12
Rename Rename can be operated on both relations and attributes. old-name as new-name e.g., select customer-name, borrower.loan- number as loan-id, amount from borrower, loan where borrower.loan-number = loan.loan-number
13
Tuple Variables Tuple variables are defined in the from clause by way of the as clause. “ Find all customers who have a loan from the bank, find their names, loan numbers, and loan amount. ” select customer-name, T.loan-number, S.amount from borrower as T, loan as S where T.loan-number = S.loan-number
14
Tuple Variables Tuple variables are most useful for comparing two tuples in the same relation. “ Find the names of all branches that have assets greater than at least one branch located in Brooklyn. ” select distinct T.branch-name from branch as T, branch as S where T.assets > S.assets and S.branch-city = ‘ Brooklyn ’
15
String Operations The strings are enclosed by single quotes, for example, ‘ Perryridge ’. The most commonly used operation on strings is pattern matching using “ like ”. Pattern has two special characters: * Percent(%):matches any substring * Underscore(_): matches any character - ‘ Perry% ’ matches any string beginning with “ Perry ”. - ‘ _ _ _ % ’ matches any string of at least 3 characters. Note: Patterns are case sensitive.
16
String Operations “ Find the names of all customers whose street address includes the substring ‘ Main ’. ” select customer-name from customer where customer-street like ‘ %Main% ’
17
Ordering the Display of Tuples The order by clause list the result in sorted order. select distinct customer-name from borrower, loan where borrower.loan-number = loan.loan-number and branch- name = ‘ Perryridge ’ order by customer-name Note: by default, the order by clause lists items in ascending order. ( desc or asc ) select * from loan order by amount desc, loan-number asc
18
Set Operations The set operations union, intersect, and except operate on relations and correspond to the relational algebra operations union all, intersect all and except all.
19
Union “ Find all customers having a loan, an account, or both at the bank. ” (select customer-name from depositor) union (select customer-name from borrower)
20
Intersect “ Find all customers who have both a loan and an account at the bank. ” (select distinct customer-name from depositor) intersect (select distinct customer-name from borrower)
21
Except “ Find all customers who have an account but no loan at the bank. ” (select distinct customer-name from depositor) except (select customer-name from borrower)
22
Aggregation Functions Aggregation functions take a collection of values as input and return a single value. * Average: avg (number) * Minimum: min * Maximum: max * Total: sum (number) * Count: count
23
avg “ Find the average account balance at the Perryridge branch. ” select avg (balance) from account where branch-name = ‘ Perryridge ’
24
group by Aggregation function can be applied to a group of sets of tuples by using group by clause. “ Find the average account balance at each branch. ” select branch-name, avg(balance) from account group by branch-name
25
having It is useful to state a condition that applies to groups rather than to tuples. “ Find the branches where the average account balance is more than $1200. ” select branch-name, ave(balance) from account group by branch-name having avg(balance) > 1200
26
The End
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.