Você está na página 1de 9

Exerccio 1 tlbd1.sql 1. Mostre a estrutura da tabela Departamentos.

Selecione todos os dados da

SP_HELP Departamento SELECT * FROM Departamento

tabela.

2. Crie uma consulta para exibir os cargos exclusivos a partir da tabela Funcionarios.

SELECT DISTINCT cargo FROM Funcionario

3. Exiba o nome de todos os funcionrios concatenando com o cargo , separado por uma vrgula e
espao, e nomeie a coluna Employee and Title.

SELECT nome_func + , + cargo Employee and Title FROM funcionario

4. Crie uma consulta para exibir nome, sobrenome, cargo, data admisso e salrio de a partir da

tabela Funcionarios. Separe cada coluna por uma vrgula e a ltima com a palavra Salrio ao invs da vrgula. Nomeie a coluna como THE_OUTPUT.

SELECT nome_func + ' ,' + sobrenome_func + ' ,' + convert(char (10),data_inicio ) + ' Salrio' + convert (char(10), salario)"THE_OUTPUT" FROM funcionario
Exerccio 2 tlbd2.sql

1. Crie uma consulta para exibir o nome e o salrio dos funcionrios que recebem mais de
R$2.850.

SELECT nome_func, salario FROM Funcionario WHERE salrio > 2850


2. Crie uma consulta para exibir o nome do funcionrio e o nmero do departamento para o nmero do funcionrio 124.

SELECT nome_func, cod_depto FROM Funcionarios WHERE cod_func = 124


3. Exibir o nome e o salrio de todos os funcionrios cujos salrios no estejam na faixa entre R$1.500 e R$2.850.

SELECT nome_func, salario FROM Funcionario WHERE salario NOT BETWEEN 1500 AND 2850

4. Exiba o nome do funcionrio, o cargo e a data de admisso dos funcionrios admitidos entre
'1981-01-15' e '1982-12-01'. Ordene a consulta de modo crescente pela data inicial.

SELECT nome_func, cargo, data_inicio FROM Funcionario WHERE data_inicio BETWEEN '15-01-1981' AND '12-01-1982' ORDER BY data_inicio;

5. Exiba o nome do funcionrio e o nmero do departamento de todos os funcionrios entre os departamentos 10 e 30 por ordem alfabtica de nome.

SELECT nome_func, cod_depto FROM Funcionarios WHERE cod_depto between 10 AND 30 //ORDER BY nome_func ASC

6. Liste o nome e o salrio dos funcionrios que recebem mais de R$1.500 e que esto nos departamentos 10 ou 30. Nomeie as colunas Employee e Monthly Salary, respectivamente.

SELECT nome_func Employee, salario as "Monthly Salary" FROM Funcionario WHERE salario > 1500 AND cod_depto IN (10,30)
7. Exiba o nome e a data de admisso de cada funcionrio admitido em 1982.

SELECT nome_func, data_inicio FROM Funcionario WHERE data_inicio LIKE '%1982%'


8. Exiba o nome, o salrio e a comisso de todos os funcionrios que recebem comisso. Classifique os dados em ordem decrescente de salrios e comisses.

SELECT nome_func, salario, comissao FROM Funcionario WHERE comissao IS NOT NULL

9. Exiba os nomes de todos os funcionrios que possuem um a na terceira letra de seus nomes.
SELECT nome_func FROM Funcionarios WHERE nome_func LIKE '__a%'

10. Some a comisso e exiba a soma com o salrio, descontando 2 % sobre o salrio

SELECT nome_func, salario, STR(((comissao + salario)-((salario + comissao) * 0.02)),8,2) total FROM Funcionario WHERE comissao is not null

11. Exiba os salrio dos funcionarios que atendam as seguintes exigncias:


salario > 30000 e salario < 20000 ou salario que esteja entre 500 e 1000 ou o salario seja 10000, 15000,18000

SELECT salario FROM funcionario WHERE salario > 30000 AND salario < 20000 OR salario BETWEEN 500 AND 1000 OR salario IN (10000, 15000, 18000)

Exerccio3 tlbd3.sql 1. Crie uma consulta para exibir a data atual. Denomine a coluna como Date.

SELECT GETDATE() AS 'Date'


2. Crie uma consulta que produza o seguinte: Nome funcionrio earns R$ salrio monthly but wants R$ 3 x o valor do salrio Atribua a coluna o label Dream Salaries.

select nome_func + ' earns' + ' R$' + convert(char (10),salario ) + ' monthly but wants ' + 'R$' + str (salario*3) as 'Dreams Salary' from funcionario

3. Crie uma consulta que exiba o sobrenome e o salrio de todos os funcionrios. O salrio para ser exibido com 10 caracteres e apresentar o sinal de $ esquerda. Atribua a coluna o nome de Salary.

SELECT CONVERT (CHAR (15),sObrenome_func) CONVERT(CHAR (10),salario ) from funcionario

replicate('

$',3)

4. Crie uma consulta com que exiba o nome do funcionrio, data de hoje, data de admisso e anos trabalhados na empresa. Formate como mm/dd/yy.

select nome_func, convert (char,getdate(),101) 'Data Atual', convert (char ,data_inicio, 101) 'Data Admisso', datediff (yy, data_inicio, getdate ()) as 'Anos de Trabalho' from funcionario
5. Identifique em qual posio o caractere es aparece no sobrenome do funcionrio. e Incia com A e Finaliza com o.

select sobrenome_func , patindex ('%es%', sobrenome_func) as pat, patindex ('A%', sobrenome_func) as inicioA, patindex ('%o', sobrenome_func) as FinalO from funcionrios
6. Substitua todos as palavras A para o correspondente asc 157 no sobrenome. Execute rollback.

begin transaction go update funcionario set sobrenome_func = replace (sobrenome_func, 'A', char(157)) rollback begin transaction go select * from funcionario
Trabalho, entregar na data de : Crie um relatrio: Cria uma tabela para conter o cabealho do relatrio. -----------------------------------------------------------------------EMPRESA X SALRIO DOS FUNCIONRIOS Nome Sobrenome Salrio

Exerccio 4 tlbd4.sql

1. Exiba o nmero do funcionrio, o nome, o salrio e o aumento salarial de 15% expresso como
nmero inteiro. Coloque um label na coluna New Salary. SELECT cod_func, nome_func, str (salario,10,2) , str (salario * 0.15, 8,2) FROM funcionario

2. Adicionar uma coluna que subtrair o salrio antigo do novo salrio. Coloque um label na coluna
Increase. Execute novamente a consulta.

SELECT cod_func, nome_func, str (salario,10,2) as 'Antigo Salario', salario + (salario*0.15) as 'Novo Salario', salario + (salario*0.15) - salario as 'Increase' FROM funcionario
3. Crie uma consulta que exibir o nome do funcionrio com letra maiscula, bem como o tamanho de seus nomes, para todos os funcionrios cujo nome comea com J, A ou M. Fornea a cada coluna um label apropriado.

SELECT UPPER (nome_func) FROM funcionario WHERE nome_func LIKE 'A%' OR nome_func LIKE 'J%' OR nome_func LIKE'M%'

4. Exiba o nome, a data de admisso e o dia da semana em que o funcionrio comeou a trabalhar e o nmero de anos que j trabalha na empresa. Coloque um label nas colunas.

select nome_func, convert (char ,data_inicio, 101) 'Data Admisso', datename (w, data_inicio) as 'Week', datediff (yy, data_inicio, getdate ()) as 'Anos de Trabalho' from funcionario

5. Crie uma consulta que exibir o nome do funcionrio e o valor da comisso. Se o funcionrio no receber comisso, coloque "No Commission". Coloque um label na coluna COMM.

SELECT nome_func ,ISNULL (convert(CHAR,comissao),'No comission') FROM funcionario

6. Crie uma consulta que exiba o grau para todos os funcionrios com base no valor da coluna
Classe, conforme a tabela mostrada abaixo, mostre tambm a faixa salarial conforme cdigo na tabela categoria_trabalho.

Resultado

--Ex6 select nome_func,cargo, 'categoria' = case when 18000 then '7'

salario between 12000 and

when salario between 8000 and 9999 then '5' end,'classe' = case when cargo = 'presidente' then 'A' when cargo = 'gerente' then 'B' end from funcionarios --continuar

Exerccio 5 tlbd5.sql
1. Exiba o salrio maior, mdio, menor e a soma de todos os salrios para cada tipo de cargo. Exibir apenas com duas casas decimais.

SELECT cargo, str((AVG (salario)),10,2) Mdia, MAX (salario), MIN (salario), SUM (salario) FROM Funcionario GROUP BY cargo COUNT (*) respectivamente. SELECT cargo as JOB, COUNT (*) as 'count (*)' FROM funcionario group by cargo

2. Crie uma consulta para exibir o nmero de pessoas com o mesmo cargo. Nomeie como JOB e

3. Determine o nmero de gerentes sem list-los. Coloque um label na coluna Number of Managers. Execute agora uma consulta com o nome e cargo para confirmar.

SELECT COUNT (cargo)as 'Numbers of Managers' FROM funcionario WHERE cargo = 'gerente' SELECT nome_func, cargo FROM funcionarios WHERE cargo = 'gerente'

4. Crie uma consulta de matriz para exibir o cargo, o salrio relativo a esse cargo com base no
SELECT cargo 'Job', 'Depto 10' = end, 'Depto 20' = case when cod_depto 'Depto 30' = case when cod_depto 'Depto 40' = case when cod_depto 'Depto 50' = case when cod_depto 'Depto 60' = case when cod_depto FROM funcionario GROUP BY cargo, cod_depto; case when cod_depto = '10' then = = = = = '20' '30' '40' '50' '60' then then then then then count count count count count (*) (*) (*) (*) (*) end, end, end, end, end

nmero do departamento e o total dos salrios do cargo em todos os departamentos, fornecendo um cabealho apropriado a cada coluna.

count (*)

5. Exiba o nome e o salrio mensal total somente para os vendedores com uma folha de pagamento total excedendo R$ 2.000. Classifica a lista pelo salrio mensal total.

SELECT nome_func, SUM(salario) PAYROLL FROM funcionario WHERE cargo LIKE '%vendedor%' --somente os vendedores GROUP BY nome_func HAVING SUM(salario)<2000 -- menor que 2000 ORDER BY SUM(salario);

Exerccio 6 tlbd6.sql
/*1.Crie uma consulta para exibir o nome do funcionrio, o nome do departamento e a localizao de todos os funcionrios que recebem uma comisso.*/ SELECT f.nome_func, d.nome_depto, d.local FROM funcionrio f INNER JOIN departamento d ON (f.comissao IS NOT NULL) AND (f.cod_depto = d.cod_depto) --OU SELECT f.nome_func, f.cod_depto, d.nome_depto, d.local FROM funcionario f, departamento d WHERE d.cod_depto = f.cod_depto AND f.comissao IS NOT NULL /*2.Crie uma consulta para exibir o nome, o cargo, o nmero e o nome do departamento e local para todos os funcionrios que trabalham em So Paulo.*/ SELECT f.nome_func, f.cargo, f.cod_depto, d.nome_depto, d.local FROM funcionarios f INNER JOIN departamentos d ON d.local = 'So Paulo' AND f.cod_depto = d.cod_depto /*3.Exiba o nome e o nmero do funcionrio junto com o nome e o nmero do gerente. Coloque um label nas colunas Employee, Emp#, Manager e Mgr#, respectivamente */ SELECT e.nome_func "Employee", e.cod_func "Emp#", m.nome_func "Manager", m.cod_func "Mgr#" FROM funcionarios e, funcionarios m WHERE e.gerente= m.cod_func; --ou SELECT e.nome_func "Employee", e.cod_func "Emp#", m.nome_func "Manager", m.cod_func "Mgr#" FROM funcionarios e JOIN funcionarios m ON e.gerente= m.cod_func; /*4.Exibir todos os funcionrios incluindo Jos (presidente), que no possuem um gerente.*/ SELECT e.nome_func "Employee", e.cod_func "Emp#", m.nome_func "Manager", m.cod_func "Mgr#" FROM funcionarios e LEFT OUTER JOIN funcionarios m ON e.gerente= m.cod_func;

Exerccio 7 tlbd7.sql

1. Crie uma consulta para exibir o nome e a data de admisso de todos os funcionrios no mesmo
departamento que Lucas. Exclua Lucas. SELECT nome_func, data_inicio FROM Funcionarios WHERE cod_depto = (SELECT cod_depto FROM Funcionarios WHERE nome_func = Lucas) AND nome_func <> Lucas

2. Crie uma consulta para exibir o nmero e o nome de todos os funcionrios que recebam mais
que o salrio mdio. Classifique os resultados, por salrio, em ordem decrescente.

SELECT cod_func, nome_func FROM Funcionario WHERE salario> (SELECT AVG (salario) FROM Funcionario) ORDER BY salario DESC

3. Crie uma consulta que exiba o nmero e o nome de todos os funcionrios que trabalhem em um
departamento com qualquer funcionrio cujo nome contenha um a. SELECT cod_func, nome_func FROM Funcionario WHERE cod_depto IN (SELECT cod_depto FROM Funcionario WHERE nome_func LIKE '%a%')

4. Exiba o nome do funcionrio, o nmero do departamento e o cargo de todos os funcionrios


cuja localizao do departamento seja So Paulo

SELECT nome_func, cod_depto, cargo FROM Funcionarios WHERE cod_depto IN ( SELECT cod_depto FROM Departamentos WHERE local = So Paulo)
5. Exiba o nmero do departamento, o nome e o cargo de todos os funcionrios do departamento de Vendas.

SELECT cod_depto, nome_func, cargo FROM Funcionario WHERE cod_depto IN (SELECT cod_depto FROM 'Vendas') Exerccio 8 tlbd8.sql

Departamento

WHERE

nome_depto

create table tbl_usuario ( usuario_cpf decimal (11,0) not null primary key, usuario_nome varchar (128) not null, usuario_email varchar (128) not null, dt_cadastro datetime null DEFAULT GETDATE () ) GO -----------------------------------------------------------------------------------------CREATE PROCEDURE sp_insereUsuario @cpf decimal (11,0), @nome varchar (128), @email varchar (128) AS INSERT INTO tbl_usuario (usuario_cpf, usuario_nome, usuario_email, dt_cadastro) VALUES (@cpf, @nome, @email, GETDATE()) GO -----------------------------------------------------------------------------------------EXEC sp_insereUsuario @cpf = '5558', @nome = ' joao ', @email = 'luciatani' GO -----------------------------------------------------------------------------------------SELECT * FROM tbl_usuario -----------------------------------------------------------------------------------------ALTER PROCEDURE sp_insereUsuario @cpf decimal (11,0), @nome varchar (128),

AS

@email varchar (128) IF @cpf <> 0 AND @nome <> '' AND @email <> '' BEGIN -- demarcamos o incio do procedimento INSERT INTO tbl_usuario (usuario_cpf, usuario_nome, usuario_email, dt_cadastro) VALUES (@cpf, @nome, @email, GETDATE()) PRINT 'Cadastro efetuado com sucesso' END ELSE PRINT ' Favor preecher corretamente'

-----------------------------------------------------------------------------------------create function Initcap (@text varchar(4000))returns varchar(4000)as begin declare @counter int,@length int, @char char(1), @textnew varchar(4000) set @text = rtrim(@text) set @text = lower(@text) set @length = len(@text) set @counter = 1 set @text = upper(left(@text, 1) ) + right(@text, @length - 1) while @counter <> @length begin select @char = substring(@text, @counter, 1) IF @char = space(1) or @char = '_' or @char = ',' or @char = '.' or @char = '\' or @char = '/' or @char = '(' or @char = ')' begin set @textnew = left(@text, @counter) + upper(substring(@text, @counter+1, 1)) + right(@text, (@length @counter) - 1) set @text = @textnew end end end select initcap(nome_func) from Funcionarios -----------------------------------------------------------------------------------------create function alltrim (@str_entrada varchar (200)) returns varchar(200) as begin return rtrim(ltrim (@str_entrada)) end select * from tbl_usuario select dbo.initcap(sobrenome_func) from funcionarios select dbo.alltrim(usuario_nome) from tbl_usuario set @counter = @counter + 1

return @text

-----------------------------------------------------------------------------------------create trigger fullname on funcionarios after insert as CREATE TABLE DBO.TESTE ( COD INT ) CREATE TRIGGER T_INCLUI ON TESTE FOR INSERT AS SELECT 'DADOS A SEREM INSERIDOS:' SELECT * FROM INSERTED GO INSERT INTO TESTE VALUES(3) sp_help funcionarios insert into funcionarios values (126,'Lucia', 'Murotani',getdate(),'dada', 10000, null,60, 100 ) select * from funcionarios CREATE TRIGGER Nome ON funcionarios FOR INSERT AS SELECT 'nome completo' select nome_func + sobrenome_func as FullName from funcionarios ROLLBACK GO