Podstawy języka SQL

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


Wyszukiwarka

Podobne podstrony:
Podstawy języka SQL, TYTAN 5
Podstawy języka SQL Kuśnierz
bd ii cw1 podstawy jezyka sql
Podstawy języka SQL
Podstawy Jezyka SQL

więcej podobnych podstron