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

Relevanta dokument
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]

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

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

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

Prova på-laboration i SQL

Övningar i SQL. SQLAccess.doc Ove Lundgren

Databaser och Datamodellering Foreläsning IV

Starta MySQL Query Browser

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

Databasspråket SQL - online.

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

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

Databasspråket SQL - online.

Databasspråket SQL - online.

Databasspråket SQL - online.

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

Databasspråket SQL - online.

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

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.

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

Filbeskrivningar Eller på särskild CD skiva

Introduktion MySQL och MariaDB

Introduktion till MySQL

Webbprogrammering, grundkurs 725G54

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

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

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

Design och underhåll av databaser

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

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

Vad är en databas? Databasutveckling Med MySQL/MariaDB

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

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

Kapitel 4 Arkivmenyn Innehåll

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

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

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

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

Databasutveckling Introduktion till SQL och TSQL

Structured query language (SQL)

Databasteknik för D1, SDU1 m fl

3. Dynamiska webbplatser, 20 Yhp (4 v)

Sample exam questions. Database exam TIG058

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

VAD GÖR DU / VEM ÄR DU?

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

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

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

Databaser. Vad du ska lära dig: Ordlista

732G16: Databaser - Design och programmering

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

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

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

WCMS-15, Webbutvecklare CMS

Inga hjälpmedel är tillåtna

Structured Query Language (SQL)

Databaser - Design och programmering

Vad är SQL? Introduktion till SQL

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

Dokumentation för VLDIT AB. Online classroom

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

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.

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

Lathund för studenter

Tentamen för DD1370 Databasteknik och informationssystem

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

Nya webbservern Dvwebb.mah.se

Telia Centrex IP Administratörswebb. Handbok

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

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

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

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

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

TENTAMEN DATABASKUNSKAP ITEK12

Arbetshäfte Office 365 en första introduktion

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

Exempel-Tentamen III

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

Wimba Pronto i Blackboard

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

Tentamen för DD1370 Databasteknik och informationssystem

Särskild information om personalliggare Fröbergs RFID / Fingerprint (TM-600 Serien)

Laboration 2 Datorverktyg vid LiU

Lösningar till tentamen i EDAF75

Föreläsning 5 Dagens föreläsning går igenom

Tentamen för DD1370 Databasteknik och informationssystem

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

Analytisk relationsdatabasdesign

Vyer, Prepared Statements, Triggers

Transkript:

Labb 1 Del 1A Skapa och hantera tabeller Sy#e (ö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, vyer, samt information i tabellerna (data). I denna labb ska ni öva på denna aspekt av SQL. I del 1B 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 ska ni ha fått via epost (troligen i augusti). 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 lämnar in tre text0iler, lab1a_schema.txt, lab1a_data.txt samt lab1b.txt i vilka ni har sparat de kommandon (och de utskrifter kommandona ger) som ni tar fram under labben. Instruk6oner/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 --host=db-und.ida.liu.se --user=[liuid] -- password=[lösenord] [liuid] 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: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A 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> 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. Uppgi#erna 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 Datatyp Forskare int Pris Varchar(255) Datum 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 HarVunnit.Forskare som främmande nyckel till Forskare.ID, och HarVunnit.Pris som främmande nyckel till Priser.Namn. Gör detta med Alter Table- kommandot. Testa med DESCRIBE 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 lab1_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 lab1_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 Binns i lab1a_data! Man kan använda DELETE FROM <tabell> WHERE <villkor> för att ta bort data från en tabell. Testa att ta bort alla forskare vars efternamn är Simon. 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 lab1_schema.txt för alla tre tabeller ni redan har inlagda som Create Table. 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 1B Söka i Databas Sy#e 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 dokumentation av era svar sparade i en text0il som lämpligen kompletteras med svar på förekommande frågor också. 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 uppgifter där det efterfrågas. (På uppgift 1 kan ni rita pilar för hand på pappersutskriften, de behöver inte 0innas i 0ilen.) Instruk6oner/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 mysql- kommandotolken 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) Uppgi#erna 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) med pilar mellan relationerna. Observera att du behöver denna information för de senare uppgifterna. 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 (subquery). 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 (subquery). 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 (subquery). 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.