Spontan, wild und Kuchen

Wir erzählen von unserer Weltreise und erklären dabei Datenbanken.

https://spontan-wild-und-kuchen.de

subscribe
share






episode 5: Zuuug!


Wir haben jetzt JR-Railpässe und sind damit schon eine Menge durch Japan gefahren. Wir erzählen von Kyoto, Nara, Hiroshima und Kobe. Außerdem haben wir ein paar Sounds aus Japan mitgebracht.

Das Geraschel bei dem Shinkansen-Tonbeispiel stammt übrigens von japanischen Mitreisenden, die ihre Bento-Boxen ausgepackt haben.

Und hier noch die Erklärung zu den Umziehbrettchen.

Andreas erklärt Anke mal wieder was über Datenbanken. Konkret geht es heute darum, wie man N:M-Beziehungen aus dem E/R-Modell in Tabellen umsetzt und wie das mit SQL geht. Auch über dieses Thema kann man noch in Andreas‘ Blogbeitrag von früher nachlesen.

Und hier wieder was Anke in MySQL eingegeben hat:

mysql> show tables;
+----------------+
| Tables_in_todo |
+----------------+
| Person |
| Todoeintrag |
+----------------+
2 rows in set (0,00 sec)

mysql> select * from Person;
+------------------+---------+----------+
| IdentifierPerson | Name | Nachname |
+------------------+---------+----------+
| 1 | Andreas | Hess |
+------------------+---------+----------+
1 row in set (0,00 sec)

mysql> select * from Todoeintrag;
+-----------------------+--------------------+------------+-------------------+------------------+
| IdentifierTodoeintrag | Text | Prioritaet | Faelligkeitsdatum | IdentifierPerson |
+-----------------------+--------------------+------------+-------------------+------------------+
| 1 | Handgepäck packen | 10 | 2019-04-10 | 1 |
+-----------------------+--------------------+------------+-------------------+------------------+
1 row in set (0,00 sec)

mysql> alter table Todoeintrag drop column identifierPerson;
ERROR 1828 (HY000): Cannot drop column 'IdentifierPerson': needed in a foreign key constraint 'todoeintrag_ibfk_1'

mysql> alter table Todoeintrag drop constraint todoeintrag_ibfk_1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'constraint todoeintrag_ibfk_1' at line 1

mysql> alter table Todoeintrag drop foreign key todoeintrag_ibfk_1;
Query OK, 0 rows affected (0,01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table Todoeintrag drop column identifierPerson;
Query OK, 0 rows affected (0,06 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> create table zustaendigfuer (IdentifierTodoeintrag integer, IdentifierPerson integer, foreign key (IdentifierTodoeintrag) references Todoeintrag(IdentifierTodoeintrag), foreign key (IdentifierPerson) references Person(IdentifierPerson), primary key (IdentifierTodoeintrag, IdentifierPerson));
Query OK, 0 rows affected (0,01 sec)

mysql> insert into zustaendigfuer values (1,1);
Query OK, 1 row affected (0,01 sec)

mysql> select * from zustaendigfuer;
+-----------------------+------------------+
| IdentifierTodoeintrag | IdentifierPerson |
+-----------------------+------------------+
| 1 | 1 |
+-----------------------+------------------+
1 row in set (0,00 sec)

mysql> insert into zustaendigfuer values (1,1);
ERROR 1062 (23000): Duplicate entry '1-1' for key 'PRIMARY'

mysql> insert into zustaendigfuer values (1,2);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (todo.zustaendigfuer, CONSTRAINT zustaendigfuer_ibfk_2 FOREIGN KEY (IdentifierPerson) REFERENCES person (identifierperson))

mysql> alter table zustaendigfuer add column Stunden time;
Query OK, 0 rows affected (0,05 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> select * from zustaendigfuer;
+-----------------------+------------------+---------+
| IdentifierTodoeintrag | IdentifierPerson | Stunden |
+-----------------------+------------------+---------+
| 1 | 1 | NULL |
+-----------------------+------------------+---------+
1 row in set (0,00 sec)

mysql> update zustaendigfuer set Stunden='02:00:00' where IdentifierTodoeintrag=1 AND IdentifierPerson=1;
Query OK, 1 row affected (0,01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from zustaendigfuer;
+-----------------------+------------------+----------+
| IdentifierTodoeintrag | IdentifierPerson | Stunden |
+-----------------------+------------------+----------+
| 1 | 1 | 02:00:00 |
+-----------------------+------------------+----------+
1 row in set (0,00 sec)

mysql> update zustaendigfuer set Stunden='26:00' where IdentifierTodoeintrag=1 AND IdentifierPerson=1;
Query OK, 1 row affected (0,01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> select * from zustaendigfuer;
+-----------------------+------------------+----------+
| IdentifierTodoeintrag | IdentifierPerson | Stunden |
+-----------------------+------------------+----------+
| 1 | 1 | 26:00:00 |
+-----------------------+------------------+----------+
1 row in set (0,00 sec)


fyyd: Podcast Search Engine
share








 April 26, 2019  1h24m