Bazy danych - Zaawansowane polecenia SQL
1. Eliminowanie powtarzających się rekordów (DISTINCT):
SELECT DISTINCT nazwa_kolumny FROM nazwa_tabeli;
2. Pokazywanie wartości atrybutu, które nie zostały określone (IS NULL):
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE nazwa_kolumny2 IS NULL;
3. Sprawdzenie, czy wprowadzona wartość atrybutu nie jest pusta (IS NOT NULL):
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE nazwa_kolumny2 IS NOT NULL;
4. Wyświetlanie czegoś i odpowiadającym im wartości (wartości wyświetlane są pod określoną nazwą):
SELECT nazwa_kolumny, wartość AS "nazwa_aliasu" FROM nazwa_tabeli;
5.Wyświetlanie dwóch kolumn jeśli brak wartości w drugiej kolumnie - wyświetli 0;
SELECT nazwa_kolumny, NVL(nazwa_kolumny2 ,0) nazwa_kolumny2 FROM Samochody;
Zamiast NVL można użyć w MySQL - IFNULL()
6. Funkcje znakowe:
SELECT DISTINCT nazwa_kolumny FROM nazwa_tabeli;
2. Pokazywanie wartości atrybutu, które nie zostały określone (IS NULL):
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE nazwa_kolumny2 IS NULL;
3. Sprawdzenie, czy wprowadzona wartość atrybutu nie jest pusta (IS NOT NULL):
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE nazwa_kolumny2 IS NOT NULL;
4. Wyświetlanie czegoś i odpowiadającym im wartości (wartości wyświetlane są pod określoną nazwą):
SELECT nazwa_kolumny, wartość AS "nazwa_aliasu" FROM nazwa_tabeli;
5.Wyświetlanie dwóch kolumn jeśli brak wartości w drugiej kolumnie - wyświetli 0;
SELECT nazwa_kolumny, NVL(nazwa_kolumny2 ,0) nazwa_kolumny2 FROM Samochody;
Zamiast NVL można użyć w MySQL - IFNULL()
6. Funkcje znakowe:
- UPPER - zamiana wszystkich liter napisu na wielkie
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE UPPER(nazwa_kolumny);
- LOWER - zamiana wszystkich liter napisu na małe
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE LOWER(nazwa_kolumny);
- INITCAP - zamiana pierwszej litery w każdym wyrazie na wielką
SELECT INITCAP(nazwa_kolumny) FROM nazwa_tabeli;
- LPAD(wartość, n, 'ciąg') - uzupełnienie komórki z lewej strony podanym ciągiem, aż do długości n (np. LPAD(godziny,5, '0') FROM nazwa_tabeli --> otrzymamy: 00245)
- RPAD(wartość, n, 'ciąg') - uzupełnienie komórki z prawej strony podanym ciągiem, aż do długości n (czyli otrzymalibyśmy 24500)
- LTRIM/RTRIM - usunięcie z lewej/prawej strony napisu pewnej liczby określonych znaków
- CONTAT (łączenie tekstu)
np. SELECT CONTAT(imie,' ', nazwisko, 'ma adres', email) FROM handlowcy;
- SUBSTR - wyznaczanie z wejściowego napisu podłańcucha znaków (przydatne do tworzenia np. inicjałów)
- LENGTH - oblicza długość łańcucha znaków podanego jako argument
- INSTR - wskazuje początkową pozycje podłańcucha w łańcuchu wejściowym
SELECT nazwa_kolumny FROM nazwa_tabeli WHERE INSTR(nazwa_kolumny,'<pierwsza litera w napisie>')=<liczba>;
7. Funkcje numeryczne:
- AVG - obliczanie średniej wartości ze wszystkich wartości z danej kolumny
SELECT AVG(nazwa_kolumny) AS nazwa_aliasu FROM nazwa_tabeli;
- SUM - zwraca sumę wszystkich podliczonych wszystkich rekordów w danej kolumnie
SELECT SUM(nazwa_kolumny) AS nazwa_aliasu FROM nazwa_tabeli;
- MAX/MIN - pokaże wartość maksymalną/minimalną, jaka występuje w rekordach w danej kolumnie
SELECT MAX(nazwa_kolumny) AS nazwa_aliasu FROM nazwa_tabeli;
- ROUND - zaokrąglanie liczb, do określonej liczby po przecinku
SELECT ROUND(liczba do zaokrąglenia, do ilu ma miejsc po przecinku zaokrąglić);
- MOD - pokazuje resztę z dzielenia dwóch liczb (NIE WYNIK DZIELENIA!)
SELECT MOD(dzielna, dzielnik);
- DAYOFWEEK - po wprowadzeniu przez użytkownika jakiejś daty w formacie ("RRRR-MM-DD") dowiadujemy się jaki to jest dzień tygodnia (Zwraca liczbę od 1 do 7).
SELECT DAYOFWEEK("RRRR-MM-DD");
- CASE - dla każdego wiersza zwracanego w wyniku zapytania sprawdza warunek logiczny i w zależności od wyniku wypisuje komunikat podany po słowie kluczowym THEN.
SELECT nazwa_kolumny, nazwa_kolumny2,
CASE
WHEN nazwa_kolumny2 <warunek> THEN '<jakiś tekst>'
WHEN nazwa_kolumny2 <warunek> THEN '<jakiś tekst2>'
ELSE '<jakiś tekst3>
END
FROM nazwa_tabeli;
Warunek to np. większe od 0, mniejsze, równe itd.
- CURDATE - zwraca obecną datę
SELECT CURDATE();
- NOW - zwraca obecną datę i godzinę
SELECT NOW();
- DAYNAME - po wprowadzeniu przez użytkownika jakiejś daty w formacie ("RRRR-MM-DD") dowiadujemy się jaki to był dzień (nazwę dnia tygodnia)
SELECT DAYNAME("RRRR-MM-DD");
- MONTH - zwraca numer miesiąca podany w dacie w formacie ("RRRR-MM-DD")
SELECT MONTH("RRRR-MM-DD");
8. CONTAT_WS - funkcja umożliwiająca łączenie z separatorem. Pierwszym argumentem funkcji jest znak, który będzie używany jako separator. Drugim argumentem są wyrażenia będące łączone.
SELECT CONTAT_WS("separator","<pierwsze słowo>","<drugie słowo>" ...) AS nazwa_aliasu;