SlideShare une entreprise Scribd logo
1  sur  31
Lecture 02: Basic SQL




                  1
Outline
• Data in SQL
• Simple Queries in SQL
• Queries with more than one relation

Reading:
• Chapter 3, “Simple Queries” from SQL for Web Nerds,
  by Philip Greenspun http://philip.greenspun.com/sql/



                                           2
SQL Introduction
Standard language for querying and manipulating data

         Structured Query Language

Many standards out there:
• ANSI SQL
• SQL92 (a.k.a. SQL2)
• SQL99 (a.k.a. SQL3)
• Vendors support various subsets of these
• What we discuss is common to all of them


                                                3
SQL
• Data Definition Language (DDL)
  – Create/alter/delete tables and their attributes
  – Following lectures...
• Data Manipulation Language (DML)
  – Query one or more tables – discussed next !
  – Insert/delete/modify tuples in tables
• Transact-SQL
  – Idea: package a sequence of SQL statements  server
  – Won’t discuss in class

                                                4
Data in SQL
1. Atomic types, a.k.a. data types
2. Tables built from atomic types




                                     5
Data Types in SQL
•    Characters:
    –   CHAR(20)            -- fixed length
    –   VARCHAR(40)         -- variable length
•    Numbers:
    –   BIGINT, INT, SMALLINT, TINYINT
    –   REAL, FLOAT      -- differ in precision
    –   MONEY
•    Times and dates:
    –   DATE
    –   DATETIME            -- SQL Server
•    Others... All are simple                    6
Table name                           Attribute names

                   Tables in SQL
Product

          PName       Price     Category       Manufacturer

          Gizmo      $19.99     Gadgets        GizmoWorks

     Powergizmo      $29.99     Gadgets        GizmoWorks

     SingleTouch     $149.99   Photography        Canon

     MultiTouch      $203.99   Household         Hitachi


Tuples or rows                             7
Tables Explained
• A tuple = a record
   – Restriction: all attributes are of atomic type
• A table = a set of tuples
   – Like a list…
   – …but it is unorderd: no first(), no next(), no last().
• No nested tables, only flat tables are allowed !
   – We will see later how to decompose complex structures
     into multiple flat tables


                                                 8
Tables Explained
• The schema of a table is the table name and
  its attributes:
Product(PName, Price, Category, Manfacturer)

• A key is an attribute whose values are unique;
  we underline a key

Product(PName, Price, Category, Manfacturer)
                                     9
SQL Query


Basic form: (plus many many more bells and whistles)


       SELECT attributes
       SELECT attributes
       FROM relations (possibly multiple, joined)
       FROM relations (possibly multiple, joined)
       WHERE conditions (selections)
       WHERE conditions (selections)



                                               10
Simple SQL Query
               Product     PName        Price     Category     Manufacturer
                            Gizmo      $19.99     Gadgets      GizmoWorks
                         Powergizmo    $29.99     Gadgets      GizmoWorks
                         SingleTouch   $149.99   Photography      Canon
                          MultiTouch   $203.99   Household        Hitachi

SELECT
SELECT   **
FROM
FROM     Product
          Product
WHERE
WHERE    category=‘Gadgets’
          category=‘Gadgets’
                           PName       Price     Category      Manufacturer
                           Gizmo       $19.99     Gadgets      GizmoWorks
                         Powergizmo    $29.99     Gadgets      GizmoWorks
 “selection”
                                                     11
Simple SQL Query
               Product     PName            Price             Category      Manufacturer
                           Gizmo            $19.99            Gadgets        GizmoWorks
                         Powergizmo         $29.99            Gadgets        GizmoWorks
                         SingleTouch      $149.99        Photography               Canon
                         MultiTouch       $203.99         Household              Hitachi

SELECT
SELECT   PName, Price, Manufacturer
          PName, Price, Manufacturer
FROM
FROM     Product
          Product
WHERE
WHERE    Price > 100
         Price > 100
                                    PName             Price         Manufacturer
  “selection” and                SingleTouch         $149.99             Canon
   “projection”                    MultiTouch        $203.99             Hitachi

                                                                 12
A Notation for SQL Queries
                                                   Input Schema



                           Product(PName, Price, Category, Manfacturer)

SELECT
SELECT   Name, Price, Manufacturer
          Name, Price, Manufacturer
FROM
FROM     Product
          Product
WHERE
WHERE    Price > 100
         Price > 100
                                 Answer(PName, Price, Manfacturer)


                           Output Schema          13
Selections
What goes in the WHERE clause:
• x = y, x < y, x <= y, etc
   – For number, they have the usual meanings
   – For CHAR and VARCHAR: lexicographic ordering
      • Expected conversion between CHAR and VARCHAR
   – For dates and times, what you expect...
• Pattern matching on strings: s LIKE p (next)



                                               14
The LIKE operator
•    s LIKE p: pattern matching on strings
•    p may contain two special symbols:
    –    % = any sequence of characters
    –    _ = any single character

Product(Name, Price, Category, Manufacturer)
Find all products whose name mentions ‘gizmo’:

         SELECT
          SELECT    **
         FROM
          FROM      Products
                     Products
         WHERE
          WHERE     PName LIKE ‘%gizmo%’
                     PName LIKE ‘%gizmo%’

                                                 15
Eliminating Duplicates
                            Category
SELECT DISTINCT category
SELECT DISTINCT category    Gadgets
FROM Product
FROM Product               Photography
                           Household



    Compare to:
                             Category
                             Gadgets
SELECT category
SELECT category              Gadgets
FROM Product
FROM Product               Photography
                            Household


                             16
Ordering the Results
  SELECT pname, price, manufacturer
  SELECT pname, price, manufacturer
  FROM Product
  FROM Product
  WHERE category=‘gizmo’ AND price > 50
  WHERE category=‘gizmo’ AND price > 50
  ORDER BY price, pname
  ORDER BY price, pname

Ordering is ascending, unless you specify the DESC keyword.

Ties are broken by the second attribute on the ORDER BY list, etc.



                                                 17
Ordering the Results
     SELECT Category
     SELECT Category
     FROM Product
     FROM Product
     ORDER BY PName
     ORDER BY PName


  PName        Price     Category     Manufacturer



                                                          ?
  Gizmo       $19.99     Gadgets      GizmoWorks
Powergizmo    $29.99     Gadgets      GizmoWorks
SingleTouch   $149.99   Photography      Canon
MultiTouch    $203.99   Household       Hitachi



                                                     18
Ordering the Results
                            Category
SELECT DISTINCT category
SELECT DISTINCT category    Gadgets
FROM Product
FROM Product               Household
ORDER BY category
ORDER BY category          Photography



    Compare to:

SELECT DISTINCT category

                               ?
SELECT DISTINCT category
FROM Product
FROM Product
ORDER BY PName
ORDER BY PName

                             19
Joins in SQL
 • Connect two or more tables:
Product      PName           Price      Category      Manufacturer
             Gizmo          $19.99      Gadgets        GizmoWorks
           Powergizmo       $29.99      Gadgets        GizmoWorks
           SingleTouch      $149.99    Photography         Canon
           MultiTouch       $203.99    Household           Hitachi

             Company        CName        StockPrice          Country

                          GizmoWorks        25                 USA
     What is
 the Connection             Canon           65                Japan
     between
      them ?                Hitachi         15                Japan
                                                      20
Joins
Product (pname, price, category, manufacturer)
Company (cname, stockPrice, country)

Find all products under $200 manufactured in Japan;
return their names and prices.
                                                Join
                                         between Product
  SELECT PName, Price
   SELECT PName, Price                     and Company
  FROM
   FROM Product, Company
              Product, Company
  WHERE Manufacturer=CName AND Country=‘Japan’
   WHERE Manufacturer=CName AND Country=‘Japan’
              AND Price <= 200
              AND Price <= 200

                                            21
Joins in SQL
Product                                              Company
   PName       Price     Category     Manufacturer       Cname             StockPrice           Country
   Gizmo      $19.99     Gadgets      GizmoWorks       GizmoWorks                25              USA
Powergizmo    $29.99     Gadgets      GizmoWorks         Canon                   65              Japan
SingleTouch   $149.99   Photography      Canon           Hitachi                 15              Japan
MultiTouch    $203.99   Household       Hitachi




  SELECT PName, Price
   SELECT PName, Price
  FROM Product, Company
   FROM Product, Company
  WHERE Manufacturer=CName AND Country=‘Japan’
   WHERE Manufacturer=CName AND Country=‘Japan’
         AND Price <= 200
          AND Price <= 200

                                                                     PName             Price
                                                                   SingleTouch        $149.99


                                                                          22
Joins
Product (pname, price, category, manufacturer)
Company (cname, stockPrice, country)

Find all countries that manufacture some product in the
‘Gadgets’ category.


SELECT
SELECT    Country
           Country
FROM
FROM      Product, Company
          Product, Company
WHERE
WHERE     Manufacturer=CName AND Category=‘Gadgets’
          Manufacturer=CName AND Category=‘Gadgets’



                                             23
Joins in SQL
Product                                              Company
   PName       Price      Category    Manufacturer       Cname      StockPrice   Country
   Gizmo       $19.99     Gadgets     GizmoWorks       GizmoWorks      25         USA
Powergizmo     $29.99     Gadgets     GizmoWorks         Canon         65         Japan
SingleTouch   $149.99   Photography      Canon           Hitachi       15         Japan
MultiTouch    $203.99   Household       Hitachi




      SELECT Country
       SELECT Country
      FROM Product, Company
       FROM Product, Company
      WHERE Manufacturer=CName AND Category=‘Gadgets’
       WHERE Manufacturer=CName AND Category=‘Gadgets’

                                                                       Country
             What is                                                        ??
          the problem ?                                                     ??
            What’s the
            solution ?
                                                                    24
Joins
Product (pname, price, category, manufacturer)
Purchase (buyer, seller, store, product)
Person(persname, phoneNumber, city)

Find names of people living in Seattle that bought some
product in the ‘Gadgets’ category, and the names of the
stores they bought such product from


  SELECT
  SELECT    DISTINCT persname, store
             DISTINCT persname, store
  FROM
  FROM      Person, Purchase, Product
             Person, Purchase, Product
  WHERE
  WHERE     persname=buyer AND product = pname AND
             persname=buyer AND product = pname AND
            city=‘Seattle’ AND category=‘Gadgets’
             city=‘Seattle’ AND category=‘Gadgets’
                                          25
Disambiguating Attributes
• Sometimes two relations have the same attr:
  Person(pname, address, worksfor)
  Company(cname, address)
                                        Which
SELECT
SELECT   DISTINCT pname, address
          DISTINCT pname, address      address ?
FROM
FROM     Person, Company
         Person, Company
WHERE
WHERE    worksfor = cname
         worksfor = cname


SELECT
SELECT   DISTINCT Person.pname, Company.address
          DISTINCT Person.pname, Company.address
FROM
FROM     Person, Company
          Person, Company
WHERE
WHERE    Person.worksfor = Company.cname 26
         Person.worksfor = Company.cname
Tuple Variables
Product (pname, price, category, manufacturer)
Purchase (buyer, seller, store, product)
Person(persname, phoneNumber, city)
Find all stores that sold at least one product that the store
‘BestBuy’ also sold:

  SELECT DISTINCT x.store
  SELECT DISTINCT x.store
  FROM Purchase AS x, Purchase AS y
  FROM Purchase AS x, Purchase AS y
  WHERE x.product = y.product AND y.store = ‘BestBuy’
  WHERE x.product = y.product AND y.store = ‘BestBuy’



     Answer (store)
                                                      27
General rule:
               Tuple Variables
tuple variables introduced automatically by the system:

Product ( name, price, category, manufacturer)
               SELECT name
               SELECT name
               FROM Product
               FROM Product
               WHERE price > 100
               WHERE price > 100
Becomes:

                SELECT Product.name
                SELECT Product.name
                FROM Product AS Product
                FROM Product AS Product
                WHERE Product.price > 100
                WHERE Product.price > 100

Doesn’t work when Product occurs more than once:
In that case the user needs to define variables 28
Meaning (Semantics) of SQL
               Queries
SELECT a1, a2, …, ak
FROM R1 AS x1, R2 AS x2, …, Rn AS xn
WHERE Conditions

1. Nested loops:
 Answer = {}
  Answer = {}
 for x1 in R1 do
  for x1 in R1 do
     for x2 in R2 do
      for x2 in R2 do
        …..
         …..
            for xn in Rn do
             for xn in Rn do
                 if Conditions
                  if Conditions
                      then Answer = Answer ∪ {(a1,…,ak)}
                       then Answer = Answer ∪ {(a1,…,ak)}
 return Answer
  return Answer                                  29
Meaning (Semantics) of SQL
             Queries
SELECT a1, a2, …, ak
FROM R1 AS x1, R2 AS x2, …, Rn AS xn
WHERE Conditions

 2. Parallel assignment
Answer = {}
 Answer = {}
for all assignments x1 in R1, …, xn in Rn do
 for all assignments x1 in R1, …, xn in Rn do
     if Conditions then Answer = Answer ∪ {(a1,…,ak)}
      if Conditions then Answer = Answer ∪ {(a1,…,ak)}
return Answer
 return Answer


Doesn’t impose any order !
                                             30
First Unintuitive SQLism
SELECT R.A
FROM R, S, T
WHERE R.A=S.A OR R.A=T.A


Looking for R ∩ (S ∪ T)

But what happens if T is empty?




                                  31

Contenu connexe

Tendances

TID Chapter 10 Introduction To Database
TID Chapter 10 Introduction To DatabaseTID Chapter 10 Introduction To Database
TID Chapter 10 Introduction To Database
WanBK Leo
 

Tendances (20)

Types of keys in database management system by Dr. Kamal Gulati
Types of keys in database management system by Dr. Kamal GulatiTypes of keys in database management system by Dr. Kamal Gulati
Types of keys in database management system by Dr. Kamal Gulati
 
Sql - Structured Query Language
Sql - Structured Query LanguageSql - Structured Query Language
Sql - Structured Query Language
 
SQL : introduction
SQL : introductionSQL : introduction
SQL : introduction
 
Introduction to SQL
Introduction to SQLIntroduction to SQL
Introduction to SQL
 
SQL Overview
SQL OverviewSQL Overview
SQL Overview
 
Sql
SqlSql
Sql
 
Basic SQL and History
 Basic SQL and History Basic SQL and History
Basic SQL and History
 
Sql ppt
Sql pptSql ppt
Sql ppt
 
SQL
SQLSQL
SQL
 
TID Chapter 10 Introduction To Database
TID Chapter 10 Introduction To DatabaseTID Chapter 10 Introduction To Database
TID Chapter 10 Introduction To Database
 
Basic sql Commands
Basic sql CommandsBasic sql Commands
Basic sql Commands
 
An Introduction To Oracle Database
An Introduction To Oracle DatabaseAn Introduction To Oracle Database
An Introduction To Oracle Database
 
Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)
 
Sql server T-sql basics ppt-3
Sql server T-sql basics  ppt-3Sql server T-sql basics  ppt-3
Sql server T-sql basics ppt-3
 
Sql.pptx
Sql.pptxSql.pptx
Sql.pptx
 
Chapter 3 Entity Relationship Model
Chapter 3 Entity Relationship ModelChapter 3 Entity Relationship Model
Chapter 3 Entity Relationship Model
 
DML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with Examples
DML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with ExamplesDML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with Examples
DML, DDL, DCL ,DRL/DQL and TCL Statements in SQL with Examples
 
Top 65 SQL Interview Questions and Answers | Edureka
Top 65 SQL Interview Questions and Answers | EdurekaTop 65 SQL Interview Questions and Answers | Edureka
Top 65 SQL Interview Questions and Answers | Edureka
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
SQL-Server Database.pdf
SQL-Server Database.pdfSQL-Server Database.pdf
SQL-Server Database.pdf
 

En vedette

Final exam review answer(networking)
Final exam review answer(networking)Final exam review answer(networking)
Final exam review answer(networking)
welcometofacebook
 
Sql queries with answers
Sql queries with answersSql queries with answers
Sql queries with answers
vijaybusu
 

En vedette (6)

Basic c operators
Basic c operatorsBasic c operators
Basic c operators
 
Final exam review answer(networking)
Final exam review answer(networking)Final exam review answer(networking)
Final exam review answer(networking)
 
Basic networking hardware pre final 1
Basic networking hardware pre final 1Basic networking hardware pre final 1
Basic networking hardware pre final 1
 
Top 100 SQL Interview Questions and Answers
Top 100 SQL Interview Questions and AnswersTop 100 SQL Interview Questions and Answers
Top 100 SQL Interview Questions and Answers
 
Best sql plsql material
Best sql plsql materialBest sql plsql material
Best sql plsql material
 
Sql queries with answers
Sql queries with answersSql queries with answers
Sql queries with answers
 

Similaire à Slides 2-basic sql

Lecture sql
Lecture sqlLecture sql
Lecture sql
Sini
 

Similaire à Slides 2-basic sql (20)

SQL Basic Queries
SQL Basic Queries SQL Basic Queries
SQL Basic Queries
 
sql-basic.ppt
sql-basic.pptsql-basic.ppt
sql-basic.ppt
 
Oracle SQL ppt.ppt
Oracle SQL ppt.pptOracle SQL ppt.ppt
Oracle SQL ppt.ppt
 
SQL BASICS.pptx
SQL BASICS.pptxSQL BASICS.pptx
SQL BASICS.pptx
 
Sql
SqlSql
Sql
 
Lecture sql
Lecture sqlLecture sql
Lecture sql
 
lecture-sql.ppt
lecture-sql.pptlecture-sql.ppt
lecture-sql.ppt
 
lecture-sql(database query language).ppt
lecture-sql(database query language).pptlecture-sql(database query language).ppt
lecture-sql(database query language).ppt
 
lecture-sql.ppt
lecture-sql.pptlecture-sql.ppt
lecture-sql.ppt
 
lecture-sql.ppt
lecture-sql.pptlecture-sql.ppt
lecture-sql.ppt
 
lecture-sql.ppt
lecture-sql.pptlecture-sql.ppt
lecture-sql.ppt
 
Week 11 - 02 - Structured Query Language.ppt
Week 11 - 02 - Structured Query Language.pptWeek 11 - 02 - Structured Query Language.ppt
Week 11 - 02 - Structured Query Language.ppt
 
The Complete Presentation on SQL Server
The  Complete Presentation on SQL ServerThe  Complete Presentation on SQL Server
The Complete Presentation on SQL Server
 
lecture sql server database basic for beginners
lecture sql server database basic for beginnerslecture sql server database basic for beginners
lecture sql server database basic for beginners
 
Data
DataData
Data
 
SQL Basics - Lecture.ppt
SQL Basics - Lecture.pptSQL Basics - Lecture.ppt
SQL Basics - Lecture.ppt
 
Sql introduction
Sql introductionSql introduction
Sql introduction
 
lecture-SQL_Working.ppt
lecture-SQL_Working.pptlecture-SQL_Working.ppt
lecture-SQL_Working.ppt
 
Xamppinstallation edited
Xamppinstallation editedXamppinstallation edited
Xamppinstallation edited
 
SQL structure query language full presentation
SQL structure query language full presentationSQL structure query language full presentation
SQL structure query language full presentation
 

Plus de Anuja Lad

Questions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networkingQuestions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networking
Anuja Lad
 
T y b com question paper of mumbai university
T y b com question paper of mumbai universityT y b com question paper of mumbai university
T y b com question paper of mumbai university
Anuja Lad
 
Questions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networkingQuestions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networking
Anuja Lad
 
T y b com question paper of mumbai university
T y b com question paper of mumbai universityT y b com question paper of mumbai university
T y b com question paper of mumbai university
Anuja Lad
 
Basic networking hardware pre final 1
Basic networking hardware pre final 1Basic networking hardware pre final 1
Basic networking hardware pre final 1
Anuja Lad
 
Data communication
Data communicationData communication
Data communication
Anuja Lad
 
Data communication intro
Data communication introData communication intro
Data communication intro
Anuja Lad
 
Intro net 91407
Intro net 91407Intro net 91407
Intro net 91407
Anuja Lad
 
Itmg360 chapter one_v05
Itmg360 chapter one_v05Itmg360 chapter one_v05
Itmg360 chapter one_v05
Anuja Lad
 
Mysqlppt3510
Mysqlppt3510Mysqlppt3510
Mysqlppt3510
Anuja Lad
 
Lab 4 excel basics
Lab 4 excel basicsLab 4 excel basics
Lab 4 excel basics
Anuja Lad
 
Introductionto excel2007
Introductionto excel2007Introductionto excel2007
Introductionto excel2007
Anuja Lad
 
5 intro to networking
5 intro to networking5 intro to networking
5 intro to networking
Anuja Lad
 
1 introduction-to-computer-networking
1 introduction-to-computer-networking1 introduction-to-computer-networking
1 introduction-to-computer-networking
Anuja Lad
 

Plus de Anuja Lad (20)

Important topic in board exams
Important topic in board examsImportant topic in board exams
Important topic in board exams
 
Data communication
Data communicationData communication
Data communication
 
Data communication intro
Data communication introData communication intro
Data communication intro
 
Questions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networkingQuestions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networking
 
T y b com question paper of mumbai university
T y b com question paper of mumbai universityT y b com question paper of mumbai university
T y b com question paper of mumbai university
 
Questions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networkingQuestions from chapter 1 data communication and networking
Questions from chapter 1 data communication and networking
 
T y b com question paper of mumbai university
T y b com question paper of mumbai universityT y b com question paper of mumbai university
T y b com question paper of mumbai university
 
Basic networking hardware pre final 1
Basic networking hardware pre final 1Basic networking hardware pre final 1
Basic networking hardware pre final 1
 
Data communication
Data communicationData communication
Data communication
 
Data communication intro
Data communication introData communication intro
Data communication intro
 
Intro net 91407
Intro net 91407Intro net 91407
Intro net 91407
 
Itmg360 chapter one_v05
Itmg360 chapter one_v05Itmg360 chapter one_v05
Itmg360 chapter one_v05
 
Mysqlppt3510
Mysqlppt3510Mysqlppt3510
Mysqlppt3510
 
Lab 4 excel basics
Lab 4 excel basicsLab 4 excel basics
Lab 4 excel basics
 
Mysql2
Mysql2Mysql2
Mysql2
 
Introductionto excel2007
Introductionto excel2007Introductionto excel2007
Introductionto excel2007
 
C tutorial
C tutorialC tutorial
C tutorial
 
C
CC
C
 
5 intro to networking
5 intro to networking5 intro to networking
5 intro to networking
 
1 introduction-to-computer-networking
1 introduction-to-computer-networking1 introduction-to-computer-networking
1 introduction-to-computer-networking
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Slides 2-basic sql

  • 2. Outline • Data in SQL • Simple Queries in SQL • Queries with more than one relation Reading: • Chapter 3, “Simple Queries” from SQL for Web Nerds, by Philip Greenspun http://philip.greenspun.com/sql/ 2
  • 3. SQL Introduction Standard language for querying and manipulating data Structured Query Language Many standards out there: • ANSI SQL • SQL92 (a.k.a. SQL2) • SQL99 (a.k.a. SQL3) • Vendors support various subsets of these • What we discuss is common to all of them 3
  • 4. SQL • Data Definition Language (DDL) – Create/alter/delete tables and their attributes – Following lectures... • Data Manipulation Language (DML) – Query one or more tables – discussed next ! – Insert/delete/modify tuples in tables • Transact-SQL – Idea: package a sequence of SQL statements  server – Won’t discuss in class 4
  • 5. Data in SQL 1. Atomic types, a.k.a. data types 2. Tables built from atomic types 5
  • 6. Data Types in SQL • Characters: – CHAR(20) -- fixed length – VARCHAR(40) -- variable length • Numbers: – BIGINT, INT, SMALLINT, TINYINT – REAL, FLOAT -- differ in precision – MONEY • Times and dates: – DATE – DATETIME -- SQL Server • Others... All are simple 6
  • 7. Table name Attribute names Tables in SQL Product PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 Gadgets GizmoWorks SingleTouch $149.99 Photography Canon MultiTouch $203.99 Household Hitachi Tuples or rows 7
  • 8. Tables Explained • A tuple = a record – Restriction: all attributes are of atomic type • A table = a set of tuples – Like a list… – …but it is unorderd: no first(), no next(), no last(). • No nested tables, only flat tables are allowed ! – We will see later how to decompose complex structures into multiple flat tables 8
  • 9. Tables Explained • The schema of a table is the table name and its attributes: Product(PName, Price, Category, Manfacturer) • A key is an attribute whose values are unique; we underline a key Product(PName, Price, Category, Manfacturer) 9
  • 10. SQL Query Basic form: (plus many many more bells and whistles) SELECT attributes SELECT attributes FROM relations (possibly multiple, joined) FROM relations (possibly multiple, joined) WHERE conditions (selections) WHERE conditions (selections) 10
  • 11. Simple SQL Query Product PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 Gadgets GizmoWorks SingleTouch $149.99 Photography Canon MultiTouch $203.99 Household Hitachi SELECT SELECT ** FROM FROM Product Product WHERE WHERE category=‘Gadgets’ category=‘Gadgets’ PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 Gadgets GizmoWorks “selection” 11
  • 12. Simple SQL Query Product PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 Gadgets GizmoWorks SingleTouch $149.99 Photography Canon MultiTouch $203.99 Household Hitachi SELECT SELECT PName, Price, Manufacturer PName, Price, Manufacturer FROM FROM Product Product WHERE WHERE Price > 100 Price > 100 PName Price Manufacturer “selection” and SingleTouch $149.99 Canon “projection” MultiTouch $203.99 Hitachi 12
  • 13. A Notation for SQL Queries Input Schema Product(PName, Price, Category, Manfacturer) SELECT SELECT Name, Price, Manufacturer Name, Price, Manufacturer FROM FROM Product Product WHERE WHERE Price > 100 Price > 100 Answer(PName, Price, Manfacturer) Output Schema 13
  • 14. Selections What goes in the WHERE clause: • x = y, x < y, x <= y, etc – For number, they have the usual meanings – For CHAR and VARCHAR: lexicographic ordering • Expected conversion between CHAR and VARCHAR – For dates and times, what you expect... • Pattern matching on strings: s LIKE p (next) 14
  • 15. The LIKE operator • s LIKE p: pattern matching on strings • p may contain two special symbols: – % = any sequence of characters – _ = any single character Product(Name, Price, Category, Manufacturer) Find all products whose name mentions ‘gizmo’: SELECT SELECT ** FROM FROM Products Products WHERE WHERE PName LIKE ‘%gizmo%’ PName LIKE ‘%gizmo%’ 15
  • 16. Eliminating Duplicates Category SELECT DISTINCT category SELECT DISTINCT category Gadgets FROM Product FROM Product Photography Household Compare to: Category Gadgets SELECT category SELECT category Gadgets FROM Product FROM Product Photography Household 16
  • 17. Ordering the Results SELECT pname, price, manufacturer SELECT pname, price, manufacturer FROM Product FROM Product WHERE category=‘gizmo’ AND price > 50 WHERE category=‘gizmo’ AND price > 50 ORDER BY price, pname ORDER BY price, pname Ordering is ascending, unless you specify the DESC keyword. Ties are broken by the second attribute on the ORDER BY list, etc. 17
  • 18. Ordering the Results SELECT Category SELECT Category FROM Product FROM Product ORDER BY PName ORDER BY PName PName Price Category Manufacturer ? Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 Gadgets GizmoWorks SingleTouch $149.99 Photography Canon MultiTouch $203.99 Household Hitachi 18
  • 19. Ordering the Results Category SELECT DISTINCT category SELECT DISTINCT category Gadgets FROM Product FROM Product Household ORDER BY category ORDER BY category Photography Compare to: SELECT DISTINCT category ? SELECT DISTINCT category FROM Product FROM Product ORDER BY PName ORDER BY PName 19
  • 20. Joins in SQL • Connect two or more tables: Product PName Price Category Manufacturer Gizmo $19.99 Gadgets GizmoWorks Powergizmo $29.99 Gadgets GizmoWorks SingleTouch $149.99 Photography Canon MultiTouch $203.99 Household Hitachi Company CName StockPrice Country GizmoWorks 25 USA What is the Connection Canon 65 Japan between them ? Hitachi 15 Japan 20
  • 21. Joins Product (pname, price, category, manufacturer) Company (cname, stockPrice, country) Find all products under $200 manufactured in Japan; return their names and prices. Join between Product SELECT PName, Price SELECT PName, Price and Company FROM FROM Product, Company Product, Company WHERE Manufacturer=CName AND Country=‘Japan’ WHERE Manufacturer=CName AND Country=‘Japan’ AND Price <= 200 AND Price <= 200 21
  • 22. Joins in SQL Product Company PName Price Category Manufacturer Cname StockPrice Country Gizmo $19.99 Gadgets GizmoWorks GizmoWorks 25 USA Powergizmo $29.99 Gadgets GizmoWorks Canon 65 Japan SingleTouch $149.99 Photography Canon Hitachi 15 Japan MultiTouch $203.99 Household Hitachi SELECT PName, Price SELECT PName, Price FROM Product, Company FROM Product, Company WHERE Manufacturer=CName AND Country=‘Japan’ WHERE Manufacturer=CName AND Country=‘Japan’ AND Price <= 200 AND Price <= 200 PName Price SingleTouch $149.99 22
  • 23. Joins Product (pname, price, category, manufacturer) Company (cname, stockPrice, country) Find all countries that manufacture some product in the ‘Gadgets’ category. SELECT SELECT Country Country FROM FROM Product, Company Product, Company WHERE WHERE Manufacturer=CName AND Category=‘Gadgets’ Manufacturer=CName AND Category=‘Gadgets’ 23
  • 24. Joins in SQL Product Company PName Price Category Manufacturer Cname StockPrice Country Gizmo $19.99 Gadgets GizmoWorks GizmoWorks 25 USA Powergizmo $29.99 Gadgets GizmoWorks Canon 65 Japan SingleTouch $149.99 Photography Canon Hitachi 15 Japan MultiTouch $203.99 Household Hitachi SELECT Country SELECT Country FROM Product, Company FROM Product, Company WHERE Manufacturer=CName AND Category=‘Gadgets’ WHERE Manufacturer=CName AND Category=‘Gadgets’ Country What is ?? the problem ? ?? What’s the solution ? 24
  • 25. Joins Product (pname, price, category, manufacturer) Purchase (buyer, seller, store, product) Person(persname, phoneNumber, city) Find names of people living in Seattle that bought some product in the ‘Gadgets’ category, and the names of the stores they bought such product from SELECT SELECT DISTINCT persname, store DISTINCT persname, store FROM FROM Person, Purchase, Product Person, Purchase, Product WHERE WHERE persname=buyer AND product = pname AND persname=buyer AND product = pname AND city=‘Seattle’ AND category=‘Gadgets’ city=‘Seattle’ AND category=‘Gadgets’ 25
  • 26. Disambiguating Attributes • Sometimes two relations have the same attr: Person(pname, address, worksfor) Company(cname, address) Which SELECT SELECT DISTINCT pname, address DISTINCT pname, address address ? FROM FROM Person, Company Person, Company WHERE WHERE worksfor = cname worksfor = cname SELECT SELECT DISTINCT Person.pname, Company.address DISTINCT Person.pname, Company.address FROM FROM Person, Company Person, Company WHERE WHERE Person.worksfor = Company.cname 26 Person.worksfor = Company.cname
  • 27. Tuple Variables Product (pname, price, category, manufacturer) Purchase (buyer, seller, store, product) Person(persname, phoneNumber, city) Find all stores that sold at least one product that the store ‘BestBuy’ also sold: SELECT DISTINCT x.store SELECT DISTINCT x.store FROM Purchase AS x, Purchase AS y FROM Purchase AS x, Purchase AS y WHERE x.product = y.product AND y.store = ‘BestBuy’ WHERE x.product = y.product AND y.store = ‘BestBuy’ Answer (store) 27
  • 28. General rule: Tuple Variables tuple variables introduced automatically by the system: Product ( name, price, category, manufacturer) SELECT name SELECT name FROM Product FROM Product WHERE price > 100 WHERE price > 100 Becomes: SELECT Product.name SELECT Product.name FROM Product AS Product FROM Product AS Product WHERE Product.price > 100 WHERE Product.price > 100 Doesn’t work when Product occurs more than once: In that case the user needs to define variables 28
  • 29. Meaning (Semantics) of SQL Queries SELECT a1, a2, …, ak FROM R1 AS x1, R2 AS x2, …, Rn AS xn WHERE Conditions 1. Nested loops: Answer = {} Answer = {} for x1 in R1 do for x1 in R1 do for x2 in R2 do for x2 in R2 do ….. ….. for xn in Rn do for xn in Rn do if Conditions if Conditions then Answer = Answer ∪ {(a1,…,ak)} then Answer = Answer ∪ {(a1,…,ak)} return Answer return Answer 29
  • 30. Meaning (Semantics) of SQL Queries SELECT a1, a2, …, ak FROM R1 AS x1, R2 AS x2, …, Rn AS xn WHERE Conditions 2. Parallel assignment Answer = {} Answer = {} for all assignments x1 in R1, …, xn in Rn do for all assignments x1 in R1, …, xn in Rn do if Conditions then Answer = Answer ∪ {(a1,…,ak)} if Conditions then Answer = Answer ∪ {(a1,…,ak)} return Answer return Answer Doesn’t impose any order ! 30
  • 31. First Unintuitive SQLism SELECT R.A FROM R, S, T WHERE R.A=S.A OR R.A=T.A Looking for R ∩ (S ∪ T) But what happens if T is empty? 31