Innehållsförteckning:
Video: Casio Classwiz - Binomial Probability Distribution using Calculator FX-991EX FX991EX for A Level IB 2024
Ibland vill du hämta specifik information från KUND-tabellen i SQL. Du vill inte titta på allt - bara specifika kolumner och rader. Vad du behöver är en vy.
A visa är ett virtuellt bord. I de flesta implementationer har en vy ingen självständig fysisk existens. Vyns definition existerar endast i databasens metadata, men data kommer från tabellen eller tabellerna från vilka du hämtar vyn. Utsikten är inte fysiskt duplicerad.
Enkelt tabellvy
Om den information du vill ha existerar i ett enda bord kan du skapa en enkel tabellvy av data. Antag exempelvis att du vill titta på namn och telefonnummer till alla kunder som bor i delstaten New Hampshire. Du kan skapa en vy från KUND-tabellen som bara innehåller de data du vill ha. Följande SQL-formulering skapar denna vy:
CREATE VIEW NH_CUST AS VÄLJ KUND. Förnamn, KUND. LastName, KUND. Telefon FRÅN KUNDEN VAR KUND. Stat = "NH";
Du kan uppnå samma uppgift med mindre skrivning om SQL-implementeringen förutsätter att alla tabellreferenser är desamma som i FRA-klausulen. Om ditt system gör det rimliga standardantagandet kan du minska satsen till följande rader:
CREATE VIEW NH_CUST AS SELECT Förnamn, Efternamn, Telefon FRÅN KUNDEN VAR STATE = 'NH';
Även om den andra versionen är lättare att skriva och läsa, är den mer sårbar för störningar från ALTER TABLE-kommandon. Sådan störning är inte ett problem för det här enkla fallet, som inte har något att göra, men åsikter med JOINs är robusta när de använder fullt kvalificerade namn.
Mångsidig vy
Ofta behöver du inte dra data från två eller flera tabeller för att svara på din fråga. Antag exempelvis att du arbetar för en sportaffär, och du vill skicka en reklampost till alla kunder som har köpt skidutrustning sedan affären öppnade förra året.
Du behöver information från tabellen KUND, tabellen PRODUCT, tabellen INVOICE och INVOICE_LINE. Du kan skapa en mångsidig vy som visar de data du behöver. Varje gång du använder vyn, speglar den eventuella ändringar som uppstod i de underliggande tabellerna sedan du senast använde vyn.
Databasen för denna sportvaruaffär innehåller fyra tabeller: KUND, PRODUKT, FAKTUR och INVOICE_LINE.
Tabell | Kolumn | Datatyp | Begränsning |
---|---|---|---|
KUND | KundID | INTEGER | INTE NULL |
Förnamn | CHAR (15) | ||
LastName < CHAR (20) | INTE NULL | Gata | |
CHAR (25) | Stad | ||
CHAR (20) | Stat | ||
CHAR (2) | Postnummer > CHAR (10) | ||
Telefon | CHAR (13) | ||
PRODUKT | ProduktID | ||
INTEGER | INTE NULL | Namn | CHAR (25) |
Beskrivning > CHAR (30) | Kategori | ||
CHAR (15) | FörsäljningsID | ||
INTEGER | Leverantörsnamn | ||
CHAR (30) | FAKTA | ||
FakturaNumber | INTEGER | ||
INTE NULL | KundID | INTEGER | FakturaDate |
DATUM | TotalSale | ||
NUMERIC (9, 2) | TotaltRemitterat | ||
NUMERIC (9, 2) | FormOfPayment > CHAR (10) | ||
INVOICE_LINE | Linjenummer | ||
INTEGER | INTE NULL | ||
FakturaNumber | INTEGER | INTE NULL | ProduktID |
INTEGER | INTE NULL > Mängd | INTEGER | |
Försäljningspris | NUMERISK (9, 2) | Observera att vissa kolumner innehåller begränsningen INTE NULL.Dessa kolumner är antingen de primära nycklarna till respektive tabell eller kolumn som du bestämmer | |
måste | innehålla ett värde. En tabellens primära nyckel måste identifiera varje rad unikt. För att göra det måste den primära nyckeln innehålla ett icke-nullvärde i varje rad. | ||
Tabellerna hänför sig till varandra genom de kolumner som de har gemensamt. Följande lista beskriver dessa relationer: | KUND-tabellen har ett |
ett till många förhållande i tabellen INVOICE. En kund kan göra flera inköp och generera flera fakturor. Varje faktura handlar dock om en, och endast en, kund. Tabellen INVOICE har ett till många förhållande till INVOICE_LINE-tabellen. En faktura kan ha flera rader, men varje rad visas på en och endast en, faktura.
Tabellen PRODUKT har också ett ett till många förhållande till INVOICE_LINE-tabellen. En produkt kan visas på mer än en rad på en eller flera fakturor. Varje rad handlar dock om en, och endast en, produkt.
-
KUND-tabellen länkar till INVOICE-tabellen med den gemensamma CustomerID-kolumnen. Fakturatabellen länkar till INVOICE_LINE-tabellen med den gemensamma kolumnen InvoiceNumber. PRODUCT-tabellen länkar till INVOICE_LINE-tabellen genom den gemensamma produktID-kolumnen. Dessa länkar är det som gör denna databas till en relationell databas.
-
För att få tillgång till informationen om kunder som köpt skidutrustning behöver du Förnamn, Efternamn, Gata, Stad, Stat och Postnummer från KUND-tabellen. Kategori från tabellen PRODUKT; FakturaNumber från tabellen INVOICE; och LineNumber från tabellen INVOICE_LINE. Du kan skapa den vy du vill ha i etapper genom att använda följande påståenden:
-
SKAPA VIEW SKI_CUST1 AS SELECT Förnamn, Efternamn, Gata, Stad, Stat, Postnummer, FakturaNUMMER FRÅN KUNDSKOMMUNIKATION MED ANVÄNDNING (CustomerID); SKAPA VIEW SKI_CUST2 AS SELECT Förnamn, Efternamn, Gata, Stad, Stat, Postnummer, ProduktID FRÅN SKI_CUST1 SAMMANSÄTTNING INVOICE_LINE ANVÄNDNING (FakturaNumber); SKAPA VIEW SKI_CUST3 AS SELECT Förnamn, Efternamn, Gata, Stad, Stat, Postnummer, Kategori FRÅN SKI_CUST2 BLI MED PRODUKT ANVÄNDNING (ProductID); SKAPA VIEW SKI_CUST AS SELECT DISTINCT Förnamn, Efternamn, Gata, Stad, Stat, Postnummer FRÅN SKI_CUST3 VAR CATEGORY = "Ski";
Dessa CREATE VIEW-satser kombinerar data från flera tabeller med hjälp av JOIN-operatören. Här följer en översikt över de fyra CREATE VIEW-föreställningarna: Den första satsen kombinerar kolumner från KUND-tabellen med en kolumn i tabellen INVOICE för att skapa SKI_CUST1-vyn.
Det andra uttalandet kombinerar SKI_CUST1 med en kolumn från INVOICE_LINE-tabellen för att skapa SKI_CUST2-vyn.
Det tredje uttalandet kombinerar SKI_CUST2 med en kolumn från PRODUCT-tabellen för att skapa SKI_CUST3-vyn.
Den fjärde uppräkningen filtrerar bort alla rader som inte har någon kategori av Ski. Resultatet är en vy (SKI_CUST) som innehåller namn och adresser till alla kunder som köpt minst en produkt i skidkategorin.
DISTINCT-sökordet i den fjärde CREATE VIEW SELECT-klausulen säkerställer att du bara har en post för varje kund, även om vissa kunder gjorde flera inköp av skidvaror.