From 5497ef422dba221f83105adc062f05040dff45d9 Mon Sep 17 00:00:00 2001 From: "Max W." <66736561+Walzen665@users.noreply.github.com> Date: Fri, 31 Jan 2025 13:05:11 +0100 Subject: [PATCH] update --- daten-abfragen/notes.md | 39 +++++++++++++++++++++++ daten-abfragen/select-advanced.sql | 38 ++++++++++++++++++++++ daten-abfragen/select-basic-2.sql | 9 +++++- daten-manipulieren/delete.sql | 1 + daten-manipulieren/insert.sql | 9 ++++++ daten-manipulieren/table-manipulation.sql | 6 ++++ daten-manipulieren/update.sql | 7 ++++ uebung/crud-1.sql | 9 ++++++ 8 files changed, 117 insertions(+), 1 deletion(-) create mode 100644 daten-abfragen/select-advanced.sql create mode 100644 daten-manipulieren/delete.sql create mode 100644 daten-manipulieren/insert.sql create mode 100644 daten-manipulieren/table-manipulation.sql create mode 100644 daten-manipulieren/update.sql create mode 100644 uebung/crud-1.sql diff --git a/daten-abfragen/notes.md b/daten-abfragen/notes.md index 26f7873..294c427 100644 --- a/daten-abfragen/notes.md +++ b/daten-abfragen/notes.md @@ -15,3 +15,42 @@ `SELECT * FROM table WHERE age BETWEEN 20 AND 30` Gibt alle Werte zurück, wo das Alter zwischen 20 und 30 liegt. (Inklusive 20 und 30) +`LIMIT offset, count` Limitiert die Anzahl der Zeilen, die zurückgegeben werden. Offset gibt an, ab welcher Zeile die Daten zurückgegeben werden sollen. Bspw. `LIMIT 5, 10` gibt die Zeilen 6 bis 15 zurück. + +`ORDER BY column DESC` Sortiert die Daten absteigend. Standardverhalten ist ASC. + +`GROUP BY column LIMIT 40, 5` Gruppiert die Daten nach einer Spalte und gibt nur 5 Zeilen zurück, beginnend bei Zeile 40. **Limit sollte immer mit ORDER BY verwenden** + +`SELECT firstname as fname, lastname as lname FROM table` Benennt die Spalten um. + +- `SELECT COUNT(*)` + Zählt die Anzahl der Zeilen in einer Tabelle. + +- `SELECT MIN(spalte)` + Gibt den kleinsten Wert aus der angegebenen Spalte zurück. + +- `SELECT MAX(spalte)` + Gibt den größten Wert aus der angegebenen Spalte zurück. + +- `SELECT AVG(spalte)` + Berechnet den Durchschnittswert der Werte in der angegebenen Spalte. + +- `SELECT SUM(spalte)` + Addiert alle Werte in der angegebenen Spalte und gibt die Summe zurück. + +- `SELECT UPPER(spalte)` + Wandelt alle Zeichen in der angegebenen Spalte in Großbuchstaben um. + +- `SELECT LOWER(spalte)` + Wandelt alle Zeichen in der angegebenen Spalte in Kleinbuchstaben um. + +- `SELECT LENGTH(spalte)` + Gibt die Länge (Anzahl der Zeichen) des Wertes in der angegebenen Spalte zurück. + +- `SELECT SUBSTR(spalte, start, länge)` + Extrahiert einen Teilstring aus der angegebenen Spalte, beginnend bei `start` und mit einer optionalen Länge von `länge`. + +- `SELECT CONCAT(spalte1, spalte2, ...)` + Verknüpft mehrere Spalten oder Zeichenketten miteinander und gibt die kombinierte Zeichenkette zurück. +- `REPLACE(spalte, 'suchen', 'ersetzen')` + Ersetzt alle Vorkommen des Suchstrings durch den Ersetzungsstring in der angegebenen Spalte. \ No newline at end of file diff --git a/daten-abfragen/select-advanced.sql b/daten-abfragen/select-advanced.sql new file mode 100644 index 0000000..c278546 --- /dev/null +++ b/daten-abfragen/select-advanced.sql @@ -0,0 +1,38 @@ +select firstname as fn +from customers; + +select min(age) as min_age, max(age) as max_age, avg(age) as avg_age +from customers; + +select concat(customers.firstname, ' ', lastname) as full_name +from customers; + +select upper(concat(customers.firstname, ' ', lastname)) as full_name +from customers; + +select length(customers.firstname) as fn_length +from customers; + +select concat(customers.firstname, ' ', lastname) as full_name +from customers +where length(firstname) = 4; # performance is not perfect + +# [Aufgabe]: SELECT, LIMIT, ORDER BY +# Welcher Vorname kam insgesamt (d.h. für ein beliebiges Geschlecht in einem beliebigen Jahr) am häufigsten vor? +select * from baby_names order by count desc limit 1; # Linda +select * from baby_names where gender = 'm' and year = 2000 order by count desc limit 1; + +select min(baby_names.year) from baby_names; # 1880 + +select * from baby_names order by year limit 1; # 1880 + +select count(distinct name) from baby_names where length(name) = 5; # 1590 + +select count(distinct name) from baby_names where name like '_____'; # 1590 + +select sum(count) from baby_names where year = 2000; # 3320671 + +select distinct baby_names.name from baby_names order by baby_names.name asc limit 10, 10; # Aarna + + +select categories.id, categories.title, replace(title, 'und', '&') from categories; \ No newline at end of file diff --git a/daten-abfragen/select-basic-2.sql b/daten-abfragen/select-basic-2.sql index 729eb56..7a56c29 100644 --- a/daten-abfragen/select-basic-2.sql +++ b/daten-abfragen/select-basic-2.sql @@ -96,4 +96,11 @@ where year like '19%0'; # 15307 select count(*) from baby_names where year % 10 = 0 - and year between 1900 and 1999; # 15307 \ No newline at end of file + and year between 1900 and 1999; # 15307 + +select * from baby_names where name like 'Alex%' order by name desc; + +select * from baby_names limit 50, 5; # offset, limit + +select customers.firstname, customers.lastname, age from customers order by age desc, firstname; +select customers.firstname, customers.lastname, age from customers order by age desc, firstname limit 10; \ No newline at end of file diff --git a/daten-manipulieren/delete.sql b/daten-manipulieren/delete.sql new file mode 100644 index 0000000..2e3b97b --- /dev/null +++ b/daten-manipulieren/delete.sql @@ -0,0 +1 @@ +delete from categories where id = 30; \ No newline at end of file diff --git a/daten-manipulieren/insert.sql b/daten-manipulieren/insert.sql new file mode 100644 index 0000000..a271823 --- /dev/null +++ b/daten-manipulieren/insert.sql @@ -0,0 +1,9 @@ +insert into categories (title) +values ('Fremdsprachige Bücher'), + ('eBooks'), + ('Märchen'); + +delete +from categories +where title in ('Märchen', 'eBooks', 'Fremdsprachige Bücher'); + diff --git a/daten-manipulieren/table-manipulation.sql b/daten-manipulieren/table-manipulation.sql new file mode 100644 index 0000000..97519c0 --- /dev/null +++ b/daten-manipulieren/table-manipulation.sql @@ -0,0 +1,6 @@ +create table if not exists stores +( + street varchar(100), + description text +) + diff --git a/daten-manipulieren/update.sql b/daten-manipulieren/update.sql new file mode 100644 index 0000000..9b19a04 --- /dev/null +++ b/daten-manipulieren/update.sql @@ -0,0 +1,7 @@ +update categories set title = ' +Fremdsprachige Bücher' where title = 'Fremdsprachige Bücher'; + +update categories set title = 'Kinder- & Jugendbücher' where title = 'Kinder- und Jugendbücher'; +update categories set title = 'Ernährung & Diät' where id = 8; + +update categories set title = replace(title, 'und', '&'); \ No newline at end of file diff --git a/uebung/crud-1.sql b/uebung/crud-1.sql new file mode 100644 index 0000000..52f4ec2 --- /dev/null +++ b/uebung/crud-1.sql @@ -0,0 +1,9 @@ +# [Aufgabe]: Daten verwalten + +insert into locations (title, address) values ('Hauptbahnhof', 'Hauptbahnhof 1, 60329 Frankfurt am Main'); + +update locations set address = replace(address, 'Domkloster 1', 'Domkloster 4') where title = 'Buchhandlung Dom'; + +delete from locations where title = 'Buchhandlung Alexanderplatz'; + +insert into locations (title, address) values ('Buchhandlung Flughafen BER', 'Melli-Beese-Ring 1, 12529 Schönefeld, Deutschland'); \ No newline at end of file