CREATE TABLE ALUNOS(
ID INTEGER NOT NULL,
NOME VARCHAR(60) NOT NULL
)ENGINE=INNODB;
ALTER TABLE ALUNOS ADD CONSTRAINT PK_ALUNO PRIMARY KEY(ID);
CREATE TABLE ENDERECOS_ELETRONICOS(
ID INTEGER NOT NULL,
TIPO VARCHAR(20) NOT NULL,
ENDERECO VARCHAR(120) NOT NULL
) ENGINE=INNODB;
ALTER TABLE ENDERECOS_ELETRONICOS ADD CONSTRAINT PK_ENDERECO_ELETRONICO PRIMARY KEY(ID, TIPO);
ALTER TABLE ENDERECOS_ELETRONICOS ADD CONSTRAINT FK_ENDERECO_ELETRONICO_ALUNO FOREIGN KEY(ID) REFERENCES ALUNOS(ID);
ALTER TABLE ENDERECOS_ELETRONICOS ADD CONSTRAINT CK_TIPO_ENDERECO_ELETRONICO CHECK (TIPO IN('EMAIL','SITE','TWITTER','FACEBOOK'));
INSERT INTO ALUNOS (ID, NOME) VALUES(1,'A');
INSERT INTO ALUNOS (ID, NOME) VALUES(2,'B');
INSERT INTO ALUNOS (ID, NOME) VALUES(3,'C');
INSERT INTO ALUNOS (ID, NOME) VALUES(4,'D');
INSERT INTO ENDERECOS_ELETRONICOS(ID, TIPO, ENDERECO) VALUES(1,'FACEBOOK','a.facebook.com');
INSERT INTO ENDERECOS_ELETRONICOS(ID, TIPO, ENDERECO) VALUES(1,'TWITTER','a.twitter.com');
INSERT INTO ENDERECOS_ELETRONICOS(ID, TIPO, ENDERECO) VALUES(2,'SITE','b.com.br');
SELECT A.ID, A.NOME, EE.TIPO, EE.ENDERECO FROM
ALUNOS A INNER JOIN ENDERECOS_ELETRONICOS EE
ON (A.ID = EE.ID);
+----+------+----------+----------------+
| ID | NOME | TIPO | ENDERECO |
+----+------+----------+----------------+
| 1 | A | FACEBOOK | a.facebook.com |
| 1 | A | TWITTER | a.twitter.com |
| 2 | B | SITE | b.com.br |
+----+------+----------+----------------+
SELECT A.ID, A.NOME, EE.TIPO, EE.ENDERECO FROM
ALUNOS A LEFT JOIN ENDERECOS_ELETRONICOS EE
ON (A.ID = EE.ID);
+----+------+----------+----------------+
| ID | NOME | TIPO | ENDERECO |
+----+------+----------+----------------+
| 1 | A | FACEBOOK | a.facebook.com |
| 1 | A | TWITTER | a.twitter.com |
| 2 | B | SITE | b.com.br |
| 3 | C | NULL | NULL |
| 4 | D | NULL | NULL |
+----+------+----------+----------------+
Na primeira consulta, o inner join traz apenas os valores que casam, na segunda , o left join traz todos os valores da primeira tabela, neste caso A e insere 'null' onde não consegue fazer o casamento.
Experimente trocar a posição das tabelas para ver como o resultado se altera.