Unit 1:  Conditional Expressions

Section 1

  • Understand the difference between a statement and an expression.
  • Insert “intelligent” conditional expressions into queries using the keyword CASE.
  • Use both the “searched version” of the CASE expression which is more versatile, and the “simple (switch) version”.
  • Combine a CASE expression with an inner join.

Section 2

  • Learn about additional important applications of conditional expressions including:
  • How to use them to split values into different columns.
  • How to count non-NULL values in the columns of a SELECT statement.
  • How to use conditional expressions in aggregate functions COUNT, SUM, MIN, MAX, AVG.
  • Understand the difference between using conditional expressions and the WHERE clause.

Section 3

  • Simplify filtering values in aggregate functions using the FILTER clause.
  • Learn how integer division works in SQL, and how to prevent potential problems which it may cause.

Section 4

  • Learn about various situations which can cause an error in SQL, and how to prevent them using suitable CASE expressions. In particular, learn how to prevent division-by-zero errors.
  • Learn how SQL responds when NULL values are combined with numbers and text strings.
  • Use CASE expressions in the ORDER BY clause.

Section 5

  • Replace NULL with selected values using the function COALESCE
  • Replace selected values with NULL using the function NULLIF.
  • Learn about the relation between these functions and the conditional expression CASE.
  • Replace values in tables by combining the COALESCE and NULLIF functions.

Unit 2:  Text Strings

Section 6

  • Using the Museum of Modern Art (MoMA) database, review pattern matching and text string operations.
  • Understand the advantages of performing case-insensitive searches.
  • Use the functions LOWER or UPPER to make a text search case-insensitive.
  • Refine searches using the SQL clause ILIKE, and the shortcuts ~~, ~~*, !~~, and !~~*.
  • Search for the special characters % and _, and for the escape character \.
  • Become familiar with the official SQL documentation.

Section 7

  • Search for single quotes ‘ and use the clause SIMILAR TO with entry-level regular expressions.
  • Understand that SIMILAR TO is case-sensitive but can be made case-insensitive in combination with LOWER or UPPER (same as LIKE).
  • Use regular expressions with groups of characters or text strings enclosed in parentheses and separated by the | character.
  • Escape characters when using SIMILAR TO to search for parentheses
  • Use the character class wildcard […] in regular expressions.

Section 8

  • Use regular expressions with a pattern which is repeated (exactly) N times.
  • Use regular expressions with a pattern which is repeated at least N times.
  • Understand that repeating patterns may contain wildcards and other repeating patterns.
  • Use the shortcuts *, + and ? when working with repeating patterns.

Section 9

  • Use the ASCII table and its Unicode extension, as well as the functions ASCII and CHR.
  • Understand that both the ASCII and CHR functions work with Unicode.
  • Use Unicode and the web when searching for text strings with special characters.
  • Use the concatenation operator || and the cast operator :: .
  • Use the functions SUBSTRING, POSITION, LEFT, RIGHT, REVERSE and INITCAP.
  • Use at least two different methods to search for substrings.

Section 10

  • Modification of text strings via search-and-replace. There are
  • many applications for this, related to cleaning, adjusting, extracting, combining and presenting data.
  • The entry-level functions OVERLAY and REPLACE.
  • Search-and-replace with POSIX regular expressions.
  • Use POSIX regular expressions in the SELECT statement, in the functions
  • REGEXP_REPLACE and SUBSTRING, and in the WHERE clause.

Unit 3:  Sets and Subqueries

Section 11

  • Distinguish sets, relations and bags in SQL
  • Understand that tables are relations and not ordered.
  • Understand why ORDER BY should be used before the clauses LIMIT and OFFSET.
  • Find and count duplicate values in columns and duplicate rows in tables.

Section 12

  • Use the UNION and UNION ALL clauses in queries.
  • Understand that the UNION clause produces a set with no duplicates, while the UNION ALL clause produces a bag which may have duplicates.
  • Understand table compatibility with UNION and UNION ALL.
  • Combine rows with UNION and UNION ALL.
  • Write queries using UNION for qualitative analysis and UNION ALL for calculations.

Section 13

  • Write subqueries to access data in multiple tables at the same time.
  • Use subqueries in combination with set operations.
  • Design subqueries to be simple and not reach into the same table as the main query.
  • Use subqueries with the FROM and WHERE … IN … clauses.
  • Understand how to alias results.
  • Use subqueries with aggregate functions.

Section 14

  • Use the set theory clauses INTERSECT and INTERSECT ALL.
  • That the intersection operation is associated with the keyword AND.
  • Understand how set theory clauses in SQL affect computing complexity.
  • Use the INTERSECT clause in subqueries.
  • Understand the similarities and differences between set theory clauses, subqueries and joins.

Section 15

  • Use set difference in queries.
  • Use the related clauses EXCEPT and EXCEPT ALL.
  • Practice subqueries together with INNER JOINS.

Unit 4:  Advanced Joins

Section 16

  • Review the INNER JOIN.
  • Use the LEFT (OUTER) JOIN in queries.
  • Understand how LEFT (OUTER) JOIN relates to the INNER JOIN.
  • Use the LEFT JOIN to find orphaned or missing data.
  • Use subqueries to work with orphaned or missing data.

Section 17

  • Use the RIGHT (OUTER) JOIN and the FULL (OUTER) JOIN in queries.
  • Understand when to use the INNER, LEFT, RIGHT, and FULL JOIN.
  • Rewrite a RIGHT JOIN as a LEFT JOIN.

Section 18

  • Understand the CROSS JOIN as the Cartesian product of the rows of the two tables.
  • Write queries using the CROSS JOIN and compare with the INNER JOIN, which is a special case of the CROSS JOIN.
  • Write queries with self joins (CROSS JOIN of a table with itself).
  • Use self-joins to establish a hierarchy among items in a table, such as among employees.
  • Create complex queries.

Section 19

  • Work with semi-joins between two tables.
  • Understand how matching values work in left and right semi-joins.
  • Work with anti-joins, and understand how they return values that do not match.
  • Practice INNER JOIN, CROSS JOIN, and subqueries.

Section 20

  • Create functions using the CREATE FUNCTION and CREATE OR REPLACE FUNCTION clauses.
  • Specify the returned data type using RETURNS.
  • Use names or numbers ($1,$2etc.) for function parameters.
  • Use the keywords IN and OUT to specify input and output parameters.
  • Enclose the body of the function in double-dollars $$…$$ or quotes ‘…’.
  • Use and understand the flags IMMUTABLE,STABLE and VOLATILE.
  • Use the flags RETURNS NULL ON NULL INPUT (STRICT), and CALLED ON NULL INPUT.
  • Use the keyword SETOF to return a column of values, or a table.
  • Create composite data types, and use them in functions.