-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstudent_db-02-verbundmengen.sql
More file actions
113 lines (89 loc) · 2.59 KB
/
student_db-02-verbundmengen.sql
File metadata and controls
113 lines (89 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
USE student_db;
DROP TABLE IF EXISTS artikel;
CREATE TABLE artikel (
artikel_id int NOT NULL AUTO_INCREMENT,
artikel_nr varchar(45),
preis double,
name varchar(45),
verfuegbarkeit varchar(45),
PRIMARY KEY (artikel_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- SHOW VARIABLES LIKE 'auto_inc%';
-- ALTER TABLE artikel AUTO_INCREMENT = 1;
INSERT INTO artikel (artikel_nr, preis, name, verfuegbarkeit) VALUES
('UZEHN78126',10.99,'Auf dem Weg ins Nichts','sofort'),
('ZHBH789123',13.99,'Hinter uns','sofort'),
('KJNSM7873',9.99,'Help you','in 3 Tagen'),
('UIHJKHSD7',8.99,'Around the Planet','in 2 Tagen');
SELECT * FROM artikel;
DROP TABLE IF EXISTS film;
CREATE TABLE film (
film_id int NOT NULL AUTO_INCREMENT,
regisseur varchar(45),
sprachen varchar(45),
untertitel varchar(45),
anzahl_discs int,
studio varchar(45),
medium varchar(45),
artikel_id int,
PRIMARY KEY (film_id),
FOREIGN KEY (artikel_id) REFERENCES artikel(artikel_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
INSERT INTO film (regisseur, sprachen, untertitel, anzahl_discs, studio, medium, artikel_id) VALUES
('Sophie Little','DE, EN, FR','DE, EN', 1, 'DreamPictures','DVD',1),
('Fred van Heldt','EN, FR','EN, FR, DE', 2, 'MovieFactory','DVD',2);
SELECT * FROM film;
/** JOINs **/
SELECT
a.name,
f.regisseur,
a.preis,
a.verfuegbarkeit
FROM artikel a
JOIN film f ON a.artikel_id = f.artikel_id
ORDER by a.preis;
SELECT
a.*, f.*
FROM artikel a
JOIN film f ON a.artikel_id = f.artikel_id;
SELECT
anzahl_Discs,
-- verfuegbarkeit
COUNT(*) AS Anzahl
FROM artikel a
JOIN film f ON a.artikel_id = f.artikel_id;
SELECT
anzahl_Discs,
COUNT(*) AS Anzahl
FROM artikel NATURAL JOIN film
WHERE verfuegbarkeit = 'sofort'
AND anzahl_discs > 1
GROUP BY anzahl_discs ;
-- Inner JOIN mit ON
SELECT *
FROM artikel
INNER JOIN film
ON artikel.artikel_id=film.artikel_id;
-- Natural JOIN
SELECT *
FROM artikel
NATURAL JOIN film;
-- Inner JOIN mit USING
SELECT *
FROM artikel
INNER JOIN film USING(artikel_id);
/** VIEWs **/
DROP VIEW IF EXISTS v_sofort_verfuegbare_filme;
CREATE VIEW v_sofort_verfuegbare_filme AS
SELECT *
FROM artikel a INNER JOIN film f USING(artikel_id)
WHERE a.verfuegbarkeit = 'sofort'
ORDER BY a.name;
SELECT *
FROM v_sofort_verfuegbare_filme
WHERE sprachen LIKE '%DE%' OR sprachen LIKE 'DE%';
ALTER VIEW v_sofort_verfuegbare_filme AS
SELECT *
FROM artikel a INNER JOIN film f USING(artikel_id)
WHERE a.verfuegbarkeit = 'in 3 Tagen'
ORDER BY a.name;