Transcript
Page 1: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 1

The SQL Query Language DML

The SQL Query LanguageDML (SELECT)

Page 2: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

Page 3: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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 listFROM table list

WHERE condition

Page 4: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

Page 5: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

Page 6: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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.

Page 7: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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 constanta column valueresult of a SELECT

Which customers live in Dublin?

SELECT DISTINCT NameFROM Customer

WHERE City = ’Dublin’

Page 8: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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 *FROM FilmWHERE 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 *FROM FilmWHERE NOT(RentalPrice > 4 OR RentalPrice < 1)

Page 9: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

Page 10: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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 TitleFROM Film, ReservedWHERE Reserved.FilmID = Film.FilmID

Page 11: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 11

SELECT: Queries Over Several Tables

List the customers who have reserved an expensive film.

SELECT DISTINCT NameFROM Customer, Film, ReservedWHERE Reserved.CustomerID = Customer.CustomerID

AND Reserved.FilmID = Film.FilmID AND RentalPrice > 4

List the streets of customers who have reserved foreign films.

SELECT StreetFROM Customer, Film, ReservedWHERE Reserved.CustomerID = Customer.CustomerID

AND Reserved.FilmID = Film.FilmID AND Kind = ’F’

Page 12: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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.CustomerIDFROM Reserved A, Reserved BWHERE 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.TitleFROM Film A, Film BWHERE A.RentalPrice > B.RentalPrice

AND B.Kind = ’F’

Page 13: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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)

Page 14: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

Page 15: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 15

SELECT: Subqueries

A SELECT may be nested

SELECT …

FROM …

WHERE <cond> ( 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

Page 16: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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)

Page 17: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

Page 18: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--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

123456 246800 369121

123456246800369121

123456246800369121

Page 19: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 19

IN Query

List the ID numbers of the films that are expensive and have been reserved.

SELECT FilmIDFROM FilmWHERE 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)

Page 20: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 20

ANY

ANY is also equivalent to exists:

(246800 < ANY ) is true.

(369121 < ANY ) is false.

123456246800369121

123456246800369121

Page 21: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 21

ANY, cont.

(246800 = ANY ) is true.

(246800 <> ANY ) is true.

Comparison with IN (= ANY) IN (<> ANY) NOT IN/

123456246800369121

123456246800369121

Page 22: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 22

ANY Query

Which films rent for more than some foreign film?

SELECT TitleFROM FilmWHERE RentalPrice > ANY(SELECT RentalPrice

FROM Film WHERE Kind = ’F’)

Page 23: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 23

ALL

ALL is equivalent to for all:

(246800 < ALL ) is false.

(100000 < ALL ) is true.

123456246800369121

123456246800369121

Page 24: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 24

ALL, cont.

246800 = ALL ) is false.

(100000 < ALL ) is true

Comparison with IN (<> ALL) NOT IN (= ALL) IN/

123456246800369121

123456246800369121

Page 25: --The SQL Query Language DML--1 The SQL Query Language DML The SQL Query Language DML (SELECT)

--The SQL Query Language DML-- 25

ALL Query

Find the film(s) with the highest rental price.

SELECT TitleFROM FilmWHERE RentalPrice >= ALL ( SELECT RentalPrice

FROM Film )


Recommended