Comment faire pour créer une vue de tableau avec SQL
À certains moments, vous souhaitez récupérer des informations spécifiques de la table du client dans SQL. Vous ne voulez pas regarder tout - seulement des colonnes et des lignes spécifiques. Qu'est-ce que vous avez besoin est une vue.
Sommaire
UN vue est une table virtuelle. Dans la plupart des implémentations, une vue n'a pas d'existence physique indépendante. La définition de la vue existe seulement dans les métadonnées de la base de données, mais les données proviennent de la table ou des tables à partir de laquelle vous dérivez la vue. Les données de la vue est pas physiquement dupliqué.
Vue unique table
Si les informations que vous souhaitez existe dans un seul tableau, vous pouvez créer une vue unique tableau des données. Par exemple, supposons que vous voulez regarder les noms et numéros de téléphone de tous les clients qui vivent dans l'état du New Hampshire. Vous pouvez créer une vue de la table de client qui ne contient que les données que vous souhaitez. L'instruction SQL suivante crée ce point de vue:
CREATE VIEW NH_CUST ASSELECT Client.Prénom, Client.Nom, CUSTOMER.PhoneFROM CUSTOMERWHERE CUSTOMER.State = 'NH' -
Vous pouvez accomplir la même tâche avec moins de frappe si votre implémentation SQL suppose que toutes les références de table sont les mêmes que ceux de la DE clause. Si votre système rend cette hypothèse raisonnable par défaut, vous pouvez réduire la déclaration sur les lignes suivantes:
CREATE VIEW NH_CUST ASSELECT Prénom, Nom, PhoneFROM CUSTOMERWHERE ÉTAT = 'NH'-
Bien que la deuxième version est plus facile à écrire et à lire, il est plus vulnérable aux perturbations de ALTER TABLE commandes. Cette perturbation est pas un problème pour ce cas simple, qui n'a pas INSCRIPTION, mais vues avec INSCRIPTIONs sont plus robustes quand ils utilisent des noms pleinement qualifiés.
Vue multitable
Plus souvent qu'autrement, vous avez besoin d'extraire des données à partir de deux ou plusieurs tables de répondre à votre question. Supposons, par exemple, que vous travaillez pour un magasin d'articles de sport, et que vous voulez envoyer un mailing promotionnel à tous les clients qui ont acheté du matériel de ski depuis l'ouverture du magasin l'année dernière.
Vous avez besoin d'informations de la table CLIENT, le tableau des produits, la table de la facture, et la table de INVOICE_LINE. Vous pouvez créer une vue multitable qui montre les données dont vous avez besoin. Chaque fois que vous utilisez la vue, elle reflète des changements survenus dans les tables sous-jacentes depuis la dernière utilisation de la vue.
La base de données pour ce magasin d'articles de sport contient quatre tables: client, produit, facture, et INVOICE_LINE.
Table | Colonne | Type de données | Contrainte |
---|---|---|---|
CLIENT | N ° de client | ENTIER | NOT NULL |
Prénom | CHAR (15) | ||
Nom de famille | CHAR (20) | NOT NULL | |
De rue | CHAR (25) | ||
Ville | CHAR (20) | ||
État | CHAR (2) | ||
Code postal | CHAR (10) | ||
Phone | CHAR (13) | ||
PRODUIT | ID de produit | ENTIER | NOT NULL |
Nom | CHAR (25) | ||
Description | CHAR (30) | ||
Catégorie | CHAR (15) | ||
VendorID | ENTIER | ||
Nom du vendeur | CHAR (30) | ||
FACTURE | Numéro de facture | ENTIER | NOT NULL |
N ° de client | ENTIER | ||
DateFacturation | DATE | ||
TotalSale | NUMERIC (9,2) | ||
TotalRemitted | NUMERIC (9,2) | ||
Mode de paiement | CHAR (10) | ||
INVOICE_LINE | Numéro de ligne | ENTIER | NOT NULL |
Numéro de facture | ENTIER | NOT NULL | |
ID de produit | ENTIER | NOT NULL | |
Quantité | ENTIER | ||
Prix de vente | NUMERIC (9,2) |
Notez que certaines colonnes contiennent la contrainte NOT NULL. Ces colonnes sont soit les clés primaires de leurs tables ou des colonnes respectives que vous décidez doit contenir une valeur. Clé primaire d'une table doit identifier de manière unique chaque rangée. Pour ce faire, la clé primaire doit contenir une valeur non nulle dans chaque ligne.
Les tableaux se rapportent les uns aux autres à travers les colonnes qu'ils ont en commun. La liste suivante décrit ces relations:
Le tableau porte un CLIENT un-à-plusieurs à la table de la facture. Un client peut faire des achats multiples, générant de multiples factures. Chaque facture, cependant, traite avec un, et un seul, le client.
Le tableau de FACTURE porte une relation one-to-many à la table de INVOICE_LINE. Une facture peut avoir plusieurs lignes, mais chaque ligne apparaît sur l'un, et un seul, la facture.
Le tableau de produit porte également une relation one-to-many à la table de INVOICE_LINE. Un produit peut apparaître sur plus d'une ligne sur un ou plusieurs factures. Chaque ligne, cependant, traite avec un, et un seul, produit.
Les liens de la table de client à la table de facture par la commune N ° de client colonne. Les liens de la table de la facture à la table de INVOICE_LINE par la common Numéro de facture colonne. Les liens de la table de produit à la table de INVOICE_LINE par la common ID de produit colonne. Ces liens sont ce qui rend cette base de données d'un relationnel base de données.
Pour accéder à l'information sur les clients qui ont acheté du matériel de ski, vous avez besoin Prénom, Nom de famille, De rue, Ville, État, et Code postal de la table- CLIENT Catégorie de la table- PRODUIT Numéro de facture de la table- de la facture et Numéro de ligne à partir de la table de INVOICE_LINE. Vous pouvez créer la vue que vous voulez dans les stades en utilisant les déclarations suivantes:
CREATE VIEW SKI_CUST1 ASSELECT Prénom, Nom, rue, ville, Etat, code postal, InvoiceNumberFROM CLIENT INSCRIPTION INVOICEUSING (CustomerID) -Créer VUE SKI_CUST2 ASSELECT Prénom, Nom, rue, ville, Etat, code postal, ProductIDFROM SKI_CUST1 INSCRIPTION INVOICE_LINEUSING (InvoiceNumber) VUE -Créer SKI_CUST3 ASSELECT Prénom, Nom, rue, ville, Etat, code postal, CategoryFROM SKI_CUST2 INSCRIPTION PRODUCTUSING (ProductID) -Créer VUE SKI_CUST ASSELECT Prénom DISTINCT, NOM, rue, ville, État, ZipcodeFROM SKI_CUST3WHERE CATEGORY = 'Ski' -
Ces CREATE VIEW déclarations combiner des données provenant de plusieurs tables en utilisant le INSCRIPTION opérateur.
Voici un aperçu des quatre CREATE VIEW déclarations:
La première déclaration combine colonnes de la table de la clientèle avec une colonne de la table FACTURE pour créer le SKI_CUST1 vue.
Les moissonneuses-batteuses deuxième déclaration SKI_CUST1 avec une colonne de la table pour créer la INVOICE_LINE SKI_CUST2 vue.
Les moissonneuses-batteuses tiers des états SKI_CUST2 avec une colonne de la table des produits pour créer le SKI_CUST3 vue.
La quatrième déclaration filtre toutes les lignes qui ne disposent pas d'une catégorie de Ski. Le résultat est une vue (SKI_CUST) Qui contient les noms et adresses de tous les clients qui ont acheté au moins un produit dans la Ski catégorie.
La DISTINCT mot-clé dans la quatrième CREATE VIEW's SELECT clause garantit que vous avez une seule entrée pour chaque client, même si certains clients ont fait plusieurs achats d'articles de ski.