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



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

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

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

En liten saga om en databas

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

Starta MySQL Query Browser

Övningar i SQL. SQLAccess.doc Ove Lundgren

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

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

Labb LABB 15. XML användande i praktiken. Plushögskolan Frågeutveckling inom MSSQL - SU14

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

3. Hämta och infoga bilder

Idiotens guide till. Håkan Lyckeborgs SPSS-föreläsning 4/ Av: Markus Ederwall, 21488

Men banners kan också placeras i composerblock samt på nyhets- och artikelsidor. Du kan skapa en banner i vilken editor som helst i EpiServer CMS 5.

Skapa en mall för inlämning av skriftliga uppgifter. med hjälp av Open Office Writer

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

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Gör så här för att rapportera:

Skapa en mall för inlämning av skriftliga uppgifter med hjälp av Microsoft Office Word

Vilken version av Dreamweaver använder du?

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

STEG 1 Samla referenser till ditt EndNote-bibliotek

Version X6 Fler tips

IT-system. BUP Användarmanual

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

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel vers. 2010

Filbeskrivningar Eller på särskild CD skiva

6. Nu skall vi ställa in vad som skall hända när man klickar på knappen samt att markören skall ändra sig till en hand när markören är på knappen.

Hur man skapa en Wiki.

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

Övning: Skapa en ny regel

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

Kom igång. Readyonet Lathund för enkelt admin. Logga in Skriv in adressen till din webbsida följt av /login. Exempel:

Välj bloggen som du använder i skolan, i detta fallet heter den Min Skolblogg.

Förberedelseuppgift inför datorlaborationen

Lathund för publicering i KI Commons wikitjänst

Administrationsmanual ImageBank 2

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

Sätta upp e-post server Ubuntu 14.04, del 1 installation av programvara, konfiguration av mysql och Postfix

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

Webbgenvägar. Krishna Tateneni Yves Arrouye Översättare: Stefan Asserhäll

Nya webbservern Dvwebb.mah.se

ANVÄNDARBESKRIVNING FÖR PERSONAL

Öppna EndNote varje gång när du vill samla referenser till ditt bibliotek.

Manual

Idag. Hur skapar vi och underhåller en databas? DD1370 (Föreläsning 4) Databasteknik och informationssystem 7,5 hp Hösten / 20

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Lab 5: ASP.NET 2.0 Site Navigation

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

Labb LABB 14. Live demo exempeldata. Plushögskolan Frågeutveckling inom MSSQL - SU14

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Installera din WordPress med 9 enkla steg

Installation av datafil för lokal lagring av e-post i Microsoft Outlook 2016

Stored procedure i ASP.NET

med Office 365 i Dynamics NAV 2015

Välj bort om du vill. 96 Internet och e-post. 2. Mail-programmet finns i datorn. 1. Skriv mail i sökrutan. Windows Live Mail i Aktivitetsfältet.

[ HUR DU UPPDATERAR FÖRSTASIDAN PÅ OTHELLO.NU ]

5HVLVWHQVWDEHOO 'DWD3DUWQHU. Er partner inom data

Läs detta innan du fortsätter, eller skriv ut det, klicka runt lite och läs samtidigt.

Introduktion till Winbas. excel till Winbas

Win95/98 Nätverks Kompendium. av DRIFTGRUPPEN

Mappar och filer för webbsidor

Användarmanual Cartesia GEO Manager

Guide för pdf-formulär

First Class uppgift 2

1. Uppdateringsmodul (CMS)

WCMS-15, Webbutvecklare CMS

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Excel Övning 1 ELEV: Datorkunskap Sida 1 Niklas Schilke

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel

1. Starta programmet 2. Välja projekt antingen redan skapat eller nytt

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

Outlook Axxell Utbildning Ab

skapa genvägar till andra sidor (externa och interna)

Introduktion till Word och Excel

Filbindningar. Mike McBride Översättare: Stefan Asserhäll

Allt du behöver för crowdsourcing

Manual till Båstadkartans grundläggande funktioner

Innehåll. Inledning. Inställningar. Inledning Inställningar Kortkommandon Övriga inställningar Kommandofönstret Övrigt

Lathund för hantering av kalender och schema funktioner i TimeEdit och Moodle.

Steg för Steg Att använda Statistics explorer med data från SKLs databas


Svenska Ishockeyförbundet OVR Time on Ice

Programsnickaren. Grunderna för hur du kommer igång och arbetar med Programsnickaren till Micro Rolltalk. Habilitering & Hjälpmedel

SORSELE KOMMUN. Handbok OEW. 28 sept 2012 Mari-Anne Englund Barbro Olofsson. Sorsele kommun Version , rev (19)

FirstClass Hur du använder FirstClass.

Mer information om RefWorks, andra referenshanteringsprogram och hur man refererar hittar du på Linköpings universitetsbiblioteks webbsidor.

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

Sync Master startas via Task Scedule (schemaläggaren). Programmet kan köras på servern utan att någon är inloggad på servern.

Kom igång med Platon. Publicerad Tersus Skolsystem AB Lilla Nygatan 2, Göteborg Tel:

Laboration Fuzzy Logic

På servern För att registrera och köra en Topocad 17 nätverkslicens krävs att man installerar den senaste Licensservern

Design och underhåll av databaser

Flexiboard. Lathund kring hur du kommer igång med att skapa egna överlägg till Flexiboard. Habilitering & Hjälpmedel

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

Tidtagning med Eresults Lite programmet

STOCKHOLMS UNIVERSITET. Handbok 2. Funktionaliteter moveon 4

Transkript:

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

I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet eller genom T-SQL kommandon. Vi ska kolla på båda. Högermusklicka på Databases, och välj "New Database" Du får nu fram en Wizard. I den kan du mata in namn på databasen. Som du kan se så kommer den att skapa två filer. En databasfil och en loggfil. Dessa kommer vi att kolla mer på senare 1

Ge databasen namnet "Databassagan" och tryck OK. Alternativt kan du skapa den med SQL-kod och skriva CREATE DATABASE [Databassagan]; I fortsättningen rekommenderar jag att du använder SQL-koden. Dubbelklicka nu på Databasen "Databassagan" som dök upp i listan till vänster. Som du kan se här så har den en massa undernoder och dessa har sina speciella egenskaper. Just nu ska vi fokusera oss på "Tables". Vi ska skapa en tabell. Högerklicka på Tables och välj "Table". Inte en aning varför det inte står "New table" men det får duga. Ett fönster visas upp i mitten av din management studio som heter något i stil med "dbo.table_1". dbo betyder Database Owner (alltså du) och Table_1 är ett standardnamn för en tabell. När du sparar kommer den att fråga efter ett vettigare namn. 2

Mata in följande data i fönstret Name Type Allow Null ID int (blank) Namn varchar(50) (blank) Det kommer att se ut ungefär såhär Kolumnen ID kommer att fungera som identifierare av raden (därav namnet) men just nu är den bara en siffra i databasen. För att det ska bli ett riktigt index som databasen kan söka upp lätt och snabbt måste den bli något som kallas "Primary key". Primary key är det som identifierar raden. Vi fixar detta genom att högermusklicka på ID och välja "Set Primary Key" varchar är detsamma som en sträng i C#, i detta fall begränsar vi det till 50 tecken max. Den får vara kortare, men inte längre än 50 tecken. Nu blir den markera med en nyckelikon och ett index skapas till den. Blev du nyfiken på Indexer nu? Lugnt, det kommer längre fram i kursen. Men vill du kolla på det nu så kan du titta på noden Indexes som finns under tabellens noder. Där kan du få information om dess innehåll, fragmentering mm. men det tar vi en annan lektion :) 3

Nu ska vi ange att den ska räkna upp IDt automatiskt (så att vi slipper hålla reda på det). Detta gör vi genom att klicka på ID raden och kolla på Column Properties som dyker upp längst ner i fönstret. Rulla ner bland egenskaperna tills du hittar "Identity Specification". Ändra det till Yes och då kommer värdet på Identity Increment att ändras till 1 och Identity seed kommer också att bli 1. Detta betyder med andra ord att första nyckeln kommer att få värdet 1 och efter det kommer nycklarna att öka med 1. Spara genom att stränga rutan (klicka på krysset eller CTRL+F4) eller trycka CTRL+S Kalla din tabell för "Personer" Man kan också göra detta genom T-SQL kommandon Use Databassagan; CREATE TABLE Personer ( ID int IDENTITY(1,1) not null primary key, Namn varchar(30) not null ); Det är viktigt att ange vilken databas man ska göra ändringar i, så första raden ska alltid vara med, annars finns det risk att man skriver i systemdatabasen. Vill man vara lite lat kan man ange vilken databas man ska arbeta med innan man öppnar ett fönster för kommandon i Management Studio. Det är dock lätt att glömma det, så det bästa är att alltid ange "USE" kommandot. 4

Nu ska vi mata in lite data. Högerklicka på tabellen "dbo.personer" och välj "Edit top 200 rows" Nu får du fram ett fönster som ser ut ungefär såhär Skriv in namnen från Databassagan, en rad i taget. Som du ser så skapas indexnumret automatiskt. 5

Vi kan också göra detta genom T-SQL kod USE [Databassagan]; INSERT INTO [dbo].[personer] ([Namn]) VALUES ('Johanna'), ('Marie'), ('Niklas'), ('Magnus'), ('Peter'), ('Marcus'); Kommandot INSERT INTO har sin speciella format Först anger man vilken tabell som ska ha informationen, i det här fallet [dbo].[personer]. Sedan anger vi vilken eller vilka kolumner som ska påverkas, i det här fallet [Namn]. Slutligen anger vi informationen (eller värden) som ska matas in. Innanför parentesen skriver vi in värdena som ska läggas in i tabellen. Är det flera kolumner som ska matas in så separerar vi det med kommatecken. Alla strängar anges inom enkelfnuttar, alltså '. Varje rad som ska läggas in separeras med komma och då lägger man till en ny uppsättning med parentes. Det är väldigt viktigt att datan som läggs innanför parentesen matchar exakt de kolumner man angett i deklarationen av INSERT INTO kommandot. Stämmer inte det kommer datan inte att läggas sparas. Vill du se vad som matats in kan du skriva följande kommando SELECT * FROM [Databassagan].[dbo].[Personer] * betyder att den ska välja alla kolumner från tabellen. Ibland vill man inte se allt, då skriver man in namnet på kolumnen eller kolumnerna (komma separerat) man vill se. SELECT [Namn] FROM [Databassagan].[dbo].[Personer] Man kan också skriva det såhär use Databassagan; SELECT [Namn] FROM [Personer]; eller såhär use Databassagan; SELECT Namn FROM Personer; 6

Nu ska vi skapa tabellen Händelser Use Databassagan; CREATE TABLE Händelser ( ID int IDENTITY(1,1) not null primary key, Händelse varchar(30) not null ); och vi lägger in nödvändig data i det USE [Databassagan]; INSERT INTO [dbo].[händelser] ([Händelse]) VALUES ('ger'), ('tycker om'), ('handlar'), ('lägger undan'), ('äter'), ('går'), ('lämnar'), ('tar hand om'); Snabbt och enkelt! Nu ska du skapa tabellen Objekt och lägg in datan för "ett fint rött äpple", "en stor gul banan", "en stor mumsig chokladkaka", "en söt klementin", "restaurang", "en stor muffin", "shoppinglista" Skapa nu "Kopplingstabellen" som har följande form ID int Identity(1,1) not null primary key Person1 int Handling int Objekt int Person2 int Fyll i tabellen enligt sagans beskrivning 1,1,1,3 3,2,1 3,1,2,5 5,3,3 5,2,2 5,1,3,2 Nu har vi listan vad som sker, men egentligen så förstår inte databasen vad siffrorna står för. Den kan inte se kopplingen mellan siffrorna och ID värderna vi har angett i de andra tabellerna. För att den ska kunna förstå detta måste vi in i kopplingstabellen och ändra lite. 7

Nu får vi fram samma fönster som vi hade när vi skapade tabellen, men all data är redan färdig. Det vi ska göra är att ändra i Relationships. Relationship är det som talar om för databasen att kolumner hör ihop. Vilket gör att databasen lättare kan hitta de rader som hör ihop, även om de är i olika tabeller. Du får nu fram ett litet fönster som ser väldigt udda ut. 8

Klicka på Add Nu kommer en del data fram. 9

Det här talar om att det kommer att finnas en koppling mellan kolumnen Person1 och en fram tills nu okänd kolumn. Klicka på knappen och då får du fram ännu ett litet fönster. I det här fönstret ska vi skapa kopplingen mellan tabellen "Personer" och dess Primary Key, med tabellen "Kopplingstabellen" och dess kolumn (som nu blir uppgraderad till en Foreign Key. 10

Välj "Personer" i dropdownlistan och välj sedan "ID" i den nya dropdown som visar upp sig. Glöm inte att ändra det föreslagna ID (till höger) till Person1 11

Nu har du skapat en koppling mellan de två tabellerna. Det finns en hel del intressant i fönstret, men vi kommer att titta mer på det senare i kursen. Fortsätt med resten av kolumnerna i "Kopplingstabellen". Ska en relation per kolumn genom att klicka på ADD knappen. Händelser.ID ska kopplas till Handling Objekt.ID ska kopplas till Objekt Personer.ID ska kopplas till Person2 Primary Key är den nyckeln som identifierar raden med data. Foreign Key är en kopia av själva nyckeln, och fungerar som en länk till datan. Nu har vi all data som behövs för att sagan ska leva i databasens värld. Så nu ska vi ta en titt på hur databasens information. Detta blir lite komplicerat så vi låter Management Studio ta hand om själva "frågan". I menyn "Query", välj "Design Query in Editor" Den kommer nu att visa en lista på de tabeller som finns tillgängliga. I det här fallet ska vi använda alla. Så markera alla tabeller och tryck på knappen "Add" 12

Nu får vi fram ett litet fönster som visar hur kopplingarna mellan tabellerna ser ut 13

Som vi ser här så har tabellen Personer två kopplingar till kopplingslistan. Detta gör att det inte kommer att fungera. För att den kommer att söka på två olika IDs i samma rad och varje rad har bara ett ID. Vi löser detta genom att högermusklicka på fönstret och välja Add Table. 14

Välj Personer igen och klicka på Add Nu har vi två uppsättningar av tabellen "Personer" och 4 kopplingar allt som allt. 15

För att det ska fungera får vi helt enkelt ta bort dublettkopplingarna. Om du pekar på en av kopplingarna kommer du att få fram en liten gul ruta som talar om vilken koppling det är. 16

I var och en av persontabellerna finns två kopplingar. Kopplingstabellen.Person1 = Personer.ID Kopplingstabellen.Person2 = Personer.ID I den första personrutan, peka på "Kopplingstabellen.Person2 = Personer.ID". Klicka på det så att det blir gråmarkerat, högermusklicka och välj "Remove" Gör samma sak på Personer_1, men välj där kopplingen "Kopplingstabellen.Person1 = Personer.ID" Nu borde din fråge-layout se ut såhär So far so good... nu har vi bara ett litet problem. När vi skrev in data i kopplingstabellen så var ibland Person2 = NULL. Då vår layout till fråga vill ha exakt matchning så kommer den inte att läsa de rader där vi har null, även om de är en viktig del av själva sagan. Alltså måste vi åtgärda detta. Högermusklicka på kopplingen mellan Person2 och Kopplingstabellen. 17

Välj "Select all Rows from Kopplingstabellen". Detta gör att om det får null så kommer den ändå att läsa in det som finns i Kopplingstabellen. Då kan vi ta nästa del Nu ska vi fylla i vilka Kolumner som ska visas och hur de ska visas. I rutan nedan själva layouten för frågan kan du se en liten tabell med Kolumn, Alias, Table output mm Fyll i den enligt följande När du anger kolumn kommer den att visa både tabell och kolumner, men oroa dig inte. Välj rätt tabell och kolumn så fylls resten i automatiskt. Alias fylls inte automatiskt, så den får du skriva in. Orsaken till att man använder Alias är helt enkelt för att det ska se snyggare ut. Längst ner i fönstret kan du se T-SQL koden som genererades av det vi fyllde in i rutorna ovan. Use Databassagan; SELECT Personer.Namn AS Person1, Händelser.Händelse AS Handling, Objekt.Objekt, Personer_1.Namn AS Person2 FROM Händelser INNER JOIN Kopplingstabellen ON Händelser.ID = Kopplingstabellen.Handling INNER JOIN Objekt ON Kopplingstabellen.Objekt = Objekt.ID INNER JOIN Personer ON Kopplingstabellen.Person1 = Personer.ID LEFT OUTER JOIN Personer AS Personer_1 ON Kopplingstabellen.Person2 = Personer_1.ID Det här ser kryptiskt ut. 18

Första raden talar om vilken databas vi ska använda (men det visste du redan) Sedan talar vi om att vi ska välja vissa kolumner att visa, från vilka tabeller och vilka alias de ska ha. Sedan talar vi om att tabellen Händelser ska kopplas ihop med Kopplinstabellen.Handling där det ska finnas en exakt match av ID. Den ska göra samma sorts jämförelse på Objekttabellen och Personertabellen och slutligen ska den söka igenom Personertabellen igen men den här gången ska den strunta i om det om det är NULL. Alla andra jämförelser är exakta. Kör vi nu den T-SQL koden så kommer vi att se att den visar en del av sagan. Det är ju fantastiskt, vi kan få fram informationen genom att koppla ihop tabellerna. Nu uppstår frågan... måste vi mata in all den koden varenda gång vi vill se sagan eller en del av sagan. Svaret är helt enkelt Ja... och Nej. Ja, den koden behövs, men nej men behöver inte skriva den en massa gånger. För att spara oss tid och elände finns en avdelning som heter views. Det är noden under Tables. Högerklicka på den och välj New View. Nu får du fram samma fönster som när du skapade en fråga. Klicka på Close och klistra in din kod i rutan längst ner. Då visas hela frågan i layouten. Då vi vet att den fungerar ska vi bara spara den. 19

När den är sparad kan du enkelt skriva eller SELECT * FROM [Databassagan].[dbo].[Vy_av_Databassagan] eller Use Databassagan; SELECT * FROM [Vy_av_Databassagan] En vy fungerar som en tabell, du kan söka i det precis som i en tabell. Nu har du fått en rejäl rundtur i Databasens värld. Det som du testat på idag är mer eller mindre allt det vi ska syssla med under hela kursen, det som du inte förstår just nu kommer du snart att kunna förstå riktigt bra. För att avsluta lite snällt, prova med att mata in resten av sagan i tabellen i kopplingstabellen. Testa sedan med att skapa en ny person i Personertabellen och kalla personen för "Mr Leet". Lägg sedan till en rad i kopplingstabellen där Johanna handlar en stor mumsig chokladkaka av Mr Leet. Happy Coding! 20