# 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 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 CREATE TABLE Student (StuNo INTEGER PRIMARY KEY, Name VARCHAR(30) NOT NULL, Semester INTEGER EMail VARCHAR(255) REFERENCES EMails ON DELETE SET NULL); CREATE TABLE Professor (PerNo INTEGER PRIMARY KEY, Name VARCHAR(30) NOT NULL, Rank CHAR(2) CHECK (Rank in ('C2', 'C3', 'C4')), Room INTEGER UNIQUE EMail VARCHAR(255) UNIQUE REFERENCES EMails ON DELETE SET NULL); CREATE TABLE Assistent (PerNo INTEGER PRIMARY KEY, Name VARCHAR(30) NOT NULL, Topic VARCHAR(30), Boss INTEGER, FOREIGN KEY (Boss) REFERENCES Professor EMail VARCHAR(255) UNIQUE REFERENCES EMails ON DELETE SET NULL); CREATE TABLE EMails (EMail VARCHAR(255) PRIMARY KEY, Daten VARCHAR(255)); ## 2 CREATE TABLE Lect (Professor INTEGER FOREIGN KEY REFERENCES Professor(PerNo), Course INTEGER FOREIGN KEY 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 LINES; ``` ## 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 AVG FROM student_mat; ```