diff --git a/CPS_Database_Basics.ipynb b/CPS_Database_Basics.ipynb
new file mode 100644
index 0000000..e8d4a62
--- /dev/null
+++ b/CPS_Database_Basics.ipynb
@@ -0,0 +1,363 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "92fb5068-0669-43e3-9799-9dca9ffe6638",
+ "metadata": {
+ "jupyter": {
+ "source_hidden": true
+ }
+ },
+ "outputs": [],
+ "source": [
+ "%%html\n",
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "11174c4d-dcb5-49d8-96fc-b83ad35a6193",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "This is a tutorial on the basics of using databases in Python."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b9edce42-35e4-4dcd-886c-8d19a30bfdf0",
+ "metadata": {
+ "jp-MarkdownHeadingCollapsed": true
+ },
+ "source": [
+ "## Content\n",
+ "***\n",
+ "[1. Motivation for learning Python?](#sec:whypython) \n",
+ "\n",
+ "[2. Database Overview](#sec:overview)\n",
+ "\n",
+ "[3. Database Example in Python](#sec:example)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c4e0ceef-663a-46c3-9e52-6cd6c942422f",
+ "metadata": {},
+ "source": [
+ "#
1. Motivation for Learning Python?\n",
+ "....\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "id": "ba97999c",
+ "metadata": {},
+ "source": [
+ "#
2. Database Overview? \n",
+ "\n",
+ "| | MariaDB | InfluxDB | PostgreSQL | Graphite | TimescaleDB |\n",
+ "|:--------:|:--------:|:--------:|:--------:|:--------:|:--------:|\n",
+ "| Type | Relational| Time Series | Relational | Time Series | Time Series |\n",
+ "| Language | SQL | InfluxQL | SQL | Graphite Query | --- |\n",
+ "| Scalable | Good | Good | Good | Lose Performance when saving a big amound of data | Very Good |\n",
+ "| Replication | Yes | Yes | Yes | No | Yes |\n",
+ "| High-Availability | Yes | Yes | Yes | No | Yes |\n",
+ "| Data-Transformation | Limited | Yes | Yes | Yes | Yes |\n",
+ "| Community-Support Python | Good | OK | --- | --- | --- |\n",
+ "| Compression | Yes | Yes | Yes | Yes | Yes |\n",
+ "| Partitioning | Yes | Yes | Yes | No | Yes |\n",
+ "| Image Saving | BLOB or BYTEA | No | BLOB or BYTEA | No | BLOB or BYTEA |\n",
+ "| Python | Mysql-connector-python | Influxdb-python | psycopg2 | No | psycopg2, timescaledb |\n",
+ "| Integrated Graphics | No (connect with Grafana) | Yes | No | Yes | Yes |\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "66f200c3",
+ "metadata": {},
+ "source": [
+ "#
3. Database Example in Python \n",
+ "## Create new Database (open existing Database)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "974c33a4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Import\n",
+ "import sqlite3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "id": "06024e10-c790-4e7f-b4d2-717f2f8c1826",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Set the Path of the Database\n",
+ "database_path = 'example_database.db'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "id": "3e2e0d5c-86c3-4f58-8ec5-28888c1fef49",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create connection to the SQLite-Database\n",
+ "db_conn = sqlite3.connect(database_path)\n",
+ "db_cursor = db_conn.cursor()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fd3a2b81-9207-4a5e-8807-a1427c2f87b1",
+ "metadata": {},
+ "source": [
+ "## Create Table in Database"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "437ca01a-89ea-4e99-af04-c2b19ebf0f3a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a Table in Database\n",
+ "db_cursor.execute('''\n",
+ " CREATE TABLE IF NOT EXISTS students (\n",
+ " m_number INTEGER PRIMARY KEY,\n",
+ " name TEXT,\n",
+ " age INTEGER\n",
+ " )\n",
+ " ''')\n",
+ "db_conn.commit()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "88e7e045-8ab1-498d-b928-3e0fe51ca624",
+ "metadata": {},
+ "source": [
+ "## Create Entry in Database"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "id": "9f74ae84-7411-42e9-89ab-b7c4e12559bf",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create two entries for students\n",
+ "student_1 = (123456789, 'Josef', 20)\n",
+ "student_2 = (987654321, 'Sissi', 33)\n",
+ "\n",
+ "db_cursor.execute(f'''INSERT INTO students VALUES ({student_1[0]}, '{student_1[1]}', {student_1[2]})''')\n",
+ "db_cursor.execute(f'''INSERT INTO students VALUES ({student_2[0]}, '{student_2[1]}', {student_2[2]})''')\n",
+ "db_conn.commit()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d5b87f79-6285-432d-8f4d-7ad2730e7b11",
+ "metadata": {},
+ "source": [
+ "## Show Table from Database"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "id": "ec07f074-f508-4a5c-b65f-392d28c73ce1",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(987654321, 'Sissi', 33)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print each row of the table students in the database\n",
+ "for row in db_cursor.execute('''SELECT * FROM students'''):\n",
+ " print(row)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d7e72081-859f-4c19-9393-92c2f6e72b57",
+ "metadata": {},
+ "source": [
+ "## Search for Entry in Table"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "b29460b0-d7e4-47d5-b65e-eb3aac352648",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Search for Student with the m_number 123456789\n",
+ "db_cursor.execute(f'''SELECT name, age FROM students WHERE m_number = {123456789}''')\n",
+ "result = db_cursor.fetchall()\n",
+ "print(result)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "53a5f8d1-3444-48f1-80a4-87db8cb3858c",
+ "metadata": {},
+ "source": [
+ "## Delete Entry from Table"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "6248e45a-6cd9-42bb-9f30-ee979a8865a3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Delete Student with the m_number 123456789 from the Database\n",
+ "db_cursor.execute(f'''DELETE FROM students WHERE m_number = {123456789}''')\n",
+ "db_conn.commit()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "5c675bc4-6528-424a-88df-0023cc79eb29",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(987654321, 'Sissi', 33)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Now you can show the table again\n",
+ "# Print each row of the table students in the database\n",
+ "for row in db_cursor.execute('''SELECT * FROM students'''):\n",
+ " print(row)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "119cc9ce-b361-4ccc-892b-98cb635ad6d5",
+ "metadata": {},
+ "source": [
+ "## Close Database Connection"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "id": "24cacc8f-ba78-4768-a4cb-425c9c9ca7f3",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# After using, always close the connection to the database\n",
+ "db_conn.close()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5946f811-d132-48cb-9409-e0bbf12c9b52",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}