Tabelopbouw
Uitleg
De vet en cursief gedrukte woorden zijn de tabelnamen, daaronder staat in het onderlijnt welke kolom de primairy key is, en de onderstreepte en cursieve kolommen zijn foreign keys. Deze kolommen hebben een link met een kolom in één van de andere tabellen. (Dit wijst zich overigens vanzelf)
Achter de kolomnamen staat in het cursief, gescheiden door een komma, welke waarden er in die velden staan. (voorbeeld data) De data types heb ik er niet bij staan, ik neem aan dat je deze zelf wel kan bepalen en het is ook niet van groot belang voor de tutorial. (onderaan deze pagina staat nog wel een SQL dump van de database)
actors
id 1, 2, 3, 4
firstname Angel, Brador, John, Arno
lastname Jolige, Pittje, Depperd, Zwartebesje
birthdate 1977-10-05, 1979-05-16, 1957-09-24, 1959-04-03
movies
id 1, 2, 3
title Eduard Schaarhand, Tombe rijder, Zeven jaar in de bergen
subtitle Een sprookje van …, De wig des levens, Een tibetaans verhaaltje voor het slapengaan
movie_actors
id 1, 2, 3, 4, 5, 6
actor_id 4, 3, 2, 1, 1, 3
movie_id 2, 3, 3, 1, 2, 1
Deze opbouw wordt hier gebruikt in de tutorial om op een herkenbare manier te laten zien wat joins doen en hoe ze werken.
SQL dump
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
-- Tabel structuur voor tabel `actors`
--
CREATE TABLE IF NOT EXISTS `actors` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`firstname` varchar(255) NOT NULL,
`lastname` varchar(255) NOT NULL,
`birthdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Gegevens worden uitgevoerd voor tabel `actors`
--
INSERT INTO `actors` (`id`, `firstname`, `lastname`, `birthdate`) VALUES
(1, 'Angel', 'Jolige', '1977-10-05'),
(2, 'Brador', 'Pittje', '1979-05-16'),
(3, 'John', 'Depperd', '1957-09-24'),
(4, 'Arno', 'Zwartebesje', '1959-04-03');
--
-- Tabel structuur voor tabel `movies`
--
CREATE TABLE IF NOT EXISTS `movies` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`subtitle` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT AUTO_INCREMENT=4 ;
--
-- Gegevens worden uitgevoerd voor tabel `movies`
--
INSERT INTO `movies` (`id`, `title`, `subtitle`) VALUES
(1, 'Eduard Schaarhand', 'Een sprookje van ...'),
(2, 'Tombe rijder', 'De wig des levens'),
(3, 'Zeven jaar in de bergen', 'Een Tibetaans verhaaltje voor het slapengaan'),
(4, 'Caribische piraten', 'Een waargebeurd verhaal van Disney');
--
-- Tabel structuur voor tabel `movie_actors`
--
CREATE TABLE IF NOT EXISTS `movie_actors` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`actor_id` int(8) unsigned NOT NULL,
`movie_id` int(8) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `actor_id` (`actor_id`),
KEY `movie_id` (`movie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Gegevens worden uitgevoerd voor tabel `movie_actors`
--
INSERT INTO `movie_actors` (`id`, `actor_id`, `movie_id`) VALUES
(1, 4, 2),
(2, 3, 3),
(3, 2, 3),
(4, 1, 1),
(5, 1, 2),
(6, 3, 1);
--
-- Beperkingen voor tabel `movie_actors`
--
ALTER TABLE `movie_actors`
ADD CONSTRAINT `movie_actors_ibfk_2` FOREIGN KEY (`movie_id`) REFERENCES `movies` (`id`),
ADD CONSTRAINT `movie_actors_ibfk_1` FOREIGN KEY (`actor_id`) REFERENCES `actors` (`id`);
Inhoudsopgave
- Inleiding
- Tabelopbouw
- Inner Join
- Left Join
- Left Join (IS NULL)
- Right Join
- Right Join (IS NULL)
- Outer Join
- Outer Join (IS NULL)
- Multiple Joins
- Tabel met zichzelf Joinen
- Tot slot