background image

Podstawy języka SQL

mgr inż. Joanna Wiśniewska

Instytut Systemów Informatycznych

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Polecenie SELECT

Składnia:
SELECT nazwaKol, nazwaKol, …
FROM nazwaTabeli;

* - wszystkie kolumny

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Przykład 

(tabela Pracownicy)

Pesel

Imię

Nazwisko

Miasto

Ulica

Nr domu

9787598

7

Adam

Kowalski

Warszawa

Miła

34

5680000

6

Michał

Nowak

Kraków

Wesoła

23

3459999

0

Alicja

Wojciechowska

Kielce

Centralna

56

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Przykład

SELECT Imię, Nazwisko, Miasto FROM 
Pracownicy; 

Imię

Nazwisko

Miasto

Adam

Kowalski

Warszawa

Michał

Nowak

Kraków

Alicja

Wojciechowsk

a

Kielce

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Wybór warunkowy WHERE

SELECT nazwaKol FROM nazwaTab 
WHERE warunekLogiczny;

NrID

Pensja

Zyski

Stanowisko

456

7500

1500

kierownik

328

6500

1500

kierownik

345

6000

1500

kierownik

753

5000

1250

kierownik

678

3000

500

ochrona

234

2500

200

ochrona

674

2000

100

ochrona

325

1800

1000

ekspedient

982

1500

800

ekspedient

tabela Stanowiska

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Przykład

SELECT NrID FROM Stanowiska 
WHERE Pensja >= 5000;

NrID

456

328

345

753

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Przykład 2

SELECT NrID FROM Stanowiska 
WHERE Stanowisko = ‘ochrona’;

NrID

678

234

674

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Operatory AND i OR

Aby wyświetlić kierowników zarabiających  
ponad 5500:
SELECT NrID FROM Stanowiska WHERE 
(Pensja > 5500) AND (Stanowisko = 
‘kierownik’);

Aby wyświetlić ekspedientów lub osoby        
      z zyskiem poniżej 700:
SELECT NrID FROM Stanowiska WHERE  
(Zysk < 700) OR (Stanowisko = 
‘ekspedient’);

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Łączenie operatorów

SELECT NrID FROM Stanowiska 
WHERE Stanowisko=‘kierownik’ 
AND Pensja=6000 OR Zyski=1500; 
   [(…AND …) OR …]

SELECT NrID FROM Stanowiska 
WHERE Stanowisko=‘kierownik’ 
AND (Pensja=6000 OR 
Zyski=1500);

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Operatory IN i BETWEEN

Lista numerów kierowników i 
ekspedientów: SELECT NrID FROM 
Stanowiska WHERE Stanowisko IN 
(‘kierownik’, ‘ekspedient’);

Pracownicy zarabiający pomiędzy 2000 a 
6000: SELECT NrID FROM Stanowiska 
WHERE Pensja BETWEEN 2000 AND 6000;

Można też używać: NOT IN i NOT 
BETWEEN.

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Operator LIKE

Jeżeli chcemy znaleźć pracowników, 
których stanowisko zaczyna się na 
literę „k”: SELECT NrID FROM 
Stanowiska WHERE Stanowisko LIKE 
‘k%’;

…LIKE ‘%a’;

…LIKE ‘%c%’;

Można też używać: NOT LIKE.

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

„Dzikie karty”

Match

expression

Description

Returns

'Mc%'

Search for every name that begins with the letters 

Mc

McEvoy

'%er'

Search for every name that ends with er

Brier, Miller, 

Weaver, 
Rayner

'%en%'

Search for every name containing the letters en.

Pettengill, Lencki, 

Cohen

'_ish'

Search for every four-letter name ending in ish.

Fish

'Br[iy][ae]r'

Search for Brier, Bryer, Briar, or Bryar.

Brier

'[M-Z]owell'

Search for all names ending with owell that begin 

with a single letter in the range M to Z.

Powell

'M[^c]%'

Search for all names beginning with M' that do not 

have c as the second letter

Moore, Mulley, 

Miller, 
Masalsky

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Dane pochodzące z wielu tabel

Autorzy

# idA
* Imie
* Nazwisko

AutKs

→ idA
→ idK

Książki

# idK
* Tytuł

1

N

1

N

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Aliasy AS

Popularną techniką jest tworzenie 
aliasów nazw tabel – zwłaszcza, gdy 
stosujemy podzapytania lub 
operujemy na wielu tabelach, np. 
SELECT a.nazwisko FROM Autorzy AS 
a WHERE a.idA=AutKs.idA;

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Złączenia

JOIN (tzw. equijoin), UNION

INNER (default) i OUTER JOIN

OUTER JOIN może być lewo- lub 
prawo-stronny (LEFT, RIGHT)

Składnia:
SELECT nazwyKol FROM nazwaTab 
LEFT OUTER JOIN nazwaTab ON 
warunek;

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

UNION

SELECT IDPosiadacza FROM Towary 

UNION SELECT IDKupującego FROM 

Zamówienia [WHERE …] – numery ID 

osób zostaną wyświetlone w jednej 

kolumnie (typy łączonych kolumn 

muszą więc być takie same)

Instrukcję UNION można zastosować 

np. do połączenia całych dwóch tabel 

(o ile pozwalają na to typy danych)

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

INNER JOIN (default)

SELECT Klienci.nazwisko, Sprzedaż.IDK, 
Sprzedaż.ilość FROM Klienci JOIN 
Sprzedaż ON Klienci.IDK=Sprzedaż.IDK

Klienci

IDK

nazwisko

1

Kowalski

2

Nowak

3

Krajewski

4

Majewski

Sprzedaż

IDK

IDP

ilość

1

2

15

1

3

5

4

1

37

3

5

11

4

2

1003

nazwisk

o

IDK

ilość

Kowalski

1

15

Kowalski

1

5

Majewski

4

37

Krajewski

3

11

Majewski

4

1003

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

LEFT/RIGHT OUTER JOIN

SELECT Klienci.nazwisko, Sprzedaż.IDK, 
Sprzedaż.ilość FROM Klienci LEFT OUTER 
JOIN Sprzedaż ON Klienci.IDK=Sprzedaż.IDK

Klienci

IDK

nazwisko

1

Kowalski

2

Nowak

3

Krajewski

4

Majewski

Sprzedaż

IDK

IDP

ilość

1

2

15

1

3

5

4

1

37

3

5

11

4

2

1003

nazwisko

IDK

ilość

Kowalski

1

15

Kowalski

1

5

Majewski

4

37

Krajewski

3

11

Majewski

4

1003

Nowak

null

null

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

DISTINCT i ORDER BY

DISTINCT – eliminacja duplikatów 

(stosujemy przed nazwą kolumny)

ORDER BY – sortowanie 

wyświetlanych danych po zadanej 

kolumnie (ASC↑, DESC↓)
SELECT DISTINCT Nazwisko, Imie 

FROM Posiadacze, Zamowienia 

WHERE idSprzedawcy=idPosiadacza 

ORDER BY Nazwisko DESC;

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Funkcje agregujące

Dotyczą wierszy zawierających wartości
liczbowe:

SUM()

AVG()

MAX()

MIN()

COUNT(*) – zwraca ilość wierszy 

spełniających określony warunek

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Przykłady

SELECT SUM(Pensja) {AVG(Pensja)} 
FROM Stanowiska;

SELECT MIN(Zyski) {MAX(Zyski)} 
FROM Stanowiska WHERE Stanowisko 
= ‘kierownik’;

SELECT COUNT(*) FROM Stanowiska 
WHERE Stanowisko = ‘ochrona’;

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

GROUP BY i HAVING

GROUP BY – grupuje zwracane 
rekordy wg podanej kolumny, np. 
SELECT idPosiadacza, Rzecz FROM 
Antyki GROUP BY idKupującego;

HAVING – „mający”, np. SELECT 
idPosiadacza, Rzecz FROM Antyki 
GROUP BY idKupującego HAVING    
Cena >1000;

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Inne „pomocne” operatory

EXISTS (zwraca 0 lub 1), np. SELECT 

Imie, Nazwisko FROM PosiadaczeA 

WHERE EXISTS (SELECT * FROM 

Antyki WHERE Rzecz=‘stół’);

ALL, ANY

FIRST – SELECT FIRST * FROM 

PosiadaczeA ORDER BY Nazwisko;

TOP – SELECT TOP 5 * FROM 

PosiadaczeA ORDER BY Nazwisko;

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Niektóre funkcje matematyczne

ABS(X) – moduł z X,

CEIL(X) – zaokrąglenie w górę dziesiętnego X-a,

FLOOR(X) – zaokrąglenie w dół dziesiętnego X-a,

GREATEST(X,Y) – zwraca największą z tych dwóch 

wartości,

LEAST(X,Y) - zwraca mniejszą z tych dwóch wartości,

MOD(X,Y) – zwraca resztę z dzielenia X przez Y,

POWER(X,Y) – zwraca X do potęgi Y,

ROUND(X,Y) – zaokrągla X do Y miejsc po przecinku   

(gdy Y jest pominięte, zaokrąglenie następuje do 

najbliższej liczby całkowitej),

SIGN(X) – zwraca minus gdy X<O lub plus w innym 

wypadku,

SQRT(X) – zwraca pierwiastek kwadratowy z X.

background image

 

mgr inż. Joanna Wiśniewska ISI WCY

Operacje na tabelach

CREATE TABLE nazwa (nazwy i typy kolumn);

ALTER TABLE nazwa ADD (nazwa i typ 
kolumny);

INSERT INTO nazwaTab VALUES (…);
DELETE FROM nazwaTab WHERE 
warunekLogiczny;
UPDATE nazwaTab SET nazwaKol=…   
WHERE warunekLogiczny;

DROP TABLE nazwaTab;


Document Outline