SQL Concepts: Quantifiers, NULLs, and Handling Null Values

Lectures 7:
Introduction to SQL 6
Lecture and activity contents are based on what Prof Chris Ré
used in his CS 145 in the fall 2016 term with permission.
3. Advanced SQL-izing
2
What you will learn about in this section
1.
Quantifiers
2.
NULLs
3.
Outer Joins
4.
ACTIVITY: Fancy SQL Pt. II
3
4
Quantifiers
Product(name, price, company)
Company(name, city)
 
Find all companies
that make 
some
products with price
< 100
SELECT DISTINCT
 Company.cname
FROM
   Company, Product
WHERE
  Company.cname = Product.manuf
   AND Product.price < 100
 
Existential: easy  ! 
5
Quantifiers
Product(name, price, company)
Company(name, city)
 
Find all companies
with products 
all
having price < 100
SELECT DISTINCT
 Company.cname
FROM
   Company
WHERE
  Company.cname 
NOT IN
(
 
SELECT Product.manuf
 
FROM Product
           WHERE Product.price >= 100)
 
Universal: hard !  
 
Find all companies
that make 
only
products with price
< 100
 
Equivalent
6
NULLS in SQL
 
Whenever we don’t have a value, we can put a NULL
 
Can mean many things:
Value does not exists
Value exists but is unknown
Value not applicable
Etc.
 
The schema specifies for each attribute if can be null (
nullable 
attribute) or
not
 
How does SQL cope with tables that have NULLs?
7
Null Values
 
For numerical operations, 
NULL -> NULL:
If x = NULL then 4*(3-x)/7 is still NULL
 
For boolean operations, 
in SQL there are three values:
 
FALSE             = 
 
0
UNKNOWN    = 
 
0.5
TRUE               = 
 
1
 
If x= NULL then the comparison x=“Joe” results in UNKNOWN
8
Null Values
 
C1 AND C2   =  min(C1, C2)
C1  OR   C2   =  max(C1, C2)
NOT C1         =  1 – C1
 
 
 
SELECT
 *
FROM
   Person
WHERE
 (age < 25) 
  AND (height > 6 AND weight > 190)
Rule in SQL: include only tuples that yield TRUE (1.0)
9
Null Values
 
Unexpected behavior:
 
 
SELECT
 *
FROM
   Person
WHERE
  age < 25 OR age >= 25
Some Persons are not included !
10
Null Values
 
Can test for NULL explicitly:
x IS NULL
x IS NOT NULL
 
 
 
 
SELECT
 *
FROM
   Person
WHERE
  age < 25 OR age >= 25 
    OR age 
IS NULL
Now it includes all Persons!
11
RECAP: Inner Joins
 
By
 
default, joins in SQL are 
“inner joins”:
SELECT
 Product.name, Purchase.store
FROM
   Product 
  
JOIN 
Purchase 
ON
 
Product.name = Purchase.prodName
SELECT
 Product.name, Purchase.store
FROM
   Product, Purchase
WHERE
  Product.name = Purchase.prodName
Product(name, category)
Purchase(prodName, store)
 
Both equivalent:
Both INNER JOINS!
12
Inner Joins + NULLS = Lost data?
By
 
default, joins in SQL are 
“inner joins”:
 
However: Products that never sold (with no Purchase tuple) will be lost!
SELECT
 Product.name, Purchase.store
FROM
   Product 
  
JOIN 
Purchase 
ON
 
Product.name = Purchase.prodName
SELECT
 Product.name, Purchase.store
FROM
   Product, Purchase
WHERE
  Product.name = Purchase.prodName
Product(name, category)
Purchase(prodName, store)
13
Outer Joins
 
An 
outer join
 returns tuples from the joined relations that don’t have a
corresponding tuple in the other relations
I.e. If we join relations A and B on a.X = b.X, and there is an entry in A with X=5, but
none in B with X=5…
A LEFT OUTER JOIN will return a tuple (a, NULL)!
 
Left outer joins in SQL:
SELECT
 Product.name, Purchase.store
FROM
   Product 
  
LEFT OUTER JOIN 
Purchase 
ON
 
 
Product.name = Purchase.prodName
Now we’ll get products even if they didn’t sell
14
Product
Purchase
INNER JOIN:
SELECT
 Product.name, Purchase.store
FROM
   Product 
  
INNER JOIN 
Purchase 
 
ON
 
Product.name = Purchase.prodName
15
Product
Purchase
LEFT OUTER JOIN:
SELECT
 Product.name, Purchase.store
FROM
   Product 
  
LEFT OUTER JOIN 
Purchase 
 
ON
 
Product.name = Purchase.prodName
16
Other Outer Joins
 
 
Left outer join:
Include the left tuple even if there’s no match
 
Right outer join:
Include the right tuple even if there’s no match
 
Full outer join:
Include the both left and right tuples even if there’s no match
Activity-3-3.ipynb
17
Summary
SQL is a rich programming language
that handles the way data is processed
declaratively
18
Slide Note
Embed
Share

Dive into the world of SQL with this content, covering essential concepts such as quantifiers, NULLs, and how SQL handles null values. Explore topics like existential and universal quantifiers, handling NULL values in numerical and boolean operations, and understanding the behavior of NULL values in SQL queries. Get insights into advanced SQL techniques and enrich your database management skills.

  • SQL Concepts
  • Quantifiers
  • Null Values
  • Database Management
  • SQL Operations

Uploaded on Nov 28, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Lectures 7: Introduction to SQL 6 Lecture and activity contents are based on what Prof Chris R used in his CS 145 in the fall 2016 term with permission.

  2. 3. Advanced SQL-izing 2

  3. What you will learn about in this section 1. Quantifiers 2. NULLs 3. Outer Joins 4. ACTIVITY: Fancy SQL Pt. II 3

  4. Quantifiers Product(name, price, company) Company(name, city) Find all companies that make some products with price < 100 SELECT DISTINCT Company.cname FROM Company, Product WHERE Company.cname = Product.manuf AND Product.price < 100 An existential quantifier existential quantifier is a logical quantifier (roughly) of the form there exists Existential: easy ! 4

  5. Quantifiers Find all companies with products all having price < 100 Product(name, price, company) Company(name, city) Equivalent SELECT DISTINCT Company.cname FROM Company WHERE Company.cname NOT IN( SELECT Product.manuf FROM Product WHERE Product.price >= 100) Find all companies that make only products with price < 100 A universal quantifier universal quantifier is of the form for all Universal: hard ! 5

  6. NULLS in SQL Whenever we don t have a value, we can put a NULL Can mean many things: Value does not exists Value exists but is unknown Value not applicable Etc. The schema specifies for each attribute if can be null (nullable attribute) or not How does SQL cope with tables that have NULLs? 6

  7. Null Values For numerical operations, NULL -> NULL: If x = NULL then 4*(3-x)/7 is still NULL For boolean operations, in SQL there are three values: FALSE = UNKNOWN = TRUE = 0 0.5 1 If x= NULL then the comparison x= Joe results in UNKNOWN 7

  8. Null Values C1 AND C2 = min(C1, C2) C1 OR C2 = max(C1, C2) NOT C1 = 1 C1 SELECT * FROM Person WHERE (age < 25) AND (height > 6 AND weight > 190) Won t return e.g. (age=20 height=NULL weight=200)! Rule in SQL: include only tuples that yield TRUE (1.0) 8

  9. Null Values Unexpected behavior: SELECT * FROM Person WHERE age < 25 OR age >= 25 Some Persons are not included ! 9

  10. Null Values Can test for NULL explicitly: x IS NULL x IS NOT NULL SELECT * FROM Person WHERE age < 25 OR age >= 25 OR age IS NULL Now it includes all Persons! 10

  11. RECAP: Inner Joins Bydefault, joins in SQL are inner joins : Purchase(prodName, store) Product(name, category) SELECT Product.name, Purchase.store FROM Product JOIN Purchase ON Product.name = Purchase.prodName Both equivalent: Both INNER JOINS! SELECT Product.name, Purchase.store FROM Product, Purchase WHERE Product.name = Purchase.prodName 11

  12. Inner Joins + NULLS = Lost data? Bydefault, joins in SQL are inner joins : Purchase(prodName, store) Product(name, category) SELECT Product.name, Purchase.store FROM Product JOIN Purchase ON Product.name = Purchase.prodName SELECT Product.name, Purchase.store FROM Product, Purchase WHERE Product.name = Purchase.prodName However: Products that never sold (with no Purchase tuple) will be lost! 12

  13. Outer Joins An outer joinreturns tuples from the joined relations that don t have a corresponding tuple in the other relations I.e. If we join relations A and B on a.X = b.X, and there is an entry in A with X=5, but none in B with X=5 A LEFT OUTER JOIN will return a tuple (a, NULL)! Left outer joins in SQL: SELECT Product.name, Purchase.store FROM Product LEFT OUTER JOIN Purchase ON Product.name = Purchase.prodName Now we ll get products even if they didn t sell 13

  14. INNER JOIN: Product Purchase name category prodName store Gizmo gadget Gizmo Wiz Camera Photo Camera Ritz OneClick Photo Camera Wiz name store SELECT Product.name, Purchase.store FROM Product INNER JOIN Purchase ON Product.name = Purchase.prodName Gizmo Wiz Camera Ritz Camera Wiz Note: another equivalent way to write an INNER JOIN! 14

  15. LEFT OUTER JOIN: Product Purchase name category prodName store Gizmo gadget Gizmo Wiz Camera Photo Camera Ritz OneClick Photo Camera Wiz name store Gizmo Wiz SELECT Product.name, Purchase.store FROM Product LEFT OUTER JOIN Purchase ON Product.name = Purchase.prodName Camera Ritz Camera Wiz OneClick NULL 15

  16. Other Outer Joins Left outer join: Include the left tuple even if there s no match Right outer join: Include the right tuple even if there s no match Full outer join: Include the both left and right tuples even if there s no match 16

  17. Activity-3-3.ipynb 17

  18. Lecture 2 & 3 > SUMMARY Lecture 2 & 3 > SUMMARY Summary SQL is a rich programming language that handles the way data is processed declaratively 18

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#