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



Relevanta dokument
Övningar i SQL. SQLAccess.doc Ove Lundgren

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

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

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

WCMS-15, Webbutvecklare CMS

Databasutveckling Introduktion till SQL och TSQL

Structured Query Language (SQL)

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

Sample exam questions. Database exam TIG058

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

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

Grunderna i SQL del 1

Starta MySQL Query Browser

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

Databasbaserad publicering ME105A Laboration 9 1 (5)

Structured query language (SQL)

Databaser och Datamodellering Foreläsning IV

Laboration SQL. Kom igång.

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

Webbprogrammering, grundkurs 725G54

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

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

Databaser. Vad du ska lära dig: Ordlista

Databasspråket SQL - online.

VAD GÖR DU / VEM ÄR DU?

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

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

Databasspråket SQL - online.

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

Databaser och. SQL, utsökningar mot en tabell

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

SQL, nästlade delfrågor Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

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

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

Prova på-laboration i SQL

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

Databasspråket SQL - online.

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

Genomgång av tentamen. Databasteknik ITHS 4/3 2016

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

Databasspråket SQL - online.

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

Databaser och SQL - en kort introduktion

Databasspråket SQL - online.

Grunderna i SQL del 1

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

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

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

Design och underhåll av databaser

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

Tentamen för DD1370 Databasteknik och informationssystem

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.

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

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

VAD GÖR DU / VEM ÄR DU?

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

INNEHÅLL. Historik Vad är SQL Språkuppbyggnad SELECT Operatorer Logiska/Jämförelse SELECT med Alias och JOIN INSERT UPDATE DELETE

Lösningar till tentamen i EDAF75

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

Databasbaserad publicering ME105A Laboration 8 1 (6) I förra labben gjorde vi en webbsida med produkterna i tabellen products:

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

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

Vad är SQL? Introduktion till SQL

Introduktion MySQL och MariaDB

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

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

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media

Föreläsning 6 Databaser och säkerhet

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

3. Dynamiska webbplatser, 20 Yhp (4 v)

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

Tentamen för DD1370 Databasteknik och informationssystem

Vyer, Prepared Statements, Triggers

Tentamen för DD1370 Databasteknik och informationssystem

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

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.

TENTAMEN DATABASKUNSKAP ITEK12

FileMaker 14. SQL-referens

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

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

ADO.NET Murach Kapitel 17-20

732G16: Databaser - Design och programmering

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

Disposition. 1. Kopplingen mellan Processanalys (DFDdiagram) 2. Treskikts Client-Server arkitektur (Fig 1.8) 3. Data layer

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

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

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

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

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]

Filbeskrivningar Eller på särskild CD skiva

Webservice & ERP-Integration Rapport

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

Databaser - Design och programmering

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

Innehåll. MySQL Grundkurs

Transkript:

Databasbaserad publicering Föreläsning 5 1 Föreläsning 5 Dagens föreläsning går igenom SQL-sammanfattning Komplett exempel, från E/R till tabeller och SQL

Databasbaserad publicering Föreläsning 5 2 SQL Står för Structured Query Language och används för att hämta, uppdatera, lägga till och radera data och tabeller från en databas. SQL är standard men existerar i olika variationer för olika databaser (Access, Oracle, MySQL, Sybase osv). Följande exempel ger en SQL-överblick. Man skiljer på kommandon för Data Manipulation och kommandon för Data Definition. I korthet kan man säga att data manipulation innebär att man arbetar med data i tabeller medan data definition innebär att man definierar databasens struktur, dvs vilka tabeller som ska ingå och hur tabellerna ska se ut. SQL-kommandon skrivs vanligtvis med stora bokstäver.

Databasbaserad publicering Föreläsning 5 3 Data Manipulation Följande fyra kommandon är används för datamanipulation. SELECT (...FROM...WHERE) För att hämta och visa information från tabellen. UPDATE För att ändra och uppdatera information i tabellen. DELETE För att radera information i tabellen. INSERT INTO För att lägga till ny information i tabellen.

Databasbaserad publicering Föreläsning 5 4 SELECT Hämtar rader och kolumner från en eller flera tabeller genom ett antal villkor. Syntax SELECT kolumner (eller * för alla) FROM tabell/er [ WHERE villkor ] Till exempel: SELECT kursnamn FROM Kurs WHERE kurskod='k100'; Hämtar fältet (kolumnen) kursnamn från alla poster (raderi i tabellen Kurs där kurskoden är K100 SELECT * FROM Kurs; Hämtar alla fält från alla poster i tabellen Kurs (eftersom WHERE-villkor saknades) I villkor används ' ' runt text, dock ej kring heltal (integers)

Databasbaserad publicering Föreläsning 5 5 Jämförelser Det går att kombinera villkor genom logiska operatorerna (AND OR NOT), samt jämförelse (<, >, <=, >=, <>) Till exempel: SELECT fornamn, efternamn FROM Studenter WHERE postnummer <= 21155 AND ort = Malmö OR ort = Lund ; Observera apostroferna runt Malmö och Lund (text) men inte runt 21155 (heltal).

Databasbaserad publicering Föreläsning 5 6 ORDER BY Används för att sortera informationen SELECT * FROM Kurser ORDER BY kurskod; Visar all information om alla kurser sorterat i bokstavsordning/nummerordning efter kurskod. För att vända ordningen används DESC efter sorteringskolumnen; SELECT * FROM Kurser ORDER BY kurskod DESC;

Databasbaserad publicering Föreläsning 5 7 Mer om SELECT Det finns ett antal funktioner som går att använda med SELECT; COUNT (Räknar antalet rader) MIN (Returnerar det lägsta värdet i kolumnen) MAX (Returnerar det högsta värdet i kolumnen) SUM (Returnerar en summa) AVG (Returnerar ett medeltal)

Databasbaserad publicering Föreläsning 5 8 Till exempel... SELECT COUNT(*) FROM Studenter; Returnerar antalet rader i tabellen Studenter. SELECT MAX(skonummer) FROM Studenter; Returnerar det största skonumret i tabellen Studenter. SELECT MIN(skonummer) FROM Studenter; Returnerar det minsta skonumret i tabellen Studenter. SELECT SUM(skonummer) FROM Studenter; Returnerar summan av alla skonummer i tabellen Studenter. SELECT AVG(skonummer) FROM Studenter; Returnerar medelvärdet av skonumren i tabellen Studenter.

Databasbaserad publicering Föreläsning 5 9 BETWEEN... AND... Används för att hitta värden inom ett visst spektrum. Returnerar värden mellan och INKLUSIVE de angivna kriterierna. Syntax... WHERE Kolumnnamn BETWEEN Värde1 AND Värde2; Exempel SELECT * FROM Score WHERE score BETWEEN 5000 AND 10000; Hittar alla förekomster där poängen är mellan 5000 och 10000 inklusive 5000 och 10000.

Databasbaserad publicering Föreläsning 5 10 DISTINCT för att slippa dubbletter SELECT Branchname FROM account; ger Branchname Crawley Crawley Crawley Bugstone Bugstone SELECT DISTINCT Branchname FROM account; ger Branchname Bugstone Crawley

Databasbaserad publicering Föreläsning 5 11 Används för att negera ett villkor. NOT Exempel SELECT * FROM Account WHERE NOT Branchname= Crawley ;

Databasbaserad publicering Föreläsning 5 12 UPDATE Används för att ändra information i tabellen. UPDATE Tabell SET Kolumnnamn = Nytt värde WHERE (villkor); Till exempel UPDATE Studenter SET gatuadress = Amiralsgatan WHERE personnummer = 630126-2351 ;

Databasbaserad publicering Föreläsning 5 13 DELETE Används för att ta bort rader i en tabell efter vissa givna villkor. DELETE FROM Tabell WHERE villkor; Till exempel; DELETE FROM Kurser WHERE Examinator = Elisabeth Nilsson ; tar bort alla rader där Elisabeth Nilsson är examinator. VARNING DELETE FROM Tabell; tar bort alla rader från tabellen!

Databasbaserad publicering Föreläsning 5 14 INSERT INTO Används för att lägga till nya rader i databasen. INSERT INTO Tabell VALUES (värde1, värde2); i detta fall finns det två kolumner i tabellen där det första är Number och det andra Text Eller INSERT INTO Tabell (kolumnnamn1, kolumnnamn2) VALUES (värde1,värde2); i detta fall kan det finnas fler än två kolumner i tabellen men värden läggs endast till i de två kolmner som angivits. För att lägga till mer information på denna rad måste sedan UPDATE användas INSERT skapar alltid nya rader!

Databasbaserad publicering Föreläsning 5 15 Till exempel: INSERT INTO (forts) INSERT INTO Kurser (kurskod, kursnamn) VALUES ( KK569, Media design:1 ); Nu skapas en ny rad i tabellen Kurser med kurskod KK569 och kursnamn Media design:1 men med ett tomt värde i kolumnen Examinator. INSERT INTO Kurser VALUES ( KK569, Media design:1, Simon Niedenthal ); Nu skapas en ny rad i tabellen Kurser med kurskod KK569 och kursnamn Media design:1 och examinator Simon Niedenthal.

Databasbaserad publicering Föreläsning 5 16 SQL Data Definition Används för att bygga databasens struktur CREATE TABLE ALTER TABLE DROP TABLE

Databasbaserad publicering Föreläsning 5 17 Exempel CREATE TABLE CREATE TABLE Students (firstname TEXT, lastname TEXT, shoesize INT, id INT PRIMARY KEY NOT NULL)

Databasbaserad publicering Föreläsning 5 18 DROP Tar bort en hel tabell och all data som finns i den. Syntax - DROP TABLE Tabellnamn; Till exempel DROP TABLE Game; OBS Tar bort hela tabellen Game och allt som finns i den, så använd med försiktighet

Databasbaserad publicering Föreläsning 5 19 Ett komplett exempel Vi kommer att använda en exempeldatabas hämtad från boken SAMS Teach Yourself SQL in 10 minutes med följande ER-diagram (attributen utelämnade). vendors 1 M products 1 M orderitems customers 1 M orders 1 M

Databasbaserad publicering Föreläsning 5 20 vendors vend_id vend_name vend_address vend_city vend_state vend_zip vend_country BRE02 Bear Emporium 500 Park Street Anytown OH 44333 USA BRS01 Bears R Us 123 Main Street Bear Town MI 44444 USA DLL01 Doll House Inc. 555 High Street Dollsville CA 99999 USA FNG01 Fun and Games 42 Galaxy Road London N16 6PS England FRB01 Furball Inc. 1000 5th Avenue New York NY 11111 USA JTS01 Jouets et ours 1 Rue Amusement Paris 45678 France products prod_id vend_id prod_name prod_price prod_desc BNBG01 DLL01 Fish bean bag toy 3.49 Fish bean bag toy, complete with bean bag worms with which to feed it BNBG02 DLL01 Bird bean bag toy 3.49 Bird bean bag toy, eggs are not included BNBG03 DLL01 Rabbit bean bag toy 3.49 Rabbit bean bag toy, comes with bean bag carrots BR01 BRS01 8 inch teddy bear 5.99 8 inch teddy bear, comes with cap and jacket BR02 BRS01 12 inch teddy bear 8.99 12 inch teddy bear, comes with cap and jacket BR03 BRS01 18 inch teddy bear 11.99 18 inch teddy bear, comes with cap and jacket RGAN01 DLL01 Raggedy Ann 4.99 18 inch Raggedy Ann doll RYL01 FNG01 King doll 9.49 12 inch king doll with royal garments and crown RYL02 FNG01 Queen doll 9.49 12 inch queen doll with royal garments and crown

Databasbaserad publicering Föreläsning 5 21 customers cust_id cust_name cust_address cust_city cust_state cust_zip cust_country cust_contact cust_email 1000000001 Village Toys 200 Maple Lane Detroit MI 44444 USA John Smith sales@villagetoys.com 1000000002 Kids Place 333 South Lake Drive Columbus OH 43333 USA Michelle Green 1000000003 Fun4All 1 Sunny Place Muncie IN 42222 USA Jim Jones jjones@fun4all.com 1000000004 Fun4All 829 Riverside Drive Phoenix AZ 88888 USA Denise L. Stephens dstephens@fun4all.com 1000000005 The Toy Store 4545 53rd Street Chicago IL 54545 USA Kim Howard orders order_num order_date cust_id 20005 2001-05-01 00:00:00 1000000001 20006 2001-01-12 00:00:00 1000000003 20007 2001-01-30 00:00:00 1000000004 20008 2001-02-03 00:00:00 1000000005 20009 2001-02-08 00:00:00 1000000001

Databasbaserad publicering Föreläsning 5 22 orderitems order_num order_item prod_id quantity item_price 20005 1 BR01 100 5.49 20005 2 BR03 100 10.99 20006 1 BR01 20 5.99 20006 2 BR02 10 8.99 20006 3 BR03 10 11.99 20007 1 BR03 50 11.49 20007 2 BNBG01 100 2.99 20007 3 BNBG02 100 2.99 20007 4 BNBG03 100 2.99 20007 5 RGAN01 50 4.49 20008 1 RGAN01 5 4.99 20008 2 BR03 5 11.99 20008 3 BNBG01 10 3.49 20008 4 BNBG02 10 3.49 20008 5 BNBG03 10 3.49 20009 1 BNBG01 250 2.49 20009 2 BNBG02 250 2.49 20009 3 BNBG03 250 2.49

Databasbaserad publicering Föreläsning 5 23 En massa exempel: #sortering #sortera dyraste varor först. om två varor har samma pris sorteras de i bokstavsordning SELECT prod_name, prod_price FROM products ORDER BY prod_price DESC, prod_name; #filtrering med WHERE SELECT prod_name, prod_price FROM products WHERE prod_price<10; #söka null-värden: #följande funkar inte: SELECT * FROM customers where cust_email=''; #följande funkar inte heller: SELECT * FROM customers where cust_email=null; #följande funkar däremot: SELECT * FROM customers where cust_email IS NULL; #BETWEEN kan användas istället fär >= och <= SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;

Databasbaserad publicering Föreläsning 5 24 #samma resultat får man med SELECT prod_name,prod_price FROM products WHERE prod_price>=5 and prod_price<=10; #NOT operatorn #Observera parenteserna kring det som ska negeras. Det krävs av MySQL men inte av alla DBMS SELECT prod_name FROM products WHERE NOT (prod_name='king Doll'); #samma sak med <> SELECT prod_name FROM products WHERE prod_name<>'king Doll'; #LIKE operatorn för att hitta delar av texter #sök poster som innehåller teddy SELECT prod_name FROM products WHERE prod_name LIKE "%teddy%"; #sök poster som börjar med bokstaven R SELECT prod_name FROM products WHERE prod_name LIKE "r%"; #sök poster som slutar med ordet bear SELECT prod_name FROM products WHERE prod_name LIKE "%bear"; #beräknade fält. det finns ett stort antal funktioner och operator som kan användas, #tex + - * / trim() etc.

Databasbaserad publicering Föreläsning 5 25 SELECT quantity,item_price,quantity*item_price FROM orderitems WHERE quantity*item_price>500; #statistikfunktioner (aggregate functions) #det finns ett antal funktioner för att beräkna statistik på sökta data, tex count() som räknar hittade poster och avg() som beräknar medelvärdet av hittade värden och sum() som beräknar summan. SELECT AVG(prod_price) AS avg_price FROM products; SELECT COUNT(*) AS num_of_itemes, MIN(prod_price) AS min_price, MAX(prod_price) as max_price, AVG(prod_price) as avg_price, SUM(prod_price) as sum_price, SUM(prod_price)/COUNT(*) as avg_price_v2 FROM products; #det kanske viktigaste att förstå är hur man kopplar samman tabeller med join. #vi har tittat på enkla exempel tidigare. vi börjar med några enkla exempel #för att sedan gå vidare med mer avancerade.

Databasbaserad publicering Föreläsning 5 26 #skapa en lista över alla försäljares produkter: SELECT vend_name,prod_name,prod_price FROM vendors,products WHERE vendors.vend_id = products.vend_id; #det vi gjort kallas ibland inner join, ibland, ibland natural join. #det finns en alternativ syntax för join. det är en smaksak vilken man använder. SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;