- 1 Abschnitt
- 7 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
Arbeiten mit relationalen Datenbanken
SQL ist die Standard-Abfragesprache für relationale Datenbanken. Es besteht aus verschiedenen Befehlen, die in mehrere Kategorien unterteilt sind: DDL (Data Definition Language), DML (Data Manipulation Language), DQL (Data Query Language) und DCL (Data Control Language).
1. Datenbank und Tabellen erstellen (DDL)
Erstellen einer Datenbank:
-- Erstellen einer Datenbank
CREATE DATABASE todoListe; Dieser Befehl erstellt eine neue Datenbank namens todoListe.
Erstellen und Verwenden der Datenbank:
-- Verwenden der erstellten Datenbank
USE todoListe;
Dieser Befehl wählt die Datenbank todoListe für die folgenden Operationen aus.
Erstellen der Tabellen:
-- Erstellen der Tabelle Benutzer
CREATE TABLE Benutzer (
BenutzerID INT PRIMARY KEY, -- BenutzerID ist der Primärschlüssel der Tabelle
Name VARCHAR(100) -- Name ist ein Attribut der Tabelle und speichert den Namen des Benutzers
);
-- Erstellen der Tabelle Aufgaben
CREATE TABLE Aufgaben (
AufgabeID INT PRIMARY KEY, -- AufgabeID ist der Primärschlüssel der Tabelle
BenutzerID INT, -- BenutzerID ist ein Attribut, das auf die Benutzer-Tabelle verweist
Titel VARCHAR(100), -- Titel ist ein Attribut, das den Titel der Aufgabe speichert
Beschreibung TEXT, -- Beschreibung ist ein Attribut, das die Beschreibung der Aufgabe speichert
Erledigt BOOLEAN, -- Erledigt ist ein Attribut, das den Status der Aufgabe speichert (erledigt oder nicht)
FOREIGN KEY (BenutzerID) REFERENCES Benutzer(BenutzerID) -- BenutzerID ist ein Fremdschlüssel, der auf die Benutzer-Tabelle verweist
); Diese Befehle erstellen die Tabellen Benutzer und Aufgaben mit den entsprechenden Attributen und Beziehungen.
Datenmanipulation (CRUD-Operationen)
Einfügen von Daten:
-- Einfügen von Benutzern
INSERT INTO Benutzer (BenutzerID, Name) VALUES (1, 'Alice'); -- Fügt einen Benutzer mit der ID 1 und dem Namen 'Alice' hinzu
INSERT INTO Benutzer (BenutzerID, Name) VALUES (2, 'Bob'); -- Fügt einen Benutzer mit der ID 2 und dem Namen 'Bob' hinzu
-- Einfügen von Aufgaben
INSERT INTO Aufgaben (AufgabeID, BenutzerID, Titel, Beschreibung, Erledigt) VALUES (1, 1, 'Einkaufen', 'Milch und Brot kaufen', FALSE); -- Fügt eine Aufgabe mit der ID 1 hinzu, die BenutzerID 1 zugeordnet ist
INSERT INTO Aufgaben (AufgabeID, BenutzerID, Titel, Beschreibung, Erledigt) VALUES (2, 2, 'Hausaufgaben', 'Mathe und Bio machen', TRUE); -- Fügt eine Aufgabe mit der ID 2 hinzu, die BenutzerID 2 zugeordnet ist Abfragen von Daten:
-- Alle Benutzer abfragen
SELECT * FROM Benutzer; -- Gibt alle Datensätze der Tabelle 'Benutzer' zurück
-- Alle Aufgaben eines bestimmten Benutzers abfragen
SELECT * FROM Aufgaben WHERE BenutzerID = 1; -- Gibt alle Aufgaben zurück, die der BenutzerID 1 zugeordnet sind
-- Nur erledigte Aufgaben abfragen
SELECT * FROM Aufgaben WHERE Erledigt = TRUE; -- Gibt alle Aufgaben zurück, die als erledigt markiert sind Aktualisieren von Daten:
-- Titel und Beschreibung einer Aufgabe aktualisieren
UPDATE Aufgaben SET Titel = 'Einkaufen', Beschreibung = 'Milch, Brot und Eier kaufen' WHERE AufgabeID = 1; -- Aktualisiert den Titel und die Beschreibung der Aufgabe mit der ID 1
-- Status einer Aufgabe auf erledigt setzen
UPDATE Aufgaben SET Erledigt = TRUE WHERE AufgabeID = 1; -- Setzt den Status der Aufgabe mit der ID 1 auf erledigt Löschen von Daten:
-- Eine Aufgabe löschen
DELETE FROM Aufgaben WHERE AufgabeID = 1; -- Löscht die Aufgabe mit der ID 1
-- Einen Benutzer löschen
DELETE FROM Benutzer WHERE BenutzerID = 1; -- Löscht den Benutzer mit der ID 1 Verbindung zu einer Datenbank in Java
Um eine Java-Anwendung mit einer relationalen Datenbank zu verbinden, verwenden wir JDBC (Java Database Connectivity). JDBC ist eine API, die es ermöglicht, SQL-Anweisungen aus Java-Code auszuführen und Daten aus einer Datenbank abzurufen.
JDBC-Grundlagen
- JDBC-Treiber: Ein JDBC-Treiber für die spezifische Datenbank (z.B. MySQL, PostgreSQL) ist erforderlich.
- Verbindung herstellen: Eine Verbindung zur Datenbank herstellen.
- SQL-Anweisungen ausführen: SQL-Anweisungen ausführen und Ergebnisse verarbeiten.
Beispiel: Verbindung zu einer MySQL-Datenbank
Schritt 1: JDBC-Treiber hinzufügen
Füge den JDBC-Treiber für MySQL zu deinem Projekt hinzu. Wenn du Maven verwendest, füge die Abhängigkeit in der pom.xml hinzu:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency> Schritt 2: Verbindung herstellen und Abfragen ausführen
Hier ist ein Beispiel, wie du eine Verbindung zu MySQL herstellst und CRUD-Operationen ausführst:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DatabaseExample {
public static void main(String[] args) {
String jdbcUrl = "jdbc:mysql://localhost:3306/todoListe";
String username = "root";
String password = "password";
try {
// Verbindung zur Datenbank herstellen
Connection connection = DriverManager.getConnection(jdbcUrl, username, password);
Statement statement = connection.createStatement();
// Einfügen von Benutzern
statement.executeUpdate("INSERT INTO Benutzer (BenutzerID, Name) VALUES (1, 'Alice')");
statement.executeUpdate("INSERT INTO Benutzer (BenutzerID, Name) VALUES (2, 'Bob')");
// Einfügen von Aufgaben
statement.executeUpdate("INSERT INTO Aufgaben (AufgabeID, BenutzerID, Titel, Beschreibung, Erledigt) VALUES (1, 1, 'Einkaufen', 'Milch und Brot kaufen', FALSE)");
statement.executeUpdate("INSERT INTO Aufgaben (AufgabeID, BenutzerID, Titel, Beschreibung, Erledigt) VALUES (2, 2, 'Hausaufgaben', 'Mathe und Bio machen', TRUE)");
// Abfragen von Daten
ResultSet resultSet = statement.executeQuery("SELECT * FROM Benutzer");
while (resultSet.next()) {
int benutzerID = resultSet.getInt("BenutzerID");
String name = resultSet.getString("Name");
System.out.println("BenutzerID: " + benutzerID + ", Name: " + name);
}
// Aktualisieren von Daten
statement.executeUpdate("UPDATE Aufgaben SET Erledigt = TRUE WHERE AufgabeID = 1");
// Löschen von Daten
statement.executeUpdate("DELETE FROM Aufgaben WHERE AufgabeID = 2");
// Verbindung schließen
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} 