SlideShare a Scribd company logo
1 of 50
Trinity College

                       Basic SQL
                         Part 2
                           Timothy Richards




    Trinity College, Hartford CT • Department of Computer Science • CPSC 372
Last Time
• SQL Language
 • Declarative language
• Many Standards
 • 1986-2008
• Data Definition Language (DDL)
 • CREATE TABLE
• Data Manipulation Language (DML)
 • SELECT-FROM-WHERE
    Trinity College, Hartford CT • Department of Computer Science • CPSC 372   2
Today
• Objectives
   •   Ambiguous attribute names, Aliasing, Renaming, and Tuple Variables
  •    Unspecified WHERE and the use of *
  •    Tables as sets
  •    Pattern matching and arithmetic operators
  •    Ordering query results
  •    INSERT, DELETE, UPDATE

• Goal
  After today’s class you should be able to create a relational
  database schema/instance using SQL DDL, manipulate data in the
  tables you create, and define queries on that data.




      Trinity College, Hartford CT • Department of Computer Science • CPSC 372   3
Query Example
    For every project located in ‘Stafford’, list the
project number, the controlling department number,
and the department manager’s last name, address,
                   and birth date.

              SELECT         Pnumber, Dnum,
                             Lname, Address,
                             Bdate
              FROM           PROJECT, DEPARTMENT,
                             EMPLOYEE
              WHERE          Dnum=Dnumber AND
                             Mgr_ssn=Ssn AND
                             Plocation=‘Stafford’;

  Trinity College, Hartford CT • Department of Computer Science • CPSC 372   4
Attribute Ambiguity
In SQL, the same name can be used for two (or more)
   attributes as long as the attributes are in different
                        relations.




     Trinity College, Hartford CT • Department of Computer Science • CPSC 372   5
Attribute Ambiguity
In SQL, the same name can be used for two (or more)
   attributes as long as the attributes are in different
                        relations.


                            Ambiguous




     Trinity College, Hartford CT • Department of Computer Science • CPSC 372   6
Attribute Ambiguity
In SQL, the same name can be used for two (or more)
   attributes as long as the attributes are in different
                        relations.


                            Ambiguous


         Solution: qualify attributes names
     with the relation names to avoid ambiguity


     Trinity College, Hartford CT • Department of Computer Science • CPSC 372   7
Attribute Ambiguity
       Imagine the Dno and Lname attributes
        of the EMPLOYEE relation were called
    Dnumber and Name and the Dname attribute
         of DEPARTMENT was called Name.




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   8
Attribute Ambiguity
       Imagine the Dno and Lname attributes
        of the EMPLOYEE relation were called
    Dnumber and Name and the Dname attribute
         of DEPARTMENT was called Name.


        List the first name, last name, and address
       of all employees in the Research department.


  SELECT         Fname, Name, Address
  FROM           EMPLOYEE, DEPARTMENT
  WHERE          Name=‘Research’ AND
                 Dnumber=Dnumber;

Trinity College, Hartford CT • Department of Computer Science • CPSC 372   9
Attribute Ambiguity
       Imagine the Dno and Lname attributes
        of the EMPLOYEE relation were called
    Dnumber and Name and the Dname attribute
         of DEPARTMENT was called Name.


        List the first name, last name, and address
       of all employees in the Research department.


  SELECT         Fname, Name, Address
  FROM           EMPLOYEE, DEPARTMENT
  WHERE          Name=‘Research’ AND                         Ambiguity
                 Dnumber=Dnumber;

Trinity College, Hartford CT • Department of Computer Science • CPSC 372   10
Attribute Ambiguity
            Imagine the Dno and Lname attributes
             of the EMPLOYEE relation were called
         Dnumber and Name and the Dname attribute
              of DEPARTMENT was called Name.


            List the first name, last name, and address
           of all employees in the Research department.
                              Qualify!
SELECT     Fname, EMPLOYEE.Name, Address
FROM       EMPLOYEE, DEPARTMENT
WHERE      DEPARTMENT.Name=‘Research’ AND
           DEPARTMENT.Dnumber=EMPLOYEE.Dnumber;

   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   11
Attribute Ambiguity
         You can also qualify attribute names for clarity...



SELECT      EMPLOYEE.Fname, EMPLOYEE.Name,
            EMPLOYEE.Address
FROM        EMPLOYEE, DEPARTMENT
WHERE       DEPARTMENT.Name=‘Research’ AND
            DEPARTMENT.Dnumber=EMPLOYEE.Dnumber;




   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   12
Attribute Ambiguity
         You can also qualify attribute names for clarity...
                   This is quite verbose!


SELECT      EMPLOYEE.Fname, EMPLOYEE.Name,
            EMPLOYEE.Address
FROM        EMPLOYEE, DEPARTMENT
WHERE       DEPARTMENT.Name=‘Research’ AND
            DEPARTMENT.Dnumber=EMPLOYEE.Dnumber;




   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   13
Attribute Ambiguity
         You can also qualify attribute names for clarity...
                   This is quite verbose!


SELECT      E.Fname, E.Name, E.Address
FROM        EMPLOYEE AS E, DEPARTMENT AS D
WHERE       D.Name=‘Research’ AND
            D.Dnumber=E.Dnumber;



               For this we can use table aliases!



   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   14
Attribute Ambiguity
         You can also qualify attribute names for clarity...
                   This is quite verbose!


SELECT      E.Fname, E.Name, E.Address
FROM        EMPLOYEE AS E, DEPARTMENT AS D
WHERE       D.Name=‘Research’ AND
            D.Dnumber=E.Dnumber;



              Although this is nice for reducing typing...
 it is required for queries that refer to the same relation twice!


     Trinity College, Hartford CT • Department of Computer Science • CPSC 372   15
Attribute Ambiguity


SELECT      E.Fname, E.Lname, S.Fname, S.Lname
FROM        EMPLOYEE AS E, EMPLOYEE AS S
WHERE       E.Super_ssn=S.Ssn;




              Although this is nice for reducing typing...
 it is required for queries that refer to the same relation twice!


     Trinity College, Hartford CT • Department of Computer Science • CPSC 372   16
Attribute Ambiguity
        What does this query mean in English?


SELECT      E.Fname, E.Lname, S.Fname, S.Lname
FROM        EMPLOYEE AS E, EMPLOYEE AS S
WHERE       E.Super_ssn=S.Ssn;




              Although this is nice for reducing typing...
 it is required for queries that refer to the same relation twice!


     Trinity College, Hartford CT • Department of Computer Science • CPSC 372   17
Attribute Ambiguity
      What does this query mean in English?


SELECT     E.Fname, E.Lname, S.Fname, S.Lname
FROM       EMPLOYEE AS E, EMPLOYEE AS S
WHERE      E.Super_ssn=S.Ssn;



         For each employee, retrieve the employee’s first
            and last name and the first and last name
               of his or her immediate supervisor.


   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   18
Attribute Ambiguity
      What does this query mean in English?


SELECT     E.Fname, E.Lname, S.Fname, S.Lname
FROM       EMPLOYEE AS E, EMPLOYEE AS S
WHERE      E.Super_ssn=S.Ssn;

                                                    Tuple Variables
         For each employee, retrieve the employee’s first
            and last name and the first and last name
               of his or her immediate supervisor.


   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   19
Attribute Ambiguity
           It is also possible to rename all attributes


EMPLOYEE AS E(Fn,Mi,Ln,Ssn,Bd,Addr,Sx,Sal,Sssn,Dno)




    Trinity College, Hartford CT • Department of Computer Science • CPSC 372   20
Missing WHERE
    What if I do not want to impose a condition
           on the tuples that are returned?




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   21
Missing WHERE
    What if I do not want to impose a condition
           on the tuples that are returned?



   Turns out that you do not need a WHERE clause!


                  SELECT         Ssn
                  FROM           EMPLOYEE;

                 SELECT          Ssn, Dname
                 FROM            EMPLOYEE, DEPARTMENT;


Trinity College, Hartford CT • Department of Computer Science • CPSC 372   22
Missing WHERE
            What if I do not want to impose a condition
                   on the tuples that are returned?



           Turns out that you do not need a WHERE clause!


                          SELECT         Ssn
                          FROM           EMPLOYEE;

What tuples does         SELECT          Ssn, Dname
 this return?            FROM            EMPLOYEE, DEPARTMENT;


        Trinity College, Hartford CT • Department of Computer Science • CPSC 372   23
Missing WHERE



                  Because we do not specify a “join condition” between
                     the two tables, we get the cross product of
                    the specified attributes between the two tables!


What tuples does         SELECT          Ssn, Dname
 this return?            FROM            EMPLOYEE, DEPARTMENT;


        Trinity College, Hartford CT • Department of Computer Science • CPSC 372   24
Missing WHERE
         SSN
E      02783465
       02537596

       Dname
D      Research
     Administration

                      Because we do not specify a “join condition” between
                         the two tables, we get the cross product of
                        the specified attributes between the two tables!


What tuples does            SELECT          Ssn, Dname
 this return?               FROM            EMPLOYEE, DEPARTMENT;


           Trinity College, Hartford CT • Department of Computer Science • CPSC 372   25
Missing WHERE
         SSN
E      02783465                                               SSN                Dname
       02537596                                             02783465             Research
                                        *                   02537596             Research
       Dname                                                02783465          Administration
D      Research                                             02537596          Administration
     Administration

                      Because we do not specify a “join condition” between
                         the two tables, we get the cross product of
                        the specified attributes between the two tables!


What tuples does            SELECT          Ssn, Dname
 this return?               FROM            EMPLOYEE, DEPARTMENT;


           Trinity College, Hartford CT • Department of Computer Science • CPSC 372            26
Missing WHERE
         SSN
E      02783465                                               SSN                Dname
       02537596                                             02783465             Research
                                        *                   02537596             Research
       Dname                                                02783465          Administration
D      Research                                             02537596          Administration
     Administration

                                     We can get sensible results
                                 if we include a join condition on
                                           the SSN attribute.


What tuples does            SELECT          Ssn, Dname
 this return?               FROM            EMPLOYEE, DEPARTMENT;


           Trinity College, Hartford CT • Department of Computer Science • CPSC 372            27
Missing WHERE
         SSN
E      02783465
                                                              SSN                Dname
       02537596
                                        *                   02783465             Research
       Dname                                                02537596           Administration
D      Research
     Administration

                                     We can get sensible results
                                 if we include a join condition on
                                           the SSN attribute.


What tuples does            SELECT          Ssn, Dname
 this return?               FROM            EMPLOYEE, DEPARTMENT
                            WHERE           Dno=Dnumber;

           Trinity College, Hartford CT • Department of Computer Science • CPSC 372             28
Selecting *
          Sometimes we want all the attributes
                 returned in a result.


                  SELECT          *
                  FROM            EMPLOYEE;




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   29
Selecting *
          Sometimes we want all the attributes
                 returned in a result.


                  SELECT          *
                  FROM            EMPLOYEE;



                 This will return each value
               for every attribute in a tuple.




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   30
Tables as Sets
            SQL typically treats a table as a set.




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   31
Tables as Sets
            SQL typically treats a table as a set.

              More accurately, as a multiset.
                    What is a multiset?




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   32
Tables as Sets
            SQL typically treats a table as a set.

              More accurately, as a multiset.
                    What is a multiset?

              A set, where duplicate tuples
           can appear more than once in a table.




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   33
Tables as Sets
            SQL typically treats a table as a set.

              More accurately, as a multiset.
                    What is a multiset?

              A set, where duplicate tuples
           can appear more than once in a table.

            But, I thought that was bad?!




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   34
Tables as Sets
            SQL typically treats a table as a set.

              More accurately, as a multiset.
                    What is a multiset?

              A set, where duplicate tuples
           can appear more than once in a table.

            But, I thought that was bad?!

           Turns out, in practice this is useful...


Trinity College, Hartford CT • Department of Computer Science • CPSC 372   35
Tables as Sets
• SQL allows duplicates because...
  • Duplicate elimination is an expensive operation.
                  Can you think why?

  • The user may want to see duplicate tuples in the result of a
    query

  • When an aggregate function is applied to tuples, in most
    cases we do not want to eliminate duplicates.




   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   36
Tables as Sets

          Retrieve the salary of every employee


                  SELECT          Salary
                  FROM            EMPLOYEE;




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   37
Tables as Sets

          Retrieve the salary of every employee


                  SELECT          Salary
                  FROM            EMPLOYEE;


      Ok, this returns tuples containing the salary
                   of each employee.
                       Is it useful?




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   38
Tables as Sets

          Retrieve the salary of every employee


                  SELECT          Salary
                  FROM            EMPLOYEE;


      Ok, this returns tuples containing the salary
                   of each employee.
                       Is it useful?

  What if we only wanted to see the distinct salaries?


Trinity College, Hartford CT • Department of Computer Science • CPSC 372   39
Tables as Sets

          Retrieve the salary of every employee


                  SELECT          DISTINCT Salary
                  FROM            EMPLOYEE;


      Ok, this returns tuples containing the salary
                   of each employee.
                       Is it useful?

  What if we only wanted to see the distinct salaries?
          This results in distinct salaries!

Trinity College, Hartford CT • Department of Computer Science • CPSC 372   40
Tables as Sets

                 Retrieve the salary of every employee

We can use
                    SELECT               ALL Salary
ALL to retrieve all
---same as default. FROM                 EMPLOYEE;


             Ok, this returns tuples containing the salary
                          of each employee.
                              Is it useful?

         What if we only wanted to see the distinct salaries?
                 This results in distinct salaries!

       Trinity College, Hartford CT • Department of Computer Science • CPSC 372   41
Tables as Sets
SQL has direct support for some set operations

        Make a list of all project numbers for projects
    that involve an employee whose last name is ‘Smith’,
   either as a worker or as a manager of the department
                  that controls the project.

If SQL supports set union (it does), how might
      we want to compose this query?



 Trinity College, Hartford CT • Department of Computer Science • CPSC 372   42
Tables as Sets
SQL has direct support for some set operations

        Make a list of all project numbers for projects
    that involve an employee whose last name is ‘Smith’,
   either as a worker or as a manager of the department
                  that controls the project.

SELECT    DISTINCT Pnumber
FROM      PROJECT, DEPARTMENT, EMPLOYEE                    First write the query
WHERE     Dnum=Dnumber AND Mgr_ssn=Ssn                     for the first part...
          AND Lname=‘Smith’;




 Trinity College, Hartford CT • Department of Computer Science • CPSC 372          43
Tables as Sets
SQL has direct support for some set operations

        Make a list of all project numbers for projects
    that involve an employee whose last name is ‘Smith’,
   either as a worker or as a manager of the department
                  that controls the project.

SELECT    DISTINCT Pnumber
FROM      PROJECT, DEPARTMENT, EMPLOYEE
WHERE     Dnum=Dnumber AND Mgr_ssn=Ssn
          AND Lname=‘Smith’;
                                                           Then write a query for
SELECT    DISTINCT Pnumber                                 the second part...
FROM      PROJECT, WORKS_ON, EMPLOYEE
WHERE     Pnumber=Pno AND Essn=Ssn AND Lname=‘Smith’;

 Trinity College, Hartford CT • Department of Computer Science • CPSC 372           44
Tables as Sets
SQL has direct support for some set operations

        Make a list of all project numbers for projects
    that involve an employee whose last name is ‘Smith’,
   either as a worker or as a manager of the department
                  that controls the project.

(SELECT     DISTINCT Pnumber
 FROM       PROJECT, DEPARTMENT, EMPLOYEE
 WHERE      Dnum=Dnumber AND Mgr_ssn=Ssn
            AND Lname=‘Smith’)                             Then union the
 UNION                                                     results together!
(SELECT     DISTINCT Pnumber
 FROM       PROJECT, WORKS_ON, EMPLOYEE
 WHERE      Pnumber=Pno AND Essn=Ssn AND Lname=‘Smith’);

 Trinity College, Hartford CT • Department of Computer Science • CPSC 372      45
Tables as Sets
SQL has direct support for some set operations

          In addition to UNION SQL also supports
                set difference (EXCEPT) and
               set intersection (INTERSECT)




 Trinity College, Hartford CT • Department of Computer Science • CPSC 372   46
Substring Pattern Matching
  Retrieve all employees whose address is in Houston,Texas.


  SELECT         Fname, Lname
  FROM           EMPLOYEE
  WHERE          Address LIKE ‘%Houston,TX%’;




 Trinity College, Hartford CT • Department of Computer Science • CPSC 372   47
Substring Pattern Matching
    Find all employees who were born during the 1950s.


  SELECT         Fname, Lname
  FROM           EMPLOYEE
  WHERE          Bdate LIKE ‘__5_______’;




 Trinity College, Hartford CT • Department of Computer Science • CPSC 372   48
Arithmetic Operations
    Show the resulting salaries if every employee working on
       the ‘ProductX’ project is given a 10 percent raise.

SELECT   E.Fname, E.Lname, E.Salary*1.1 AS incr
FROM     EMPLOYEE AS E, WORKS_ON AS W, PROJECT AS P
WHERE    E.Ssn=W.Essn AND W.Pno=P.Pnumber AND
         P.Pname=‘ProductX’




   Trinity College, Hartford CT • Department of Computer Science • CPSC 372   49
Next time...

               Ordering Query Results
                               AND
    Insert, Deleting, and Updating, Oh My!




Trinity College, Hartford CT • Department of Computer Science • CPSC 372   50

More Related Content

Viewers also liked

Ethical Hacking n VAPT presentation by Suvrat jain
Ethical Hacking n VAPT presentation by Suvrat jainEthical Hacking n VAPT presentation by Suvrat jain
Ethical Hacking n VAPT presentation by Suvrat jainSuvrat Jain
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacksRespa Peter
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injectionashish20012
 
SQL injection: Not Only AND 1=1 (updated)
SQL injection: Not Only AND 1=1 (updated)SQL injection: Not Only AND 1=1 (updated)
SQL injection: Not Only AND 1=1 (updated)Bernardo Damele A. G.
 
Sql Injection attacks and prevention
Sql Injection attacks and preventionSql Injection attacks and prevention
Sql Injection attacks and preventionhelloanand
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationRapid Purple
 

Viewers also liked (12)

Ethical Hacking n VAPT presentation by Suvrat jain
Ethical Hacking n VAPT presentation by Suvrat jainEthical Hacking n VAPT presentation by Suvrat jain
Ethical Hacking n VAPT presentation by Suvrat jain
 
SQL Injection
SQL InjectionSQL Injection
SQL Injection
 
Sql injection
Sql injectionSql injection
Sql injection
 
Newbytes NullHyd
Newbytes NullHydNewbytes NullHyd
Newbytes NullHyd
 
Types of sql injection attacks
Types of sql injection attacksTypes of sql injection attacks
Types of sql injection attacks
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injection
 
Advanced sql injection 2
Advanced sql injection 2Advanced sql injection 2
Advanced sql injection 2
 
SQL Injection
SQL Injection SQL Injection
SQL Injection
 
SQL injection: Not Only AND 1=1 (updated)
SQL injection: Not Only AND 1=1 (updated)SQL injection: Not Only AND 1=1 (updated)
SQL injection: Not Only AND 1=1 (updated)
 
Sql Injection attacks and prevention
Sql Injection attacks and preventionSql Injection attacks and prevention
Sql Injection attacks and prevention
 
Sql injection
Sql injectionSql injection
Sql injection
 
SQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint PresentationSQL Injections - A Powerpoint Presentation
SQL Injections - A Powerpoint Presentation
 

More from University of Massachusetts Amherst (6)

Community College Day Spring 2013
Community College Day Spring 2013Community College Day Spring 2013
Community College Day Spring 2013
 
Freshmen Advising Spring 2013
Freshmen Advising Spring 2013Freshmen Advising Spring 2013
Freshmen Advising Spring 2013
 
Markup Languages
Markup LanguagesMarkup Languages
Markup Languages
 
Java review-2
Java review-2Java review-2
Java review-2
 
Lecture 06
Lecture 06Lecture 06
Lecture 06
 
java review
java reviewjava review
java review
 

Basic SQL Part 2

  • 1. Trinity College Basic SQL Part 2 Timothy Richards Trinity College, Hartford CT • Department of Computer Science • CPSC 372
  • 2. Last Time • SQL Language • Declarative language • Many Standards • 1986-2008 • Data Definition Language (DDL) • CREATE TABLE • Data Manipulation Language (DML) • SELECT-FROM-WHERE Trinity College, Hartford CT • Department of Computer Science • CPSC 372 2
  • 3. Today • Objectives • Ambiguous attribute names, Aliasing, Renaming, and Tuple Variables • Unspecified WHERE and the use of * • Tables as sets • Pattern matching and arithmetic operators • Ordering query results • INSERT, DELETE, UPDATE • Goal After today’s class you should be able to create a relational database schema/instance using SQL DDL, manipulate data in the tables you create, and define queries on that data. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 3
  • 4. Query Example For every project located in ‘Stafford’, list the project number, the controlling department number, and the department manager’s last name, address, and birth date. SELECT Pnumber, Dnum, Lname, Address, Bdate FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Plocation=‘Stafford’; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 4
  • 5. Attribute Ambiguity In SQL, the same name can be used for two (or more) attributes as long as the attributes are in different relations. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 5
  • 6. Attribute Ambiguity In SQL, the same name can be used for two (or more) attributes as long as the attributes are in different relations. Ambiguous Trinity College, Hartford CT • Department of Computer Science • CPSC 372 6
  • 7. Attribute Ambiguity In SQL, the same name can be used for two (or more) attributes as long as the attributes are in different relations. Ambiguous Solution: qualify attributes names with the relation names to avoid ambiguity Trinity College, Hartford CT • Department of Computer Science • CPSC 372 7
  • 8. Attribute Ambiguity Imagine the Dno and Lname attributes of the EMPLOYEE relation were called Dnumber and Name and the Dname attribute of DEPARTMENT was called Name. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 8
  • 9. Attribute Ambiguity Imagine the Dno and Lname attributes of the EMPLOYEE relation were called Dnumber and Name and the Dname attribute of DEPARTMENT was called Name. List the first name, last name, and address of all employees in the Research department. SELECT Fname, Name, Address FROM EMPLOYEE, DEPARTMENT WHERE Name=‘Research’ AND Dnumber=Dnumber; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 9
  • 10. Attribute Ambiguity Imagine the Dno and Lname attributes of the EMPLOYEE relation were called Dnumber and Name and the Dname attribute of DEPARTMENT was called Name. List the first name, last name, and address of all employees in the Research department. SELECT Fname, Name, Address FROM EMPLOYEE, DEPARTMENT WHERE Name=‘Research’ AND Ambiguity Dnumber=Dnumber; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 10
  • 11. Attribute Ambiguity Imagine the Dno and Lname attributes of the EMPLOYEE relation were called Dnumber and Name and the Dname attribute of DEPARTMENT was called Name. List the first name, last name, and address of all employees in the Research department. Qualify! SELECT Fname, EMPLOYEE.Name, Address FROM EMPLOYEE, DEPARTMENT WHERE DEPARTMENT.Name=‘Research’ AND DEPARTMENT.Dnumber=EMPLOYEE.Dnumber; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 11
  • 12. Attribute Ambiguity You can also qualify attribute names for clarity... SELECT EMPLOYEE.Fname, EMPLOYEE.Name, EMPLOYEE.Address FROM EMPLOYEE, DEPARTMENT WHERE DEPARTMENT.Name=‘Research’ AND DEPARTMENT.Dnumber=EMPLOYEE.Dnumber; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 12
  • 13. Attribute Ambiguity You can also qualify attribute names for clarity... This is quite verbose! SELECT EMPLOYEE.Fname, EMPLOYEE.Name, EMPLOYEE.Address FROM EMPLOYEE, DEPARTMENT WHERE DEPARTMENT.Name=‘Research’ AND DEPARTMENT.Dnumber=EMPLOYEE.Dnumber; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 13
  • 14. Attribute Ambiguity You can also qualify attribute names for clarity... This is quite verbose! SELECT E.Fname, E.Name, E.Address FROM EMPLOYEE AS E, DEPARTMENT AS D WHERE D.Name=‘Research’ AND D.Dnumber=E.Dnumber; For this we can use table aliases! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 14
  • 15. Attribute Ambiguity You can also qualify attribute names for clarity... This is quite verbose! SELECT E.Fname, E.Name, E.Address FROM EMPLOYEE AS E, DEPARTMENT AS D WHERE D.Name=‘Research’ AND D.Dnumber=E.Dnumber; Although this is nice for reducing typing... it is required for queries that refer to the same relation twice! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 15
  • 16. Attribute Ambiguity SELECT E.Fname, E.Lname, S.Fname, S.Lname FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.Super_ssn=S.Ssn; Although this is nice for reducing typing... it is required for queries that refer to the same relation twice! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 16
  • 17. Attribute Ambiguity What does this query mean in English? SELECT E.Fname, E.Lname, S.Fname, S.Lname FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.Super_ssn=S.Ssn; Although this is nice for reducing typing... it is required for queries that refer to the same relation twice! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 17
  • 18. Attribute Ambiguity What does this query mean in English? SELECT E.Fname, E.Lname, S.Fname, S.Lname FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.Super_ssn=S.Ssn; For each employee, retrieve the employee’s first and last name and the first and last name of his or her immediate supervisor. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 18
  • 19. Attribute Ambiguity What does this query mean in English? SELECT E.Fname, E.Lname, S.Fname, S.Lname FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.Super_ssn=S.Ssn; Tuple Variables For each employee, retrieve the employee’s first and last name and the first and last name of his or her immediate supervisor. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 19
  • 20. Attribute Ambiguity It is also possible to rename all attributes EMPLOYEE AS E(Fn,Mi,Ln,Ssn,Bd,Addr,Sx,Sal,Sssn,Dno) Trinity College, Hartford CT • Department of Computer Science • CPSC 372 20
  • 21. Missing WHERE What if I do not want to impose a condition on the tuples that are returned? Trinity College, Hartford CT • Department of Computer Science • CPSC 372 21
  • 22. Missing WHERE What if I do not want to impose a condition on the tuples that are returned? Turns out that you do not need a WHERE clause! SELECT Ssn FROM EMPLOYEE; SELECT Ssn, Dname FROM EMPLOYEE, DEPARTMENT; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 22
  • 23. Missing WHERE What if I do not want to impose a condition on the tuples that are returned? Turns out that you do not need a WHERE clause! SELECT Ssn FROM EMPLOYEE; What tuples does SELECT Ssn, Dname this return? FROM EMPLOYEE, DEPARTMENT; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 23
  • 24. Missing WHERE Because we do not specify a “join condition” between the two tables, we get the cross product of the specified attributes between the two tables! What tuples does SELECT Ssn, Dname this return? FROM EMPLOYEE, DEPARTMENT; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 24
  • 25. Missing WHERE SSN E 02783465 02537596 Dname D Research Administration Because we do not specify a “join condition” between the two tables, we get the cross product of the specified attributes between the two tables! What tuples does SELECT Ssn, Dname this return? FROM EMPLOYEE, DEPARTMENT; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 25
  • 26. Missing WHERE SSN E 02783465 SSN Dname 02537596 02783465 Research * 02537596 Research Dname 02783465 Administration D Research 02537596 Administration Administration Because we do not specify a “join condition” between the two tables, we get the cross product of the specified attributes between the two tables! What tuples does SELECT Ssn, Dname this return? FROM EMPLOYEE, DEPARTMENT; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 26
  • 27. Missing WHERE SSN E 02783465 SSN Dname 02537596 02783465 Research * 02537596 Research Dname 02783465 Administration D Research 02537596 Administration Administration We can get sensible results if we include a join condition on the SSN attribute. What tuples does SELECT Ssn, Dname this return? FROM EMPLOYEE, DEPARTMENT; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 27
  • 28. Missing WHERE SSN E 02783465 SSN Dname 02537596 * 02783465 Research Dname 02537596 Administration D Research Administration We can get sensible results if we include a join condition on the SSN attribute. What tuples does SELECT Ssn, Dname this return? FROM EMPLOYEE, DEPARTMENT WHERE Dno=Dnumber; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 28
  • 29. Selecting * Sometimes we want all the attributes returned in a result. SELECT * FROM EMPLOYEE; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 29
  • 30. Selecting * Sometimes we want all the attributes returned in a result. SELECT * FROM EMPLOYEE; This will return each value for every attribute in a tuple. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 30
  • 31. Tables as Sets SQL typically treats a table as a set. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 31
  • 32. Tables as Sets SQL typically treats a table as a set. More accurately, as a multiset. What is a multiset? Trinity College, Hartford CT • Department of Computer Science • CPSC 372 32
  • 33. Tables as Sets SQL typically treats a table as a set. More accurately, as a multiset. What is a multiset? A set, where duplicate tuples can appear more than once in a table. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 33
  • 34. Tables as Sets SQL typically treats a table as a set. More accurately, as a multiset. What is a multiset? A set, where duplicate tuples can appear more than once in a table. But, I thought that was bad?! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 34
  • 35. Tables as Sets SQL typically treats a table as a set. More accurately, as a multiset. What is a multiset? A set, where duplicate tuples can appear more than once in a table. But, I thought that was bad?! Turns out, in practice this is useful... Trinity College, Hartford CT • Department of Computer Science • CPSC 372 35
  • 36. Tables as Sets • SQL allows duplicates because... • Duplicate elimination is an expensive operation. Can you think why? • The user may want to see duplicate tuples in the result of a query • When an aggregate function is applied to tuples, in most cases we do not want to eliminate duplicates. Trinity College, Hartford CT • Department of Computer Science • CPSC 372 36
  • 37. Tables as Sets Retrieve the salary of every employee SELECT Salary FROM EMPLOYEE; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 37
  • 38. Tables as Sets Retrieve the salary of every employee SELECT Salary FROM EMPLOYEE; Ok, this returns tuples containing the salary of each employee. Is it useful? Trinity College, Hartford CT • Department of Computer Science • CPSC 372 38
  • 39. Tables as Sets Retrieve the salary of every employee SELECT Salary FROM EMPLOYEE; Ok, this returns tuples containing the salary of each employee. Is it useful? What if we only wanted to see the distinct salaries? Trinity College, Hartford CT • Department of Computer Science • CPSC 372 39
  • 40. Tables as Sets Retrieve the salary of every employee SELECT DISTINCT Salary FROM EMPLOYEE; Ok, this returns tuples containing the salary of each employee. Is it useful? What if we only wanted to see the distinct salaries? This results in distinct salaries! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 40
  • 41. Tables as Sets Retrieve the salary of every employee We can use SELECT ALL Salary ALL to retrieve all ---same as default. FROM EMPLOYEE; Ok, this returns tuples containing the salary of each employee. Is it useful? What if we only wanted to see the distinct salaries? This results in distinct salaries! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 41
  • 42. Tables as Sets SQL has direct support for some set operations Make a list of all project numbers for projects that involve an employee whose last name is ‘Smith’, either as a worker or as a manager of the department that controls the project. If SQL supports set union (it does), how might we want to compose this query? Trinity College, Hartford CT • Department of Computer Science • CPSC 372 42
  • 43. Tables as Sets SQL has direct support for some set operations Make a list of all project numbers for projects that involve an employee whose last name is ‘Smith’, either as a worker or as a manager of the department that controls the project. SELECT DISTINCT Pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE First write the query WHERE Dnum=Dnumber AND Mgr_ssn=Ssn for the first part... AND Lname=‘Smith’; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 43
  • 44. Tables as Sets SQL has direct support for some set operations Make a list of all project numbers for projects that involve an employee whose last name is ‘Smith’, either as a worker or as a manager of the department that controls the project. SELECT DISTINCT Pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lname=‘Smith’; Then write a query for SELECT DISTINCT Pnumber the second part... FROM PROJECT, WORKS_ON, EMPLOYEE WHERE Pnumber=Pno AND Essn=Ssn AND Lname=‘Smith’; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 44
  • 45. Tables as Sets SQL has direct support for some set operations Make a list of all project numbers for projects that involve an employee whose last name is ‘Smith’, either as a worker or as a manager of the department that controls the project. (SELECT DISTINCT Pnumber FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE Dnum=Dnumber AND Mgr_ssn=Ssn AND Lname=‘Smith’) Then union the UNION results together! (SELECT DISTINCT Pnumber FROM PROJECT, WORKS_ON, EMPLOYEE WHERE Pnumber=Pno AND Essn=Ssn AND Lname=‘Smith’); Trinity College, Hartford CT • Department of Computer Science • CPSC 372 45
  • 46. Tables as Sets SQL has direct support for some set operations In addition to UNION SQL also supports set difference (EXCEPT) and set intersection (INTERSECT) Trinity College, Hartford CT • Department of Computer Science • CPSC 372 46
  • 47. Substring Pattern Matching Retrieve all employees whose address is in Houston,Texas. SELECT Fname, Lname FROM EMPLOYEE WHERE Address LIKE ‘%Houston,TX%’; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 47
  • 48. Substring Pattern Matching Find all employees who were born during the 1950s. SELECT Fname, Lname FROM EMPLOYEE WHERE Bdate LIKE ‘__5_______’; Trinity College, Hartford CT • Department of Computer Science • CPSC 372 48
  • 49. Arithmetic Operations Show the resulting salaries if every employee working on the ‘ProductX’ project is given a 10 percent raise. SELECT E.Fname, E.Lname, E.Salary*1.1 AS incr FROM EMPLOYEE AS E, WORKS_ON AS W, PROJECT AS P WHERE E.Ssn=W.Essn AND W.Pno=P.Pnumber AND P.Pname=‘ProductX’ Trinity College, Hartford CT • Department of Computer Science • CPSC 372 49
  • 50. Next time... Ordering Query Results AND Insert, Deleting, and Updating, Oh My! Trinity College, Hartford CT • Department of Computer Science • CPSC 372 50

Editor's Notes