relname | ||
σc R | selecting rows | WHERE c, HAVING c |
πp R | projection | SELECT p |
ρr R | renaming | AS |
γg R | grouping | GROUP BY |
τa+ R | sorting | ORDER BY a+ |
δ R | removing duplicates | DISTINCT |
… |
… | ||
R × R | cartesian product | FROM, CROSS JOIN |
R ∪ R | union | UNION |
R ∩ R | intersection | INTERSECT |
R − R | difference | EXCEPT |
… |
… | ||
R ⨝ R | NATURAL JOIN | |
R ⨝a+ R | INNER JOIN USING (a+) | |
R ⨝c R | theta join | JOIN ON |
R ⨝oa+ R | FULL OUTER JOIN | |
R ⨝oLa+ R | LEFT OUTER JOIN | |
R ⨝oRa+ R | RIGHT OUTER JOIN |
SQL | Relational Algebra | |
---|---|---|
SELECT projections
| ⟹ | πprojections
σcondition (Table1 × … × Tablen) |
SQL | Relational Algebra | |
---|---|---|
SELECT * FROM Countries
| ⟹ | Countries |
SELECT * FROM Countries
| ⟹ | σname='UK' Countries |
SELECT *
disappears)
SQL | Relational Algebra | |
---|---|---|
SELECT capital,area/1000
| ⟹ | πcapital,area/1000
σname='UK' Countries |
SQL | Relational Algebra | |
---|---|---|
SELECT name AS country,
| ⟹ | πname→country, population/area→density
σcontinent='EU' Countries |
AS
keyword turns into an arrow (→)
SQL | Relational Algebra | |
---|---|---|
SELECT A.name
| ⟹ | πA.name
σA.name=B.capital (ρA Countries × ρB Countries) |
SQL | Relational Algebra | |
---|---|---|
SELECT name, capital
| ⟹ | πname, capital τname Countries |
⟹ | τname πname, capital Countries | |
SELECT name | ⟹ | πname τpopulation Countries |
SQL | Relational Algebra | |
---|---|---|
SELECT currency
| ⟹ | πcurrency Countries |
SELECT DISTINCT currency
| ⟹ | δ (πcurrency Countries) |
SQL | Relational Algebra | |
---|---|---|
SELECT currency, COUNT(name)
| ⟹ | γcurrency,COUNT(name) Countries |
SQL | Relational Algebra | |
---|---|---|
SELECT currency,SUM(population)
| ⟹ | πcurrency,SUM(population)
σCOUNT(name)>1 γcurrency,SUM(population),COUNT(name) Countries |
WHERE
cond
and HAVING
cond turn into σcond.
Name_Basic | 9.8 million rows |
---|---|
Title_Basics | 6.4 million rows |
Title_Principals | 37.2 million rows |
Title_Ratings | 1.0 million rows |
SELECT T.startYear,T.endYear,T.titleType,T.originalTitle FROM Title_Principals AS P,Name_basics AS N,Title_Basics AS T WHERE T.titleType IN ('movie','tvSeries') AND N.primaryName='Frida Hallgren' AND N.nconst = P.nconst AND T.tconst = P.tconst ;
WITH Names AS (SELECT * FROM Name_Basics WHERE primaryName='Frida Hallgren'), Titles AS (SELECT * FROM Title_Basics WHERE titleType IN ('movie','tvSeries')) SELECT startYear, endYear, titleType, originalTitle FROM Title_Principals NATURAL JOIN Names NATURAL JOIN Titles ;
SELECT startYear, endYear, titleType, originalTitle FROM Title_Principals NATURAL JOIN Name_Basics NATURAL JOIN Title_Basics WHERE titletype IN ('movie','tvSeries') AND primaryName = 'Frida Hallgren';