mirror of
https://github.com/janishutz/eth-summaries.git
synced 2026-07-27 21:29:09 +02:00
[DMDB] relational model, relational algebra, SQL very basics
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
\subsection{Operations}
|
||||
\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}
|
||||
|
||||
We can compute the number of all passed grades for a person using something like
|
||||
\mint{sql}+SUM(CASE Grade >= 1 THEN 1 ELSE 0 END) AS PassedSubjectsCount+
|
||||
Reference in New Issue
Block a user