Voltar para a lista de artigos Artigos
13 minutos de leitura

Perguntas comuns para a entrevista com o desenvolvedor SQL de nível de entrada

Você já foi entrevistado para uma posição SQL de nível básico? Você está planejando candidatar-se a tal cargo? Este artigo o ajudará a saber o que esperar e a se preparar para perguntas comuns de entrevistas a desenvolvedores SQL.

Depois de obter alguns conhecimentos básicos de SQL e programação, você provavelmente está se perguntando o que fazer a seguir. Ou talvez você não esteja se perguntando! Você sabe que o que você aprendeu logo desaparecerá se não o usar regularmente. E a melhor maneira de manter seu conhecimento e, é claro, de aprender ainda mais é começar a trabalhar como um desenvolvedor SQL. Mas você não sabe que perguntas esperar em uma entrevista. Portanto, você está hesitando em se candidatar a um emprego. Mesmo assim, saber o que lhe será perguntado não o ajudará muito, não é mesmo? O que você precisa são as respostas! Portanto, eu lhe fornecerei perguntas de nível básico para entrevistas com desenvolvedores SQL e, mais importante ainda, respostas a essas perguntas.

Vamos às perguntas e respostas!

Pergunta 1: O que é um Modelo de Dados Relacionais? Explique vários outros modelos de dados lógicos

Modelo de Dados Relacionais

O modelo de dados relacional é o modelo de dados mais amplamente utilizado. Ele foi introduzido em 1969 por Edgar F. Codd. Um modelo de dados relacional é baseado no conceito matemático de relação. O objetivo das relações é evitar a redundância de dados, assegurar a integridade dos dados e acelerar a recuperação dos dados.

No contexto do banco de dados, um modelo de dados relacional vê o banco de dados como um conjunto de relações, no qual uma relação é simplesmente uma tabela. A tabela, é claro, contém valores. Os três elementos principais de uma tabela são colunas, linhas e valores.

As colunas também são chamadas de atributos, o que significa que elas representam certas propriedades para as quais os dados são armazenados. É importante observar que as colunas são únicas, ou seja, não são permitidas colunas com o mesmo nome em uma tabela.

Cada linha é uma ocorrência única dos atributos. As linhas também são chamadas de registros.

Os valores são encontrados nas interseções das colunas e linhas.

Modelo de rede

Outro modelo comum é o modelo de rede. Ele foi inventado por Charles Bachman em 1969 para melhorar o modelo hierárquico de dados. Um modelo de rede é representado por um gráfico que mostra os tipos de objetos como nós e os tipos de relacionamento como arcos.

Modelo Hierárquico de Dados

Este modelo é semelhante ao modelo de rede, exceto que é representado por uma estrutura em forma de árvore ao invés de um gráfico. Como o modelo de rede, os tipos de objetos são representados por nós, mas os tipos de relacionamento são representados pelo link "proprietários-membros" entre os dados.

Base de dados relacional ao objeto

Este modelo é similar ao modelo de dados relacional, e sua criação foi inspirada em linguagens de programação orientadas a objetos, como Java, C++, Visual Basic, .Net, ou C#. Este modelo vê um banco de dados como uma coleção de objetos armazenados que consiste em tipos de dados personalizados e métodos para lidar com os dados. Cada objeto pertence a uma determinada classe. Entre cada classe, existem relações de herança e agregação estabelecidas.

Existem, é claro, muitos outros modelos de dados como o modelo de documento, esquema estelar, modelo correlacional, banco de dados XML, etc. Mas você não precisa conhecer todos eles. O modelo de dados relacional é o mais comumente usado. E se você se candidatou a um trabalho de desenvolvedor SQL, você provavelmente trabalhará com um banco de dados relacional. Ser capaz de explicar estes quatro modelos de dados deve ser suficiente para uma entrevista com um desenvolvedor SQL.

Pergunta 2: O que é RDBMS?

SGBD significa "Database Management System" (Sistema de Gerenciamento de Banco de Dados). É um software que fica entre o usuário do banco de dados e o próprio banco de dados. O SGBD opera com dados de acordo com as instruções dadas pelo usuário do banco de dados. Ele permite a entrada, o armazenamento e a recuperação dos dados. Seguindo esta lógica, o RDBMS é um Sistema de Gerenciamento de Banco de Dados Relacionais, um SGBD criado especificamente para o manuseio de bancos de dados relacionais. De acordo com a lógica do banco de dados relacional, o RDBMS armazena os dados em tabelas que consistem em colunas e linhas. Os RDBMS mais populares são o Microsoft SQL Server, Oracle Database, MySQL e IBM DB2.

Pergunta 3: O que é o Diagrama ER, e quais são seus componentes?

Como alguém que está aspirando ter um bom desempenho em uma entrevista com um programador SQL, especialmente uma entrevista de nível básico, você deve saber algo sobre o diagrama ER. Um diagrama ER é um diagrama de relacionamento entre entidades, e mostra as relações entre entidades em um banco de dados. É uma das ferramentas importantes utilizadas ao projetar um banco de dados. Há três componentes em cada diagrama ER:

  • Entidade:
  • Relacionamento
  • Atributo

Entidade

A entidade é amplamente definida como qualquer coisa sobre a qual possamos coletar dados. Trata-se de um objeto ou conceito no processo comercial para o qual se deseja armazenar dados. Por exemplo, uma empresa tem funcionários, estes funcionários têm números de identificação pessoal (PINs) únicos, trabalham em determinados departamentos e produzem determinados produtos. Este é um processo empresarial e, neste exemplo, funcionários, departamentos e produtos são entidades. Uma entidade consiste em atributos. Várias entidades podem representar conjuntos de entidades. Um conjunto de entidades é qualquer número de entidades que podem ser vistas como semelhantes de acordo com determinadas propriedades.

Relacionamento

As relações mostram como uma entidade está conectada ou associada a outra entidade ou outras entidades. No exemplo acima, funcionários e PINs são entidades. Um funcionário pode ter apenas um PIN. Além disso, um PIN pode ser atribuído a apenas um funcionário: um PIN é único. Isto é chamado de relação um-para-um. Tais relacionamentos são bastante raros em bancos de dados. Se um PIN pode ser alocado a apenas um funcionário e vice-versa, não há necessidade de ter um PIN como uma entidade separada. Pode ser o atributo da entidade dos funcionários. Outro exemplo são os funcionários e as entidades de departamentos. A relação entre eles é que um funcionário pode trabalhar apenas em um departamento. Entretanto, em um departamento pode haver um ou mais funcionários. Isto é chamado de relação um-para-muitos. A relação entre funcionários e produtos é tal que um funcionário pode produzir mais de um produto. Além disso, um produto pode ser produzido por mais de um funcionário. Este relacionamento é chamado de "muitos para muitos".

Atributo

Um atributo representa a propriedade de uma entidade ou relação que pode ter um certo valor atribuído a ela. Um conjunto de atributos descreve uma entidade ou relação. Por exemplo, se os funcionários são uma entidade, então os atributos podem ser nome, sobrenome, data de nascimento, etc. Os atributos para departamentos como entidade podem ser nome do departamento, chefe de departamento, número de funcionários, etc. Os produtos como uma entidade podem ser descritos com os seguintes atributos: ID, nome do produto, cor do produto, preço do produto, etc.

Pergunta 4: O que é normalização de banco de dados? Explicar os formulários normais

A normalização é o processo de organização de dados em um banco de dados relacional usado para reduzir a redundância de dados e aumentar a integridade dos dados. O objetivo é criar um banco de dados eficiente, confiável e flexível. A normalização é implementada seguindo as regras chamadas formulários normais. Um banco de dados é normalmente considerado normalizado quando atende aos requisitos da 3NF:

  • Primeiro formulário normal (1NF)
  • Segunda forma normal (2NF)
  • Terceira forma normal (3NF)

Primeiro Formulário Normal (1NF)

Ela requer atributos (colunas de tabela) para conter apenas valores atômicos e únicos. Dito isto, a finalidade da 1NF é garantir que não haja um conjunto de dados mostrado como um único valor.

Segundo Formulário Normal (2NF)

Para que um banco de dados esteja em 2NF, ele tem que estar em 1NF. Ele também precisa garantir que todos os atributos dependam apenas da chave primária de uma tabela. A chave primária é um atributo ou um conjunto de atributos que define de forma única cada linha em uma tabela. Ou seja, uma chave primária só pode ser atribuída a uma linha em uma tabela.

Terceira forma normal (3NF)

A 3NF requer um banco de dados em 1NF e 2NF, é claro. Além disso, não são permitidas dependências transitivas, o que significa que todos os atributos que não são uma chave primária têm que ser mutuamente independentes. Não é permitido que um atributo dependa de outro atributo, que depende de uma chave primária.

Embora também haja a forma normal do Boyce-Codd, quarta forma normal, quinta forma normal e algumas outras formas adicionais, conhecer as três primeiras formas normais deve ser suficiente para uma entrevista SQL de nível básico.

Pergunta 5: Quais são as Restrições de Atributos?

Uma restrição de atributo é uma regra que limita o tipo de dados que podem ser inseridos como um atributo específico. Ela é utilizada para garantir a integridade do banco de dados. As cinco restrições de atributo mais comuns são:

  • NOT NULL - utilizadas para garantir que o atributo não possa ter um valor NULL
  • CHECK - usado quando o valor do atributo tem que satisfazer uma determinada condição
  • UNIQUE - usado quando um determinado valor de atributo pode ser inserido apenas uma vez
  • PRIMARY KEY - utilizado para designar um atributo como chave primária, que tem de ser ÚNICO e NOT NULL
  • FOREIGN KEY - usado para mostrar a relação entre as tabelas, ou seja, o valor do atributo em uma tabela é recuperado do atributo de outra tabela

Pergunta 6: Quais são as sub-línguas e as palavras-chave principais do SQL?

SQL pode ser dividida em três grupos ou sub-línguas:

  • Linguagem de Definição de Dados (DDL)
  • Linguagem de Controle de Dados (DCL)
  • Linguagem de Manipulação de Dados (DML)

Linguagem de Definição de Dados (DDL)

Esta sublinguagem é usada para criar, apagar ou modificar um determinado objeto de banco de dados. As três palavras-chave principais são:

  • CREATE - cria um objeto (por exemplo, uma tabela) em um banco de dados
  • DROP - apaga um objeto em um banco de dados
  • ALTER - muda um objeto já existente em um banco de dados

Linguagem de Controle de Dados (DCL)

O DCL é usado para autorização, criação de funções e controle de acesso a certos dados em um banco de dados. As duas principais palavras-chave são:

  • GRANT - permite que um determinado usuário de banco de dados utilize um banco de dados ou determinados objetos do banco de dados
  • REVOKE - revoga ou diminui a permissão dada a um determinado usuário do banco de dados

Linguagem de Manipulação de Dados (DML)

Esta sub-língua SQL consiste em palavras-chave usadas para manipular dados, ou seja, adicionar, modificar ou remover dados. As principais palavras-chave são:

  • SELECT - usada para recuperar dados, e ocasionalmente usada com outras palavras-chave, como por exemplo:
    • FROM - usadas para escolher de qual tabela os dados são recuperados
    • WHERE - usado para recuperar dados contendo um valor específico
    • GROUP BY - utilizado para agrupar os dados recuperados de acordo com um determinado atributo
    • HAVING - usado com GROUP BY para identificar as linhas a serem recuperadas
    • ORDER BY - usado para classificar os dados recuperados por um determinado atributo
  • INSERT - usado para inserir linhas em uma tabela já existente
  • UPDATE - usado para alterar valores de uma linha já existente
  • MERGE - usado para fundir dados de duas ou mais tabelas
  • DELETE - usado para apagar linhas já existentes de uma tabela
  • TRUNCATE - usado para apagar todos os dados de uma tabela
  • BEGIN WORK - usado para marcar o início de uma transação
  • COMMIT - usado para marcar o fim de uma transação
  • ROLLBACK - usado para descartar todas as mudanças desde o último COMMIT ou ROLLBACK

Observe que, de acordo com alguma documentação, TRUNCATE é uma palavra-chave DDL em vez de uma palavra-chave DML.

Pergunta 7: Explique a diferença entre TRUNCATE, DELETE, e DROP

Agora que você sabe a resposta para a pergunta anterior, esta deve ser fácil. Como você já soube, TRUNCATE apaga todos os dados da tabela. Se usar DELETE, você pode apagar algumas linhas (se usar a cláusula WHERE), ou pode apagar todas as linhas, o mesmo que TRUNCATE. A principal diferença é que DELETE remove os dados linha por linha, com cada linha eliminada sendo registrada por RDBMS. Se você estiver tentando excluir uma grande quantidade de dados, usar DELETE seria muito mais lento que TRUNCATE, já que TRUNCATE registra apenas uma ação. Além disso, é bom saber que TRUNCATE não pode ser usado se houver uma chave estrangeira em uma tabela. O uso do TRUNCATE também bloqueará a tabela, portanto não é aconselhável usá-la em tabelas compartilhadas.

Mas o que o DROP faz? Certamente apaga algo, mas o que? A principal diferença é que TRUNCATE e DELETE são usados para excluir dados de uma tabela, mas não a tabela em si. Ao usar DROP, porém, o que você fará é excluir a tabela inteira. Excluir uma tabela significa que seus dados desaparecerão, é claro. Mas você também apagará os índices, os gatilhos, as restrições e as especificações de permissão.

Pergunta 8: Quais são os tipos de junções em SQL?

Entradas em SQL são usadas se você estiver tentando usar dados de duas ou mais tabelas ao mesmo tempo. Para fazer isso, é preciso conectar de alguma forma as tabelas, o que pode ser feito usando os cinco tipos de junções SQL:

  • Junção cruzada
  • Junção interna
  • Junção externa esquerda
  • União externa direita
  • Junção externa completa

Junção cruzada

Este tipo de união significa que cada linha de uma mesa é unida a cada linha de outra mesa. Ele multiplica as fileiras. Se você estiver trabalhando com uma grande quantidade de dados, isto não é aconselhável. Este tipo de junção também é chamado de produto cartesiano. Você pode encontrar mais detalhes sobre a junção cruzada neste artigo.

Junção Interna

O Inner join recupera dados onde os registros da primeira tabela são iguais aos registros da segunda tabela, com base em uma condição definida. Há também um artigo explicando a união interna com mais detalhes que poderia ajudá-lo a se preparar para sua entrevista.

Junção Externa Esquerda

Ao utilizar este tipo de junção, você recuperará todas as linhas da primeira (ou esquerda) tabela e as linhas correspondentes da segunda (ou direita) tabela. Se não houver linha correspondente na segunda tabela, você obterá um valor NULL.

Junção Direita Externa

O princípio de utilização desta união é o mesmo da união externa esquerda. Ela retornará todas as linhas da segunda (ou direita) tabela e as linhas correspondentes da primeira (ou esquerda) tabela. Nenhuma linha correspondente na primeira tabela resultará em um valor NULL.

Junção Externa Completa

A utilização desta união resultará na recuperação de todas as linhas da primeira tabela e de todas as linhas da segunda tabela. Se houver linhas não correspondentes, tanto da primeira como da segunda tabela, elas serão mostradas como um valor NULL. Há um grande artigo que explica tudo o que você precisa saber sobre as uniões externas, juntamente com os exemplos.

Você se sente pronto para perguntas sobre a entrevista com o SQL Developer?

Neste artigo, eu cobri algumas perguntas e respostas básicas que poderiam surgir em uma entrevista SQL de nível básico. Considero estas perguntas essenciais para todos que aspiram a um emprego como desenvolvedor SQL. Claro, isso não significa que você não precisa saber nada além dessas oito perguntas e respostas. Isto deve servir apenas como uma diretriz, portanto, sinta-se à vontade para mergulhar mais profundamente nestes tópicos. Há também muitas outras perguntas que poderiam surgir, mas estas oito devem lhe dar uma sensação do que você pode esperar. Se você não tem certeza se entende os conceitos acima, pratique um pouco fazendo alguns cursos. A plataforma LearnSQL.com.br oferece cursos práticos nos conceitos básicos de SQL (em geral) e de junção de tabelas.

Você achou este artigo útil? Incentivou você a ir para o trabalho que você viu anunciado há alguns dias? Informe-me como foi e se lhe fizeram algumas destas perguntas. Ou talvez você já tenha ido a várias entrevistas de emprego? O que foi perguntado a você? Você achou algumas das respostas acima insuficientes ou muito detalhadas? Informe-me na seção de comentários! Eu ficaria feliz em saber sobre sua experiência.