%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Kopfzeile
\ihead{Datenbanken}
\chead{}
\ohead{https://kohnlehome.de/datenbanken/sqlite.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
SQLite
\end{center}

\section*{Weblinks}
\begin{itemize}
    \item Dokumentation: \href{https://sqlite.org/}{sqlite.org}
    \item GUI: \href{https://sqlitebrowser.org/}{sqlitebrowser.org}
    \item Tutorial: \href{https://www.sqlitetutorial.net/}{sqlitetutorial.net}
\end{itemize}

\section*{Datentypen (Storage classes)}
\begin{itemize}
    \item NULL
    \item INTEGER
    \item REAL
    \item TEXT
    \item BLOB
\end{itemize}

\section*{DDL (Data Definition Language)}
\subsection*{Neue Tabelle erstellen}
\begin{verbatim}
CREATE TABLE tabelle (
    spalte1 INTEGER PRIMARY KEY AUTOINCREMENT,
    spalte2 TEXT,
    spalte3 REAL NOT NULL,
    ...
    tabelle2_id INTEGER,
    FOREIGN KEY (tabelle2_id) REFERENCES tabelle2 (id)
); 
\end{verbatim}

\section*{DML (Data Manipulation Language), CRUD}
\subsection*{Neuen Datensatz erstellen}
\begin{verbatim}
INSERT INTO tabelle (spalte1, spalte2 ,..)
VALUES (wert1, wert2, ...);
\end{verbatim}

\subsection*{Vorhandene Datensätze ändern}
\begin{verbatim}
UPDATE
  tabelle
SET 
  spalte1 = wert1,
  spalte2 = wert2
WHERE
  bedingung 
\end{verbatim}

\subsection*{Datensätze löschen}
\begin{verbatim}
DELETE FROM
  tabelle
WHERE
  bedingung
\end{verbatim}

\subsection*{Datensätze lesen}
\begin{verbatim}
SELECT
  <projection: spalten, expression>
FROM
  <tabelle>
WHERE
  <1. bedingung für Zeilen>
GROUP BY
  <gruppierung: spalte>
HAVING
  <2. bedingung für Gruppen>
ORDER BY
  <sortierreihenfolge: spalten, auf- absteigend>
LIMIT
  <anzahl>
OFFSET
  <offset>
\end{verbatim}

\subsection*{Bedingungen}
\begin{verbatim}
-- Vergleichsoperatoren: = > < >= <= <>
-- BETWEEN wert1 AND wert2
-- LIKE ’a_b%’    
-- _ genau 1 beliebiges Zeichen, % beliebig viele beliebige Zeichen
-- IN (wert1, wert2, ...)
-- logische Operatoren: AND OR NOT
-- IS NULL / IS NOT NULL
\end{verbatim}
\end{document}
