mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-03-14 04:40:07 +01:00
30 lines
2.5 KiB
TeX
30 lines
2.5 KiB
TeX
\begin{tables}{ll}{Keyword & Description}
|
|
\texttt{SELECT val, val2} & returns the columns \texttt{val} and \texttt{val2} \\
|
|
\texttt{FROM table d, table2 c} & selects the target tables. Can use range variables (\texttt{d, c} here) \\
|
|
\texttt{WHERE} & Filter results. Can also target non-acquired columns \\
|
|
\texttt{DISTINCT} & Returns elements without duplicates \\
|
|
\texttt{IN} & Checks if the element is present in subquery \\
|
|
\texttt{UNION} & Set union (also removes duplicates) \\
|
|
\texttt{INTERSECT} & Set intersection \\
|
|
\texttt{EXCEPT} & Set difference \\
|
|
\texttt{JOIN} & Join tables, always requires a ON clause \\
|
|
\texttt{ON} & Specify on which column with what condition to join the tables \\
|
|
\texttt{DATE} & Used to do comparisons against fixed Dates (followed by Datestring) \\
|
|
\texttt{AS} & Rename a column \\
|
|
\texttt{AVG(column)} & Computes the average of the specified column \\
|
|
\texttt{SUM(column)} & Computes the sum of the specified column \\
|
|
\end{tables}
|
|
|
|
We can directly add new columns to our result using statements like (also note that we do not actually return salary and employment columns)
|
|
\mint{sql}{SELECT name, salary * employment / 100 AS RealSalary FROM employees;}
|
|
|
|
When applying \texttt{GROUP BY}, COUNT and the like operate on each group, not entire dataset.
|
|
|
|
\texttt{NATURAL JOIN} doesn't require a ON clause (it looks for columns with same name)
|
|
|
|
After \texttt{GROUP BY} we can't use \texttt{WHERE}, instead we can use \texttt{HAVING}, which operates on groups instead of on rows.
|
|
|
|
We can compare against a query with a single result column and row using a \texttt{WHERE} clause.
|
|
|
|
The \texttt{CROSS JOIN} is the both-sided extension to \texttt{LEFT JOIN} and \texttt{RIGHT JOIN}
|