diff --git a/Zweites Jahr/README.md b/Zweites Jahr/README.md index f2f8a3d..6f040f8 100644 --- a/Zweites Jahr/README.md +++ b/Zweites Jahr/README.md @@ -7,11 +7,13 @@ Wichtige Informationen - Wir eventuell nie aktuell sein. - Stundenplan - [Link](https://wvss-mannheim.webuntis.com/WebUntis/?school=wvss-mannheim#/basic/timetablePublic/class?entityId=2583) +## 06-02-26 - SQL +- DATE sachen in SQL + ## 05-02-26 - PHP (JSON, SQL) - Aus PHP JSON Datei erstellen - In PHP SQL abfrage in JSON datei umwandeln - ## 04-02-26 - PHP (Kryptographie) - Caeser chiffere kontrolliert - Vigenere chieffre gemacht diff --git a/Zweites Jahr/sql/AB4_DateTime_mit_Aufgaben.md b/Zweites Jahr/sql/AB4_DateTime_mit_Aufgaben.md new file mode 100644 index 0000000..9cbcc02 --- /dev/null +++ b/Zweites Jahr/sql/AB4_DateTime_mit_Aufgaben.md @@ -0,0 +1,128 @@ + + +# Übung (Basis: Tabelle Flugdaten) +-> `datum.sql` + +## A1 + +### Aufgabenstellung + +Gib alle Flüge aus, die im Oktober 2025 starten. + +### Lösung +```sql + +SELECT * +FROM fluege +WHERE MONTH(abflug) = 10 AND YEAR(abflug) = 2025 +``` + +## A2 + +### Aufgabenstellung + +Zeige das Datum und die Uhrzeit des Abflugs und der Ankunft getrennt an. + +### Lösung +```sql + +SELECT +-- Abflug +DATE(abflug), TIME(abflug), +-- Ankunft +DATE(ankunft), TIME(ankunft) + +FROM fluege +``` + +## A3 + +### Aufgabenstellung + +Berechne die Flugdauer in hh:mm:ss für jeden Flug. (→TIMEDIFF) + +### Lösung + +```sql +SELECT SEC_TO_TIME(TIMESTAMPDIFF(SECOND, abflug, ankunft)) AS Flugzeit +FROM fluege +``` + +## A4 + +### Aufgabenstellung + +Berechne die Flugdauer in Minuten für jeden Flug. (→TIMEDIFF) + +### Lösung + +```sql +SELECT TIMESTAMPDIFF(MINUTE, abflug, ankunft) AS Flugzeit +FROM fluege +``` + +## A5 + +### Aufgabenstellung + +Zeige alle Flüge, die länger als 3 Stunden dauern + +### Lösung + +```sql +SELECT * +FROM fluege +WHERE TIMESTAMPDIFF(HOUR, abflug, ankunft) > 3 +``` + +## A6 + +### Aufgabenstellung + +Formatiere das jeweilige Abflugdatum in folgendem Format: **07.10.2025 - 14:30 Uhr** + +### Lösung + +```sql +SELECT DATE_FORMAT(abflug, '%d.%m.%Y - %H:%i Uhr') AS ablfug_formatiert +FROM fluege +``` + +## A7 + +### Aufgabenstellung + +Ermittle die Anzahl der Flüge pro Monat + +### Lösung + +```sql +SELECT MONTHNAME(abflug) AS Monatsname, COUNT(*) AS Anzahl_Fluege +FROM fluege +GROUP BY MONTH(abflug) +ORDER BY MONTH(abflug); +``` +### Erklärung: +mit `COUNT(*)` werden die Ergebnisse gezählt und nach dem Monat mit `GROUB BY MONTH(abflug)` gruppiert und mit `ORDER BY MONTH(abflug)` nach dem Monat sortiert + +## A8 + +### Aufgabenstellung + +Zeige alle Flüge, die am Wochenende abfliegen X + +### Lösung + +```sql +SELECT * +FROM fluege +WHERE DAYOFWEEK(abflug) IN (7, 1); +``` + +### Erklärung +Es werden nur die Einträge angezeigt wo der Tag des Abflugs `7` oder `1` ist. + +> `7` -> Samstag +> `1` -> Sonntag +> +> Da die Woche in USA am Sonntag startet und nicht am Montag \ No newline at end of file diff --git a/Zweites Jahr/sql/datum.sql b/Zweites Jahr/sql/datum.sql new file mode 100644 index 0000000..d08ffbd --- /dev/null +++ b/Zweites Jahr/sql/datum.sql @@ -0,0 +1,81 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.1 +-- https://www.phpmyadmin.net/ +-- +-- Host: 127.0.0.1 +-- Erstellungszeit: 16. Okt 2025 um 10:31 +-- Server-Version: 10.4.32-MariaDB +-- PHP-Version: 8.2.12 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Datenbank: `datum` +-- +CREATE DATABASE IF NOT EXISTS `datum` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; +USE `datum`; + +-- -------------------------------------------------------- + +-- +-- Tabellenstruktur für Tabelle `fluege` +-- + +CREATE TABLE `fluege` ( + `flug_id` int(11) NOT NULL, + `flugnummer` varchar(20) NOT NULL, + `abflug_ort` varchar(100) DEFAULT NULL, + `ankunft_ort` varchar(100) DEFAULT NULL, + `abflug` datetime NOT NULL, + `ankunft` datetime NOT NULL, + `erstellt_am` timestamp NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- Daten für Tabelle `fluege` +-- + +INSERT INTO `fluege` (`flug_id`, `flugnummer`, `abflug_ort`, `ankunft_ort`, `abflug`, `ankunft`, `erstellt_am`) VALUES +(1, 'LH100', 'Frankfurt', 'Berlin', '2025-10-08 08:00:00', '2025-10-08 09:10:00', '2025-10-16 08:25:39'), +(2, 'AF203', 'Paris', 'Rom', '2025-11-05 11:30:00', '2025-11-05 13:25:00', '2025-10-16 08:25:39'), +(3, 'BA304', 'London', 'Madrid', '2025-12-10 07:45:00', '2025-12-10 10:00:00', '2025-10-16 08:25:39'), +(4, 'DL405', 'New York', 'Los Angeles', '2026-01-15 15:00:00', '2026-01-15 18:30:00', '2025-10-16 08:25:39'), +(5, 'SQ501', 'Singapur', 'Sydney', '2026-02-03 21:00:00', '2026-02-04 07:00:00', '2025-10-16 08:25:39'), +(6, 'EK606', 'Dubai', 'Bangkok', '2026-03-12 02:15:00', '2026-03-12 11:30:00', '2025-10-16 08:25:39'), +(7, 'LH707', 'München', 'Wien', '2025-10-20 06:40:00', '2025-10-20 07:45:00', '2025-10-16 08:25:39'), +(8, 'TK808', 'Istanbul', 'Amsterdam', '2025-11-28 13:20:00', '2025-11-28 15:50:00', '2025-10-16 08:25:39'), +(9, 'UA909', 'Chicago', 'Toronto', '2026-01-18 17:10:00', '2026-01-18 19:00:00', '2025-10-16 08:25:39'), +(10, 'QF110', 'Melbourne', 'Auckland', '2026-03-25 09:00:00', '2026-03-25 14:10:00', '2025-10-16 08:25:39'); + +-- +-- Indizes der exportierten Tabellen +-- + +-- +-- Indizes für die Tabelle `fluege` +-- +ALTER TABLE `fluege` + ADD PRIMARY KEY (`flug_id`); + +-- +-- AUTO_INCREMENT für exportierte Tabellen +-- + +-- +-- AUTO_INCREMENT für Tabelle `fluege` +-- +ALTER TABLE `fluege` + MODIFY `flug_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;