Como criar uma vista de tabela com SQL
Às vezes, você deseja recuperar informações específicas da tabela de clientes no SQL. Você não quer olhar para tudo - apenas colunas e linhas específicas. O que você precisa é de um ponto de vista.
UMA Visão é uma tabela virtual. Na maioria das implementações, uma visão não tem existência física independente. A definição da vista só existe nos metadados do banco de dados, mas os dados vem da tabela ou tabelas a partir do qual derivam a vista. Os dados da visão não é fisicamente duplicado.
vista de tabela única
Se a informação que você quer existe em uma única tabela, você pode criar uma exibição de mesa única dos dados. Por exemplo, suponha que você quer olhar para os nomes e números de telefone de todos os clientes que vivem no estado de New Hampshire. Você pode criar uma exibição da tabela de clientes que contém apenas os dados que deseja. A seguinte instrução SQL cria este ponto de vista:
CREATE VIEW NH_CUST ASSeleccione CUSTOMER.FirstName, CUSTOMER.LastName, CUSTOMER.PhoneFROM CUSTOMERWHERE CUSTOMER.State = 'NH' -
Você pode realizar a mesma tarefa com menos digitação se sua implementação SQL assume que todas as referências da tabela são os mesmos que os do A PARTIR DE cláusula. Se o seu sistema faz essa suposição padrão razoável, você pode reduzir a declaração com as seguintes linhas:
CREATE VIEW NH_CUST ASSeleccione nome, sobrenome, PhoneFROM CUSTOMERWHERE STATE = 'NH'-
Embora a segunda versão é mais fácil de ler e escrever, é mais vulnerável ao rompimento de ALTERAR A TABELA comandos. Essas perturbações não é um problema para este caso simples, que não possui JUNTE-SE, mas pontos de vista com JUNTE-SEs são mais robustos quando eles usam nomes totalmente qualificados.
vista multitable
Mais frequentemente do que não, você precisa puxar dados de duas ou mais tabelas para responder a sua pergunta. Suponha, por exemplo, que você trabalha para uma loja de artigos esportivos, e que pretende enviar um mailing promocional para todos os clientes que compraram o equipamento de esqui desde que a loja abriu no ano passado.
Você precisa de informações da tabela de clientes, a tabela de produtos, tabela de faturas, ea tabela de INVOICE_LINE. Você pode criar uma visão multitable que mostra os dados que você precisa. Cada vez que você usar a visão, que reflete todas as mudanças que ocorreram nas tabelas subjacentes desde a última vez utilizado a vista.
O banco de dados para esta loja de artigos esportivos contém quatro tabelas: clientes, produtos, fatura e INVOICE_LINE.
Mesa | Coluna | Tipo de dados | Limitação |
---|---|---|---|
CLIENTE | Identificação do Cliente | INTEIRO | NÃO NULO |
Primeiro nome | CHAR (15) | ||
Último nome | CHAR (20) | NÃO NULO | |
Rua | CHAR (25) | ||
Cidade | CHAR (20) | ||
Estado | CHAR (2) | ||
CEP | CHAR (10) | ||
Telefone | CHAR (13) | ||
PRODUTO | ID do produto | INTEIRO | NÃO NULO |
Nome | CHAR (25) | ||
Descrição | CHAR (30) | ||
Categoria | CHAR (15) | ||
VendorID | INTEIRO | ||
Nome do vendedor | CHAR (30) | ||
FATURA | InvoiceNumber | INTEIRO | NÃO NULO |
Identificação do Cliente | INTEIRO | ||
Data da fatura | ENCONTRO | ||
TotalSale | NUMERIC (9,2) | ||
TotalRemitted | NUMERIC (9,2) | ||
Forma de pagamento | CHAR (10) | ||
INVOICE_LINE | LineNumber | INTEIRO | NÃO NULO |
InvoiceNumber | INTEIRO | NÃO NULO | |
ID do produto | INTEIRO | NÃO NULO | |
Quantidade | INTEIRO | ||
Preço de venda | NUMERIC (9,2) |
Observe que algumas das colunas contêm a restrição NÃO NULO. Estas colunas são ou as chaves primárias das respectivas tabelas ou colunas que você decidir devo conter um valor. chave primária de uma tabela deve identificar exclusivamente cada linha. Para isso, a chave primária deve conter um valor não nulo em cada linha.
As tabelas referem-se uns aos outros através das colunas que têm em comum. A lista a seguir descreve essas relações:
A tabela CLIENTE tem uma um-para-muitos para a mesa de fatura. Um cliente pode fazer várias compras, gerando várias faturas. Cada factura, no entanto, lida com um, e apenas um, o cliente.
A tabela FACTURA tem uma relação um-para-muitos com a tabela de INVOICE_LINE. Uma factura pode ter várias linhas, mas cada linha aparece em um, e apenas um, factura.
A tabela produto também tem uma relação um-para-muitos com a tabela de INVOICE_LINE. Um produto pode aparecer em mais de uma linha em um ou mais faturas. Cada linha, contudo, trata de um, e apenas um, produto.
Os links da tabela cliente à tabela factura pelo comum Identificação do Cliente coluna. Os links da tabela fatura para a mesa de INVOICE_LINE pelo comum InvoiceNumber coluna. Os links tabela de produtos para a tabela de INVOICE_LINE pelo comum ID do produto coluna. Esses links são o que torna esta base de dados a relacional banco de dados.
Para acessar as informações sobre os clientes que compraram o equipamento de esqui, você precisa Primeiro nome, Último nome, Rua, Cidade, Estado, e CEP da mesa- CLIENTE Categoria do mesa- PRODUTOS InvoiceNumber da mesa- factura e LineNumber da tabela de INVOICE_LINE. Você pode criar o ponto de vista que você quer em etapas usando as seguintes declarações:
CREATE VIEW SKI_CUST1 ASSeleccione nome, sobrenome, rua, cidade, estado, CEP, InvoiceNumberFROM cliente Junte-se INVOICEUSING (Cliente) -Criar VISTA SKI_CUST2 ASSeleccione nome, sobrenome, rua, cidade, estado, CEP, ProductIDFROM SKI_CUST1 Cadastre INVOICE_LINEUSING (InvoiceNumber) VISTA -Criar SKI_CUST3 ASSeleccione nome, sobrenome, rua, cidade, estado, CEP, CategoryFROM SKI_CUST2 Cadastre PRODUCTUSING (ProductID) -Criar VISTA SKI_CUST ASSeleccione FirstName DISTINCT, sobrenome, Rua, Cidade, Estado, ZipcodeFROM SKI_CUST3WHERE CATEGORIA = 'Ski' -
Estes CREATE VIEW declarações combinar dados de várias tabelas usando a JUNTE-SE operador.
Aqui está um resumo dos quatro CREATE VIEW declarações:
A primeira declaração combina colunas da tabela de clientes com uma coluna da tabela de fatura para criar o SKI_CUST1 Visão.
O segundo combina instrução SKI_CUST1 com uma coluna da tabela de INVOICE_LINE para criar o SKI_CUST2 Visão.
Os terceiros combina instrução SKI_CUST2 com uma coluna da tabela de produtos para criar o SKI_CUST3 Visão.
A quarta declaração filtra todas as linhas que não têm uma categoria de Esqui. O resultado é uma visão (SKI_CUST) Que contém os nomes e endereços de todos os clientes que compraram pelo menos um produto na Esqui categoria.
o DISTINCT palavra-chave no quarto CREATE VIEW's SELECIONAR cláusula garante que você tem apenas uma entrada para cada cliente, mesmo que alguns clientes fizeram várias compras de itens de esqui.