Você está na página 1de 5

LISTA DE EXERCCIOS

Programao para Banco de Dados - SQL


2 LISTA Resolver os exerccios tomando como base a Modelagem da Lista Exercicio 01.a:
depto
cod_depto: int
nome: varchar(50)

EMPREGADO
cod_empregado: int
cod_depto: int
nome: varchar(50)
idade: int
sexo: char(1)
dt_admissao: datetime
est_civil: char(1)
salario: decimal(10,2)

dependente
cod_empregado: int
cod_dependente: int
nome: varchar(50)
idade: int
sexo: char(1)

1) Eliminar a constraint de chave estrangeira existente na tabela Empregado. Verificar se realmente foi
eliminada.
2) Tentar eliminar a tabela Depto. Foi possvel ? Por qu?
3) Habilitar novamente a constraint desabilitada no exerc. 5. Verificar se realmente foi habilitado.
4) Eliminar a coluna sexo da tabela Dependente.
5) Eliminar a constraint de chave estrangeira da tabela Dependente. Note que agora a tabela Dependente est
sem nenhuma tabela Pai. A ligao com a tabela Empregado no existe mais.
6) Adicionar uma nova constraint de chave estrangeira na tabela Dependente para que ela se ligue novamente
a tabela Empregado.
7) Listar todas as linhas e colunas da Tabela Depto.
8) Listar todas as linhas e colunas da Tabela Empregado.
9) Listar todas as linhas e colunas da Tabela Dependente.
10) Listar nome, idade e salario de todos os empregados.
11) Listar cdigo do empregado, data de admisso e sexo.
12) Listar nome e salrio dos empregados do sexo Masculino, modificando os cabealhos das colunas listadas.
13) Listar nome, sexo, salario, e uma outra coluna que ser o novo salrio do Empregado, calculando-se um
percentual de aumento de 25%, para todos os empregados que recebem um salrio inferior a 950,00.
14) Listar o Nome do Empregado, seu salrio e o maior inteiro mais prximo e o menor inteiro mais prximo
resultante da expresso: ( 400 - salrio / 2 ).
15) Acrescente ao exerccio anterior uma nova coluna que mostre o resultado da expresso: ( salario / 3 ), com
arredondamento de 1 casa decimal.
16) Listar o Nome dos Dependentes e a posio nos nomes em que aparece o primeiro caracter "A".
17) Listar o nome dos empregados casados com Letra Maiscula.

LISTA DE EXERCCIOS
Programao para Banco de Dados - SQL
1) ALTER TABLE EMPREGADO
DROP CONSTRAINT FK_EMPREGADO_DEPTO

SP_HELP EMPREGADO

2) DROP TABLE DEPTO . Foi possvel pois no havia nenhuma ligao entre departamento
e empregado.

3) ALTER TABLE EMPREGADO

ADD CONSTRAINT FK_EMPREGADO_DEPTO FOREIGN KEY(COD_DEPTO) REFERENCES


DEPTO(COD_DEPTO)

4) ALTER TABLE DEPENDENTE

DROP CONSTRAINT CK_SEXODEP

5) ALTER TABLE DEPENDENTE


DROP COLUMN SEXO

6) ALTER TABLE DEPENDENTE

DROP CONSTRAINT FK_DEPENDENTE_EMPREGADO

7) ALTER TABLE DEPENDENTE

ADD CONSTRAINT FK_DEPENDENTE_EMPREGADO FOREIGN KEY(COD_EMPREGADO) REFERENCES


EMPREGADO(COD_EMPREGADO)

8) SELECT *
FROM DEPTO

9) SELECT *
FROM EMPREGADO

10)

SELECT *
FROM DEPENDENTE

11) SELECT NOME, IDADE, SALARIO


FROM EMPREGADO

12) SELECT COD_EMPREGADO, DT_ADMISSAO, SEXO


FROM EMPREGADO

13) SELECT NOME 'NOME EMP SEXO M',SALARIO 'SALARIO EMP SEXO M'
FROM EMPREGADO
WHERE SEXO IN('M','m')

14) SELECT NOME,SEXO,SALARIO,SALARIO*0.25+SALARIO 'SALARIO COM ACRESCIMO DE 25%'


FROM EMPREGADO
WHERE SALARIO<950.00

LISTA DE EXERCCIOS
Programao para Banco de Dados - SQL
15) SELECT NOME,SALARIO,
CEILING(400-SALARIO/2)'MAIOR INTEIRO MAIS PRXIMO',
FLOOR(400-SALARIO/2)'MENOR INTEIRO MAIS PROXIMO'
FROM EMPREGADO

16) SELECT NOME,SALARIO,


CEILING(400-SALARIO/2)'MAIOR INTEIRO MAIS PRXIMO',
FLOOR(400-SALARIO/2)'MENOR INTEIRO MAIS PROXIMO',
ROUND(SALARIO/3,1)'ARRENDONDAMENTO DE 1 CASA DECIMAL'
FROM EMPREGADO

17) SELECT NOME,PATINDEX('%A%',NOME)'PRIMEIRO CARACTER A'


FROM DEPENDENTE

18) SELECT UPPER(NOME)'NOME DE EMPREGADO CASADO'


FROM EMPREGADO
WHERE EST_CIVIL IN('C')

LISTA DE EXERCCIOS
Programao para Banco de Dados - SQL

CDIGO COMPLETO:
CREATE DATABASE LISTA2a
USE LISTA2a
CREATE TABLE DEPTO(
COD_DEPTO INT NOT NULL,
NOME VARCHAR(50) NOT NULL,
CONSTRAINT PK_DEPTO PRIMARY KEY(COD_DEPTO)
)
CREATE TABLE EMPREGADO(
COD_EMPREGADO INT NOT NULL,
COD_DEPTO INT NOT NULL,
NOME VARCHAR(50),
IDADE INT NOT NULL,
SEXO CHAR(1) NOT NULL CONSTRAINT CK_SEXO CHECK(SEXO IN ('F','f','M','m')),
DT_ADMISSAO DATETIME NOT NULL,
EST_CIVIL CHAR(1),
SALARIO DECIMAL(10,2),
CONSTRAINT PK_EMPREGADO PRIMARY KEY(COD_EMPREGADO),
CONSTRAINT FK_EMPREGADO_DEPTO FOREIGN KEY(COD_DEPTO) REFERENCES DEPTO(COD_DEPTO)
)
CREATE TABLE DEPENDENTE(
COD_DEPENDENTE INT NOT NULL,
COD_EMPREGADO INT NOT NULL,
NOME VARCHAR(50) NOT NULL,
IDADE INT NOT NULL,
SEXO CHAR(1) NOT NULL CONSTRAINT CK_SEXODEP CHECK(SEXO IN ('F','f','M','m')),
CONSTRAINT FK_DEPENDENTE_EMPREGADO FOREIGN KEY(COD_EMPREGADO) REFERENCES
EMPREGADO(COD_EMPREGADO),
CONSTRAINT PK_DEPENDENTE PRIMARY KEY(COD_DEPENDENTE,COD_EMPREGADO)
)
ALTER TABLE EMPREGADO DROP CONSTRAINT FK_EMPREGADO_DEPTO
DROP TABLE DEPTO
ALTER TABLE EMPREGADO ADD
CONSTRAINT FK_EMPREGADO_DEPTO FOREIGN KEY(COD_DEPTO) REFERENCES DEPTO(COD_DEPTO)

LISTA DE EXERCCIOS
Programao para Banco de Dados - SQL
ALTER TABLE DEPENDENTE DROP CONSTRAINT CK_SEXODEP
ALTER TABLE DEPENDENTE DROP COLUMN SEXO
ALTER TABLE DEPENDENTE DROP CONSTRAINT FK_DEPENDENTE_EMPREGADO
ALTER TABLE DEPENDENTE ADD CONSTRAINT FK_DEPENDENTE_EMPREGADO
FOREIGN KEY(COD_EMPREGADO)REFERENCES EMPREGADO(COD_EMPREGADO)
SELECT COD_EMPREGADO, DT_ADMISSAO, SEXO
FROM EMPREGADO

SELECT NOME 'NOME EMP SEXO M',SALARIO 'SALARIO EMP SEXO M'
FROM EMPREGADO
WHERE SEXO IN('M','m')
SELECT NOME,SEXO,SALARIO,SALARIO*0.25+SALARIO 'SALARIO COM ACRESCIMO DE 25%'
FROM EMPREGADO
WHERE SALARIO<950.00
SELECT NOME,SALARIO,CEILING(400-SALARIO/2)'MAIOR INTEIRO MAIS PRXIMO',
FLOOR(400-SALARIO/2)'MENOR INTEIRO MAIS PROXIMO',
ROUND(SALARIO/3,1)'ARRENDONDAMENTO DE 1 CASA DECIMAL'
FROM EMPREGADO
SELECT NOME,PATINDEX('%A%',NOME)'PRIMEIRO CARACTER A'
FROM DEPENDENTE
SELECT UPPER(NOME)'NOME DE EMPREGADO CASADO'
FROM EMPREGADO
WHERE EST_CIVIL IN('C')
SELECT * FROM EMPREGADO