-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelacionamentos.sql
190 lines (122 loc) · 4.81 KB
/
relacionamentos.sql
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
use dbfilmesturmab;
/*
Relacionamento entre tabelas no bd
Forma 01 de fazer relacionamento - (no where)
*/
select tblFilme.nomeFilme, tblFilme.duracaoFilme, tblFilme.dataLancamentoFilme, tblGenero.nomeGenero
from tblFilme, tblGenero, tblFilmeGenero
where tblFilme.idFIlme = tblFilmeGenero.idFilme and
tblGenero.idGenero = tblFilmeGenero.idGenero;
/*
Forma 02 de fazer relacionamento - (no from)
Faz com que o banco tenha uma perfomance melhor na geração do resultado
inner join - retorna dados que foram relacionados entre a tabela da esquerda e que contém relação com a tabela da direita
*/
select tblFilme.nomeFilme,
tblFilme.duracaoFilme,
tblFilme.dataLancamentoFilme,
tblGenero.nomeGenero
from tblFilme inner join tblFilmeGenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
inner join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero;
/*
left join - retorna dados que foram relacionados entre a tabela da esquerda e que contém relação com a tabela da direita,
porém também retorna os dados da tabela da esquerda que não foram relacionados com a tabela da direita
*/
select tblFilme.nomeFilme,
tblFilme.duracaoFilme,
tblFilme.dataLancamentoFilme,
tblGenero.nomeGenero
from tblFilme left join tblFilmeGenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
left join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero;
/*
right join - retorna dados que foram relacionados entre a tabela da esquerda e que contém relação com a tabela da direita,
porém também retorna os dados da tabela da direita que não foram relacionados com a tabela da esquerda
*/
select tblFilme.nomeFilme,
tblFilme.duracaoFilme,
tblFilme.dataLancamentoFilme,
tblGenero.nomeGenero
from tblFilme right join tblFilmeGenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
right join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero;
/*
Aplicando full join no mysql - como o mysql não possui o comando full join,
para representar esse resultado é necessário utilizar o comando union ( o
comando union para unir dois ou mais scripts de select). Criamos um select
apenas com o left join e unimos com outro select com o right join.
*/
select tblFilme.nomeFilme,
tblFilme.duracaoFilme,
tblFilme.dataLancamentoFilme,
tblGenero.nomeGenero
from tblFilme right join tblFilmeGenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
right join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero
union
select tblFilme.nomeFilme,
tblFilme.duracaoFilme,
tblFilme.dataLancamentoFilme,
tblGenero.nomeGenero
from tblFilme left join tblFilmeGenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
left join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero;
/*
*/
select * from tblFilmeGenero;
show tables;
select tblFilme.nomeFilme,
tblFilme.nomeOriginalFilme,
tblclassificacao.nomeClassificacao,
tblGenero.nomeGenero,
tblAtor.nomeArtisticoAtor
from tblFilme inner join tblFilmeGenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
inner join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero
inner join tblClassificacao
on tblClassificacao.idClassificacao = tblFilme.idClassificacao
inner join tblatorfilme
on tblfilme.idfilme = tblatorfilme.idfilme
inner join tblator
on tblator.idator = tblatorfilme.idator
order by nomeArtisticoAtor;
select * from tblator;
insert into tblgenero (nomeGenero) values ('Histórico');
select * from tblfilmegenero;
insert into tblfilmegenero (idFilme, idGenero) values (4,1), (4,9);
select * from tblClassificacao;
select * from tblfilme;
select * from tblatorfilme;
select tblfilme.nomefilme,
tblclassificacao.nomeclassificacao,
tblgenero.nomegenero
from tblFilme inner join tblClassificacao
on tblFilme.idClassificacao = tblClassificacao.idClassificacao
inner join tblfilmegenero
on tblgenero.idgenero = tblfilmegenero.idgenero;
select * from tblfilmegenero;
/**/
select tblFilme.nomeFilme,
tblFilme.nomeOriginalFilme,
tblClassificacao.nomeClassificacao,
tblGenero.nomeGenero,
tblAtor.nomeAtor
from tblClassificacao inner join tblfilme
on tblCLassificacao.idClassificacao = tblFilme.idClassificacao
inner join tblfilmegenero
on tblFilme.idFilme = tblFilmeGenero.idFilme
inner join tblGenero
on tblGenero.idGenero = tblFilmeGenero.idGenero
inner join tblAtorFilme
on tblFilme.idFilme = tblAtorFilme.idFilme
inner join tblAtor
on tblAtor.idAtor = tblAtorFilme.idAtor
where year(tblAtor.dataNascimentoAtor) >= '1965'
order by tblAtor.nomeArtisticoAtor asc;