05 podstawy SQL 2id 5972 ppt

background image

Bazy Danych

Europejska Wyższa Szkoła Informatyczno-
Ekonomiczna
Mgr inż. Piotr Greniewski

Wykład 5: Podstawy SQL – część 2

background image

Copyright by Piotr Greniewski

2

Spis treści

Bazy danych wstęp

Geneza relacyjnych baz danych

Podstawy relacyjnych baz danych

Podstawy-SQL-1

Podstawy-SQL-2

Podstawy-SQL-3

Operacje na danych

Transakcje i blokady

Normalizacja

background image

Copyright by Piotr Greniewski

3

Funkcje skalarne i arytmetyczne

-

Podsumowanie

Funkcje arytmetyczne mogą być używane w
klauzuli SELECT oraz WHERE.

Kolumny wyliczone mogą być nazwane przez
zastosowanie klauzuli AS.

Funkcje skalarne mogą być używane do
zmiany reprezentacji danych.

Funkcje skalarne mogą być używane do
wydobycia lat, miesięcy oraz dni z różnych
formatów daty.

Wyrażenie CASE pozwala na wybór wartości
dla kolumny w zależności od zdefiniowanego
warunku.

background image

Copyright by Piotr Greniewski

4

Funkcje kolumnowe i grupujące

-

Funkcje kolumnowe

Istnieją następujące funkcje kolumnowe, które
mogą być używane w klauzulach SELECT i
HAVING:

SUM – funkcja oblicza sumę wartości w określonych
kolumnach;

AVG – oblicza średnią wartość w kolumnie;

MIN- znajduje minimalną wartość w kolumnie;

MAX – znajduje maksymalną wartość w kolumnie;

COUNT – służy do zliczania wystąpień pewnej
wartości w wierszach.

background image

Copyright by Piotr Greniewski

5

Funkcje kolumnowe i grupujące

-

Funkcje kolumnowe

Zapytanie wyświetlające całkowitą sumę
pensji wszystkich pracowników, średnią
pensję, minimalną i maksymalną pensję oraz
ilość pracowników.

SELECT SUM (p.pensja) AS Pensja,

AVG (p.pensja) AS Srednia,
MIN (p.pensja) AS Pensja_min,
MAX (p.pensja) AS Pensja_max
COUNT (*) AS Ilosc

FROM pracownicy p;

6.1

background image

Copyright by Piotr Greniewski

6

Funkcje kolumnowe i grupujące

-

Funkcje kolumnowe

Funkcja COUNT może być używana do zliczania
wierszy zawierających powtarzającą się wartość.

Zapytanie zlicza liczbę działów i stanowisk w firmie.

SELECT COUNT ( DISTINC p.dzial ) AS ilosc_dzialow,

COUNT ( DISTINC p.stanowisko) AS

ilosc_stanowisk
FROM pracownicy p;

6.2

background image

Copyright by Piotr Greniewski

7

Funkcje kolumnowe i grupujące

-

Funkcje kolumnowe

Stosowanie funkcji kolumnowych można przeprowadzić
również na pewnym podzbiorze wierszy, stosując
klauzulę WHERE

.

SELECT SUM (p.pensja) AS pensja,

AVG (p.pensja) AS srednia,
MIN (p.pensja) AS pensja_min,
MAX (p.pensja) AS pensja_max
COUNT (*) AS ilosc

FROM pracownicy p
WHERE p.dzial = ‘obsluga klienta’;

6.3

background image

Copyright by Piotr Greniewski

8

Funkcje kolumnowe i grupujące

-

Klauzula GROUP BY

Klauzula GROUP BY grupuje wiersze o tej
samej wartości wyszczególnionych kolumn.
Funkcje agregujące w klauzuli SELECT operują
na każdej grupie osobno.

SELECT p.stanowisko, SUM (p.pensja) AS pensja,

AVG (p.pensja) AS srednia,
MIN (p.pensja) AS pensja_min,
MAX (p.pensja) AS pensja_max
COUNT (*) AS ilosc

FROM

pracownicy p

GROUP BY p.stanowisko
ORDER BY p.stanowisko;

6.5

background image

Copyright by Piotr Greniewski

9

Funkcje kolumnowe i grupujące

-

Klauzula HAVING

Klauzulę HAVING używamy razem z klauzulą GROUP BY
w celu ograniczenia wyświetlanych grup. Warunek
szukania musi zawierać funkcję agregującą. Po
zgrupowaniu wierszy przez klauzulę GROUP BY, klauzula
HAVING wyświetla tylko te wiersze spośród
zgrupowanych, które spełniają warunki wyszczególnione
w klauzuli HAVING.

SELECT p.nazwisko, SUM (w.cena)
FROM

pracownicy p, wypozyczenia w

WHERE p.nr_p = w.prac_wyd
GROUP BY p.nazwisko
HAVING SUM (w.cena) > 400
ORDER BY p.nazwisko;

6.7

background image

Copyright by Piotr Greniewski

10

Funkcje kolumnowe i grupujące

-

Podsumowanie

Funkcje kolumnowe mogą być użyte tylko w
klauzulach SELECT i HAVING.

Klauzula SELECT może zawierać tylko funkcje
kolumnowe oraz kolumny wskazywane w
klauzuli ORDER BY.

Klauzula HAVING może zawierać dowolne
funkcje kolumnowe operujące na dowolnych
kolumnach tabeli. Te kolumny nie muszą być
wyspecyfikowane w klauzuli SELECT.

background image

Copyright by Piotr Greniewski

11

Klauzula UNION

-

Łączenie wielu wyników zapytania

Klauzula UNION łączy dwa lub więcej polecenia
SELECT w jedną tabelę wynikową.

Klauzule SELECT muszą zwracać tę samą liczbę
kolumn.

Kolumny pokrywające muszą mieć tę samą szerokość i
typ danych.

Nazwy kolumn mogą być różne.

Klauzula UNION łączy dwa ( lub więcej) zestawy
wyników w jeden i jednocześnie usuwa duplikaty.

background image

Copyright by Piotr Greniewski

12

Klauzula UNION

-

Łączenie wielu wyników zapytania

Zapytanie zwraca dane o imieniu i nazwisku
wszystkich klientów i pracowników, których
nazwiska kończą się na „ski”. Ponieważ duplikaty
są usuwane tylko jedna osoba o nazwisku Jan
Kowalski będzie na liście.

SELECT imie, nazwisko
FROM

klienci

WHERE nazwisko LIKE ‘%ski’
UNION
SELECT
imie, nazwisko
FROM

pracownicy

WHERE nazwisko LIKE ‘%ski’;

7.2

background image

Copyright by Piotr Greniewski

13

Klauzula UNION

-

Łączenie wielu wyników zapytania

Klauzula UNION wyświetla wyniki uporządkowane
rosnąco. Jeśli chcemy zmienić porządek sortowania
musimy klauzulę ORDER BY umieścić na końcu.

SELECT imie, nazwisko
FROM

klienci

WHERE nazwisko LIKE ‘%SKI’
UNION
SELECT
imie, nazwisko
FROM

pracownicy

WHERE nazwisko LIKE ‘%SKI’
ORDER BY nazwisko DESC;

7.3

background image

Copyright by Piotr Greniewski

14

Klauzula UNION

-

Klauzula UNION ALL

Różnica pomiędzy klauzulą UNION a UNION ALL
polega na tym, że wynik łączenia zapytań klauzulą
UNION ALL zawiera powtarzające się wiersze.

Klauzula UNION ALL działa szybciej niż UNION.

SELECT imie, nazwisko
FROM

klienci

WHERE nazwisko LIKE ‘%ski’
UNION ALL
SELECT
imie, nazwisko
FROM

pracownicy

WHERE nazwisko LIKE ‘%ski’
ORDER BY nazwisko DESC;

7.3

background image

Copyright by Piotr Greniewski

15

Klauzula UNION

-

Podsumowanie

Wyniki zapytania SELECT z tą samą liczbą kolumn,
będących tego samego typu danych, mogą być łączone
przy pomocy klauzuli UNION.

Klauzula UNION sortuje dane wynikowe i usuwa
duplikaty.

Klauzula UNION ALL działa szybciej niż UNION.

Użyj klauzuli UNION ALL gdy jesteś pewien, że łączone
wyniki nie zawierają duplikatów

background image

Copyright by Piotr Greniewski

16

Pod-zapytania

-

Używanie pod-zapytań

Chcemy wyszukać pracowników, którzy otrzymują
wynagrodzenie w kwocie wyższej niż średnia. Sprawdzamy
najpierw jaka jest średnia pensja w naszym przedsiębiorstwie.

SELECT AVG (p.pensja)
FROM

pracownicy p;

-----------------------------------------
Wynik wynosi 1530;

8.1

Teraz szukamy pracowników zarabiających powyżej
średniej.

SELECT p.imie, p.nazwisko, p.dzial, p.stanowisko
FROM

pracownicy p;

WHERE p.pensja > 1530;

8.1

background image

Copyright by Piotr Greniewski

17

Pod-zapytania

-

Używanie pod-zapytań

Można to zrobić przy użyciu jednego pod-zapytania

SELECT p.imie, p.nazwisko, p.dzial, p.stanowisko
FROM

pracownicy p

WHERE p.pensja > (SELECT AVG (p.pensja)

FROM

pracownicy p);

8.1

background image

Copyright by Piotr Greniewski

18

Pod-zapytania

-

Używanie słowa kluczowego NOT IN

Słowo kluczowe NOT IN pozwala na zidentyfikowanie wszystkich
elementów w zbiorze A, które nie występują w zbiorze B.

Tomasz Adamczak

Warszawa

Paweł

Fiodorowicz Warszawa

Anna

Kowalska

Wrocław

Piotr

Malczyk

Warszawa

Tomasz

Adamczak

Warszawa

Aniela

Dalgiewicz

Wrocław

Krzyszto

f

Dobrowols

ki

Wrocław

Anna

Kowalska

Wrocław

NOT

IN

ZBIÓR A

ZBIÓR B

Paweł

Fiodorowic

z

Warszawa

Piotr

Malczyk

Warszawa

A NOT IN

B

background image

Copyright by Piotr Greniewski

19

Pod-zapytania

-

Używanie słowa kluczowego NOT IN

Poniższe zapytanie wyświetla listę samochodów, których do tej
pory nie wypożyczył żaden klient. Zapytanie wybiera te
samochody, które nie znajdują się w tabeli wypożyczenia.

SELECT s.nr_samochodu, s.marka, s.typ
FROM

samochody s

WHERE s.nr_samochodu
NOT IN
( SELECT w.nr_samochodu
FROM wypozyczenia w);

8.3

background image

Copyright by Piotr Greniewski

20

Pod-zapytania

-

Używanie słowa kluczowego ALL

Zapytanie będzie wykonywane w dwóch krokach. Najpierw wykonywane
jest pod-zapytanie, które znajduje średnią pensję w każdym dziale.
Następnie każda pensja pracownika, porównywana jest z listą średnich
pensji. Wyświetleni zostaną pracownicy, których pensja jest wyższa od
wszystkich średnich pensji obliczonych w pod-zapytaniu.

SELECT p.imie, p.nazwisko, p.dzial, p.stanowisko,

p.pensja
FROM

pracownicy p

WHERE
p.pensja > ALL ( SELECT AVG (p.pensja)

FROM pracownicy p
GROUP BY p.dzial);

8.3


Document Outline


Wyszukiwarka

Podobne podstrony:
06 podstawy SQL 3id 6524 ppt
05 Geoelektryka02 SP 2id 5953 ppt
05 Geoelektryka01 intro 2id 5951 ppt
06 podstawy SQL 3id 6524 ppt
2= Wykład wprowadzający Podstawowe pojęcia genet Prof Grzeszczak cz 2id 20087 ppt
05 Powikłania w trakcie i po usunięciu zęba Zapalenie zębodołu 2id 5549 ppt
05 podstawy gospodarki fianansowej MSPid 5794 ppt
06 Podstawy syntezy polimerówid 6357 ppt
Podstawy elektroniki i energoelektroniki prezentacja ppt
11 Resusc 2id 12604 ppt
09 Podstawy chirurgii onkologicznejid 7979 ppt
1 GENEZA KOMERCYJNEGO RYNKU OCHRONY W POLSCE 2id 9262 ppt
2 Podstawowe definicje (2)id 19609 ppt
20 2id 21226 ppt
08 BIOCHEMIA mechanizmy adaptac mikroor ANG 2id 7389 ppt

więcej podobnych podstron