Lektion 2 - DynamicOS Web Academy

Databasutveckling
Introduktion till SQL och TSQL
© Copyright
Mahmud Al Hakim
mahmud@webacademy.se
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
1
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är
https://msdn.microsoft.com/en-us/library/bb510741(v=sql.110).aspx
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
4
2
www.w3schools.com/sql
SQL Tutorial
Copyright Mahmud Al Hakim www.webacademy.se 2015
5
SQL (Structured Query Language )
SQL
DDL
DML
Data Definition Language
(Databeskrivning)
Data Manipulation Language
(Databearbetning)
CREATE
SELECT
DROP
INSERT
ALTER
DELETE
UPDATE
6
3
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, mahmud@alhakim.org, 070-7556405
7
Öppna en databas med SQL
USE northwind;
8
4
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
5
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.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Hämta allt från tabellen Categories
Hämta allt från tabellen Contacts
Hämta allt från tabellen Employees
Hämta allt från tabellen Orders
Hämta allt från tabellen Products
Hämta allt från tabellen Region
Hämta allt från tabellen Shippers
Hämta allt från tabellen Suppliers
Hämta allt från tabellen Territories
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
6
Hämta specifika kolumner
SELECT ContactName FROM Customers;
13
Hämta specifika kolumner
Exempel
1.
2.
3.
4.
5.
6.
7.
8.
Hämta CompanyName från tabellen Customers
Hämta Country från tabellen Customers
Hämta City från tabellen Customers
Hämta CompanyName och Address från tabellen
Customers
Hämta Country och City från tabellen Customers
Hämta fullständig adress från Customers
(CompanyName, ContactName, Aderss, PostalCode,
City och Country)
Hämta en lista på produktnamn från tabellen Products.
Hämta en lista på produktnamn och antal i lager
(UnitInStock) från tabellen Products.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
14
7
SELECT TOP


Med SELECT TOP kan hämta en del av en stor tabell.
T.ex. visa de första fem raderna
OBS!
Det är inte alla
databashanterare som
har SELECT TOP
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
15
Alias (kolumn alias)
SELECT ContactName As Namn FROM Customers;
16
8
Alias (tabell alias)
SELECT C.ContactName FROM Customers AS C;
17
Skapa Alias som kombinerar flera
kolumner
SELECT Address+', '+City+', '+PostalCode+', '+Country AS Address
FROM Customers;
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
18
9
Ta bort dubbletter med DISTINCT
SELECT DISTINCT City FROM Customers;
19
Hämta och filtrera specifika kolumner
med WHERE
SELECT * FROM Customers
WHERE Country = 'Mexico';
20
10
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
11
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
12
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
13
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
14
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
15
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
16
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
17
Ö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
18