# Blatt 03
## Aufgabe 1
<!---```SQL
SELECT s.Name, a.Name, c.Title
FROM Student as s, attend as d, Assistent as a, Course as c
WHERE s.StuNo = d.StuNo
AND d.CouNo=c.CouNo
AND a.Boss = c.TaughtBy
```--->
###### tags: `todo` Reihenfolge der Joins ändern und gucken, ob das optimiert
```SQL
SELECT *
FROM Student as s
INNER JOIN attend as d ON d.StuNo=s.StuNo
INNER JOIN Course as c on c.CouNo=d.CouNo
INNER JOIN Assistent as a ON a.Boss=c.TaughtBy
```
## Aufgabe 2
### 1
###### tags: `todo` Auf inserts abändern
CREATE TABLE email_Adressen (
email VARCHAR(255) NOT NULL ,
details VARCHAR(255) ,
PRIMARY KEY(email_Adressen)
);
ALTER TABLE Professor
ADD COLUMN email VARCHAR(255) ,
FOREIGN KEY(email) REFERENCES email_Adressen(email) ON DELETE SET NULL;
ALTER TABLE Student
ADD COLUMN email VARCHAR(255),
FOREIGN KEY(email) REFERENCES email_Adressen(email) ON DELETE SET NULL;
### 2
CREATE TABLE unterrichtet (
PerNo INT NOT NULL,
CouNo INT NOT NULL UNIQUE,
FOREIGN KEY(PerNo) REFERENCES Professor(PerNo),
FOREIGN KEY(CouNo) REFERENCES Course(CouNo)
);
ALTER TABLE Course
DROP COLUMN TaughtBy;
## Aufgabe 3
### 1
```SQL
USE dbs2022;
DESCRIBE student_mat;
LOAD DATA INFILE "/var/lib/mysql/student-mat.csv"
INTO TABLE student_mat
FIELDS
TERMINATED BY ';'
ENCLOSED BY '"'
IGNORE 1 ROWS;
```
### 2
```SQL
USE dbs2022;
SELECT COUNT(G1) as G1Part, COUNT(G2) as G2Part, COUNT(G3) as G3Part, MAX(G1) as G1Best, MAX(G2) as G2Best, MAX(G3) as G3Best, AVG(G1) as G1Avg, AVG(G2) as G2Avg, AVG(G3) as G3Avg
FROM student_mat;
SELECT GREATEST(G1, G2, G3) as Best, (G1 + G2 + G3) / 3 as AvgG
FROM student_mat;
```