Labb 1. prompt> mysql -h db-und.ida.liu.se -u [liuid] -p Enter password. mysql --host=db-und.ida.liu.se --user=[liuid] --password=[lösen]

Relevanta dokument
Labb 1. prompt> mysql --host=db-und.ida.liu.se --user=[liuid] -- password=[lösenord] [liuid]

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.

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

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

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

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

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

Övningar i SQL. SQLAccess.doc Ove Lundgren

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

Prova på-laboration i SQL

Starta MySQL Query Browser

Databasspråket SQL - online.

Databasspråket SQL - online.

Databasspråket SQL - online.

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

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

Databasspråket SQL - online.

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

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

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

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

Databaser och Datamodellering Foreläsning IV

Databasspråket SQL - online.

Introduktion MySQL och MariaDB

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

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

Filbeskrivningar Eller på särskild CD skiva

Introduktion till MySQL

Tentamen för DD1370 Databasteknik och informationssystem

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

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

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

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

Design och underhåll av databaser

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

Laboration 2 Datorverktyg vid LiU

Vad är en databas? Databasutveckling Med MySQL/MariaDB

Databasutveckling Introduktion till SQL och TSQL

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Kapitel 4 Arkivmenyn Innehåll

Webbprogrammering, grundkurs 725G54

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

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

MySQL. Maths Göthe. 25 februari Inledning Några konventioner Licens... 2

Structured query language (SQL)

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

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

Sample exam questions. Database exam TIG058

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

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

Nya webbservern Dvwebb.mah.se

Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!

Tentamen för DD1370 Databasteknik och informationssystem

Databaser. Jan Erik Moström, Department of Computing Science, Umeå University - jem@cs.umu.se

Databasteknik för D1, SDU1 m fl

Lathund för studenter

732G16: Databaser - Design och programmering

VAD GÖR DU / VEM ÄR DU?

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

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.

Som student vid Linköpings Universitet får du tillgång till ett lisam-baserat e-postsystem.

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

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

Dokumentation för VLDIT AB. Online classroom

Databaser - Design och programmering. Kursöversikt. Exempel: telefonbok. Varför databaser?

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

Vad är SQL? Introduktion till SQL

JobOffice SQL databas på server

Structured Query Language (SQL)

Databaser. Vad du ska lära dig: Ordlista

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

Föreläsning 6 Databaser och säkerhet

Skapa din egen MediaWiki

Inga hjälpmedel är tillåtna

3. Dynamiska webbplatser, 20 Yhp (4 v)

Föreläsning 2: Översikt över ett databassystem

Databaser - Design och programmering

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

TENTAMEN DATABASKUNSKAP ITEK12

Tentamen för DD1370 Databasteknik och informationssystem

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

Introduktion till LÄROBJEKT. tisdagen

Copyright AB Regin, Sverige, CLOUDigo användarhandledning

ALEPH ver. 16 Introduktion

LEX INSTRUKTION REPLIKERING UPPGRADERING

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

WCMS-15, Webbutvecklare CMS

1. SQL DDL (Data Definition Language) 2. Skapa tabell

Kapitel 1 Ange din kontoinformation

Detta dokument skall ge en kortfattad introduktion till Jasmine installationen vid DSV.

Telia Centrex IP Administratörswebb. Handbok

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

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

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

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

LEX INSTRUKTION LEX LDAP

Transkript:

Labb 1 Del A Skapa och hantera en databas Sy5e (översikt) SQL är både DDL (Data De0inition Language) och DML (Data Manipulation Language). DDL betyder att språket kan användas för att skapa, ändra, och ta bort databaser, tabeller och vyer. DML betyder att man kan lägga in, ändra och ta bort data i tabellerna. I del A av denna labb ska ni öva på DDL-aspekten av SQL. I del B kommer ni sedan få öva på att göra sökningar i en existerande databas, alltså att jobba med SQL som ett DML - språk. Förberedelser krävs för denna labb, se labbsidan. Kontoinformation för databashanteraren MySQL skickas per epost strax efter kursstart. Rubriken på brevet är "MySQL database created". Om ni har läst någon kurs tidigare, på IDA, och då fått databaskonto ska samma konto användas (då får ni inget nytt brev). Redovisning Övningen redovisas genom att ni skickar in två 0iler med epost till lärarna enligt nedan. I del A ska 0ilerna heta [LiUid]_lab1A_schema.txt och [LiUid]_lab1A_data.txt. Instruk?oner/Förberedelser Läs kapitel 7-9 i kursboken. Det kan vara särskilt bra att ha koll på sidorna 177-185. Kolla att du fått lösenordet till ditt MySQL-konto. Om du har glömt det 0inns en länk för att begära nytt lösenord på labbsidan. Labbassistenten kan INTE hjälpa dig med detta lösenord. Logga in på en SU-terminal och starta ett kommandorads-fönster. I det startar du en textbaserad databasklient, som ansluter till din egen mysqldatabas (med ditt student-id och det lösenord du fått) på IDAs server (db-und.ida.liu.se) med kommandot: prompt> mysql -h db-und.ida.liu.se -u [liuid] -p Enter password Mata in det lösenord som du fått. Det skrivs inte ut. Om du får problem prova nedanstående kommando: mysql --host=db-und.ida.liu.se --user=[liuid] --password=[lösen] Du byter alltså [liuid] i ovanstående mot ditt eget student-id och [lösenord] mot det lösenord du fått. Sedan ges följande utskrifter om allt gått rätt: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 86 Server version: 5.5.32 Source distribution Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> Ge sedan kommandot mysql> use [liuid] för att komma åt din egen databas. Sedan kan du mata in dina SQL-kommandon här vid denna prompt (mysql>). Ett tips är att ha en text0il (lämpligen de som ska redovisas) öppen i en textredigerare (INTE word) där du redigerar kommandona och sedan klipper in dem i denna kommandotolk. Här kan du nämligen inte redigera dina kommandon, och vissa blir ganska långa. Notera dock att ctrl-c avslutar kommandotolken mysql. Uppgi5erna 1. Er första uppgift är att lägga in några tabeller i er databas. Använd CREATE TABLE - kommandot för att skapa tre tabeller med följande struktur: Forskare Kolumn-namn ID Förnamn Efternamn Huvudämne Födelsedatum Datatyp Int Varchar(100) Varchar(100) Varchar(255) Date Priser Kolumn-namn Namn Prissumma Datatyp Varchar(255) Float HarVunnit Kolumn-namn Forskare Pris Datum Datatyp int Varchar(255) Date De understrukna kolumn-namnen visar vilken/vilka kolumner som ska vara primary keys. När ni har skapat tabellerna ska ni lägga till att fältet HarVunnit.Forskare är främmande nyckel till Forskare.ID, och HarVunnit.Pris är främmande nyckel till

Priser.Namn. Gör detta med Alter Table-kommandot (ALTER TABLE <tabellnamn> ADD CONSTRAINT. ) Testa med DESCRIBE TABLE och SHOW CREATE TABLE att ni har rätt struktur. Spara de kommandon som använts för att skapa tabellerna (create table och alter table) i text0ilen lab1a_schema.txt. 2. Nu ska ni in med lite data i dessa tabeller. Stoppa in de data som 0inns nedan i de två tabellerna med INSERT INTO -kommandot. Utöver de data som 0inns nedan, lägg även till minst två rader (per tabell) med passande data som ni själva hittar på. Forskare ID Förnamn Efternamn Huvudämne Födelsedatum 1 Herbert Simon NULL 1916-06-15 2 Allen Newell Kognitionsvetenskap 1927-03-19 Priser Namn Prissumma Nobelpris i Ekonomi 10000000 A.M. Turing Award 8429973.3 HarVunnit Forskare Pris Datum 1 Nobelpris i Ekonomi 1978-12-10 1 A. M. Turing Award 1975-01-01 2 A. M. Turing Award 1975-01-01 Testa med SELECT * FROM <tabellnamn> att ni fått med all data. Spara de kommandon som använts för att stoppa in data i text0ilen lab1a_data.txt 3. OBS! Innan ni gör denna uppgift: Se till att ni sparat kommandona för att skapa tabellerna i lab1a_schema och kommandona för data i lab1a_data! Nu ska ni ta bort data: Ta bort alla utdelningar av priset Nobelpris i Ekonomi (dvs alla rader ur tabellen HarVunnit där Pris är Nobelpris i Ekonomi ). Använd DELETE FROM <tabell> WHERE <villkor>. Man kan också använda Drop Table för att ta bort hela tabeller. Använd drop för att ta bort några tabeller i er databas. Lägg sedan till kommandot DROP TABLE IF EXISTS <tabellnamn> i lab1a_schema.txt för alla tre tabeller ni skapar. Lägg drop-kommandona före Create Table-kommandona. Man kan använda sig av externa 0iler för att skapa tabeller och stoppa in data. Genom kommandot source <0ilnamn> kan man köra förberedda 0iler, till exempel era 0iler lab1a_schema.txt och lab1a_data.txt.

Testa att köra först lab1a_schema och sedan lab1a_data (vad skulle hända om du vände på ordningen?). Kontrollera att tabeller och data är korrekta och ser ut som de gjorde efter ni gjort klart uppgift 2. Del B Söka i Databas Sy5e Nu ska ni öva på att skriva SQL-frågor, från de allra enklaste upp till en ganska avancerad nivå. Se till att utnyttja den handledda tiden väl. Uppgift 1 nedan görs med fördel på egen hand, den tar tid men är inte svår. Redovisning Övningen redovisas genom att ni lämnar in två 0iler, en för deluppgift 1 nedan och en för resten av deluppgifterna. Den första 0ilen ska heta [LiUid]_Lab1B_relations och vara en illustration/bild av deluppgift 1 nedan. Den andra 0ilen ska heta [LiUid]_Lab1B_sql.txt och ska innehålla de kommandon ni skapat för att lösa respektive deluppgift nedan, samt de svar som systemet genererade. Visa både vad ni skrev för uttryck för att få fram svaret, och vad svaret blev. Glöm inte bort att också förklara varför det blev som det blev, på de deluppgifter där det efterfrågas. Även här kan det vara bra att ha en textredigerare med redovisnings0ilen öppen där ni skriver in och redigerar kommandona, kopierar till den textbaserade databasklienten (kommandotolk) mysql, och sedan kopierar resultatet åt andra hållet. Notera att ctrl-c dödar kommandotolken, så muskommandona för kopiering fungerar bäst. Då riskerar man heller inte att det kommando man redovisar faktiskt inte fungerar för att man skrivit av fel. Instruk?oner/Förberedelser Läs kapitel 7-9 i kursboken. Det 0inns även mycket information på internet med beskrivningar av SQL-kommandon för att söka ut data. Förbered installation av Johnsson Brothers databasens tabeller genom att ladda ner script-0ilerna company_schema.sql och company_data.sql (0inns på labbsidan) till ditt konto. Håll reda på var du lägger dem och att de inte komprimeras på vägen. Om du vill samla 0ilerna för kursens labbar i en egen mapp, se till att du står i den mappen då du startar mysql-kommandotolken. Installera Johnson Brothers databasen på ditt eget databaskonto (detta görs bara en gång) genom att läsa in script-0ilerna med source-kommandot i mysql (som i del A). Nedanstående exempel utgår från att 0ilerna 0inns lagrade i den mapp du startade mysqlkommandotolken från. Om du lagt 0ilerna under Desktop/Skrivbord får du 0lytta dem först. mysql> source company_schema.sql Query OK, 0 rows affected (0.01 sec)... Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings:

mysql> source company_data.sql Query OK, 25 rows affected (0.01 sec) Records: 25 Duplicates: 0 Warnings: 0... Query OK, 0 rows affected (0.00 sec) Uppgi5erna 1. Undersök databasen med hjälp av kommandona show tables, describe, show create table. Rita upp ett relationsschema med alla relationer (tabeller) och attribut, markera referensattribut (foreign key) som pilar mellan relationerna. Observera att du behöver denna information för de senare uppgifterna. Det relationsschema som ni skapar kan till exempel ritas för hand och för redovisning fotas av med en telefon, eller rita i ritprogram (tar tid!). 2. Lista namnen på alla avdelningar, d.v.s attributet name för alla rader i tabellen jbdept. 3. Lista all information som 0inns om alla anställda, d.v.s. alla kolumner för alla rader i tabellen jbemployee. 4. Vilka delar 0inns inte på lager, d.v.s. qoh (Quantity On Hand) = 0? (tabellen som avses är jbparts) 5. Vilka anställda har en lön som är mellan 9000 och 10000? 6. Lista hur gammal varje anställd var när han eller hon började arbeta på företaget. Tips: Kolla kapitel 9 i databasboken. 7. Vilka anställda har ett "son"-namn? (Dvs efternamnet slutar på "son"). (Ja, du får anta att strukturen är <Efternamn komma Förnamn> för att bli av med Jason). Se samma kap som ovan. 8. Vilka saker (i jbitem) har levererats av leverantören med namnet "Fisher-Price"? Använd dig av en kapslad fråga (nästlad). ID-numret för leverantören Fisher-Price får inte förekomma som konstant i frågan. 9. Ställ samma fråga som ovan, fast utan kapsling (nästling). Id-numret får inte heller här förekomma som konstant. 10.Ta reda på namnet och färgen på alla delar som är tyngre än en kortläsare. Använd dig av en kapslad fråga. Vikten på kortläsaren får inte förekomma som en konstant i frågan. 11.Samma fråga som ovan, fast utan kapsling (nästling). Vikten får fortfarande inte 0innas som konstant. Tips: kolla kapitel 7.17 i boken och/eller föreläsningen om SQL. 12.Vad är medelvikten på svarta delar? Tips: det du behöver är "Aggregeringsfunktioner".

13.För varje leverantör i Massachusetts (Mass), ta reda på totalvikten av allt de levererat. Svaret ska vara en lista med namnen på leverantörerna och deras totala levererade vikt. Tips: levererade delar 0inns i tabellen jbsupply. 14.Skapa en helt ny tabell med samma utseende som jbitem och fyll den med alla saker (ur jbitem) som kostar mindre än medelpriset. Du ska inte använda mer än två kommandon, och ett räcker. 15.Skapa en vy över alla saker i jbitem som kostar mindre än medelpriset. Vad är skillnaden mellan denna vy och tabellen i ovanstående fråga? (ledning: Vad händer vid uppdatering av jbitem?) 16. Oops, jordbävning! Alla leverantörer i Los Angeles har problem. Försök att ta bort dem ur jbsupplier. Vad händer när du kör DELETE-kommandot? Varför? Varför hände inte det när du tog bort rader i A-delen av övningen? 17.En databasadministratör i företaget har försökt ta reda på hur bra olika leverantörers saker säljer. Han har skapat en hjälpvy och kan med hjälp av den få reda på hur många saker som sålts från varje leverantör: mysql> create view sale_supply(supplier, item, quantity) as select jbsupplier.name, jbitem.name, jbsale.quantity from jbsupplier, jbitem, jbsale where jbsupplier.id=jbitem.supplier and jbsale.item=jbitem.id; Ok. mysql> select supplier, sum(quantity) from sale_supply group by supplier; 6 rows selected ----------------------------------- SUPPLIER SUM ----------------------------------- Cannon 6 Koret 1 Levi-Strauss 1 Playskool 2 White Stag 4 Whitman's 2 ----------------------------------- mysql> Ett problem är att han skulle vilja ha med även leverantörer vars varor inte blivit sålda. Hjälp honom! De0iniera om sale_supply så att den också tar med leverantörer som inte har någon försäljning. Tips: Titta på hur tabellerna ser ut och vilka värden som 0inns. Tänk efter vad som händer i frågan. Läs sedan om Join som beskrivs i kap. 8.7-8.11.