6/224
\begin{frame}
  \frametitle{The From Clause}
  
  \begin{goal}{}
    The \sql{from} clause can be understood as \emph{declaring
    variables} that \emph{range over tuples} of a relation.
  \end{goal}
  \vspace{-1ex}
  
  \begin{center}
    \tableExercises
  \end{center}
  \begin{minipage}{.7\textwidth}
    \begin{center}
      \begin{code}{.9\textwidth}{}
        \small
        \BUseVerbatim{query}
      \end{code}
    \end{center}
  \end{minipage}%
  \begin{minipage}{.29\textwidth}
    \begin{center}
      \mpause[2]{
        {\ttfamily\footnotesize
        \colorbox{rellight}{%
          \begin{tabular}[t]{|r|r|}
            \multicolumn{2}{c}{Query Result} \\ \hline
            \hd{number} & \hd{topic} \\ \hline
            1 & Logic \\ 
            2 & SQL \\
            \hline
          \end{tabular}%
        }%
        }
      }
    \end{center}
  \end{minipage}
  \pause\bigskip
  
  The query may be thought of as\vspace{-0.5ex}
  \begin{center}
      \begin{code}{0.55\textwidth}{}
        \footnotesize
        \begin{algorithmic}
          \FORALL{\emph{rows} $\sql{E} \in \sql{Exercises}$}
          \IF{\sql{E.category = \textquotesingle{}homework\textquotesingle{}}}
          \STATE \textbf{print} \; \sql{E.number, E.topic}
          \ENDIF
          \ENDFOR
        \end{algorithmic}
      \end{code}
  \end{center}\vspace{-0.5ex}
  \emph{Tuple variable} \sql{E} iterates over the rows of \sql{Exercises}.
  \bigskip
\end{frame}