1 1. Polecenie SELECT • instrukcja pobierajca informacj z bazy

Transkrypt

1 1. Polecenie SELECT • instrukcja pobierajca informacj z bazy
1.
Polecenie SELECT
•
instrukcja pobieraj ca informacj z bazy danych
(z tabeli, perspektywy i innych obiektów bazy danych)
•
u ytkownik posługuj cy si ni musi mie uprawnienia do pobierania danych
•
wynikiem zapytania jest zawsze tablica o okre lonych kolumnach i
wierszach, spełniaj cych nało one warunki
•
wiersze zwracane w zapytaniu mog si powtarza
SELECT [DISTINCT] lista kolumn, wyra e , funkcji
FROM lista tabel, perspektyw
WHERE warunek logiczny, okre la wybierane wiersze
GROUP BY lista kolumn, wg których odbywa si b dzie grupowanie
HAVING warunek logiczny, okre la wybierane grupy
ORDER BY lista kolumn [ASC/DESC]
Wybór wszystkich danych:
SELECT * FROM employee
Wybór okre lonych kolumn:
SELECT first_name, last_name, salary
FROM employee
•
DISTINCT – eliminuje powtarzaj ce si wiersze
SELECT DISTINCT job_country
FROM employee
•
wyra enia składaj si z kolumn, operatorów, stałych i funkcji
•
operatory: +, -, *, / , || (ł czenie napisów)
•
kolejno
wykonywania działa
jest standardowa, je eli zaistnieje potrzeba,
mo na u ywa nawiasów
1
•
warunek logiczny (w klauzulach WHERE / HAVING)
przyjmuje warto ci TRUE, FALSE, NULL
(NULL oznacza warto
pust )
warunek mo e mie posta :
warto
operator relacji warto
operatory relacji < , > , <= , >= , = ,<>
warto
IN (lista warto ci)
warto
BETWEEN warto
1 AND warto
2
operatorów logicznych
warunki mo na ł czy za pomoc
AND, OR, zaprzecza przez NOT
•
•
porównywanie fragmentów ła cuchów
warto
napisowa LIKE ‘_napis%’
warto
napisowa STARTING WITH ‘napis’
warto
napisowa CONTAINING ‘napis’
SELECT kolumna AS nowa_nazwa ... - utworzenie aliasu wy wietlanej kolumny
(alias wieloczłonowy: „alias nazwy kolumny”)
•
aliasy nazw tabel – SELECT * FROM tabela alias_tab
•
tabela.kolumna – nazwa tabeli jako kwalifikator identyfikuj cy pole
•
alias.kolumna – alias nazwy tabeli jako kwalifikator pola
•
sprawdzenie, czy warto
warto
jest warto ci pust NULL
IS [NOT] NULL
klauzula ORDER BY
•
sortowanie danych w porz dku rosn cym – ASC (domy lnie)
•
sortowanie danych w porz dku malej cym – DESC
•
ustalenie poło enia warto ci pustych NULL:
ORDER BY kolumna [ASC | DESC] NULLS FIRST
//na pocz tku
ORDER BY kolumna [ASC | DESC] NULLS LAST
//na ko cu listy
2
•
funkcja UPPER(warto
napisowa) – zamienia tekst na wielkie litery
•
funkcja LOWER(warto
napisowa) – zamienia tekst na małe litery
•
funkcja CAST(dane ródłowe AS nowy typ danych) – zmiana typu danych
================================================================
•
funkcje agregacji
COUNT(*) – zlicza wiersze
SUM(kol)
- sumuje warto ci w kolumnie
AVG(kol)
- liczy redni w kolumnie
MIN(kol)
- minimum
MAX(kol)
- maksimum
//tylko dane liczbowe
//tylko dane liczbowe
je eli jako argument funkcji agregacji podamy (DISTINCT nazwa kolumny), to
uwzgl dnione zostan tylko unikalne warto ci; mo na jako argument funkcji
poda tak e wyra enie (odpowiedniego typu)
COUNT(kolumna) zlicza niepuste warto ci
COUNT(DISTINCT kolumna) policzy ile jest ró nych, niepustych, warto ci w
kolumnie.
SELECT COUNT(*),
SUM(SALARY)
FROM employee
WHERE dept_no=’600’
SELECT AVG(DISTINCT salary)
FROM employee
SELECT LIST(full_name, '/ ')
FROM employee
GROUP BY dept_no
SELECT MIN(LOWER(job_code)), dept_no
FROM employee
GROUP BY 2
LIST ([ALL | DISTINCT] wyra enie [, separator]) – funkcja agregacji, zwraca
ci g składaj cy si z niepustych warto ci z danej grupy, oddzielonych przecinkiem
(domy lnie), lub podanym separatorem
opcja ALL jest domy lna, DISTINCT wyeliminuje powtórzenia
================================================================
klauzula GROUP BY : grupowanie wzgl dem podanych kolumn (mo na
poda kilka) lub wyra e
– jedn
grup
tworz
te wiersze, których warto ci w
wymienionych kolumnach s wspólne
zapytanie zwróci tyle wierszy, ile jest ró nych warto ci w kolumnach, wg
których grupujemy;
3
stosowana w poł czeniu z funkcjami agregacji, do wyliczenia warto ci
funkcji w poszczególnych grupach
na li cie pobieranych danych w klauzuli SELECT mog pojawi si tylko:
•
nazwy kolumn lub wyra enia, wzgl dem których grupujemy (te, które s
w klauzuli GROUP BY),
•
wyra enia skonstruowane z u yciem kolumn (wyra e ), wzgl. których
grupujemy,
•
stałe,
•
funkcje agreguj ce dotycz ce innych kolumn;
w GROUP BY mo na poda pozycj kolumny na li cie SELECT, zamiast
jest nazwy
je eli w zapytaniu jest klauzula ORDER BY, to mo na w niej umie ci tylko
kolumny (wyra enia), wzgl. których grupujemy
SELECT COUNT(*), AVG(SALARY),
dept_no
FROM employee
GROUP BY dept_no
SELECT SUM(SALARY),
job_country, dept_no
FROM employee
GROUP BY job_country, dept_no
ORDER BY SUM(SALARY)
SELECT COUNT(DISTINCT dept_no),
SUM(SALARY), job_country
FROM employee
GROUP BY 3
ORDER BY SUM(SALARY)
•
SELECT SUM(SALARY),
job_country, dept_no
FROM employee
WHERE hire_date>=’12.10.1990’
GROUP BY job_country, dept_no
ORDER BY SUM(SALARY)
DESC
klauzula HAVING słu y do wybierania grup, spełniaj cych pewien warunek
logiczny, okre lony tylko na kolumnach (wyra eniach), wzgl. których
grupujemy
wyst puje tylko w poł czeniu z GROUP BY
w warunku po klauzuli HAVING, dotycz cym wyboru grup, mog wyst pi
funkcje agregacji
je eli w zapytaniu mamy te
warunek logiczny dotycz cy wierszy, to
powinien by w WHERE
SELECT COUNT(*), AVG(SALARY), dept_no
FROM employee
WHERE hire_date>=’10.10.1999’
GROUP BY dept_no
HAVING SUM(salary)>=30000 AND COUNT(*)>=3
ORDER BY AVG(salary) DESC
4