Click here to load reader

The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

  • View
    237

  • Download
    2

Embed Size (px)

Text of The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

  • Slide 1
  • --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)
  • Slide 2
  • --The SQL Query Language DML--2 Outline - The SELECT statement Single table Projection Selection Multiple tables Cartesian product and join Set operations Subqueries Optional clauses Ordering results Computing aggregates on groups Additional joins
  • Slide 3
  • --The SQL Query Language DML--3 Retrieval Queries in SQL: SELECT SQL has one basic statement for retrieving information from a database; the SELECT statement. The basic form of the SQL SELECT statement is called a mapping or a select-from-where block. SELECT column list FROMtable list WHEREcondition
  • Slide 4
  • --The SQL Query Language DML--4 SELECT: Projecting a Column Find the names of all Customers. This query is termed a projection query. Duplicates are eliminated by specifying DISTINCT. In which cities do customers live, each city listed once? SELECT DISTINCT City FROM Customer
  • Slide 5
  • --The SQL Query Language DML--5 SELECT: Projecting all Columns All the columns can be specified with *. Make a copy of the Customer table. SELECT * FROM Customer Can eliminate duplicate rows. SELECT DISTINCT * FROM Customer
  • Slide 6
  • --The SQL Query Language DML--6 SELECT: Renaming Columns and Tables Columns can be renamed in generalized projection. Project the City column as Towns Tables can be given different names within the body of the SELECT statement. These are called correlation variables or names. Refer to the Customer table as C.
  • Slide 7
  • --The SQL Query Language DML--7 SELECT: Selecting Rows WHERE clause is used to choose only rows that meet some condition. Condition can be simple comparison of a column value to a constant a column value result of a SELECT Which customers live in Dublin? SELECT DISTINCT Name FROM Customer WHERE City = Dublin
  • Slide 8
  • --The SQL Query Language DML--8 SELECT: Using Logical Operators AND, OR, NOT may be used on result of comparison List outrageously priced films (over $4 or under $1). SELECT * FROMFilm WHERE RentalPrice > 4 OR RentalPrice < 1 List films that are not outrageously priced. More than one table can be listed in the from clause. SELECT DISTINCT * FROMFilm WHERE NOT(RentalPrice > 4 OR RentalPrice < 1)
  • Slide 9
  • --The SQL Query Language DML--9 Outline - The SELECT statement Single table Projection Selection Multiple tables Cartesian product and join Set operations Subqueries Optional clauses Ordering results Computing aggregates on groups Additional joins
  • Slide 10
  • --The SQL Query Language DML--10 SELECT: Two or more tables FROM clause can specify a list of tables, evaluates as Cartesian product of all the tables specified List the titles of the reserved films. SELECT DISTINCT Title FROMFilm, Reserved WHEREReserved.FilmID = Film.FilmID
  • Slide 11
  • --The SQL Query Language DML--11 SELECT: Queries Over Several Tables List the customers who have reserved an expensive film. SELECT DISTINCT Name FROM Customer, Film, Reserved WHEREReserved.CustomerID = Customer.CustomerID AND Reserved.FilmID = Film.FilmID AND RentalPrice > 4 List the streets of customers who have reserved foreign films. SELECT Street FROM Customer, Film, Reserved WHEREReserved.CustomerID = Customer.CustomerID AND Reserved.FilmID = Film.FilmID AND Kind = F
  • Slide 12
  • --The SQL Query Language DML--12 SELECT: Self Joins Tables can be referenced several times, using correlation names. Which customers have reserved a film that customer 123456 has reserved? SELECT B.CustomerID FROM Reserved A, Reserved B WHERE A.CustomerID = 123456 AND A.FilmID = B.FilmID AND A.CustomerID B. CustomerID Which films have a higher rental price than some foreign film? SELECT DISTINCT A.Title FROM Film A, Film B WHERE A.RentalPrice > B.RentalPrice AND B.Kind = F
  • Slide 13
  • --The SQL Query Language DML--13 Union The algebraic operators of union ( ), intersection ( ) and difference (-) are available, as UNION, INTERSECT, and EXCEPT. These operations eliminate duplicates! Must be union-compatible List the outrageously priced films (over $4 or under $1). (SELECT Title FROM Film WHERE RentalPrice > 4) UNION (SELECT Title FROM Film WHERE RentalPrice < 1)
  • Slide 14
  • --The SQL Query Language DML--14 Outline - The SELECT statement Single table Projection Selection Multiple tables Cartesian product and join Set operations Subqueries Optional clauses Ordering results Computing aggregates on groups Additional joins
  • Slide 15
  • --The SQL Query Language DML--15 SELECT: Subqueries A SELECT may be nested SELECT FROM WHERE (SELECT FROM WHERE ) Subqueries may produce A scalar (single value) A single--column table ANY, ALL, IN, EXISTS A multiple-column table EXISTS Correlated subqueries
  • Slide 16
  • --The SQL Query Language DML--16 Scalar Producing Subquery The subquery produces a single value that can be compared What are the IDs of customers with the same name as the customer with ID 123456? SELECT CustomerID FROM Customer WHERE name = (SELECT name FROM Customer WHERE CustomerID = 123456)
  • Slide 17
  • --The SQL Query Language DML--17 Single Attribute Producing Subquery The subquery produces a table with a single column These operations eliminate duplicates! IN true if value exists in result of subquery Comparison Operator ANY true for comparison with at least one tuple in subquery produced table Comparison Operator ALL true for comparison with every tuple in subquery produced table
  • Slide 18
  • --The SQL Query Language DML--18 IN IN is equivalent to a restricted form of exists: (246800 IN ) is true. (333333 IN ) is false. (333333 NOT IN ) is true
  • Slide 19
  • --The SQL Query Language DML--19 IN Query List the ID numbers of the films that are expensive and have been reserved. SELECT FilmID FROM Film WHERE RentalPrice > 4 AND FilmID IN ( SELECT FilmID FROM Reserved) List the ID numbers of the expensive films that have not been reserved. SELECT FilmID FROM Film WHERE RentalPrice > 4 AND FilmID NOT IN (SELECT FilmID FROM Reserved)
  • Slide 20
  • --The SQL Query Language DML--20 ANY ANY is also equivalent to exists: (246800 < ANY ) is true. (369121 < ANY ) is false.
  • Slide 21
  • --The SQL Query Language DML--21 ANY, cont. (246800 = ANY ) is true. (246800 ANY ) is true. Comparison with IN (= ANY) IN ( ANY) NOT IN /
  • Slide 22
  • --The SQL Query Language DML--22 ANY Query Which films rent for more than some foreign film? SELECT Title FROM Film WHERE RentalPrice > ANY(SELECT RentalPrice FROM Film WHERE Kind = F)
  • Slide 23
  • --The SQL Query Language DML--23 ALL ALL is equivalent to for all: (246800 < ALL ) is false. (100000 < ALL ) is true.
  • Slide 24
  • --The SQL Query Language DML--24 ALL, cont. 246800 = ALL ) is false. (100000 < ALL ) is true Comparison with IN ( ALL) NOT IN (= ALL) IN /
  • Slide 25
  • --The SQL Query Language DML--25 ALL Query Find the film(s) with the highest rental price. SELECT Title FROM Film WHERE RentalPrice >= ALL ( SELECT RentalPrice FROM Film )