View
272
Download
2
Category
Preview:
Citation preview
--The SQL Query Language DML-- 1
The SQL Query Language DML
The SQL Query LanguageDML (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
--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
--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
--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
--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.
--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’
--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)
--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
--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
--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’
--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’
--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)
--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
--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
--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)
--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
--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
--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)
--The SQL Query Language DML-- 20
ANY
ANY is also equivalent to exists:
(246800 < ANY ) is true.
(369121 < ANY ) is false.
123456246800369121
123456246800369121
--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
--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’)
--The SQL Query Language DML-- 23
ALL
ALL is equivalent to for all:
(246800 < ALL ) is false.
(100000 < ALL ) is true.
123456246800369121
123456246800369121
--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
--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