5.3 KiB
5.3 KiB
Lecture 1 (13:00) - Relational Algebra
Data Manipulation Language
- DML is a language providing a set of operations on the data of the database
- Part of DML that involves data retrieval is called query language. One example is SQL
#### Relational Calculus
- Non-procedural language - declarative.
- Used to formulate definition of relation in terms of one or more relations.
- Specifies what is to be retrieved, rather than how.
Relational Algebra
- High level procedural language
- Used to tell DBMS how to build new relation from one or more relations in database
Fundamental Operations
SQL Overview
Selection
U+03C3 <selection condition> (<relation name>)
- Selects a subset of the tuples in a relation that satisfy a selection condition.
- sigma (lc) is used to specify a selection.
- Selection condition is a bool expression, that includes AND, NOT, OR.
- Result is a relation that has the same attributes as the relation that with the name specified.
- ex.
Projection
- Selects a subset of the attributes of a relation.
- Pi (uc) is used to define a projection
- Order of attributes in the result is the same as that in the attribute list
- Duplicate tuples are removed.
- ex.
Closure
- Operations work on one or more relations to define another relation, without changing the original.
- Both operands and results are relations.
- Output from one operation can become the input from another.
- Parallels algebraic operations in arithmetic, taking one or more numbers as operands, returning a number as output.
- ex.
- Select all staff with salary greater than 20000, and exclusively output the name.
- Both input and output are relations.
Unary and Binary Operations
Unary Operations
- Operate on one relation
- Selection
- Projection
Binary Operations
- Operate on two relations
- Cartesian products
- Union
- Set difference
Union
- Union of 2 relations is a relation that contains all tuples of both.
- Duplicates removed.
- Both relations must be union compatible.
- Resulting relation might have the same attributes as 1st or 2nd relation.
- ex.
Union Compatibility
- Two relations R1(A1, A2,…. An) and R2(B1, B2,…. Bm) are union compatible if, and only if n = m and domain(Ai) = domain(Bi) for 1 =< i =< n.
- It is rare that two relations are union compatible
- Projection may be used to make two relations union compatible.
Union with Projection
- This is also an example of closure, as the output for the projection is used as the input for the union.
Set Difference
- In two relations, the set difference includes all tuples that are in one, but not the other.
- Resulting relation may have the same attribute names as the first or second relation.
- Must be union compatible.
- ex.
Cartesian Product
- Relation which has concatenation of every tuple of first relation with every relation of the second.
- If the 2 relations have attributes with the same name, attribute names are prefixed with the relations name.
- ex.
Tutorial 2 (15:00) - Relational Algebra
- List the names and types of all boats
- Relational Algebra Pi boat-name, boat-type (boats)
SELECT DISTINCT boat-name, boat-type
FROM boats;
- List the names of all pirates Pi name (Pirates)
SELECT DISTINCT p-name
FROM pirates
- List the names of all pirates who have less than two eyes Pi p-name ( Sigma eyes < 2 (pirates) )
SELECT DISTINCT names
FROM pirates
WHERE eyes < 2;
- List the names of all pirates who have less than two eyes or less than two legs or both. Pi p-name ( Sigma eyes < 2 OR legs < 2 (pirates) )
SELECT DISTINCT names
FROM pirates
WHERE eyes < 2 OR legs < 2;
- List all the places that either pirates or boats or both originate from Pi origin (pirates) U Pi origin (boats)
SELECT origin FROM pirates
UNION
SELECT origin FROM boats;
- NOTE: order matters, but only to the order in which they would appear in the list.
- List all the places where boats but not pirates originate from Pi origin (boats) - Pi origin (pirates)
SELECT origin FROM boats
EXCEPT
SELECT origin FROM pirates;
- NOTE: This specifically removes all places pirates originate from from the selection.
Workshop 1 (10:00)
- Implement the two tables using the SQL CREATE TABLE command.
CREATE TABLE employee(
empNo INTEGER PRIMARY KEY
eName VARCHAR(20)
sal INTEGER
);
CREATE TABLE manager(
empNo INTEGER PRIMARY KEY
eName VARCHAR(20)
sal INTEGER
);
- Write SQL statements that populate the two tables with the data shown.
INSERT INTO employee
VALUES (7782, "clark", 2450), (7839, "king", 5000);
INSERT INTO manager
VALUES (8034, "smith", 7000),(8044, "yao", 6000);
- Write a single SQL query which returns all the staff from both of the tables.
SELECT empNo, eName
FROM employee
INNER JOIN manager
ON employee.empNo = manager.empNo;