1
Databasutveckling
Introduktion till SQL och TSQL
© Copyright
Mahmud Al Hakim
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