Sid 1 (9) Tillämpad fysik och elektronik Karin Fahlquist. Laboration: Databasdesign & SQL

Relevanta dokument
Laboration SQL. Kom igång.

Övningar i SQL. SQLAccess.doc Ove Lundgren

Introduktion till frågespråket SQL (v0.91)

Se kurshemsidan för användbara länkar för att genomföra denna laboration.

Databasutveckling Introduktion till SQL och TSQL

Structured Query Language (SQL)

Laboration: SQL Server

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Grunderna i SQL del 1

1.Lär känna MS SQL Observera. Tips. Förberedelse

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

Institutionen för Tillämpad fysik och elektronik Stefan Berglund och Per Kvarnbrink. Laboration: Flerskiktade applikationer

Tentamen för DD1370 Databasteknik och informationssystem

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig?

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Tentamen för DD1370 Databasteknik och informationssystem

Structured query language (SQL)

Starta MySQL Query Browser

VAD GÖR DU / VEM ÄR DU?

Tentamen 4,5 hp Delkurs: Databaser och databasdesign 7,5hp Tentander: VIP2, MMD2, INF 31-60, ASP

Det är fullt tillåtet att göra laborationen innan laborationstillfället.

Databaser och Datamodellering Foreläsning IV

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

Introduktion till Winbas. excel till Winbas

Kopplingar via datalänk från Winbas till Excel samt Pivottabell 1 (13)

Grunderna i SQL del 1

Innehåll MySQL Intro. Ex på ett index Index typer ISAM Balanserat träd Pk och Fk i MySQL Eget index För o nackdelar med index

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Databaser. Vad du ska lära dig: Ordlista

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

16/12/14. Databasteknik och informationssystem DD1370. Dagens föreläsning (den sista!) Motivera med kokbok! Idag: Inga knappar L. Dagens föreläsning

WCMS-15, Webbutvecklare CMS

Sample exam questions. Database exam TIG058

Tentamen för DD1370 Databasteknik och informationssystem

VAD GÖR DU / VEM ÄR DU?

Importera och använda en textdatabas i Excel

Tentamen för DD1370 Databasteknik och informationssystem

Databaser och. SQL, utsökningar mot en tabell

INNEHÅLL SQL DEL 2. Funktioner inbyggda Aggregatfunktioner Skalärfunktioner. Chapter 11. Beginning SQL Server 2008 for Developers

Tentamen för DD1370 Databasteknik och informationssystem

Kom igång med din butik. 1. Skapa kategorier och produkter 2. Att göra en beställning i butiken 3. Övriga verktyg

Databaskunskap 7,5 högskolepoäng Provmoment: Ladokkod: Tentamen ges för:

Mitthögskolan ITM Telefon Access. Laborationskompendium för grunderna i databasen Microsoft Access. Detta exemplar tillhör:

Design och underhåll av databaser

TENTAMEN DATABASKUNSKAP ITEK12

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Tentamen för 1E1601. Måndag 10 mars 2003, kl Alla hjälpmedel tillåtna

Laboration 2, MS SQL. Observera. Tips. Förberedelse. Genomförande

Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.

Webbprogrammering, grundkurs 725G54

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Kapitel 4 Arkivmenyn Innehåll

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Tentamen i Databasteknik

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Excel Övning 1 ELEV: Datorkunskap Sida 1 Niklas Schilke

D1. Create Domain TEXT30 char(30) Default INGET VÄRDE! ;

Databaser och. SQL, utsökningar mot flera tabeller TENTA. # radnr (#) studnr (#) kursnr * tentadatum * betyg

Information efter genomgång av Microsoft Excel 2010

Mobilus får inte användas under tiden uppdateringen genomförs.

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

Föreläsning 6 Databaser och säkerhet

Databasutveckling Tabeller. tinyint 1 byte (0-255) Upp till 8 bytes

1. SQL 2. Utsökningar mot flera tabeller. 4. IN-operatorn 5. Join 6. Kartesisk produkt 7. Tabellalias

Rebus Web-import av kunder

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

Databasspråket SQL - online.

6 PIVOTTABELLER SKAPA PIVOTTABELL. Skapa pivottabell

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

08/11/13. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Deadline på tisdag

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Webservice & ERP-Integration Rapport

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Databasapplikationen HYR AKS. Vers 1.0 6, AKS har framtagits av ApplData AB på uppdrag av TillSaluGrejorAB

Introduktion MySQL och MariaDB

Dags att skriva uppsats?

Projekt Foreläsning VI

Fältnamn /Rubrik Fältnamn /Rubrik Fältnamn /Rubrik Fältnamn /Rubrik Data Data Data Data Data Data Data Data

13/11/14. Databasteknik och informationssystem DD1370 F3. Ett urval ur databasen bestäms av en SQL-fråga. Påminnelse: Vad är en Databas?

Transaktioner. 1. Transaktioner 2. Samtidighet ( concurrency ) och lås. 3. Deadlock. Kap. 17. Informatik B: Databashantering med SQL Server

Manual C3 BMS v. 3 för iphone/ipad

Matriser och vektorer i Matlab

SPF/MiRiaM Manual avancerad sökning

I dokumentet beskrivs hur man i medlemsregistret (MiRiaM) utför en så kallad avancerad sökning.

Microsoft Access. Skapa en ny databas. Östersund Vårterminen 2005

Prova på-laboration i SQL

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Tentamen ISGB01 (delkurs i ISGB24) Databasdesign 7,5 Poäng

ÖVERVAKNING AV SQL SERVER

Innehåll. MySQL Grundkurs

Vad är SQL? Introduktion till SQL

Transkript:

Tillämpad fysik och elektronik Karin Fahlquist 2014-08-29 Sid 1 (9) Laboration: Databasdesign & SQL

Sid 2 (9) Målsättning Syftet med denna laboration är att ge grundläggande kunskap och erfarenhet i databasdesign och frågespråket SQL. Teori För laborationen relevanta kompendier och filmer (se kursens Moodlesida) W3schools SQL tutorial: http://www.w3schools.com/sql/ Datatyper: http://msdn.microsoft.com/en-us/library/ms187752.aspx Material SQL server Visual Studio (eller någon annan miljö) för att skapa och komma åt din SQL-server databas. Genomförande Denna laboration består av två delar. I den första delen av laborationen arbetar du med att designa och sedan implementera en databas med hjälp av SQL server. Del två av laborationen är en övning i frågespråket SQL. För plus på denna laboration krävs det att du löser både plusuppgiften för den första delen och den andra. Redovisning Redovisning av laboration sker individuellt. Laborationen redovisas dels genom en individuell rapport som beskriver din/er lösning, men även genom uppvisande av en väl fungerande applikation. Redovisning av fungerande applikation sker vid en personlig redovisning som vanligtvis sker i slutet av kursen. Ni bokar in en tid för just er redovisning. Det underlättar för den som rättar rapporten att det tydligt framgår om ni löst plusuppgiften eller inte.

Sid 3 (9) Uppgift 1 För godkänt på denna laboration ska följande uppgift utföras med en databas innehållande minst en en-till-många -relation. För plusuppgift skall uppgiften som presenteras nedan istället utföras med en databas innehållande minst en många-till-många -relation. 1. Uppgiften går ut på att skapa en databas som innehåller flera tabeller (minst två) och relationer mellan dessa. Exempelvis: En skivdatabas med en tabell innehållande din egen skivsamling och en tabell innehållande artister samt en relation som kopplar samman de två tabellerna. 2. Skapa först ett ER-schema över din databas och lämna in denna för översikt till din handledare. 3. Skapa sedan själva databasen i SQL server med både script och i visuellt läge med hjälp av exempelvis Visual studio. Använd namngivningsreglerna när du skapar tabell och kolumnnamn för att få unika namn och undvika de reserverade ord som finns i SQL. 4. Använd både det visuella läget samt SQL-satser för att fylla på databasen så att den känns lagom stor. Gör ett antal SQL-frågor/SQL-satser (SELECT, INSERT, UPDATE, DELETE, osv). Testa att modifiera SQL-frågor/SQL-satser. 5. Sätt referensintegritet på din länk mellan tabellerna. Ställ frågor, försök uppdatera samt ta bort information i tabellerna och se vilken skillnaden är då du har referensintegritet med och utan "Uppdatera poster i relaterade tabeller" och "Ta bort poster i relaterade tabeller" samt om du inte alls har referensintegritet. Sammanfatta dina slutsatser. 6. Redovisa ditt ER-schema, dina egna tabeller, ge exempel på SQL-frågor/-satser, visa din databas i script, samt beskriv referensintegritet och dina slutsatser om referensintegritet.

Sid 4 (9) Uppgift 2: I denna uppgift ska du få bekanta dig mer med frågespråket SQL. För att du ska slippa bygga ut din databas och fylla den med gigantiska mängder data låter vi dig utföra denna del av laborationen mot en mera komplett databas (Nortwinddatabasen). För godkänt på denna uppgift ska SQL-uppgifter med fet stil redovisas i sin rapport. För plus redovisar du istället svaren på de understrukna uppgifterna. (Se själva SQL-uppgifterna medan.) Redovisning av resultat sker genom att dina frågor (SQL-satser) redovisas i din laborationsrapport samt de svar som dina SQL-satser gett. Databasen (Nwind.mdb) hittar du i anslutning till denna laborationsspecifikation, från kursens Moodlesida. Längst bak i detta dokument finna en översikt som beskriver databasen NWIND, dess tabeller och attribut och relationerna dem emellan (Figur 1). Strecken visar vilka fält som hör ihop, skissen tolkas så att en kund kan ha många order medan en order hör till en kund. Kom igång Öppna Nwind.mdb i Visual Studio Välj New Query Sätt igång och skriv SQL-frågan Ställ fråga genom att välja Execute Spara varje fråga som script (för att kunna återskapa och visa dina frågor) SQL-uppgifter: Besvara följande frågor mha av SQL. För godkänt skall frågorna med fet stil redovisas. För pluss redovisas endast de understrukna uppgifterna. Fungerar inte det aktuella datumet eller ordernummret kan det bero på att en annan Norwind-databas används, byt då till datum/ordernummer som existerar i databasen. Enkla frågor 1.Visa alla anställda. 2.Visa namnen för alla anställda. 3.Visa alla speditörer. Enkla villkor 4.Ta fram all information om den anställde med anställningsnummer 1. 5.Ta fram all information om de anställda som jobbar som säljare. 6.Vad har Vice VD för hemtelefonnummer (befattning=vice VD, försäljning)? 7.Vad heter kontaktpersonen på Svensk Sjöföda AB? 8.Vilka produkter har ett enhetspris på 80,00 kr? Sortering Vid sortering används uttrycket ORDER BY följt av ett eller flera fältnamn. Sortering ser på försata fältnamnet, finns flera med samma värde sorteras de på nästa fältnamn (telefonkatalogen skulle se ut:

Sid 5 (9) ORDER BY Efternamn, Förnamn). Om fältnamnet följs av DESC sorteras i fallande ordning, annars i stigande (man kan skriva ASC men det behövs inte). Visa alla anställda sorterade i... 9.Bokstavsordning. 10. Yngst först. 11.Visa alla kunderna, sortera dem i landsordning och för de i samma land skall sortera ske på ort. LIKE, AND och OR Ibland kan man inte använda = för att göra jämförelser eftersom det man söker inte är lika med utan bara nästan lika med. Då används istället för = ordet LIKE tillsammans med? och eller *, där? motsvarar exakt ett valfritt tecken och * motsvarar godtyckligt antal godtyckliga tecken. EXEMPEL 1 Visa alla Anställda vars postnummer innehåller siffran 5 SELECT * FROM Anställda WHERE Postnummer LIKE "*5*" AND och OR används för att kombinera flera villkor, AND innebär att båda villkoren måste vara uppfyld, OR att minst ett måsta vara uppfyllt EXEMPEL 2 Visa alla Anställda vars postnummer innehåller siffran 5 eller siffran 7 SELECT * FROM Anställda WHERE Postnummer LIKE "*5*" OR Postnummer LIKE "*7*" EXEMPEL 3Visa alla Anställda vars postnummer innehåller siffran 5 och som bor i Frankrike SELECT * FROM Anställda WHERE Postnummer LIKE "*5*" AND Land="Frankrike" 12.Vem av de anställda har studerat vid Trinity College? 13.Visa de anställda på Northwind som har efternamn som slutar på "son" 14.Visa namnet och anknytning för de anställda som har chefsbefattningar (ordet chef i befattning eller vd i befattning Beräkningar Beräkningar kan göras direkt i såväl SELECT-delen som WHERE-delen av SQL-satsen: SELECT pris*2 AS DyrtPris Genom att använda ordet AS enligt ovanstående exempel kan man kalla det beräknade fält för något vettigt. 15.Man funderar på att höja priserna med 7% Hur mycket skulle de olika produkterna kosta efter en

Sid 6 (9) eventuell prishöjning, kalla priset för "Nytt pris "? Visa även det gamla priset (Hakparenteser runt, annars tolkar Access Nytt Pris som två ord) Det beräknade fältet visar bara siffror, Enhetspris i tabellen är formaterat som valuta, därför visas det som valuta 16.Vilket värde finns på lager för varje produkt (enhetspris*antal i Lager), kallas Lagervärde 17.Visa vilka produkter som har mindre antal i lager än beställningspunkten, visa även de aktuella siffrorna 18.Vilka produkter behöver beställas (Beställningspunkt underskriden och beställt antal=0) 19.Vilka produkter behöver beställas (Antal i lager+beställt antal < Beställningspunkt) Två tabeller När man behöver data från mer än en tabell får man helt enkelt ta med de tabellerna i FROM-delen samt att man i WHERE-delen talar om hur de tabellerna hänger ihop EX: Vilken speditör skickar vilka order: SELECT Företagsnamn, Ordernr FROM [Order], Speditörer WHERE [Skickas Med]=Speditörsnr Om Skickas med hade hetat Speditörsnr hade man varit tvungen att tala om vilken tabell Speditörsnummer kommer ifrån, i så fall hade villkoret varit: WHERE Order.Speditörsnr = Speditörer.Speditörsnr Hakparenteserna ovan behövs runt Skickas Med för att tala om att det är ett fält, annars tolkas det som två ord, runt Order behövs hakparenteserna för att markera att order är ett fält eller tabell och inte det Order som används i ORDER BY 20.Till vilken kategori hör produkten Lakkalikööri? 21.Vilka produkter levereras av Karkki Oy? 22.Vad heter de som levererar lax? Fler tabeller På motsvarande sätt som med två tabeller 23.Vem levererar de varor som har sålts på order nummer 10249 Aggregering Sammanslagning, man vill visa data aggregerad, dvs summerad på något vis. Användbara funktioner är sum (summa), count (antal), max (största värde), min (minsta värde), Avg (medelvärde av average), stdev (standardavvikelse av standard deviation). Vill man se ett eller flera aggregerade värden för olika grupper kombineras det med satsen group by som kommer efter FROM-satsen: EXEMPEL 1 visa dyraste,billigaste, och genomsnittligt pris samt antal produkter för alla produkter: SELECT Max(Enhetspris) AS Dyrast, Min(Enhetspris) AS Billigast, Avg(Enhetspris) AS Genomsnitt,

Sid 7 (9) Count(*) AS AntalProdukter FROM Produkter EXEMPEL 2: visa dyraste, billigaste, och genomsnittligt pris samt antal produkter för respektive kategori SELECT Kategorinamn, Max(Enhetspris) AS Dyrast, Min(Enhetspris) AS Billigast, Avg(Enhetspris) AS Genomsnitt, Count(*) AS AntalProdukter FROM Produkter, kategorier WHERE Produkter.Kategorinr=Kategorier.Kategorinr GROUP BY Kategorinamn När man räknar antal kan man även skriva SELECT Count(*) eftersom man räknar poster. 24.Hur många säljare finns det på Northwind? 25.Hur många produkter finns det under kategorin Konditorivaror? 26.Hur stor var den totala ordersumman 96-12-12? (Datum är alltid krångliga, skriv det med brädgårdar runt: #1996-12-12#), tänk på rabatten. 27.Hur mycket har sålts av respektive produkt, visa även kategorinamn och produktnummer? 28.Vad är medelförsäljningen för produkterna inom respektive kategori? Nästlade frågor Ibland behöver man ställa frågan i två led, då kan nästlade frågor vara behändligt. De skrivs som en ny fråga inom parentes i WHERE-delen EX1: Om det finns order utan Orderspecifikationer, visa all info om de/den ordern: SELECT * FROM [order] WHERE ordernr NOT IN (SELECT ordernr FROM orderspecifikationer) 29.Vilken kund har inte beställt något? Uppdateringar Om man vill uppdatera data i tabeller kan man använda SQL till det också. i stället för SELECT används UPDATE för ändringar INSERT för Tillägg och DELETE för borttagning EXEMPEL 1: Allan produkter som kostar 500 kr eller mer skall ha beställningspunkt på 5 UPDATE Produkter SET Beställningspunkt=5 WHERE Enhetspris>=500 EXEMPEL 2: Höj beställningspunkten till det dubbla för alla produkter som kostar mindre än 100 kr UPDATE Produkter SET Beställningspunkt=Beställningspunkt*2 WHERE Enhetspris<100

Sid 8 (9) 30.Priserna för alla produkter i kategorin 4 skall höjas med 20%. 31.Priserna för alla produkter utom för de i kategori 4 skall höjas med 5% 32. En kund i Tyskland har fått fel landsnummer i sitt telefonnummer. Ändra telefonnummer det är +4703 00 07 43 21 men skall vara +49 03 00 07 43 21.

Figur 1: Översikt över Nwind databasen och relationerna mellan tabellerna. Sid 9 (9)