Escolar Documentos
Profissional Documentos
Cultura Documentos
ÍNDICE
1. INTRODUÇÃO...................................................................................................................................4
4. CRIAÇÃO DE UM DATABASE.....................................................................................................13
9. SELECT (CONSULTA).......................................................................................................................26
9.1 ORDER BY (ORDEM DE RETORNO) ..................................................................................................27
9.2 ALIAS (APELIDO) .............................................................................................................................28
9.3 WHERE (RESTRIÇÕES) .....................................................................................................................29
9.4 BETWEEN (CONDIÇÃO COM UMA FAIXA DE VALORES)....................................................................30
9.5 LIKE (COMPARAÇÃO COM UMA PARTE DE UMA LITERAL).................................................................31
9.6 DISTINCT (VALORES ÚNICOS)....................................................................................................32
1. INTRODUÇÃO
ENTERPRISE MANAGER
QUERY ANALYZER
SERVICE MANAGER
PROFILER
3. OS DATABASES DO SQL-SERVER
Bancos de
dados do
master sistema
System
tables
System System System
tables tables tables
SAU02 SAU05
MASTER
Controla os bancos de dados de usuários e a operação do SQL Server,
por isso os dados armazenados em suas tabelas são críticos e deve-se sempre
manter backup atualizado. Ocupa inicialmente cerca de 17 Mbytes, mantendo:
a) contas de login;
b) processos em andamento;
c) mensagens de erro do sistema;
d) databases armazenados no servidor;
e) espaço alocado a cada database;
f) locks ativos;
g) databases disponíveis e dispositivos de dump;
h) procedimentos de sistema, que são primariamente utilizados para
administração.
MODEL
Fornece um protótipo (template) para um novo banco de dados.
Contém as tabelas de sistema que serão inseridas em cada banco de dados de
usuário. As seguintes implementações podem ser realizadas neste database:
a) tipos definidos pelo usuário (user datatypes), regras (rules),
padrões (defaults), stored procedures;
b) usuários que terão acesso a todos os bancos adicionados ao
sistema (administradores);
c) privilégios padrão, notadamente aos usuários guest (guest
accounts);
TEMPDB
Providencia um espaço de armazenamento para tabelas e outras
ações temporárias ou intermediárias, tais como resultados que envolvam a
cláusula GROUP BY, ORDER BY, DISTINCT e cursores (CURSORS). Possui
as seguintes características:
a) criado automaticamente no DEVICE MASTER (atenção, DEVICE
e DATABASE são coisas diferentes);
b) seu conteúdo é apagado quando o usuário fecha a conexão,
exceto para tabelas temporárias globais;
c) quando o banco é parado (stoped) seu conteúdo é apagado
completamente;
d) seu tamanho padrão é de 2 Mbytes.
e) pode ser colocado em memória RAM.
MSDB
Providencia suporte ao serviço SQL Executive Service (o qual fornece
serviços de schedulle de tarefas, replicação, gerenciamento de alertas). Possui
as seguintes tabelas de sistema:
a) sysalerts - armazena informações sobre todos os alertas definidos
por usuários;
b) sysoperators - informações sobre os operadores;
c) sysnotifications - relaciona quais operadores devem receber quais
alertas;
d) systasks - mantém informações sobre todas as tarefas definidas
por usuários;
e) syshistory - informações a respeito de quando um alerta e uma
tarefa foram executados, se com sucesso ou falha, identificação
do operador, data e hora da execução;
f) sysservermessages - mensagens sobre as operações
relacionadas ao servidor.
4. CRIAÇÃO DE UM DATABASE
Um database é uma estrutura lógica dentro da qual são criados os
sistemas de banco de dados.
Os arquivos de dados ficam organizados em grupos de arquivos e o
primeiro grupo criado automaticamente no momento da criação do database
chama-se PRIMARY.
Exemplo:
Criação de um Banco de Dados Chamado Bookselva
CARACTERÍSTICA DE UM DATABASE
Nulabilidade
Nulabilidade: Significa se o campo declarado pode ser ou não nulo.
Para fazer tal declaração é necessário definir o campo com a clausula:
o Not null (não permite valor nulo,preenchimento obrigatório do
campo)
o Null (permite valor nulo, preenchimento não obrigatório do
campo)
Constraints: Integridade
Exemplo:
Constraint PK_Cliente Primary Key (Cód_Cli)
Exemplo:
Constraint FK_NotaFiscal Foreign Key(Cód_Cli)
References Cliente(Cod_Cli)
Use bookselva
Create table Cliente
(
Cod_Cli int not null,
Nome_Cli varchar(40) not null,
End_Cli varchar(30) not null,
Bai_Cli varchar(20) not null,
Cid_Cli varchar(20) not null,
Uf_Cli char(3) not null,
Tel_Cli varchar(15) null,
Constraint PK_Cliente
Primary Key(Cod_Cli)
)
(
Num_Nota int not null,
Cod_Cli int not null,
Serie_Nota varchar(10) not null,
Emissao_Nota smalldatetime null,
Vtot_Nota SmallMoney not null,
Constraint PK_NotaFiscal
Primary Key(Num_Nota),
Constraint FK_Cliente
Foreign Key(Cod_Cli)
References cliente(Cod_Cli)
)
Criando um Diagrama
O Enterprise Manager permite que você crie um diagrama das tabelas para
verificar os relacionamentos das tabelas se houver relacionamento, Mas o
diagrama só poderá ser feito depois de ter criado as tabelas e seus
relacionamentos.
• Para criar um Diagrama com o Enterprise Manager aberto, expanda seu
database no exemplo o BookSelva, clique com o botão direito sobre o
ícone” Diagram “e escolha a opção “New Database Diagram” como
mostra a figura abaixo:
Em seguida aparecerá a primeira tela do Wizard para que você crie seu
diagrama:
Sintaxe:
INSERT INTO <tabela> [<campos>] VALUES <valores>
Exemplos:
Adotando-se que a ordem dos campos da tabela cliente seja
(Cod_Cli, Nome_Cli, End_Cli, Bai_Cli, Cid_Cli, Uf_Cli, Tel_Cli)
temos:
ou
ou
Exercicio
Exemplos:
/* atualiza o campo NOME_CLI para ‘Juliana Costa’ do registro da
tabela CLIENTE para o Cód_Cli igual a 1 */
Operadores de Comparação
Operador Descrição
= Igual a
<> Diferente
> Maior que
>= Maior ou igual a
< Menor que
<= Menor ou igual a
Exercício
1) Atualize o campo Cid_Cli da tabela Cliente para ‘Santo André’ para os registros dos
clientes do campo UF_Cli igual a SP.
2) Atualize o campo Cod_Cli da tabela NotaFiscal para 3 para os registros das Notas
Fiscais com valor total abaixo de 130.00.
3) Atualiza o campo VTot_Nota com um desconto de 23% para o registros das Notas
Fiscais com valor total diferente de 581.20
Exemplo:
Exercícios
1) Excluir todas as NotasFiscais onde a Data de Emissão é superior a 15/08/2004
2) Excluir todas as NotasFiscais onde o valor total seja menor ou igual a 4520.21
Cada produto disponível para venda deve ser classificado por um tipo para
que seja possível realizar totalizações em estoque, produzindo dados
gerenciais. Por exemplo, o sistema deve ser capaz de fornecer informações
como:
Quantidade de cada produto vendida num determinado período.
Quantidade de um determinado tipo de produto vendida em um
determinado período.
Tipo de produto vendido em cada região de cada cidade.
Tipo de produto vendido em cada região de cada estado.
Controle de quantidade em estoque de cada produto.
Controle de quantidade em estoque de cada tipo de produto.
Tipos de produto que são mais vendidos.
Tipos de produto manos vendidos.
9. SELECT (Consulta)
Descrição: Este comando faz a seleção dos dados de uma ou mais
tabelas.
Exemplos:
Exercícios
1)Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
TipoEnd.
3) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
TipoCli.
4) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Estado.
5) Escreva um comando que exiba a Sigla do Estado e o nome das Cidades que
você possui em cada Estado no seu sistema.
6) Escreva um comando que exiba o nome dos clientes do seu cadastro de clientes,
a data de cadastro deste cliente no sistema, e o valor da renda que cada cliente possui.
Sintaxe:
SELECT <campo> FROM <tabela> [WHERE <condição>]
ORDER BY <campo_ordenacao> [ASC/DESC]
Exemplos:
Exercícios
1) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Cliente ordenado pelo nome em ordem decrescente .
2) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Produto ordenado pelo valor unitário em ordem crescente
3) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Funcionário ordenado pelo nome na ordem crescente e a renda em ordem decrescente.
Sintaxe:
Exemplos:
SELECT COD_CLI,NOME_CLI,RENDA_CLI,RENDA_CLI*1.37
FROM CLIENTE
Observe que está mostrando uma coluna com nome (No column name)
para não aparecer está coluna é necessário criar um alias para a coluna
conforme código abaixo.
SELECT COD_CLI,NOME_CLI,RENDA_CLI,RENDA_CLI*1.37
AS "RENDA COM AUMENTO"
FROM CLIENTE
Exercícios
1) Escreva um comando que exiba o nome do cliente, o valor da sua renda e apresente esta
mesma renda com acréscimo de 11%.
Exemplo:
/*serão listados todos os registro da tabela CLIENTES onde o
campo Cod_Cli for igual a 1 */
Exercícios
1) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Cliente onde o código do cliente é igual a 3 .
2) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Produto onde o valor unitário do produto é acima de 1500.00
3) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Pedido que o Funcionário de código 3 vendeu E com valor abaixo de 250.00.
4) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Funcionário do sexo Feminino E que o salário seja superior a 1800.00
5) Escreva um comando que exiba todas as colunas e todas as linhas da tabela Pedido onde
não mostre os pedidos do cliente 2 E valor do pedido superior a 200 E na data inferior a
12/04/2002.
Exemplos:
/* seleciona todos os registros da tabela CLIENTE onde o campo
Cod_Cli estiver entre 1 e 5 */
Exercícios
1) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Cidade com o código entre 3 a 8.
2) Escreva um comando que exiba todas as colunas e todas as linhas dos clientes que possui
renda entre 250 a 1250.
3) Escreva um comando que exiba todas as colunas e todas as linhas dos funcionários que
possui salário entre 520,23 a 2544,45.
4) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Pedido no período entre 09/02/2002 a 02/09/2004.
5) Escreva um comando onde exiba todas as colunas e todas as linhas da tabela Produto com
valores unitários entre 435,9 a 875,23.
Exemplos:
Exercícios
1) Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
Cidade onde nome da cidade começa com a letra A.
2) Escreva um comando que exiba todas as colunas e todas as linhas dos Funcionários
onde possui o sobrenome GARCIA.
3) Escreva um comando onde exiba todas as colunas e todas as linhas da tabela Produto onde
liste os produtos que terminam com a letra O.
Exemplos:
/* seleciona todos os valores do campo Código do Cliente, valor
do pedido da tabela PEDIDO sem repetição dos códigos do cliente
*/
Exemplos:
Exercícios
1) Escreva um comando onde mostra quantas Cidades tem Cadastrado no Infonew.
5) Escreva um comando que exiba a quantidade de dependentes que cada funcionário tem
6) Escreva um comando que mostre quantos pedidos você tem de cada status.
Sintaxe
:
SELECT (<campo_agrupamento> e/ou <funcao_agrupamento>)
FROM <tabela> [WHERE <condição>]
GROUP BY <campo_agrupamento>
Exemplo:
Exemplos:
Exercícios
1) Escreva um comando onde mostre a soma de todos os salários dos funcionários agrupados
por código.
2) Escreva um comando onde mostre a soma de renda de todos os clientes do sexo Feminino.
3) Escreva um comando onde mostre a soma dos valores onde cada cliente gastou em
pedidos. Agrupar por cliente.
4) Escreva um comando onde mostre a soma dos valores em produtos vendidos em cada item.
Agrupar por produto.
5) Escreva um comando onde mostre a soma dos valores recebido de cada pedido de acordo
com a tabela parcela. Agrupar por pedido.
6) Escreva um comando onde mostre a soma dos valores recebido de cada pedido de acordo
com a tabela parcela onde as parcelas pagas e acima de 12/04/2002. Agrupar por pedido
Exemplos:
Exercícios
1) Escreva um comando onde mostre a média de todos os salários dos funcionários agrupados
por código.
2) Escreva um comando onde mostre a média de renda de todos os clientes do sexo Feminino.
3) Escreva um comando onde mostre a média dos valores onde cada cliente gastou em
pedidos. Agrupar por cliente.
4) Escreva um comando onde mostre a média dos valores em produtos vendidos em cada
item. Agrupar por produto.
5) Escreva um comando onde mostre a média dos valores recebido de cada pedido de acordo
com a tabela parcela. Agrupar por pedido.
6) Escreva um comando onde mostre a média dos valores recebido de cada pedido de acordo
com a tabela parcela onde as parcelas pagas e acima de 21/08/2003. Agrupar por pedido
Exemplos:
Exercícios
1) Escreva um comando onde mostre o maior salário de todos os funcionários.
2) Escreva um comando onde mostre a menor de renda dos clientes do sexo Feminino.
3) Escreva um comando onde mostre o maior valor onde cada cliente gastou em pedidos.
4) Escreva um comando onde mostre o menor valor em produtos vendidos em cada item.
5) Escreva um comando onde mostre o menor valor recebido de cada pedido de acordo com a
tabela parcela. Agrupar por pedido
6) Escreva um comando onde mostre o maior valor recebido de cada pedido de acordo com a
tabela parcela onde as parcelas pagas e acima de 21/08/2003. Agrupar por pedido
Sintaxe:
Exemplos:
Não use um valor nulo como uma condição join porque valores nulos não
são avaliados igualmente com um outro.
Você usa um outer join para ver linhas que normalmente não atendem a
uma condição de join.
Operador do Outer join é um sinal de (*) antes ou depois da condição de
igualdade, ou usando a palavra chave LEFT OUTER JOIN, RIGHT
OUTER JOIN.
Left ou Right outer joins, combinam linhas a partir de duas tabelas que
atenda a uma condição de join, mais qualquer das linhas que não atendam ou
da tabela do lado esquerdo ou da tabela do lado direito como especificado na
clausula JOIN. Linhas que não atendem a condição join mostram null no result
set.
Você também pode usar full outer joins para mostrar toas às linhas nas
tabelas join, indiferentemente das tabelas terem atendido quaisquer dos
valores.
Quando utilizar left ou right outer joins, considere os seguintes fatos ou
diretrizes:
• SQL Server retorna somente linhas únicas quando você usa left ou right
outer joins.
• Use um left outer join para mostrar todas as linhas a partir da primeira
tabela nomeada. Se você inverter a ordem no qual as tabelas estão
listadas na clausula FROM, a declaração produz o mesmo resultado
como um right outer join.
• Não use um valor nulo como condição de join porque valores nulos são
avaliados igualmente com um outro.
• Voce pode abreviar o LEFT OUTER JOIN ou RIGHT OUTER JOIN
como LEFT JOIN ou RIGHT JOIN.
• Você pode usar outer joins entre duas tabelas somente.
SELECT CLIENTE.COD_CLI,CLIENTE.NOME_CLI,
EMAIL.EMAIL_CLI
FROM CLIENTE INNER JOIN EMAIL
ON CLIENTE.COD_CLI =EMAIL.COD_CLI
OU
SELECT C.COD_CLI,C.NOME_CLI,
E.EMAIL_CLI
FROM CLIENTE C INNER JOIN EMAIL E
ON C.COD_CLI =E.COD_CLI
(Exemplos com a utilização de alias)
SELECT CLIENTE.COD_CLI,CLIENTE.NOME_CLI,
EMAIL.EMAIL_CLI
FROM CLIENTE LEFT OUTER JOIN EMAIL
ON CLIENTE.COD_CLI = EMAIL.COD_CLI
Curso Microsoft SQL Server 2000
Autor: Nilson A. Borges 40 de 86
SQL Server 2000 .
SELECT CLIENTE.COD_CLI,CLIENTE.NOME_CLI,
EMAIL.EMAIL_CLI
FROM CLIENTE CROSS JOIN EMAIL
SELECT CLIENTE.COD_CLI,CLIENTE.NOME_CLI,
ENDERECO.NOME_RUA,ENDERECO.NOME_BAIRRO,
CIDADE.NOME_CID
FROM CLIENTE INNER JOIN ENDERECO
ON CLIENTE.COD_CLI =ENDERECO.COD_CLI
INNER JOIN CIDADE
ON CIDADE.COD_CID =ENDERECO.COD_CID
OU
SELECT CL.COD_CLI,CL.NOME_CLI,E.NOME_RUA,
E.NOME_BAIRRO,CI.NOME_CID
FROM CLIENTE CL JOIN ENDERECO E
ON CL.COD_CLI =E.COD_CLI
JOIN CIDADE CI
ON CI.COD_CID =E.COD_CID
Exercícios
1) Escreva um comando o exibe o código e nome do cliente da tabela Cliente e número do
telefones dos clientes .
5) Escreva um comando onde mostre o nome do cliente, sexo do cliente da tabela CLIENTE,
número do pedido da tabela PEDIDO e o status do pedido da tabela STATUSPEDIDO
6) Escreva um comando onde mostre o nome do cliente da tabela CLIENTE, número do pedido
da tabela PEDIDO e o nome do funcionário que atendeu este pedido da tabela FUNCIONARIO.
Sintaxe:
Exemplos:
Sintaxe:
Não existe uma sintaxe fixa, mas existem algumas restrições:
- deve estar sempre entre parênteses;
- não pode ser usada na cláusula ORDER BY;
- a subquery não pode conter ORDER BY, COMPUTE ou SELECT
INTO
- a subquery não pode, em hipótese alguma, retornar mais de uma
coluna no caso de comparação por valores ou listas;
- a subquery deve usar a função EXISTS se fizer um SELECT *;
- não pode usar na lista de colunas do SELECT uma coluna do tipo
IMAGE ou TEXT.
Exemplos:
Alguns casos podem ser resolvidos tanto por SUBQUERIES como por
JOINS, outros apenas por SUBQUERIES.
Exercícios
1) Escreva um comando que exiba todos os Funcionários onde o salário seja maior ou igual à
média dos Salários. .
2) Escreva um comando que exiba os pedidos onde o valor_unitário de cada pedido seja
maior do que a média dos valores dos produtos cadastrados.
5) Escreva um comando que apresente os dados de todos os clientes que possuem telefone.
Exemplos:
Exercícios
1) Crie uma view que apresenta o nome dos clientes, o salário de cada um (totalizando com o
salário dos cônjuges – daqueles que tiverem cônjuge) e o valor do último crédito concedito a
cada um.
2) Crie uma view apresente o nome de todos os produtos vendidos em cada pedido.
3) Crie uma view que apresente o nome dos funcionários e o total de bônus de cada um.
4) Crie uma view que apresente os dados de todos os clientes que não fizerem nenhum
pedido.
end
Listagem 1. Sintaxe do comando CREATE PROCEDURE.
Executando uma procedure e recuperando seu valor de retorno.
Para invocar a execução de um stored procedure, é usado a mesma sintaxe
simples EXEC NOMEPROCEDURE, porém, a diferença está na necessidade
em declararmos uma variável com o mesmo tipo de dado do parâmetro, e
especificarmos que ela receberá o valor retornado pelo parâmetro de saída
através da função “output”.
/* Manipulação do resultado. */
PRINT 'O valor é: '+@VARIAVEL
Nota 01
go
go
go
go
go
/*execução*/
exec sp_BuscaSalario @SALARIO_TOTAL output
/* Manipulação do resultado*/
PRINT 'Salário total R$'+(CAST(@SALARIO_TOTAL AS
varchar(20)))
/*Execução do procedure */
declare @SALARIO_TOTAL money
exec sp_BuscaSalario2 @SALARIO_TOTAL output
/*Execução do procedure */
/*Variável de saída */
declare @SALARIO_TOTAL money
/*execução*/
exec sp_BuscaSalario_porDepto @DEPARTAMENTO, @SALARIO_TOTAL
output
PRINT 'Salário total do departamento '+ cast(@DEPARTAMENTO
as varchar)+ ' é R$'+(CAST(@SALARIO_TOTAL AS varchar(20)))
Nota 02
Select dbo.Volume(12.2,10.6,10.0)
SELECT *
FROM LargeOrderShippers ($500)
UPDATE Produto
SET Qtd_EstqProd = Qtd_EstqProd -
Inserted.Qtd_Vend
FROM Produto INNER JOIN inserted
ON Produto.Cod_Prod = Inserted.Cod_Prod
ELSE
BEGIN
RAISERROR('Este pedido não está aberto -
Operação não Executada',16,1)
ROLLBACK TRANSACTION
RETURN
END
UPDATE Produto
SET Qtd_EstqProd = Qtd_EstqProd -
Inserted.Qtd_Vend
FROM Produto INNER JOIN inserted
ON Produto.Cod_Prod = Inserted.Cod_Prod
ELSE
BEGIN
RAISERROR('Este pedido não está aberto -
Operação não Executada',16,1)
ROLLBACK TRANSACTION
RETURN
END
Exemplo:
/* Escreva um trigger que não permita a alteração e a exclusão de dados na
tabela Estado * /.
• INSERT
• UPDATE
• DELETE
Quando o evento for um UPDATE podemos informar quais colunas
que, ao serem alteradas, irão disparar a trigger. O mesmo NÃO ocorre com
INSERT e DELETE porque essas instruções sempre afetam a linha por inteiro.
Exemplo:
CREATE OR REPLACE TRIGGER novo_func
AFTER INSERT ON emp
.
.
.
END
O tipo define quantas vezes uma trigger será executa. A trigger pode
ser executada uma vez para a instrução que a disparou ou ser disparada para
cada linha afetada pela instrução que disparou a trigger. Pode ser:
- Instrução (STATEMENT)
- Linha (ROW)
Quando a trigger for do tipo instrução ela será disparada uma vez
para cada evento de trigger, mesmo que nenhuma linha tenha sido afetada.
São úteis para aquelas trigger que eventualmente não alteram dados ou para
situações onde o que queremos é uma resposta da trigger, por exemplo, em
uma restrição complexa de negócio. Por DEFAULT toda trigger é deste tipo.
Exemplo:
CREATE OR REPLACE TRIGGER novo_func
BEFORE INSERT OR UPDATE OR DELETE ON emp
FOR EACH STATEMENT
.
.
.
END
Quando a trigger for do tipo linha, a trigger será executada toda vez
que a tabela for afetada pelo evento da trigger. Se nenhuma linha for afetada a
trigger não será executada. São muito úteis quando a ação da trigger depende
dos dados afetados pelo evento da trigger.
Exemplo:
CREATE OR REPLACE TRIGGER novo_func
BEFORE INSERT OR UPDATE OR DELETE ON emp
FOR EACH ROW
.
.
.
END
• AFTER SERVERERROR
• AFTER LOGON
• BEFORE LOGOFF
• AFTER STARTUP
• BEFORE SHUTDOWN
Você pode criar triggers usando os eventos acima para DATABASE
e SCHEMA. As duas exceções são SHUTDOWN e STARTUP que só se
aplicam a DATABASE.
Exemplo:
CREATE OR REPLACE TRIGGER marca_logoff
BEFORE LOGOFF ON SCHEMA
BEGIN
INSERT INTO sys.vigia
VALUES (USER || ' saiu do sistema em ' ||
TO_CHAR(sysdate, 'DD-MM-YYYY
HH24:MI:SS'));
COMMIT;
END;
19. EXERCICIOS
Neste exercício, você vai pôr em prática os conceitos básicos da linguagem Transact-SQL,
utilizando comandos que executam as quatro operações com dados:
SELECT
INSERT
UPDATE
DELETE
Neste exercício você vai trabalhar com leitura dos dados.
1. Escreva um comando que exiba todas as colunas e todas as linhas de dados da tabela
TipoEnd, ordenando os dados de forma crescente pela coluna Nome_Tipo.
3. Escreva um comando que apresente quantos clientes são casados e quantos clientes
são solteiros.
5. Escreva um comando que exiba quantos clientes você tem de cada tipo.
8. Escreva um comando que mostre quantos produtos você tem de cada tipo.
10. Escreva um comando que mostre quantos clientes você tem em cada cidade.
11. Escreva um comando que mostre quantas cidades você tem em cada estado.
12. Escreva um comando que exiba o total de bônus que cada funcionário recebeu.
13. Escreva um comando que mostre o total de salários pagos para os funcionários do
sexo masculino e para os do sexo feminino.
14. Escreva um comando que mostre quantos pedidos você tem de cada status.
15. Escreva um comando que exiba a quantidade de endereços que cada cliente tem.
16. Escreva um comando que exiba o total de pontos que cada funcionário fez por mês.
17. Escreva um comando que mostre quantos pedidos cada funcionário atendeu.
18. Escreva um comando que mostre quantos pedidos de cada cliente cada funcionário
atendeu.
19. Escreva um comando que mostre o total de salários pagos aos funcionários.
2. Escreva um comando que apresente os dados do cliente que tem o salário mais alto.
3. Escreva um comando que apresente os dados dos clientes que não têm telefone.
4. Escreva um comando que apresente os dados dos clientes que não têm telefone nem
e-mails.
5. Escreva um comando que apresente os dados de todos os clientes que não fizeram
nenhum pedido.
6. Escreva um comando que apresente os dados dos clientes que fizeram pelo menos um
pedido.
7. Escreva um comando que apresente os dados dos clientes que fizeram pedidos que
foram atendidos pelo funcionário de código 1.
8. Escreva um comando que apresente todos os pedidos que foram pagos à vista.
9. Escreva um comando que apresente os dados dos clientes que fizeram pedidos
atendidos pelos funcionários que não têm dependentes.
10. Escreva um comando que mostre os dados dos clientes que têm o maior crédito.
2. Escreva um comando que exiba os clientes você tem de cada tipo, apresentando o
nome de cada tipo.
3. Escreva um comando que mostre o número, a data e o valor total de cada pedido,
mostrando também o nome de cada cliente que fez o pedido e o nome de cada funcionário
que atendeu cada pedido.
6. Escreva um comando que mostre os nomes dos clientes, os endereços com o nome de
cada cidade e o nome de cada estado de cada endereço que cada cliente tem.
8. Escreva um comando que apresente o nome dos funcionários e o histórico de cada um.
9. Escreva um comando que mostre o nome de cada cliente, o número, data e valor total de
cada pedido que cada cliente fez e o valor de cada parcela de cada pedido.
1. Escreva um comando que exiba a quantidade de parcelas que compõem cada pedido,
exibindo todos os dados dos pedidos.
3. Escreva um comando que mostre quantos produtos você tem de cada tipo, mostrando
o nome do tipo.
4. Escreva um comando que mostre o quanto cada cliente gastou em pedidos, mostrando
o nome do cliente.
5. Escreva um comando que mostre quantos clientes você tem em cada cidade,
mostrando o nome de cada cidade.
6. Escreva um comando que mostre quantas cidades você tem em cada estado,
mostrando o nome do estado.
7. Escreva um comando que exiba o total de bônus que cada funcionário recebeu,
mostrando o nome de cada funcionário.
8. Escreva um comando que exiba a quantidade de endereços que cada cliente tem,
mostrando o nome de cada cliente.
9. Escreva um comando que exiba o total de pontos que cada funcionário fez por mês,
mostrando o nome do funcionário.
EXERCÍCIO 7– Views
1. Crie uma view que apresente o nome dos clientes, o salário de cada um (totalizado
com o salário dos cônjuges - daqueles que tiverem cônjuge) e o valor do último
crédito concedido a cada um.
2. Crie uma view que apresente o nome de todos os produtos vendidos em cada
pedido.
3. Crie uma view que apresente o nome dos funcionários e o total de bônus de cada
um.
4. Crie uma view que apresente o nome de cada cliente, o número do pedido, data do
pedido, valor do pedido.
5. Crie uma view que apresente o nome de cada funcionário e o nome de cada
dependente de cada funcionário que tem dependentes.
EXERCÍCIO 8 – FUNCTIONS
1. Escreva uma função que receba o código do cliente como parâmetro e retorne a
renda salarial desse cliente, incluindo na sua renda o salário do seu cônjuge se ele
for casado.
2. Escreva uma função que retorne a renda salarial de todos os cliente, incluindo na
renda de cada um o salário do seu cônjuge daqueles que são casados.
3. Escreva uma função que retorne o código do cliente como parâmetro e o valor do
último pedido que esse cliente fez.
4. Escreva uma função que retorne todos os dados do funcionário cujo código deve ser
recebido como parâmetro.
1. Escreva uma procedure que receba o código do cliente e um valor percentual como
parâmetro e aplique este percentual de desconto no último pedido que esse cliente
fez.
2. Escreva uma procedure que receba o código do cliente e um valor percentual como
parâmetro e aplique este percentual de desconto no último pedido que esse cliente
fez se o valor deste pedido representar menos de 10% da renda salarial deste cliente
(considerando o salário do cônjuge na renda).
3. Escreva uma procedure que receba o número de pedido como parâmetro e calcule o
valor total deste pedido, gravando esse total para o referido pedido.
4. Faça uma procedure que aplique um aumento salarial (cujo valor deve ser recebido
como parâmetro) para os funcionários que tiverem menos de dois dependentes.
5. Escreva uma procedure que receba um valor percentual como parâmetro e aplique
um desconto no último pedido ainda não pago de cada cliente do estado de São
Paulo.
6. Escreva uma procedure que receba um valor percentual como parâmetro, e aplique
este valor percentual com relação ao salário de cada funcionário para cada um que
tenha tido uma pontuação acima de 8.0 no mês corrente.
EXERCÍCIO 11 – TRIGGERS
1. Escreva um trigger que realize a baixa em estoque a cada produto vendido em cada
pedido.
2. Escreva um trigger que realize a devolução em estoque de cada produto retirado
(devolvido) de cada pedido.
3. Escreva um trigger que realize a atualização em estoque de cada produto trocado em um
pedido.
4. Escreva um trigger que não permita a alteração de dados na tabela TipoEnd e a sua
exclusão.
5. Escreva um trigger que não permita a alteração de dados na tabela Estado e a sua
exclusão.
6. Escreva um trigger que não permita a alteração de dados na tabela TipoProd e a sua
exclusão.
7. Escreva um trigger que não permita a alteração de dados na tabela TipoCli e a sua
exclusão.
MANUAL TÉCNICO
CONSIDERAÇÕES PRELIMINARES
REQUISITOS
Coloque o CD do SQL 2000 Server no drive. Caso o autorun não seja executado, acesse o
CD pelo Windows Explorer ou pelo botão START, opção RUN... e execute o arquivo
autorun.exe.
Será exibida uma caixa de mensagem, como a demonstrada na figura abaixo, informando
que o SQL Server 2000, quando instalado sem o Service Pack 2, não é suportado pelo
Windows Server 2003. Não se assuste! Para contornar essa situação, a Franqueadora
disponibiliza, junto com o kit do WebGestão, o CD de instalação do Service Pack 3a, que
será tratado mais adiante.
Em seguida, selecione a opção SQL Server 2000 Componentes, clicando sobre ela.
Na janela “Computer Name”, selecione a opção Local Computer e clique sobre o botão
Next >.
Na janela “User Information”, digite o nome do usuário e o nome da empresa nos campos
Name e Company. Em seguida, clique sobre o botão Next >.
Na janela “Software License Agreement”, será é exibido o contrato de licença. Leia-o com
atenção e, em seguida, clique sobre o botão Yes.
Com isso, surgirá a janela “Installation Definition”. Nela, selecione a opção Server and
Client Tools e clique sobre o botão Next >.
Na janela “Instance Name”, selecione a opção Default e clique sobre o botão Next >.
Na janela “Setup Type”, selecione o tipo de instalação Typical. Mude o path de instalação
nas opções “Program Files” e “Data Files” para E:, mantendo as pastas-padrão e clique
sobre o botão Next >.
Na janela “Services Accounts”, selecione a opção Use the same account for each
service. Auto start SQL Server Service. Feito isso, no quadro “Service Settings”,
selecione a opção Use the Local System account e clique sobre o botão Next >.
Na janela “Start Copying Files”, apenas leia o texto e, em seguida, clique sobre o
botão Next >.
Na janela “Choose Licensing Mode”, selecione a opção Per Seat for, digite o número 10 na
caixa “Devices” e clique sobre o botão Continue.
Após ter informado todos os dados necessários para o programa de instalação, a cópia dos
arquivos será iniciada.
CONSIDERAÇÕES FINAIS
Esta apostila foi confeccionada para o treinamento de SQL Server
2000 no Centro Universitário Fundação Santo André.
Em caso de dúvida mandar e-mail para nilson.dba@uol.com.br, não
esqueça de citar as mensagens de erro.
REFERÊNCIAS BIBLIOGRÁFICAS:
Leão, Renata de Oliveira
SQL 2000 SERVER: Estrutura e Implementação de sistemas de Banco de
Dados
São Paulo , Editora Erica, 2002
Gunderloy,Mike e Jorden,Joseph L.
Dominando o SQL SERVER 2000: A Bíblia
São Paulo , Editora Makron Books, 2001