Selecting Data: Duration: 8 Hrs
Selecting Data: Duration: 8 Hrs
Duration : 8 hrs
© 2007, UCSC
Detailed Syllabus
4.3 Selecting Data
4.3.1 Queries: SELECT Statement.
4.3.2 Single Table: all columns (*), selecting specific columns (RA project
operation), unique values (DISTINCT), Executing multiple statements (;),
WHERE clause (RA select operation), Including or excluding rows (=, !=),
Relational Operators (=, !=, >, >=, <, <=), Identifying Null values (IS NULL),
Where clause keywords (AND, OR, [NOT] BETWEEN, [NOT] IN, IS [NOT]
NULL, [NOT] LIKE, ORDER BY, Arithmetic Operators (+, -, *, /),
Expressions, Display Labels, Aggregate Functions: COUNT, SUM, AVG,
MAX, MIN, GROUP BY, HAVING.
4.3.3 Multiple Table: RA join and product operations, Natural Join, Multiple
Table Joins, Aliases for table names, Outer Join, UNION.
4.3.5 Sub queries: Nested Select Statement, Values returned by sub queries
(single value, a list of values), EXISTS, Correlated nested queries.
© 2007, UCSC
Referential Integrity
SQL data definition for defining referential integrity constraints
Parent table:
CREATE TABLE DEPARTMENT
(DEPT-NO CHAR(3),
other column definitions
PRIMARY KEY (DEPT-NO) );
Dependent table:
CREATE TABLE EMPLOYEE
( EMP-NO CHAR(5),
DEPT-NO CHAR(3)
other column definitions
PRIMARY KEY (EMP-NO),
FOREIGN KEY DEPT-N-FK (DEPT-NO)
REFERENCES DEPARTMENT
ON DELETE SET NULL) );
© 2007, UCSC
Defining referential integrity rules in the SQL DDL
is known as declarative referential integrity
© 2007, UCSC
Triggers and stored procedures are user written
routines which are stored and executed under the
control of the database server.
They are often coded in proprietary procedural
extensions to SQL, e.g. Sybase's Transact SQL or
Oracle's PL/SQL.
© 2007, UCSC
SQL for Data Manipulation
-High-level Language for data manipulation
-It does not require predefined navigation path
© 2007, UCSC
Command: SELECT
Function
– Retrieves data from one or more rows. Every
SELECT statement produces a table of query
results containing one or more columns and zero
or more rows.
SELECT {[ALL, DISTINCT]}
[(select-item,), i]
© 2007, UCSC
Restrict Rows Sales Employee
E-No E-Name D-No
179 Silva 7
342 Dias 7
SELECT *
Employee FROM Employee
E-No E-Name D-No WHERE D-No = '7' ;
179 Silva 7
857 Perera 4
342 Dias 7
Sales Employee
E-No E-Name
SELECT E-No, E-Name
179 Silva
FROM Employee 342 Dias
WHERE D-No = '7' ;
Emp-Info
E-No E-Name D-No D-No D-Name M-No
179 Silva 7 7 Sales 179
857 Perera 4 4 Finance 857
342 Dias 7 7 Sales 179
© 2007, UCSC
Department
D-No D-Name M-No
Employee 2 Finance 850
E-No E-Name D-No 7 Sales 179
179 Silva 7
857 Perera 4
342 Dias 7
Emp-Info
E-No E-Name D-No D-No D-Name M-No
179 Silva 7 7 Sales 179
857 Perera 4 Null Null Null
342 Dias 7 7 Sales 179
© 2007, UCSC
Emp-Info
E-No E-Name D-No D-No D-Name M-No
Null Null Null 2 Finance 850
© 2007, UCSC
Cartesian Product
Department
D-No D-Name M-No
4 Finance 857
7 Sales 179
Employee
E-No E-Name D-No
179 Silva 7
857 Perera 4
342 Dias 7
Emp-Info
SELECT
E-No E-Name D-No D-No D-Name M-No
E.*, D.*
FROM 179 Silva 7 4 Finance 857
857 Perera 4 4 Finance 857
Employee E, Department D
342 Dias 7 4 Finance 857
179 Silva 7 7 Sales 179
857 Perera 4 7 Sales 179
342 Dias 7 7 Sales 179
© 2007, UCSC
SQL Data Retrieval
Basic Search Conditions
Comparison
– Equal to =
– Not equal to != or <> or ^=
– Less than to <
– Less than or equal to <=
– Greater than to >
– Greater than or equal to >=
© 2007, UCSC
SQL Data Retrieval
Basic Search Conditions (cont’d)
• Range ( [NOT] BETWEEN)
© 2007, UCSC
Basic Search Conditions (cont’d) :
• Pattern Matching ([NOT] LIKE)
– expres-1 [NOT] LIKE {special-register | host-
variable | string-constant}
– Example: WHERE Proj_Name LIKE
“INFORM%”
© 2007, UCSC
Compound Search Conditions
AND, OR and NOT
Example:
WHERE Proj_Name LIKE ‘INFORM%’ AND Emp_Name = ‘DIAS’
• Sub-Queries
– Use the results of one query to help define another query
© 2007, UCSC
Summarising Data
SELECT COUNT(*)
FROM Employee
Count(*)
Employee 5
E-No Job Salary D-No
179 Manager 20000 10
857 Clerk 8000 10
342 Clerk 9000 20
477 Manager 15000 30
432 Clerk 10000 30
SELECT AVG(Salary) AVG(Salary)
FROM Employee 12400
© 2007, UCSC
SELECT STATEMENT
May also contain
[GROUP BY [HAVING] ORDER BY]
GROUP BY
A result of a previous specified clause is grouped using the group
by clause.
e.g. SELECT d-no, AVG(salary)
FROM employee
GROUP BY d-no
Employee
E-No Job Salary D-No
179 Manager 20000 10 D-No AVG(Salary)
857 Clerk 8000 10 10 14,000
342 Clerk 9000 20 20 9,000
477 Manager 15000 30 30 12,500
432 Clerk 10000 30 © 2007, UCSC
[GROUP BY [HAVING] ORDER BY]
HAVING
Used for select groups that meet
specified conditions.
SELECT sname
FROM supplier, supply
WHERE supplier.sno = supply.sno and pno = ‘P2’;
© 2007, UCSC