codigo_campeonato numeric
Baseado nos códigos que você colocou, os números são muito grandes e, uma vez que nenhuma operação matemática será realizada com eles (você não vai somar dois códigos, por exemplo) sugiro que sejam armazenados como VARCHAR.
Assim como os dados de CNPJ e CPF que podem ser armazenados como VARCHAR sem pontos e traços, uma vez que essa máscara é padrão, você vai poupar espaço no banco de dados e facilitar suas queries.
No mais, para retornar uma tabela com todas as competições e os jogadores que paerticipam dela, você pode tentar algo como:
SELECT c.nome, j.nome FROM campeonato c INNER JOIN participa p on p.codigo_campeonato = c.codigo_campeonato INNER JOIN clube clu on clu.cnpj = p.cnpj_clube INNER JOIN jogador j on j.cnpj_clube = clu.cnpj
(escrevi essa query sem testar, então pode ser que tenha alguma falha, mas é nesse raciocínio).
Lembrando que como utilizei INNER JOIN, o dado precisa estar em todas as tabelas para ser exibido. Se não for seu caso, teste LEFT JOIN por exemplo.