SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
SQL Queries
   Principal form:
      SELECT desired attributes
      FROM tuple variables |
               range over relations
      WHERE condition about t.v.'s;

Running example relation schema:
      Beersname, manf
      Barsname, addr, license
      Drinkersname, addr, phone
      Likesdrinker, beer
      Sellsbar, beer, price
      Frequentsdrinker, bar




                        1
Example
What beers are made by Anheuser-Busch?
      Beersname, manf

      SELECT name
      FROM Beers
      WHERE manf = 'Anheuser-Busch';

    Note single quotes for strings.
                    name
                    Bud
                    Bud Lite
                    Michelob




                         2
Formal Semantics of Single-Relation SQL
Query
1. Start with the relation in the FROM clause.
2. Apply bag , using condition in WHERE
   clause.
3. Apply extended, bag  using terms in
   SELECT clause.

Equivalent Operational Semantics
Imagine a tuple variable ranging over all tuples of
the relation. For each tuple:
     Check if it satis es the WHERE clause.
     Print the values of terms in SELECT, if so.




                          3
Star as List of All Attributes
      Beersname, manf

      SELECT *
      FROM Beers
      WHERE manf = 'Anheuser-Busch';

          name        manf
          Bud         Anheuser-Busch
          Bud Lite    Anheuser-Busch
          Michelob    Anheuser-Busch




                       4
Renaming columns
     Beersname, manf

     SELECT name AS beer
     FROM Beers
     WHERE manf = 'Anheuser-Busch';

                 beer
                 Bud
                 Bud Lite
                 Michelob




                    5
Expressions as Values in Columns
     Sellsbar, beer, price

     SELECT bar, beer,
         price*120 AS priceInYen
     FROM Sells;

         bar     beer      priceInYen
         Joe's   Bud       300
         Sue's   Miller    360
                     
   Note no WHERE clause OK.




                       6
Trick: If you want an answer with a particular
string in each row, use that constant as an
expression.
  Likesdrinker, beer

  SELECT drinker,
      'likes Bud' AS whoLikesBud
  FROM Likes
  WHERE beer = 'Bud';

         drinker whoLikesBud
         Sally likes Bud
         Fred likes Bud
                




                    7
Example
Find the price Joe's Bar charges for Bud.
      Sellsbar, beer, price

      SELECT price
      FROM Sells
      WHERE bar = 'Joe''s Bar' AND
          beer = 'Bud';

    Note: two single-quotes in a character string
    represent one single quote.
    Conditions in WHERE clause can use logical
    operators AND, OR, NOT and parentheses in the
    usual way.
    Remember: SQL is case insensitive. Keywords
    like SELECT or AND can be written upper lower
    case as you like.
    3 Only inside quoted strings does case
         matter.




                         8
Patterns
      stands for any string.
      stands for any one character.
      Attribute LIKE pattern is a condition that
    is true if the string value of the attribute
    matches the pattern.
    3 Also NOT LIKE for negation.

Example
Find drinkers whose phone has exchange 555.
        Drinkersname, addr, phone

        SELECT name
        FROM Drinkers
        WHERE phone LIKE '555-      ';

    Note patterns must be quoted, like strings.




                        9
Nulls
In place of a value in a tuple's component.
     Interpretation is not exactly missing value.
     There could be many reasons why no value is
     present, e.g., value inappropriate.
Comparing Nulls to Values
    3rd truth value UNKNOWN.
    A query only produces tuples if the WHERE-
    condition evaluates to TRUE UNKNOWN is not
    su cent.




                        10
Example
          bar          beer     price
          Joe's bar    Bud      NULL

     SELECT bar
     FROM Sells
     WHERE price 2.00 OR price = 2.00;
         ------------      -------------
          UNKNOWN         UNKNOWN
          ------------------------
                  UNKNOWN

   Joe's Bar is not produced, even though the
   WHERE condition is a tautology.




                      11
3-Valued Logic
Think of true = 1; false = 0, and unknown = 1 2.
Then:
    AND = min.
    OR = max.
    NOTx = 1 , x.
Some Key Laws Fail to Hold
Example: Law of the excluded middle, i.e.,
      p OR NOT p = TRUE

    For 3-valued logic: if p = unknown, then left
    side = max1 2,1-1 2 = 1 2 6= 1.
    Like bag algebra, there is no way known to
    make 3-valued logic conform to all the laws we
    expect for sets 2-valued logic, respectively.




                        12
Multirelation Queries
    List of relations in FROM clause.
    Relation-dot-attribute disambiguates
    attributes from several relations.
Example
Find the beers that the frequenters of Joe's Bar
like.
      Likesdrinker, beer
      Frequentsdrinker, bar

      SELECT beer
      FROM Frequents, Likes
      WHERE bar = 'Joe''s Bar' AND
          Frequents.drinker = Likes.drinker;




                        13
Formal Semantics of Multirelation Queries
Same as for single relation, but start with the
product of all the relations mentioned in the FROM
clause.
Operational Semantics
Consider a tuple variable for each relation in the
FROM.

    Imagine these tuple variables each pointing to
    a tuple of their relation, in all combinations
    e.g., nested loops.
    If the current assignment of tuple-variables to
    tuples makes the WHERE true, then output the
    terms of the SELECT.




                        14
drinker bar           drinker beer

                           Sally
     Sally   Joe's                       l
f


                             Likes
     Frequents




                     15
Explicit Tuple Variables
Sometimes we need to refer to two or more copies
of a relation.
     Use tuple variables as aliases of the relations.
Example
Find pairs of beers by the same manufacturer.
       Beersname, manf

       SELECT b1.name, b2.name
       FROM Beers b1, Beers b2
       WHERE b1.manf = b2.manf AND
           b1.name b2.name;

    SQL permits AS between relation and its tuple
    variable; Oracle does not.
    Note that b1.name b2.name is needed to
    avoid producing Bud, Bud and to avoid
    producing a pair in both orders.




                          16
Subqueries
Result of a select-from-where query can be used in
the where-clause of another query.
Simplest Case: Subquery Returns a Single,
Unary Tuple
Find bars that serve Miller at the same price Joe
charges for Bud.
      Sellsbar, beer, price

      SELECT bar
      FROM Sells
      WHERE beer = 'Miller' AND
          price =
              SELECT price
               FROM Sells
               WHERE bar = 'Joe''s Bar' AND
                   beer = 'Bud'
              ;

    Notice the scoping rule: an attribute refers
    to the most closely nested relation with that
    attribute.
    Parentheses around subquery are essential.

                        17
The IN Operator
 Tuple IN relation is true i the tuple is in the
relation.
Example
Find the name and manufacturer of beers that
Fred likes.
      Beersname, manf
      Likesdrinker, beer

      SELECT *
      FROM Beers
      WHERE name IN
          SELECT beer
           FROM Likes
           WHERE drinker = 'Fred'
          ;

    Also:   NOT IN   .




                         18
EXISTS
      relation is true i the relation is
 EXISTS
nonempty.
Example
Find the beers that are the unique beer by their
manufacturer.
      Beersname, manf

      SELECT name
      FROM Beers b1
      WHERE NOT EXISTS
          SELECT *
          FROM Beers
          WHERE manf = b1.manf AND
              name    b1.name
      ;

    Note scoping rule: to refer to outer Beers in
    the inner subquery, we need to give the outer
    a tuple variable, b1 in this example.
    A subquery that refers to values from a
    surrounding query is called a correlated
    subquery.


                        19
Quanti ers
ANY and ALL behave as existential and universal
quanti ers, respectively.
    Beware: in common parlance, any and all
    seem to be synonyms, e.g., I am fatter than
    any of you vs. I am fatter than all of you.
    But in SQL:
Example
Find the beers sold for the highest price.
       Sellsbar, beer, price

       SELECT beer
       FROM Sells
       WHERE price = ALL
           SELECT price
           FROM Sells
       ;


Class Problem
Find the beers not sold for the lowest price.



                         20

Mais conteúdo relacionado

Mais de Arjun Shanka (18)

Asp.net w3schools
Asp.net w3schoolsAsp.net w3schools
Asp.net w3schools
 
Php tutorial(w3schools)
Php tutorial(w3schools)Php tutorial(w3schools)
Php tutorial(w3schools)
 
Jun 2012(1)
Jun 2012(1)Jun 2012(1)
Jun 2012(1)
 
System simulation 06_cs82
System simulation 06_cs82System simulation 06_cs82
System simulation 06_cs82
 
javaexceptions
javaexceptionsjavaexceptions
javaexceptions
 
javainheritance
javainheritancejavainheritance
javainheritance
 
javarmi
javarmijavarmi
javarmi
 
java-06inheritance
java-06inheritancejava-06inheritance
java-06inheritance
 
javapackage
javapackagejavapackage
javapackage
 
javaarray
javaarrayjavaarray
javaarray
 
spring-tutorial
spring-tutorialspring-tutorial
spring-tutorial
 
struts
strutsstruts
struts
 
javathreads
javathreadsjavathreads
javathreads
 
72185-26528-StrutsMVC
72185-26528-StrutsMVC72185-26528-StrutsMVC
72185-26528-StrutsMVC
 
javanetworking
javanetworkingjavanetworking
javanetworking
 
servlets
servletsservlets
servlets
 
AWTEventModel
AWTEventModelAWTEventModel
AWTEventModel
 
javainterface
javainterfacejavainterface
javainterface
 

Último

Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Anamikakaur10
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noidadlhescort
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...lizamodels9
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Serviceritikaroy0888
 
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...lizamodels9
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxWorkforce Group
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...amitlee9823
 
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...Sheetaleventcompany
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityEric T. Tung
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Neil Kimberley
 
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...allensay1
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...amitlee9823
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsP&CO
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with CultureSeta Wicaksana
 
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Sheetaleventcompany
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptxnandhinijagan9867
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756dollysharma2066
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Centuryrwgiffor
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Dave Litwiller
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesDipal Arora
 

Último (20)

Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
 
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
Russian Call Girls In Gurgaon ❤️8448577510 ⊹Best Escorts Service In 24/7 Delh...
 
Call Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine ServiceCall Girls In Panjim North Goa 9971646499 Genuine Service
Call Girls In Panjim North Goa 9971646499 Genuine Service
 
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
Call Girls From Pari Chowk Greater Noida ❤️8448577510 ⊹Best Escorts Service I...
 
Cracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptxCracking the Cultural Competence Code.pptx
Cracking the Cultural Competence Code.pptx
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
Call Girls Zirakpur👧 Book Now📱7837612180 📞👉Call Girl Service In Zirakpur No A...
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
Call Girls Service In Old Town Dubai ((0551707352)) Old Town Dubai Call Girl ...
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
 
Value Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and painsValue Proposition canvas- Customer needs and pains
Value Proposition canvas- Customer needs and pains
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Majnu Ka Tilla, Delhi Contact Us 8377877756
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Century
 
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
Enhancing and Restoring Safety & Quality Cultures - Dave Litwiller - May 2024...
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 

slides6

  • 1. SQL Queries Principal form: SELECT desired attributes FROM tuple variables | range over relations WHERE condition about t.v.'s; Running example relation schema: Beersname, manf Barsname, addr, license Drinkersname, addr, phone Likesdrinker, beer Sellsbar, beer, price Frequentsdrinker, bar 1
  • 2. Example What beers are made by Anheuser-Busch? Beersname, manf SELECT name FROM Beers WHERE manf = 'Anheuser-Busch'; Note single quotes for strings. name Bud Bud Lite Michelob 2
  • 3. Formal Semantics of Single-Relation SQL Query 1. Start with the relation in the FROM clause. 2. Apply bag , using condition in WHERE clause. 3. Apply extended, bag using terms in SELECT clause. Equivalent Operational Semantics Imagine a tuple variable ranging over all tuples of the relation. For each tuple: Check if it satis es the WHERE clause. Print the values of terms in SELECT, if so. 3
  • 4. Star as List of All Attributes Beersname, manf SELECT * FROM Beers WHERE manf = 'Anheuser-Busch'; name manf Bud Anheuser-Busch Bud Lite Anheuser-Busch Michelob Anheuser-Busch 4
  • 5. Renaming columns Beersname, manf SELECT name AS beer FROM Beers WHERE manf = 'Anheuser-Busch'; beer Bud Bud Lite Michelob 5
  • 6. Expressions as Values in Columns Sellsbar, beer, price SELECT bar, beer, price*120 AS priceInYen FROM Sells; bar beer priceInYen Joe's Bud 300 Sue's Miller 360 Note no WHERE clause OK. 6
  • 7. Trick: If you want an answer with a particular string in each row, use that constant as an expression. Likesdrinker, beer SELECT drinker, 'likes Bud' AS whoLikesBud FROM Likes WHERE beer = 'Bud'; drinker whoLikesBud Sally likes Bud Fred likes Bud 7
  • 8. Example Find the price Joe's Bar charges for Bud. Sellsbar, beer, price SELECT price FROM Sells WHERE bar = 'Joe''s Bar' AND beer = 'Bud'; Note: two single-quotes in a character string represent one single quote. Conditions in WHERE clause can use logical operators AND, OR, NOT and parentheses in the usual way. Remember: SQL is case insensitive. Keywords like SELECT or AND can be written upper lower case as you like. 3 Only inside quoted strings does case matter. 8
  • 9. Patterns stands for any string. stands for any one character. Attribute LIKE pattern is a condition that is true if the string value of the attribute matches the pattern. 3 Also NOT LIKE for negation. Example Find drinkers whose phone has exchange 555. Drinkersname, addr, phone SELECT name FROM Drinkers WHERE phone LIKE '555- '; Note patterns must be quoted, like strings. 9
  • 10. Nulls In place of a value in a tuple's component. Interpretation is not exactly missing value. There could be many reasons why no value is present, e.g., value inappropriate. Comparing Nulls to Values 3rd truth value UNKNOWN. A query only produces tuples if the WHERE- condition evaluates to TRUE UNKNOWN is not su cent. 10
  • 11. Example bar beer price Joe's bar Bud NULL SELECT bar FROM Sells WHERE price 2.00 OR price = 2.00; ------------ ------------- UNKNOWN UNKNOWN ------------------------ UNKNOWN Joe's Bar is not produced, even though the WHERE condition is a tautology. 11
  • 12. 3-Valued Logic Think of true = 1; false = 0, and unknown = 1 2. Then: AND = min. OR = max. NOTx = 1 , x. Some Key Laws Fail to Hold Example: Law of the excluded middle, i.e., p OR NOT p = TRUE For 3-valued logic: if p = unknown, then left side = max1 2,1-1 2 = 1 2 6= 1. Like bag algebra, there is no way known to make 3-valued logic conform to all the laws we expect for sets 2-valued logic, respectively. 12
  • 13. Multirelation Queries List of relations in FROM clause. Relation-dot-attribute disambiguates attributes from several relations. Example Find the beers that the frequenters of Joe's Bar like. Likesdrinker, beer Frequentsdrinker, bar SELECT beer FROM Frequents, Likes WHERE bar = 'Joe''s Bar' AND Frequents.drinker = Likes.drinker; 13
  • 14. Formal Semantics of Multirelation Queries Same as for single relation, but start with the product of all the relations mentioned in the FROM clause. Operational Semantics Consider a tuple variable for each relation in the FROM. Imagine these tuple variables each pointing to a tuple of their relation, in all combinations e.g., nested loops. If the current assignment of tuple-variables to tuples makes the WHERE true, then output the terms of the SELECT. 14
  • 15. drinker bar drinker beer Sally Sally Joe's l f Likes Frequents 15
  • 16. Explicit Tuple Variables Sometimes we need to refer to two or more copies of a relation. Use tuple variables as aliases of the relations. Example Find pairs of beers by the same manufacturer. Beersname, manf SELECT b1.name, b2.name FROM Beers b1, Beers b2 WHERE b1.manf = b2.manf AND b1.name b2.name; SQL permits AS between relation and its tuple variable; Oracle does not. Note that b1.name b2.name is needed to avoid producing Bud, Bud and to avoid producing a pair in both orders. 16
  • 17. Subqueries Result of a select-from-where query can be used in the where-clause of another query. Simplest Case: Subquery Returns a Single, Unary Tuple Find bars that serve Miller at the same price Joe charges for Bud. Sellsbar, beer, price SELECT bar FROM Sells WHERE beer = 'Miller' AND price = SELECT price FROM Sells WHERE bar = 'Joe''s Bar' AND beer = 'Bud' ; Notice the scoping rule: an attribute refers to the most closely nested relation with that attribute. Parentheses around subquery are essential. 17
  • 18. The IN Operator Tuple IN relation is true i the tuple is in the relation. Example Find the name and manufacturer of beers that Fred likes. Beersname, manf Likesdrinker, beer SELECT * FROM Beers WHERE name IN SELECT beer FROM Likes WHERE drinker = 'Fred' ; Also: NOT IN . 18
  • 19. EXISTS relation is true i the relation is EXISTS nonempty. Example Find the beers that are the unique beer by their manufacturer. Beersname, manf SELECT name FROM Beers b1 WHERE NOT EXISTS SELECT * FROM Beers WHERE manf = b1.manf AND name b1.name ; Note scoping rule: to refer to outer Beers in the inner subquery, we need to give the outer a tuple variable, b1 in this example. A subquery that refers to values from a surrounding query is called a correlated subquery. 19
  • 20. Quanti ers ANY and ALL behave as existential and universal quanti ers, respectively. Beware: in common parlance, any and all seem to be synonyms, e.g., I am fatter than any of you vs. I am fatter than all of you. But in SQL: Example Find the beers sold for the highest price. Sellsbar, beer, price SELECT beer FROM Sells WHERE price = ALL SELECT price FROM Sells ; Class Problem Find the beers not sold for the lowest price. 20