databasutveckling introduktion till sql och...

18
1 Databasutveckling Introduktion till SQL och TSQL © Copyright Mahmud Al Hakim [email protected] www.webacademy.se Agenda Introduktion till SQL SELECT–satsen, enkla frågor Hämta specifika kolumner Alias Ta bort dubbletter med DISTINCT WHERE-satsen BETWEEN Sortera sökresultat med ORDER BY INSERT, UPDATE och DELETE Copyright 2015 - Mahmud Al Hakim www.webacademy.se 2

Upload: dotuyen

Post on 31-Aug-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

1

Databasutveckling

Introduktion till SQL och TSQL

© Copyright

Mahmud Al Hakim

[email protected]

www.webacademy.se

Agenda

Introduktion till SQL

SELECT–satsen, enkla frågor

Hämta specifika kolumner

Alias

Ta bort dubbletter med DISTINCT

WHERE-satsen

BETWEEN

Sortera sökresultat med ORDER BY

INSERT, UPDATE och DELETE

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 2

2

Vad är SQL?

Structured Query Language (SQL) är ett standardiserat

frågespråk (programspråk) för att hämta och modifiera

data i en relationsdatabas.

Under 1970 utvecklade IBM

”Structured English Query Language” (SEQUEL).

SEQUEL byttes senare ut mot SQL eftersom 'SEQUEL'

var ett varumärke.

1986 SQL är ANSI-standard

1987 SQL är ISO-standard

SQL:2011 är den senaste versionen (standard ANSI)

Copyright Mahmud Al Hakim www.webacademy.se 2015 3

T-SQL (Transact-SQL)

T-SQL är ett tillägg till standard SQL från Microsoft och

Sybase.

T-SQL används i MS SQL Server databaser.

Alla applikationer som kommunicerar med en

MS Server databas skickar T-SQL-satser till servern.

Transact-SQL Reference finns härhttps://msdn.microsoft.com/en-us/library/bb510741(v=sql.110).aspx

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 4

3

www.w3schools.com/sqlSQL Tutorial

Copyright Mahmud Al Hakim www.webacademy.se 2015 5

SQL (Structured Query Language )

6

SQL

DDLData Definition Language

(Databeskrivning)

CREATE

DROP

ALTER

DMLData Manipulation Language

(Databearbetning)

SELECT

INSERT

DELETE

UPDATE

4

SQL Syntax

SQL-frågor består av ett antal satser (statements)

SQL är INTE “Case Sensitive” (Skiftlägeskänsligt)

SQL Nyckelord skrivs normalt i versaler

Vissa databashanterare kräver semikolon efter varje

sats;

www.alhakim.org, [email protected], 070-7556405 7

Öppna en databas med SQL

USE northwind;

8

5

SELECT–satsen

SELECT är den viktigaste satsen i SQL.

Används för att hämta rader från en eller flera tabeller.

SELECT * FROM tabell;

Eller

SELECT kolumn1, kolumn2

FROM tabell;

9

Enkla frågor

SELECT * FROM Customers;

Hämtar alla kolumner och rader från tabellen Customers

10

6

Spara resultatet i en CSV-fil

Högerklicka i resultat-panelen och ”Save Results As…”

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 11

Enkla frågor - Exempel

1. Hämta allt från tabellen Categories

2. Hämta allt från tabellen Contacts

3. Hämta allt från tabellen Employees

4. Hämta allt från tabellen Orders

5. Hämta allt från tabellen Products

6. Hämta allt från tabellen Region

7. Hämta allt från tabellen Shippers

8. Hämta allt från tabellen Suppliers

9. Hämta allt från tabellen Territories

10. Hämta allt från tabellen [Order Details]OBS! Om tabellnamnet består av flera ord använd hakparenteser.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 12

7

Hämta specifika kolumner

SELECT ContactName FROM Customers;

13

Hämta specifika kolumner

Exempel1. Hämta CompanyName från tabellen Customers

2. Hämta Country från tabellen Customers

3. Hämta City från tabellen Customers

4. Hämta CompanyName och Address från tabellen

Customers

5. Hämta Country och City från tabellen Customers

6. Hämta fullständig adress från Customers

(CompanyName, ContactName, Aderss, PostalCode,

City och Country)

7. Hämta en lista på produktnamn från tabellen Products.

8. Hämta en lista på produktnamn och antal i lager

(UnitInStock) från tabellen Products.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 14

8

SELECT TOP

Med SELECT TOP kan hämta en del av en stor tabell.

T.ex. visa de första fem raderna

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 15

OBS!

Det är inte alla

databashanterare som

har SELECT TOP

Alias (kolumn alias)

SELECT ContactName As Namn FROM Customers;

16

9

Alias (tabell alias)

SELECT C.ContactName FROM Customers AS C;

17

Skapa Alias som kombinerar flera

kolumnerSELECT Address+', '+City+', '+PostalCode+', '+Country AS Address

FROM Customers;

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 18

10

Ta bort dubbletter med DISTINCT

SELECT DISTINCT City FROM Customers;

19

Hämta och filtrera specifika kolumner

med WHERESELECT * FROM Customers

WHERE Country = 'Mexico';

20

11

AND och OR

Visa alla produkter som finns i lagret

och där en order finns.

(beställda produkter som finns i lagret).

SELECT * FROM Products

WHERE UnitsInStock > 0

AND UnitsOnOrder > 0

Visa alla kunder som bor i Germany eller UK

SELECT * FROM Customers

WHERE Country='Germany‘

OR Country ='UK';

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 21

Operatorer som används i WHERE

Operator Beskrivning

= Lika med

<> eller != Inte lika med

> Större än

< Mindre än

>= Större än eller lika med

<= Mindre än eller lika med

BETWEEN Mellan två olika värden

LIKE Används för att söka texter

IN Används för att leta efter multipla värden

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 22

12

WHERE – Flera exempel

SELECT * FROM Products

WHERE ProductID=1;

SELECT * FROM Products

WHERE ProductID<=5;

SELECT * FROM Products

WHERE UnitPrice < 10;

SELECT * FROM Products

WHERE UnitsInStock !=0;

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 23

LIKE, % och _ Visa alla kunder där postnumret börjar på 1

SELECT * FROM Customers

WHERE PostalCode LIKE '1%';

Visa alla länder som innehåller texten land

SELECT * FROM Customers

WHERE Country LIKE '%land%';

Visa alla länder som INTE innehåller texten land

SELECT * FROM Customers

WHERE Country NOT LIKE '%land%';

Visa alla kunder där postnumrets andra siffra är 1

SELECT * FROM Customers

WHERE PostalCode LIKE '_1%'; (OBS! Understreck)Copyright 2015 - Mahmud Al Hakim www.webacademy.se 24

13

BETWEEN

Visa alla produkter som kostar mellan 5 och 10

SELECT * FROM Products

WHERE UnitPrice BETWEEN 5 AND 10;

Visa alla produkter som INTE kostar mellan 5 och 10

SELECT * FROM Products

WHERE UnitPrice NOT BETWEEN 5 AND 10;

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 25

IN

Visa alla kunder som bor i Paris eller London

SELECT * FROM Customers

WHERE City IN ('Paris','London');

Visa alla kunder som INTE bor i Paris eller London

SELECT * FROM Customers

WHERE City NOT IN ('Paris','London');

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 26

14

Sortera sökresultat med

ORDER BY

Visa en lista över alla kunder, sortera efter

namn stigande

SELECT * FROM Customers

ORDER BY ContactName ASC;

(OBS! ASC är defalut, kan utelämnas)

Visa en lista över alla kunder, sortera efter

Country fallande

SELECT * FROM Customers

ORDER BY Country DESC;

27

Tips! Visa sista raden

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 28

15

SELECT INTO

Kopiera data från en befintlig tabell till en ny tabell

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 29

SELECT INTO –Välj kolumner

Skapa en ny tabell som enbart innehåller info om

kontaktpersoner i kundregistret

SELECT CompanyName, ContactName, ContactTitle, Phone

INTO CustomersContacts

FROM Customers;

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 30

16

SELECT INTO –Välj rader

Skapa en ny tabell som enbart innehåller kunder från

Sverige.

SELECT *

INTO CustomersSweden

FROM Customers

WHERE Country='Sweden';

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 31

INSERT INTO Infoga en ny rad (post/record) i en tabell.

INSERT INTO Customers (CustomerID, CompanyName,

ContactName, Address, City, PostalCode, Country)

VALUES ('12345' , 'Web Academy' , 'Mahmud Al Hakim' ,

'Hemfridsvägen 17' , 'Sollentuna' , '19267' , 'Sweden');

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 32

17

UPDATE

Uppdaterar en rad (post/record) i en tabell

UPDATE Customers

SET Phone = '08-53339879'

WHERE CustomerID = '12345';

Uppdatera flera fält

UPDATE Customers

SET CompanyName= 'Web Academy AB', ContactTitle = 'CEO'

WHERE CustomerID = '12345';

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 33

DELETE

Tar bort en rad från en tabell

DELETE FROM Customers

WHERE CustomerID ='12345';

VIKTIGT: Om du glömmer WHERE-satsen så töms hela

tabellen (du kan inte ångra).

DELETE FROM Customers;

Satsen tar bort alla rader (tabellen töms).

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 34

18

Övningar

Svara på följande frågor från Northwind databasen.

Skriv SQL-satser, testa och spara resultatet som CSV.

1. Visa en lista över alla kontaktpersoner?

2. Visa en sorterad lista (A-Ö) på alla kontaktpersoner?

3. Från vilka länder kommer kunderna? Visa en tabell över dessa länder.

4. Hur många kunder finns det i databasen? Visa en tabell över alla kunder.

5. Hur många kunder finns det i USA? Visa en tabell över dessa kunder.

6. Hur många kunder finns det i varje land? Visa en tabell.

7. Visa en lista på alla kunder som har kontor i Tyskland?

8. Visa information om kunden som har ”Berglund” som efternamn?

9. Visa en lista över alla kunder som inte kommer från USA?

10. Visa en lista över alla produkter som finns i lagret.

35