Como criar vistas para recuperar e manipular dados SQL

Um dos recursos mais poderosos do SQL é a sua capacidade de exibir visualizações de dados que são estruturados de forma diferente de como as tabelas de banco de dados armazenar os dados. A estrutura de um banco de dados que é projetado de acordo com princípios sólidos - incluindo a normalização adequada - maximiza a integridade dos dados.

Essa estrutura, no entanto, muitas vezes não é a melhor maneira de olhar para os dados. Várias aplicações podem usar os mesmos dados, mas cada aplicação pode ter uma ênfase diferente. As tabelas que você usa como fontes de colunas e linhas em uma exibição são o tabelas de base.

UMA SELECIONAR declaração sempre retorna um resultado sob a forma de uma tabela virtual. UMA Visão é um tipo especial de tabela virtual. Você pode distinguir uma vista de outras mesas virtuais porque os metadados do banco de dados contém a definição de um ponto de vista. Esta distinção dá uma visão um grau de persistência que outras mesas virtuais não possuem.

Você pode manipular uma vista apenas como você pode manipular uma tabela real. A diferença é que os dados de um ponto de vista não tem uma existência independente. A visão deriva seus dados a partir da tabela ou tabelas a partir do qual você desenhar colunas da visão. Cada aplicação pode ter suas próprias vistas únicas sobre os mesmos dados.

Suponha que um banco de dados contém cinco tabelas: Cliente, TESTES, empregado, encomendas, e resultados. Suponha que o gerente de marketing nacional quer ver a partir do qual afirma pedidos da empresa estão vindo. Alguma desta informação encontra-se no cliente mesa- algumas mentiras na tabela Pedidos.

Suponha que o oficial de controle de qualidade quer comparar a data do pedido de um teste para a data em que o resultado do teste final veio. Esta comparação requer alguns dados da tabela de pedidos e alguns da tabela de resultados. Para satisfazer as necessidades, tais como estes, você pode criar exibições que dão-lhe exactamente os dados que deseja em cada caso.

a partir de tabelas

Para o gerente de marketing, você pode criar este ponto de vista.

image0.jpg

A declaração a seguir cria a visão do gerente de marketing:

CREATE VIEW ORDERS_BY_STATE (NomeCliente, Estado, OrderNumber) AS SELECT CLIENT.ClientName, Estado, OrderNumberFROM CLIENT, ORDERSWHERE CLIENT.ClientName = ORDERS.ClientName -

A nova visão tem três colunas: Nome do cliente, Estado, e Número do pedido. Nome do cliente aparece tanto o cliente e ordens de mesas e serve como elo de ligação entre as duas tabelas. A nova visão desenha Estado informações da tabela CLIENT e assume a Número do pedido da tabela de pedidos. No exemplo anterior, você declarar os nomes das colunas explicitamente na nova vista.

Note-se que o Nome do cliente é prefixado com a tabela que contém, mas não é feito para Estado e Número do pedido. Isso é porque Estado aparece apenas na tabela de CLIENTE e Número do pedido aparece apenas na tabela Pedidos, então não há nenhuma ambiguidade. Contudo, Nome do cliente aparece em tanto o cliente e as ordens, assim que o identificador adicional é necessária.

Você não precisa desta declaração se os nomes são os mesmos que os nomes das colunas correspondentes nas tabelas de origem. O exemplo mostra uma semelhante CREATE VIEW declaração, exceto que os nomes de vista de coluna são implícita em vez de explicitamente indicado.

Com uma condição de seleção

O oficial de controle de qualidade requer uma visão diferente do que o gerente de marketing usa.

image1.jpg

Aqui está o código que cria o ponto de vista:

CREATE VIEW REPORTING_LAGAS SELECIONAR ORDERS.OrderNumber, ORDENS OrderDate, DateReportedFROM, RESULTSWHERE ORDERS.OrderNumber = RESULTS.OrderNumberAND RESULTS.PreliminaryFinal = 'F' -

Esta visão contém informações fim-data a partir da informação da tabela ORDENS e última-report-data a partir da tabela de resultados. Somente as linhas que têm um 'F' no PreliminaryFinal coluna da tabela de resultados aparecem na RELATÓRIOS LAG Visão. Note também que a lista de colunas na vista ORDERS_BY_STATE é opcional. o REPORTING_LAG Vista funciona bem sem essa lista.

Com um atributo modificado

o SELECIONAR cláusulas conter apenas nomes de coluna. Você pode incluir expressões na SELECIONAR cláusula bem. Suponha que o proprietário do VetLab está tendo um aniversário e quer dar a todos os seus clientes um desconto de 10 por cento para comemorar. Ele pode criar uma visão baseada na tabela Pedidos e tabela de testes. Ele pode construir esta tabela como mostrado no exemplo de código a seguir:

CREATE VIEW ANIVERSÁRIO (NomeCliente, Teste, OrderDate, BirthdayCharge) AS SELECT NomeCliente, TestOrdered, OrderDate, StandardCharge * Pedidos .9FROM, TESTSWHERE TestOrdered = TestName -

Observe que a segunda coluna na ANIVERSÁRIO Visão - Teste - corresponde ao TestOrdered coluna na tabela de pedidos, o que também corresponde à TestName coluna na tabela de testes.

image2.jpg

Você pode construir uma visão baseada em várias tabelas, como mostrado nos exemplos anteriores, ou você pode construir uma visão baseada em uma única tabela. Se você não precisa de algumas das colunas ou linhas, criar uma visão para remover esses elementos e depois lidar com a visão ao invés da tabela original. Esta abordagem assegura que os usuários vêem apenas as partes da tabela que são relevantes.

Outra razão para a criação de um ponto de vista é para fornecer segurança para as suas tabelas subjacentes. Você pode querer fazer algumas colunas nas tabelas disponíveis para consulta ao esconder outros. Você pode criar uma exibição que inclui apenas as colunas que você deseja disponibilizar em seguida, conceder acesso amplo a esse ponto de vista, enquanto restringindo o acesso às tabelas a partir do qual você desenhar a vista.

menu