sql

27

Upload: rogerio-silva

Post on 27-Jun-2015

166 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Sql

BIBLIOGRAFIA DE BANCO DE DADOS

Page 2: Sql

Livros-texto (entre muitos outros):

• Banco de Dados, Uma Visão Prática,Felipe Machado e Mauricio Abreu, Ed. Érica, 1999.• Modelagem Conceitual e Projeto de Banco de Dados, Paulo Cougo, Ed. Campus, 1997.

Page 3: Sql

INTRODUÇÃO CONCEITOS BÁSICOS

• Conjunto de dados sobre o qual uma comunidade de usuários realiza operações de recuperação e atualização.

• Um BD representa algum aspecto do mundo real, chamado “mini-mundo” ou “universo de discurso”. As mudanças no mini-mundo são refletidas no banco de dados.

CONCEITOS BÁSICOS

• Um banco de dados computadorizado pode ser criado e mantido por um grupo de programas de aplicação escritos especificamente para aquela tarefa ou por um SISTEMA DE GERÊNCIA DE BANCOS DE DADOS (SGBD).

• Um SGBD é uma coleção de programas de propósito geral que facilita o processo de definir, construir e manipular bancos de dados para várias aplicações.

– Definir um banco de dados significa especificar os tipos de dados a serem armazenados juntamente com uma descrição detalhada de cada tipo.

– Construir o banco de dados é o processo de armazenar os dados em algum meio de armazenamento controlado pelo SGBD.

– Manipular um banco de dados compreende certas funções como consultar o banco de dados para recuperar dados específicos, atualizar o banco de dados para refletir mudanças percebidas no mini-mundo e produzir relatórios a partir dos dados.

• O banco de dados e o SGBD juntos são chamados genericamente de SISTEMA DE BANCOS DE DADOS.

SISTEMA DE BANCO DE DADOSSISTEMA DE BANCO DE DADOS

Mini-mundo Banco de

Dados

Aplicações

Definiçãodo BD

(Meta-dados)

BDarmazenado

Consultas / Programas de Aplicação

Software para processarconsultas / programas

Software para acessardados armazenados

Usuários / Programadores

SGBD

Page 4: Sql

Sistema de BD

Page 5: Sql

EXEMPLO DE BANCO DE DADOS

Aluno Nome Número ÁreaJosé 17 INF

Antônio 8 INF

Disciplina Nome Número Créditos DeptDelphi INF1310 4 INFEstrutura de Dados INF3320 4 INFMatemática Discreta MAT2410 3 MATBanco de Dados INF3380 3 INF

Pré-Requisito Nº Curso Nº Pré-ReqINF3380 INF3320INF3380 MAT2410INF3320 INF1310

Histórico-Escolar Nº Aluno Nº Curso Grau17 MAT2410 B17 INF1310 C8 MAT2410 A8 INF1310 A8 INF3320 B8 INF3380 A

SISTEMA DE INFORMAÇÃOSISTEMA DE INFORMAÇÃO

• Sistema de informação:

– Dados;

– SGBD;

– O hardware e o sistema operacional;

– As pessoas que usam e administram os dados;

– Os programas de aplicação que acessam e atualizam os dados;

– Os programadores que desenvolvem essas aplicações.

LINGUAGEM SQL

Page 6: Sql

O nome "SQL" significa "Structured Query Language" - Linguagem Estruturada de Pesquisa.

Essa linguagem, de grande utilização, teve seus fundamentos no modelo relacional de Codd (l970). Sua primeira versão recebeu o nome de SEQUEL ("Structured English Query Language"), sendo definida por D. D. CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa da IBM (Califórnia).

Em 1975, foi implementado um protótipo de aplicação dessa nova linguagem. Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e teve seu nome alterado para "SQL" por razões jurídicas.

A SQL se tornou um padrão de fato, no mundo dos ambientes de banco de dados relacionais.

Em 1982, o American National Standard Institute (ANSI) tornou a SQL padrão oficial de linguagem em ambiente relacional.

Infelizmente, como todo padrão que se preze, existem hoje vários dialetos SQL, cada um, evidentemente, tentando ser mais padronizado que o outro.

A linguagem SQL foi desenvolvida especialmente para o ambiente relacional, podendo ser adaptada a qualquer ambiente não relacional.

A LINGUAGEM SQL

* Linguagem interativa de consulta (query AdHoc);

* Linguagem de programação para acesso a banco de dados;

* Linguagem de administração de banco de dados;

* Linguagem cliente/servidor;

* Linguagem para banco de dados distribuído;

* Caminho de acesso a outros bancos de dados em diferentes máquinas.

FUNÇÕES DE UM SGBD

Page 7: Sql

* Definição de Dados (DDL)- permite ao usuário a definição da estrutura e organização dos dados armazenados, e as relações que existem entre eles;

* Manipulação de Dados (DML)- permite ao usuário ou a um programa de aplicação, a inclusão, remoção, seleção ou atualização de dados previamente armazenados no banco;

* Controle de Acesso- protege os dados de manipulações não autorizadas;

* Compartilhamento de Dados- coordena o compartilhamento dos dados por usuários concorrentes, sem contudo interferir na ação de cada um deles;

* Integridade dos Dados- auxilia no processo de definição da integridade dos dados, protegendo contra corrupções, inconsistências e falhas do sistema de computação.

VANTAGENS DA LINGUAGEM SQL

* Independência de Fabricante- A SQL é oferecida em praticamente todos os SGBD'S, e os que ainda não têm estão se encaminhando para lá. Com isso posso mudar de SGBD sem me preocupar com o novo que vai chegar;

* Portabilidade Entre Computadores- A SQL pode ser utilizada desde um computador pessoal, passando por uma estação de trabalho, até um computador de grande porte;

* Redução dos Custos com Treinamento- Baseado no item anterior, as aplicações podem se movimentar de um ambiente para o outro sem que seja necessária uma reciclagem da equipe de desenvolvimento;

* Inglês Estruturado de Alto Nível- A SQL é formada por um conjunto bem simples de sentenças em inglês, oferecendo um rápido e fácil entendimento;

* Consulta Interativa- A SQL provê um acesso rápido aos dados, fornecendo respostas ao usuário, a questões complexas, em minutos ou segundos;

* Múltiplas Visões dos Dados- A SQL permite ao criador do banco de dados levar diferentes visões dos dados a diferentes usuários;

* Definição Dinâmica dos Dados- Por meio da SQL, podem-se alterar, expandir ou incluir, dinamicamente, as estruturas dos dados armazenados com a máxima flexibilidade.

Page 8: Sql

O EXEMPLO

Todo o nosso percurso pela linguagem SQL será efetuado com base no exemplo de modelo de dados apresentado na figura abaixo:

TABELA CLIENTECód. do cliente Nome do cliente Endereço Cidade CEP UF CGC IE

720 Ana Rua 17 nº 19 Niterói 24358310 RJ 12113231/0001-34 2134870 Flávio Av. Pres. Vargas 10 São Paulo 22763931 SP 22535126/9387-9 4631110 Jorge Rua Caiapó 123 Curitiba 30078500 PR 14512764/9834-9222 Lúcia Rua Itabira 123 L.9 B.Horizonte 22124391 MG 28315213/9348-8 2985830 Mauricio Av. Paulista 1236 São Paulo 3012683 SP 32816985/7465-6 9343130 Edmar Rua da Praia sn Salvador 30079300 BA 23463284/234-9 7121410 Rodolfo Largo da Lapa 27 s Rio de Janeiro 30078900 RJ 12835128/2346-9 7431

FAZ

PEDIDOPEDIDOPOSS

UI

ITEM DEPEDIDO

ITEM DEPEDIDO

TEM

PRODUTOPRODUTO

TIRA

VENDEDORVENDEDORCLIENTECLIENTE

1:1

0:N

1:1

1:1 1:1

1:N

1:N0:N

Page 9: Sql

20 Beth Av. Climério n.45 São Paulo 25679300 SP 32485126/7326-8 9280157 Paulo Tv. Moraes c/3 Londrina PR 32848223/324-4 1923180 Lívio Av. Beira Mar n.1256 Florianópolis 30077500 SC 12736571/2347-4260 Susana Rua Lopes Mendes 12 Niterói 30046500 RJ 21763571/232-9 2530290 Renato Rua Meireles n.123 São Paulo 30225900 SP 13276571/1231-4 1820390 Sebastião Rua da Igreja n.10 Uberaba 30438700 MG 32176547/213-3 9071234 José Quadra 3bl.3 sl. 1003 Brasília 22841650 DF 21763576/1232-3 2931

TABELA VENDEDOR Código doVendedor

Nome doVendedor

SalárioFixo

Faixa deComissão

209 José 1.800 C111 Carlos 2.490 A11 João 2.780 C240 Antônio 9.500 C720 Felipe 4.600 A213 Jonas 2.300 A101 João 2.650 C310 Josias 870 B250 Maurício 2.930 B

TABELA PEDIDONúmero do

PedidoPrazo deEntrega

Código doCliente

Código doVendedor

121 20 410 20997 20 720 101101 15 720 101137 20 720 720148 20 720 101189 15 870 213104 30 110 101203 30 830 25098 20 410 209143 30 20 111105 15 180 240111 20 260 240103 20 260 1191 20 260 11138 20 260 11108 15 290 310119 30 390 250127 10 410 11

TABELA PRODUTOCódigo doproduto

Unidade doproduto

Descrição doproduto

Valorunitário

25 Kg Queijo 0,97

TABELA ITEM DO PEDIDO

Número doPedido

Código doproduto

Quantidade

121 25 10121 31 3597 77 20101 31 9101 78 18101 13 598 77 5148 45 8148 31 7148 77 3148 25 10148 78 30104 53 32203 31 6189 78 45143 31 20143 78 10105 78 10111 25 10111 78 70103 53 3791 77 40138 22 10138 77 35138 53 18108 13 17119 77 40119 13 6119 22 10119 53 43137 13 8

Page 10: Sql

31 BAR Chocolate 0,8778 L Vinho 2,0022 M Linho 0,1130 SAC Açúcar 0,3053 M Linha 1,8013 G Ouro 6,1845 M Madeira 0,2587 M Cano 1,9777 M Papel 1,05

VISÃO GRÁFICA

: Chave primária

: Chave estrangeira

CRIAÇÃO E DISTRIBUIÇÃO DE TABELAS

O comando CREAT TABLE cria a tabela solicitada e obedece à seguinte forma:

CREAT TABELA <tabela>

(<descrição das colunas>);

CLIENTE

Código do cliente

Nome do cliente

Endereço

Cidade

CEP

UF

CGC

IE

CLIENTE

Código do cliente

Nome do cliente

Endereço

Cidade

CEP

UF

CGC

IE

PEDIDO

Número do pedido

Prazo de entrega

Código do cliente Código do vendedor

PEDIDO

Número do pedido

Prazo de entrega

Código do cliente Código do vendedor

ITEM DO PEDIDO

Número do pedido

Código do produto

QuantidadeValor Unitário

ITEM DO PEDIDO

Número do pedido

Código do produto

QuantidadeValor Unitário

VENDEDOR

Código do Vendedor

Nome do vendedor

Faixa de comissão

Salário fixo

VENDEDOR

Código do Vendedor

Nome do vendedor

Faixa de comissão

Salário fixo

PRODUTO

Código do produto

Descrição

Unidade

Val. Unit.

PRODUTO

Código do produto

Descrição

Unidade

Val. Unit.

Page 11: Sql

(<descrição das chaves>);

PRIMARY KEY (colunas);

FOREIGN KEY (colunas);

REFERENCES <tabela>.

<tabela> - É o nome da nova tabela a ser criada;

<descrição das colunas> - É uma lista de colunas (campos) e seus

respectivos tipos de dados (smallint, char, maney, varchar, integer, decimal,

float, real, date, time, timestamp, logical, number);

<descrição das chaves> - É a lista de colunas que são tratadas como chave estrangeira.

Alguns campos podem receber o valor NULL (nulo) e o campo definido como chave primária, além de não poder receber NULL, deve ser um campo UNIQUE (sem repetições – chave primária).

Create Table Item do Pedido

(Número do pedido Number Not Null Unique;

Cód. do produto Number Not Null Unique;

Quantidade Number Not Null;

Valor unitário Number Not Null;

Primary Key (Número do pedido, Código do produto);

Foreign Key (Número do pedido);

References Pedido;

Foreign Key (Código do produto);

References Produto).

Create Table Cliente

(Cód. do cliente Number Not Null Unique;

Nome do cliente VarChar(20);

Endereço VarChar(50);

Cidade VarChar(20);

CEP VarChar(9);

UF VarChar(2);

CGC VarChar(12);

Page 12: Sql

IE VarChar(20);

Primary Key (Cód. do cliente)).

Create Table Pedido

(Número do pedido Number Not Null Unique;

Prazo de entrega Date Not Null;

Cód. do cliente Number;

Cód. do vendedor Number Not Null;

Primary Key (Número do pedido);

Foreign Key (Cód. do cliente);

References Cliente;

Foreign Key (Cód. do vendedor);

References Vendedor ).

Create Table Vendedor

(Cód. do vendedor Number Not Null Unique;

Nome do vendedor VarChar(20) Not Null;

Faixa de comissão Number Not Null;

Salário Fixo Number Not Null;

Primary Key(Cód. do vendedor)).

Create Table Produto

(Cód. do produto Number Not Null Unique;

Descrição VarChar(50);

Unidade Varchar(3);

Valor Unitário Number Not Null;

Primary Key (Cód. do Produto)).

EXTRAINDO DADOS DE UMA TABELA

COMANDO SELECT:

Page 13: Sql

O comando SELECT tem palavras-chaves em um comando básico:

a) SELECT - Especifica as colunas.

b) FROM - Especifica as tabelas.

c ) WHERE - Especifica as linhas.

SELECIONANDO COLUNAS ESPECÍFICAS DA TABELA:

Forma: Select <nome(s) da(s) coluna(s)>

From <tabela>

Problema: Listar todos os produtos com respectivas descrições, unidades e valores unitários.

Problema: Listar o nome do cliente, com seu endereço e CGC.

Problema: Listar o nome e salário dos vendedores.

Problema: Listar o nome e o percentual de 20% de cada salário (criar uma coluna virtual).

SELECIONANDO TODAS AS COLUNAS DA TABELA

Forma: Select * From<tabela>

Problema: Listar todas as colunas de vendedor.

Problema: Listar todas as colunas de produto.

SELECIONANDO SOMENTE ALGUNS REGISTROS DA TABELA

Forma: Select <nome(s) da(s) coluna(s)> From <tabela> Where <nome da coluna> <operador> <valor>

OPERADORES RELACIONAIS

Page 14: Sql

= Igual <> Diferente < Menor do que > Maior do que >= Maior ou igual do que <= Menor ou igual do que

Observações:

Quando a coluna é do tipo caractere, o <valor> deve estar entre aspas.

Ex.: 'PARAFUSO'.

Na linguagem SQL, existe a diferenciação entre maiúsculas e minúsculas em alguns SGBDs, logo 'PARAFUSO' é diferente de ‘parafuso’.

Problema: Listar o código do produto e a quantidade dos itens do pedido com a quantidade igual a 35.

Problema: Listar os clientes que moram em ‘São Paulo’.

Problema: Listar os vendedores com salário maior ou igual a R$ 2.300,00.

Problema: Listar o nome e a cidade dos clientes não residentes no Rio de Janeiro (RJ).

OPERADOR DE CONCATENAÇÃO

Exemplo: Select (código_do_produto ||’ ‘|| descrição_do_produto) as Cód_Dês From Produto.

OPERADORES LÓGICOS

AND “e” OR “ou” NOT “negação”

Problema: Listar os produtos que tenham unidade igual a ‘M’ e valor unitário maior que R$1,00.

Problema: Listar os empregados com salário no intervalo de R$ 2.300,00 à R$ 2.650,00, inclusive.

Page 15: Sql

Problema: Listar os empregados com salário fora do intervalo de R$ 2.300,00 à R$ 2.650,00, inclusive.

Problema: Liste os clientes e seus respectivos endereços; dos que moram em ‘São Paulo’ ou estejam na faixa de CEP entre ‘30077000’ e ‘30079000’.

Problema: Mostrar todos os pedidos que não tenham prazo de entrega igual a 15 dias.

Operadores Between e NOT Between

Forma: Where <nome da coluna> Between <valor1> AND <valor2> Where <nome da coluna> NOT Between <valor1> AND <valor2>

Problema: Listar o código e a descrição dos produtos que tenham o valor unitário na faixa de R$0.32 até R$2.00.

Problema: Listar os vendedores com salário fixo no intervalo de 1.800,00 à 3.650,00.

Problema: Listar os vendedores com salário fixo fora do intervalo de 1.800,00 à 3.650,00.

OPERADORES LIKE E NOT LIKE

Forma: Where <nome da coluna> Like <valor> Where <nome da coluna> NOT Like <valor>

Os operadores LIKE e NOT LIKE só trabalham sobre colunas que sejam do tipo CHAR.

% - substitui uma palavra

_ - substitui um caractere

Problema: Listar os produtos que tenham a sua unidade começando por K.

Problema: Listar os vendedores que não começam por ‘Jo’

Problema: Listar as cidades cujo o nome inicia com a letra ‘B’.

OPERADORES IN E NOT IN

Forma: Where <nome da coluna> IN <valores> Where <nome da coluna> NOT IN <valores>

Page 16: Sql

Esses operadores pesquisam registros que estão ou não contidos no conjunto de <valores> fornecido.

Problema: Listar os vendedores que são da faixa de comissão A e B.

Problema: Listar os clientes que tem como cidade Niterói ou Curitiba.

Problema: Listar os produtos que não tem sua unidade começando com M.

OPERADORES IS NULL E IS NOT NULL

Forma: Where <nome da coluna> IS NULL <valores>Where <nome da coluna> IS NOT NULL <valores>

Problema: Mostrar os clientes que não tenham inscrição estadual.

Problema: Mostrar todos os vendedores que tenham faixa de comissão.

ORDENANDO OS DADOS SELECIONADOS

Quando se realiza uma seleção, os dados recuperados não estão ordenados. A SQL prevê a cláusula ORDER BY para realizar uma ordenação dos dados selecionados.

Forma: Select <nome da(s) coluna(s)> From <tabela> Where <condição(ões)> Order By <nome da(s) coluna(s)> DESC

ou Order By <número da coluna> ASC

Problema: Mostrar em ordem alfabética a lista de vendedores e seus respectivos salários fixos.

Problema: Listar os nomes, cidades e estados de todos os clientes, ordenados por estado e cidade de forma decrescente.

Problema: Mostrar a descrição e o valor unitário de todos os produtos que tenham a unidade ‘KG’, em ordem de valor unitário ascendente.

REALIZANDO CÁLCULOS COM INFORMAÇÃO SELECIONADA

Page 17: Sql

Com a linguagem SQL pode-se criar uma coluna que não pertença à tabela original, e que seja fruto do cálculo sobre algum campo da tabela.

Problema: Mostrar o novo salário fixo dos vendedores, de faixa de comissão ‘C’, calculado com base no reajuste de 75% acrescido de R$ 120,00 de bonificação. Ordenar pelo nome do empregado.

UTILIZANDO FUNÇÕES SOBRE CONJUNTO

Buscando Máximos e Mínimos (MAX, MIN):

Forma: Select MAX<nome da coluna>, MIN<nome da coluna>

Problema: Mostrar o menor e o maior salário dos vendedores.

TOTALIZANDO COLUNA(SUM)

Forma: Select SUM<nome da coluna>

Problema: Mostrar a quantidade total pedida para o produto ‘VINHO’ de código “78”.

CALCULANDO MÉDIAS(AVG)

Forma: Select AVG<nome da coluna>

Problema: Qual a média dos salários fixos dos vendedores?

CONTANDO OS REGISTROS(COUNT)

Forma: Select COUNT(*)

Problema: Quantos vendedores ganham acima de R$ 2.500,00 de salário fixo?

Problema: Determinar o número de clientes e o número de estados cadastrados.

Page 18: Sql

UTILIZANDO A CLÁUSULA DISTINCT

Normalmente, vários registros dentro de uma tabela podem conter os mesmos valores, com exceção da chave primária. Com isso, muitas consultas podem trazer informações erradas. A cláusula DISTINCT, aplicada em uma consulta, foi criada para não permitir que certas redundâncias, obviamente necessárias, causem problema.

Problema: Quais os produtos, cadastrados na tabela Produto?

Problema: Determine quantas cidades diferentes existem na tabela cliente.

AGRUPANDO INFORMAÇÕES SELECIONADAS (GROUP BY)

Utilizando a cláusula GROUP BY, é possível organizar a seleção de dados em grupos determinados.

Forma: Select <nome da(s) coluna(s)> From <tabela> Where condição(ões) Group By <nome da(s) coluna(s)> Order By <nome da(s) coluna(s)>

Problema: Listar o número de produtos que cada pedido contém.

Problema: Listar os clientes, sendo os mesmos agrupados por UF e ordenados por nome do cliente.

AGRUPANDO DE FORMA CONDICIONAL (HAVING)

A cláusula HAVING realiza as restrições das linhas resultantes da mesma forma que a cláusula WHERE o faz em um SELECT. Podemos igualmente continuar com a cláusula WHERE selecionando as condições da seleção.

Forma: Select <nome da(s) coluna(s)> From <tabela> Group By <nome da(s) coluna(s)> HAVING condição(ões)

Problema: Listar os pedidos que têm mais do que 3 produtos.

Page 19: Sql

Problema: Listar o total do salário fixo a cada vendedor, cujo total é acima de 2.000,00. Agrupados por faixa de comissão.

UTILIZANDO FUNÇÕES NÃO AGREGADAS

Cláusula EXTRACT:

Extrai dia, mês ou ano da data armazenada.

Problema: Listar os clientes que fazem aniversário no ano de 1978 e estado igual RJ.

Cláusula UPPER:

RECUPERANDO DADOS DE VÁRIAS TABELAS (JOINS)

Até agora viemos trabalhando com a recuperação de dados sobre uma única tabela, mas o conceito de banco de dados reúne, evidentemente, várias tabelas diferentes.

Para que possamos recuperar informações de um banco de dados temos, muitas vezes, a necessidade de acessar simultaneamente várias tabelas. Algumas dessas consultas necessitam realizar uma junção (JOIN) entre tabelas, para desta poder extrair as informações necessárias para a consulta formulada.

O CONCEITO DE QUALIFICADORES DE NOME

O qualificador de nome consiste no nome da tabela seguido de um ponto e o nome da coluna na tabela.

Exemplo: O qualificador de nome para a coluna “DESCRIÇÃO” da tabela “PRODUTO” será:

PRODUTO.descrição

Os qualificadores de nome são utilizados em uma consulta para efetivar a junção (JOIN) entre tabelas, uma vez que o relacionamento entre tabelas é realizado por meio de chaves estrangeiras.

Problema: Juntar a tabela cliente com pedido.

Page 20: Sql

Problema: Quais os clientes que fizeram os pedidos? Listar pelo nome de cliente.

Obs.: A equação apresentada na cláusula where é chamada de EQUAÇÃO DE JUNÇÃO.

Podemos utilizar as cláusulas LIKE, NOT LIKE, IN, NOT IN, NUL, NOT NULL e misturá-las com os operadores AND, OR e NOT, dentro de uma cláusula WHERE na junção entre tabelas.

Problema: Quais os clientes que têm prazo de entrega superior a 15 dias e que pertencem aos estados de São Paulo (‘SP’) ou Rio de Janeiro (‘RJ’)?

Problema: Mostrar os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor.

Obs.: Para que não seja necessário escrever todo o nome da tabela nas qualificações de nome, podemos utilizar ALIASES (sinônimos) definidos na própria consulta. A definição dos ALIASES é feita na cláusula FROM e utilizada normalmente nas outras cláusulas (Where, Order By, Group By, Having, Select).

Problema: Apresentar os vendedores (ordenados) que emitiram pedidos com prazos de entrega superiores a 15 dias e tenham salários fixos igual ou superior a R$ 1.000,00.

JUNTANDO MAIS DE DUAS TABELAS

Problema: Mostre os clientes (ordenados) que têm prazo de entrega maior que 15 dias para o produto “QUEIJO” e que sejam do Rio de Janeiro.

Problema: Mostre todos os vendedores que venderam chocolate em quantidade superior a 10 Kg.

Problema: Quantos clientes fizeram pedidos com o vendedor João?

Problema: Quantos clientes da cidade do Rio de Janeiro e Niterói tiveram seus pedidos tirados com o vendedor João?

UTILIZANDO CONSULTAS ENCADEADAS (SUBQUERIES)

Page 21: Sql

O que é uma subquery? Em linhas gerais, é quando o resultado de uma consulta é utilizada por outra consulta, de forma encadeada e contida no mesmo comando SQL.

Problema: Que produtos participam em qualquer pedido cuja quantidade seja 10?

Problema: Quais vendedores ganham um salário fixo abaixo da média?

Problema: Quais os produtos que não estão presentes em nenhum pedido?

INSERINDO, MODIFICANDO E APAGANDO REGISTROS

Adicionando Registro à Tabela:

Forma: Insert Into <nome da tabela> (<nome da(s) coluna(s)>) values (<valores>)

ATUALIZANDO UM REGISTRO

Forma: Update <nome da tabela> Set<nome da(s) coluna(s)> = valor Where <condições>

Problema: Alterar o valor unitário do produto ‘parafuso’de R$ 1.25 para R$ 1.62.

Problema: Atualizar o salário fixo de todos os vendedores em 27%, mais uma bonificação de R$ 100,00.

Problema: Acrescentar 2,5% ao preço unitário dos produtos que estejam abaixo da média dos preços, para aqueles comprados a quilo.

APAGANDO REGISTROS DA TABELA

Forma: Delete From <nome da tabela> Where <condição>

Problema: Apagar todos os vendedores com faixa de comissão nula.

Problema: Apagar todos os registros de pedidos realizados por vendedores fantasmas (operação caça-fantasma).

Page 22: Sql

UTILIZANDO VIEWS

As tabelas criadas em um banco de dados relacional têm existência física dentro do sistema de computação. Muitas vezes é necessário criar tabelas que não ocupem espaço físico, mas que possam ser utilizadas como as tabelas normais. Essas são chamadas de VIEWS (tabelas virtuais).

Como as TABELAS REAIS, as VIEWS devem ser criadas.

Forma: Create View < nome da View> (<nome da(s) coluna(s)>) as Select <nome da(s) coluna(s)> From<nome da tabela> Where <condição>

As VIEWS são utilizadas para se ter uma particular visão de uma tabela, para que não seja necessária a utilização do conjunto como um todo.

Problema: Criar uma VIEW que contenha só os produtos pedidos a metro.

Problema: Cria uma VIEW contendo o código do vendedor, o seu nome e o salário fixo médio no ano.