• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Basic SQL Part 2
 

Basic SQL Part 2

on

  • 1,176 views

Basic SQL Part 2

Basic SQL Part 2

Statistics

Views

Total Views
1,176
Views on SlideShare
1,163
Embed Views
13

Actions

Likes
0
Downloads
60
Comments
0

1 Embed 13

http://cpsc372.wordpress.com 13

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

Basic SQL Part 2 Basic SQL Part 2 Presentation Transcript

  • 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