\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}