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