\subsection{Data Definition Language (DDL)}
The DDL is used to describe the schema of relations, in \sql\ called tables.
For that, we provide a table name, the columns and their data types.

\sql\ supports the following data types (plus more):
\begin{multicols}{2}
	\begin{itemize}[itemsep=-2pt]
		\item \texttt{char(n)}
		\item \texttt{varchar(n)}
		\item \texttt{integer}
		\item \texttt{blob} or \texttt{raw} (for large binaries)
		\item \texttt{date}
	\end{itemize}
\end{multicols}


\subsubsection{Creating Tables}
Use the DDL \texttt{CREATE TABLE} keyword to create a table. We can set default values for certain attributes,
or can add constraints to them.

% TODO: Constraints (such as NOT NULL)

\inputcodewithfilename{sql}{}{code/sql/ddl/create.sql}


% TODO: Make sure all the sql statements actually execute in pgsql
\subsubsection{Updating / Altering Tables}
Use the DDL \texttt{ALTER TABLE} keyword to update a table's schema.
Be aware that if we ADD a column to the schema, unless a default value is provided, the column is set to \texttt{NULL} (see \ref{sec:sql-null})

\inputcodewithfilename{sql}{}{code/sql/ddl/alter.sql}


\subsubsection{Deleting Tables}

\inputcodewithfilename{sql}{}{code/sql/ddl/delete.sql}
