· 5 years ago · Nov 23, 2020, 10:44 AM
1--Aufgabe 2.1
2DROP TABLE IF EXISTS person;
3DROP TABLE IF EXISTS plzort;
4
5CREATE TABLE plzort(
6 plz varchar(5) CHECK(plz SIMILAR TO '[0-9]{5}'),
7 ort varchar(20) NOT NULL,
8 PRIMARY KEY(plz)
9);
10
11CREATE TABLE person(
12 nr int,
13 name varchar(20),
14 vorname varchar(20),
15 plz varchar(5),
16 strasse varchar(20),
17 PRIMARY KEY(nr),
18 FOREIGN KEY(plz) REFERENCES plzort(plz) ON UPDATE CASCADE ON DELETE NO ACTION
19);
20
21--Nachträglich einfügen
22ALTER TABLE person
23ADD CONSTRAINT name_c UNIQUE(name, vorname);
24
25--Aufgabe 2.2
26INSERT INTO plzort VALUES('47805', 'Krefeld');
27INSERT INTO person VALUES(4711, 'Gans', 'Gustav', '47805', 'Kölner Straße 66');
28
29--Ungültige Befehle
30--INSERT INTO person VALUES(47112, 'Hans', 'Gustav', '47806', 'Kölner Straße 66');
31--INSERT INTO person VALUES(4712, 'Gans', 'Gustav', '47805', 'Kölner Straße 66');
32--INSERT INTO person VALUES(4713, 'Gans', 'Gustav', '47805', 'Kölner Straße 66');
33--UPDATE plzort SET plz = '47806' WHERE plz = '47805'; // Kein Fehler aber zeigt wie CASCADE funktioniert
34--DELETE FROM plzort WHERE plz = '47805';
35
36--Aufgabe 2.3
37INSERT INTO person(nr, plz, strasse) VALUES ('4713', '47805', 'Kölner Straße 66');
38
39SELECT nr FROM person WHERE name IS NULL OR vorname IS NULL OR strasse IS NULL;
40
41UPDATE person SET name = name||'bla'; --NULLWERT wird nicht geändert
42
43INSERT INTO person VALUES(4712, 'Franz', 'Theodor', '47805', 'Kölner Straße');
44SELECT * FROM person WHERE strasse NOT SIMILAR TO '%[0-9]+';
45
46SELECT name, vorname, ort FROM person JOIN plzort ON person.plz = plzort.plz; --Join is ohne Bezeichner immer inner join
47
48--Aufgabe 2.4
49ALTER TABLE person ALTER COLUMN nr TYPE varchar USING CAST(nr AS varchar);