Claudio,
ainda complementando a resposta dos colegas, quanto ao JOIN é isso mesmo que eles falaram, quando você omite o tipo, o banco assume que você está fazendo um INNER. No caso do campo em branco, quando começamos a estudar desenvolvimento costumamos ouvir a seguinte expressão:
"Branco é diferente de nulo"
Ou melhor dizendo, um campo de texto com o conteúdo " " é diferente de um campo nulo pois existe um carácter que representa esse espaço em branco e no caso do nulo não existe nada.
Para tratar a inserção de campos assim, você deve fazer a validação no código do seu programa antes de gravar o dado, os bancos também fornecem alguns recursos para tratar esses casos como triggers, porém de preferência faça isso no programa mesmo, onde você pode dar uma resposta mais amigável ao usuário sem ter que recorrer a uma validação do banco.
Bons estudos.