Novo mês, novos objetivos. Sua ajuda ajuda o projeto a avançar. 🖥️ Apoie o sqltest →
Código SQL copiado para a área de transferência

Banco de dados Employee (Firebird): esquema, tabelas e exercícios de SQL

Employee é o banco de exemplo que acompanha o Firebird: funcionários, departamentos, cargos, projetos, clientes e vendas de uma pequena empresa. No SQLtest.online você consulta o banco direto no navegador: resolve exercícios com correção automática e executa suas próprias consultas no playground, sem instalar nada.

  • 10 tabelas e 1 view
  • 42 funcionários
  • 21 departamentos
  • 33 exercícios de SQL

O que é o Employee

Employee é o banco de exemplo clássico do Firebird, herdado do InterBase. Ele descreve uma pequena empresa internacional: a árvore de departamentos, os funcionários e o histórico de salários, projetos com orçamentos e vendas a clientes.

O banco é pequeno, então os resultados são fáceis de conferir, mas tem relacionamentos interessantes: uma hierarquia de departamentos, uma chave estrangeira composta de funcionários para cargos e ligações de muitos para muitos entre funcionários e projetos. Também é o lugar para praticar o dialeto SQL do Firebird.

Diagrama ER

O diagrama mostra as tabelas do Employee e as chaves estrangeiras entre elas. Clique para abrir em tamanho real.

Diagrama ER do banco de dados Employee

O que há no banco

As tabelas se dividem em três grupos.

Pessoal

EMPLOYEE, DEPARTMENT (cada departamento tem um superior), JOB e SALARY_HISTORY.

Projetos

PROJECT, a tabela de ligação EMPLOYEE_PROJECT e os orçamentos anuais em PROJ_DEPT_BUDGET.

Vendas

CUSTOMER, SALES (pedidos) e COUNTRY com as moedas.

O ponto principal: um cargo é identificado por três colunas ao mesmo tempo (código, nível e país), por isso a junção de EMPLOYEE com JOB precisa das três. A view PHONE_LIST combina os funcionários com os telefones dos departamentos.

Quantos dados há nas tabelas:

TabelaLinhasConteúdo
EMPLOYEE42funcionários
DEPARTMENT21departamentos
JOB31cargos e faixas salariais
SALARY_HISTORY49alterações salariais
PROJECT6projetos
EMPLOYEE_PROJECT28funcionários ↔ projetos
PROJ_DEPT_BUDGET24orçamentos de projetos por departamento e ano
CUSTOMER15clientes
SALES33pedidos
COUNTRY16países e moedas

Estrutura das tabelas

Clique em uma tabela para ver suas colunas, uma linha de exemplo e as chaves.

Lista de tabelas

COUNTRY - tabela de países.
  • COUNTRYNome do país
  • CURRENCYMoeda usada no país
COUNTRY CURRENCY
USA Dollar
JOB - horário de trabalho da empresa.
  • JOB_CODECódigo do trabalho
  • JOB_GRADEGrau do trabalho
  • JOB_COUNTRYPaís associado ao trabalho
  • JOB_TITLETítulo do trabalho
  • MIN_SALARYSalário mínimo para o trabalho
  • MAX_SALARYSalário máximo para o trabalho
  • JOB_REQUIREMENTRequisitos do trabalho
  • LANGUAGE_REQRequisitos de idioma
JOB_CODE JOB_GRADE JOB_COUNTRY JOB_TITLE MIN_SALARY MAX_SALARY JOB_REQUIREMENT LANGUAGE_REQ
CEO 1 USA Chief Executive Officer 130000.00 250000.00 No specific requirements. [null]
  • FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY(COUNTRY)
DEPARTMENT - divisões da empresa.
  • DEPT_NONúmero do departamento
  • DEPARTMENTNome do departamento
  • HEAD_DEPTDepartamento principal (pode ser nulo)
  • MNGR_NONúmero do gerente
  • BUDGETOrçamento do departamento
  • LOCATIONLocalização do departamento
  • PHONE_NONúmero de telefone do departamento
DEPT_NO DEPARTMENT HEAD_DEPT MNGR_NO BUDGET LOCATION PHONE_NO
000 Corporate Office [null] 105 1000000.00 Monterey (408) 555-1234
  • FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT(DEPT_NO)
EMPLOYEE - lista de funcionários.
  • EMP_NONúmero do funcionário
  • FIRST_NAMEPrimeiro nome do funcionário
  • LAST_NAMESobrenome do funcionário
  • PHONE_EXTRamal do telefone do funcionário
  • HIRE_DATEData de contratação do funcionário
  • DEPT_NONúmero do departamento
  • JOB_CODECódigo do trabalho do funcionário
  • JOB_GRADEGrau do trabalho do funcionário
  • JOB_COUNTRYPaís associado ao trabalho do funcionário
  • SALARYSalário do funcionário
  • FULL_NAMENome completo do funcionário
EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_COUNTRY SALARY FULL_NAME
2 Robert Nelson 250 1988-12-28 00:00:00 600 VP 2 USA 105900.00 Nelson, Robert
  • FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT(DEPT_NO)
  • FOREIGN KEY (JOB_CODE) REFERENCES JOB(JOB_CODE)
PROJECT - lista de projetos.
  • PROJ_IDID do projeto
  • PROJ_NAMENome do projeto
  • PROJ_DESCDescrição do projeto
  • TEAM_LEADERLíder da equipe do projeto
  • PRODUCTProduto associado ao projeto
PROJ_ID PROJ_NAME PROJ_DESC TEAM_LEADER PRODUCT
VBASE Video Database Development of a video database management system for managing video distribution on demand. 45 software
  • FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE(EMP_NO)
EMPLOYEE_PROJECT - funcionários em projetos.
  • EMP_NONúmero do funcionário
  • PROJ_IDID do projeto
EMP_NO PROJ_ID
144 DGPII
  • FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE(EMP_NO)
  • FOREIGN KEY (PROJ_ID) REFERENCES PROJECT(PROJ_ID)
PROJ_DEPT_BUDGET - orçamentos de projetos.
  • FISCAL_YEARAno fiscal
  • PROJ_IDID do projeto
  • DEPT_NONúmero do departamento
  • QUART_HEAD_CNTContagem de cabeças do trimestre (pode ser nulo)
  • PROJECTED_BUDGETOrçamento projetado para o ano fiscal
FISCAL_YEAR PROJ_ID DEPT_NO QUART_HEAD_CNT PROJECTED_BUDGET
1994 GUIDE 100 [null] 200000.00
  • FOREIGN KEY (PROJ_ID) REFERENCES PROJECT(PROJ_ID)
  • FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT(DEPT_NO)
SALARY_HISTORY - histórico salarial dos funcionários.
  • EMP_NONúmero do funcionário
  • CHANGE_DATEData da mudança salarial
  • UPDATER_IDID do atualizador
  • OLD_SALARYSalário anterior
  • PERCENT_CHANGEPercentual de mudança no salário
  • NEW_SALARYNovo salário após a mudança
EMP_NO CHANGE_DATE UPDATER_ID OLD_SALARY PERCENT_CHANGE NEW_SALARY
28 1992-12-15 00:00:00 admin2 20000.00 10.000000 22000.000000
  • FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE(EMP_NO)
CUSTOMER - clientes da empresa.
  • CUST_NONúmero do cliente
  • CUSTOMERNome do cliente
  • CONTACT_FIRSTPrimeiro nome da pessoa de contato
  • CONTACT_LASTSobrenome da pessoa de contato
  • PHONE_NONúmero de telefone do cliente
  • ADDRESS_LINE1Linha de endereço 1
  • ADDRESS_LINE2Linha de endereço 2 (pode ser nulo)
  • CITYCidade do cliente
  • STATE_PROVINCEEstado ou província do cliente
  • COUNTRYPaís do cliente
  • POSTAL_CODECódigo postal do cliente
  • ON_HOLDStatus de espera (pode ser nulo)
CUST_NO CUSTOMER CONTACT_FIRST CONTACT_LAST PHONE_NO ADDRESS_LINE1 ADDRESS_LINE2 CITY STATE_PROVINCE COUNTRY POSTAL_CODE ON_HOLD
1001 Signature Design Dale J. Little (619) 530-2710 15500 Pacific Heights Blvd. [null] San Diego CA USA 92121 [null]
  • FOREIGN KEY (COUNTRY) REFERENCES COUNTRY(COUNTRY)
SALES - lista de vendas.
  • PO_NUMBERNúmero do pedido de compra
  • CUST_NONúmero do cliente associado ao pedido
  • SALES_REPNúmero do representante de vendas
  • ORDER_STATUSStatus do pedido
  • ORDER_DATEData do pedido
  • SHIP_DATEData de envio
  • DATE_NEEDEDData necessária (pode ser nulo)
  • PAIDStatus de pagamento
  • QTY_ORDEREDQuantidade pedida
  • TOTAL_VALUEValor total do pedido
  • DISCOUNTDesconto aplicado
  • ITEM_TYPETipo de item no pedido
  • AGEDValor envelhecido
PO_NUMBER CUST_NO SALES_REP ORDER_STATUS ORDER_DATE SHIP_DATE DATE_NEEDED PAID QTY_ORDERED TOTAL_VALUE DISCOUNT ITEM_TYPE AGED
V91E0210 1004 11 shipped 1991-03-04 00:00:00 1991-03-05 00:00:00 [null] y 10 5000.00 0.100000 hardware 1.000000000
  • FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER(CUST_NO)
  • FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE(EMP_NO)

Abaixo está a lista de views deste banco de dados:

PHONE_LIST - view com a lista de telefones dos funcionários.
  • EMP_NONúmero do funcionário
  • FIRST_NAMEPrimeiro nome do funcionário
  • LAST_NAMESobrenome do funcionário
  • PHONE_EXTRamal do telefone do funcionário
  • LOCATIONLocalização do departamento
  • PHONE_NONúmero de telefone do departamento
EMP_NO FIRST_NAME LAST_NAME PHONE_EXT LOCATION PHONE_NO
2 Robert Nelson 250 Monterey (408) 555-1234

Exemplos de consultas

Estas consultas mostram como os dados se relacionam. Copie qualquer uma e execute no playground.

Um funcionário, departamento e cargo: uma junção por chave composta de três colunas.

SELECT FIRST 3 e.FIRST_NAME, e.LAST_NAME, d.DEPARTMENT, j.JOB_TITLE
FROM EMPLOYEE e
JOIN DEPARTMENT d ON d.DEPT_NO = e.DEPT_NO
JOIN JOB j ON j.JOB_CODE = e.JOB_CODE
          AND j.JOB_GRADE = e.JOB_GRADE
          AND j.JOB_COUNTRY = e.JOB_COUNTRY
ORDER BY e.EMP_NO;
FIRST_NAMELAST_NAMEDEPARTMENTJOB_TITLE
RobertNelsonEngineeringVice President
BruceYoungSoftware DevelopmentEngineer
KimLambertField Office: East CoastEngineer

Pedidos e clientes: o Firebird usa FIRST n para limitar as linhas.

SELECT FIRST 3 s.PO_NUMBER, c.CUSTOMER, s.ORDER_DATE, s.TOTAL_VALUE
FROM SALES s
JOIN CUSTOMER c ON c.CUST_NO = s.CUST_NO
ORDER BY s.ORDER_DATE;
PO_NUMBERCUSTOMERORDER_DATETOTAL_VALUE
V91E0210Central Bank1991-03-04 00:00:005000.00
V92J1003MPM Corporation1992-07-26 00:00:002985.00
V92E0340Central Bank1992-10-15 00:00:0070000.00

Exercícios de SQL por tema

Há 33 exercícios no banco Employee, de seleções simples a funções de janela e alteração de dados. As soluções são verificadas automaticamente em um Firebird real. O número à direita é a quantidade de exercícios do tema; os pontos coloridos mostram a faixa de dificuldade.

Por onde começar

Os primeiros exercícios do banco Employee:

  1. Exibir departamentos
  2. Encontre países que não usam Dólar/Euro
  3. Lista de Subdepartamentos (JOIN)
  4. Obter uma lista de subdepartamentos
  5. Encontre funcionários estrangeiros
  6. Encontrar funcionários por departamento
  7. Encontre o salário do funcionário
  8. Encontre funcionários com salários altos
  9. Funcionários com Salário Acima da Média
  10. Encontre o departamento

Todos os exercícios do Employee →

Perguntas frequentes

Preciso instalar o Firebird para usar o Employee?

Não. Os exercícios e o playground do SQLtest.online executam as consultas nos nossos servidores, então basta um navegador. No playground, o Employee está disponível no Firebird 4.0.

De onde vem o banco Employee?

Ele acompanha o Firebird como banco de exemplo (employee.fdb) e vem desde o InterBase, o antecessor do Firebird.

Em que o SQL do Firebird é diferente?

A maior parte do SQL padrão funciona normalmente. As primeiras diferenças que você vai encontrar: FIRST n / SKIP n ou FETCH FIRST n ROWS ONLY para limitar linhas, e nomes de objetos em maiúsculas.