sql
play

SQL SQL = S tructured Q uery L anguage CS 2550 / Spring 2006 since - PowerPoint PPT Presentation

SQL SQL = S tructured Q uery L anguage CS 2550 / Spring 2006 since early 1970s Principles of Database Systems Combination of relational algebra and relational calculus constructs 03 SQL More acronyms: DML: D ata M


  1. SQL  SQL = S tructured Q uery L anguage CS 2550 / Spring 2006  since early 1970s Principles of Database Systems  Combination of relational algebra and relational calculus constructs 03 – SQL  More acronyms:  DML: D ata M anipulation L anguage Alexandros Labrinidis  DDL: D ata D efinition L anguage University of Pittsburgh  Includes view definition, integrity constraints, authorization control 2 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Relation Schema Example Basic Structure  A typical SQL query has the form: select A 1 , A 2 , ..., A n  RA projection Account (account_number, branch_name, balance)  from r 1 , r 2 , ..., r m  RA cartesian product Branch (branch_name, branch_city, assets) where P  RA selection   A i represent attributes Customer (customer_name, customer_street, customer_city)   r i represent relations For simplicity assume customer_name unique   P is a predicate Depositor (customer_name, account_number)   Query is equivalent to the relational algebra expression: Loan (loan_number, branch_name, amount) ∏ A 1 , A2, ..., An ( σ P (r 1 x r 2 x ... x r m ))  NOTE: SQL results may contain duplicates Borrower (customer_name, loan_number)   The result of an SQL query is a relation. 3 4 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 1

  2. SQL – select SQL – select – II  SQL allows duplicates in relations and in query results  select clause lists attributes desired in the result  corresponds to the projection operation of the relational algebra  To force elimination of duplicates, insert keyword distinct after select  E.g. find the names of all branches in the loan relation select branch_name  E.g. find the names of all branches in the loan relations, from loan and remove duplicates  Same query, in the “pure” relational algebra syntax: select distinct branch_name ∏ branch_name ( loan) from loan  NOTE: SQL does not permit the ‘-’ character in names,  Keyword all specifies that duplicates not be removed  NOTE: SQL names are case insensitive, i.e. you can use select all branch_name from loan capital or small letters 5 6 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 SQL – select – III SQL – where  An asterisk in the select clause denotes “all attributes”  where clause specifies conditions the result must satisfy  corresponds to the selection predicate of the relational algebra select * from loan  Example:  find all loan number for loans made at the Perryridge branch  select can contain arithmetic expressions with loan amounts greater than $1200 select loan_number  Similar to generalized projection from Relational Algebra from loan  Can involve the operation, +, –, *, and /, where branch_name =`Perryridge’ and amount > 1200  Can operate on constants or attributes of tuples  Comparison results can be combined using and, or, not  Example:  Comparisons can be applied to results of arithmetic select loan_number, branch_name, amount * 100 expressions from loan 7 8 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 2

  3. SQL – where – II SQL – from  SQL includes a between comparison operator  from clause lists the relations involved in the query  corresponds to the Cartesian product operation of the relational algebra  Example:  Find the loan number of those loans with loan amounts between  Examples: $90,000 and $100,000 (that is, ≥ $90,000 and ≤ $100,000)  Find the Cartesian product borrower x loan select loan_number select * from loan from borrower, loan where amount between 90000 and 100000  Find the name, loan number and loan amount of all customers is equivalent to: having a loan at the Perryridge branch. select loan_number select customer_name, borrower.loan_number, amount from loan from borrower, loan where amount >=90000 and amount <= 100000 where borrower.loan_number = loan.loan_number and branch_name = ‘ Perryridge ’ 9 10 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 SQL – rename SQL – tuple variables  SQL allows renaming relations and attributes using the  Tuple variables are defined in the from clause via the as clause: use of the as clause old_name as new_name  Examples:  Find the customer names and their loan numbers for all customers having a loan at some branch.  Example: select customer_name, T.loan_number, S.amount  Find the name, loan number and loan amount of all customers; from borrower as T, loan as S rename the column name loan_number as loan_id where T.loan_number = S.loan_number  Find the names of all branches that have greater assets than select customer_name, borrower.loan_number as loan_id, amount some branch located in Brooklyn from borrower, loan select distinct T.branch_name from branch as T, branch as S where borrower.loan_number = loan.loan_number where T.assets > S.assets and S.branch_city = `Brooklyn’ 11 12 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 3

  4. SQL – like SQL – order  Like  Order-by clause causes the tuples in the result to appear in sorted order  string-matching operator for comparisons on character strings  Patterns are described using two special characters:  Example:  percent (%) matches any substring  List in alphabetic order the names of all customers having a loan in the Perryridge branch  underscore (_) matches any single character select distinct customer_name  Examples: from borrower, loan  Find the names of all customers whose street includes “Main” where borrower loan_number = loan.loan_number and select customer_name branch_name = ‘Perryridge’ from customer order by customer_name where customer_street like ‘%Main%’  specify desc for descending order  Starts-in, Ends-in?  specify asc for ascending order (default)  Match the name “twenty%”  E.g. order by customer_name desc like ‘ twenty\%’ escape ‘ \’ 13 14 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 SQL – order – II SQL Set Operations  It is possible to define two or more attributes to order by  The set operations union, intersect, and except operate on relations  Example:  correspond to the relational algebra operations ∪ , ∩ , −  List entire loan relation in descendingorder of amount  If several loans have same amount, order by loan_number  Each of the above operations automatically eliminates select * duplicates from loan order by amount desc , loan_number asc  to retain all duplicates use the corresponding multiset versions union all, intersect all and except all. 15 16 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 4

  5. SQL Set Operations – II SQL / Sets: Union  Depositor (customer_name, account_number) Find all customers having an account, a loan, or both:  ( select customer_name from depositor ) union  Borrower (customer_name, loan_number) ( select customer_name from borrower ) To retain all duplicates:  Assume set of customers who have an account:  ( select customer_name from depositor ) select customer_name from depositor union all ( select customer_name from borrower )  Assume set of customers who have a loan: select customer_name from borrower If “Jones” has 3 accounts and 2 loans  appears 5 times  (sum of a, b) 17 18 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 SQL / Sets: Intersect SQL / Sets: Except Find all customers having both an account and a loan:  Find all customers having an account, but no a loan:  ( select customer_name from depositor ) ( select customer_name from depositor ) intersect except ( select customer_name from borrower ) ( select customer_name from borrower ) To retain all duplicates:   To retain all duplicates: ( select customer_name from depositor ) intersect all ( select customer_name from depositor ) ( select customer_name from borrower ) except all ( select customer_name from borrower ) If “Jones” has 3 accounts and 2 loans  appears 2 times  (min of a, b)  If “Jones” has 3 accounts and 1 loans  appears 2 times (a – b, if a>b, or 0 otherwise) 19 20 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 Alexandros Labrinidis, Univ. of Pittsburgh CS 2550 / Spring 2006 5

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend