(Samokształcenie: kurs z Udemy)
-
Teoria baz danych.
-
Język zapytań SQL.
-
Instalacja SQL Server oraz SQL Server Management Studio (SSMS).
- SELECT - wybór tabel, kolumn (podaje się konkretne kolumny po nazwie albo * jako wszystko)
- FROM - źródło danych bo może być z jednej tabeli, a może być z kilku tabel (np. FROM jedna tabel lub FROM kilka tabel)
- WHERE - polecenie filtrujące przed zaimportowaniem danych (chcemy mieć te rekordy ale spełniające taki, a taki warunek)
- GROUP BY - grupowanie danych: kiedy odfiltrowaliśmy już to co chcieliśmy, to teraz grupujemy te dane po konkretnej kolumnie (można też używać tu funkcji agregujących takich jak SUM, MIN, MAX)
- HAVING - filtrowanie ale (grup!!!) i kiedy już zaimportujemy dane i chcemy odrzucić pewne grupy, które się potworzyły na skutek importu SELECT
- ORDER BY - sortowanie: rosnąco lub malejąco po konkretnych kolumnach
- DQL (Data Query Language)
Odpytywanie: SELECT, WHERE, GROUP BY
- DML (Data Manipulation Language)
Modyfikacja: UPDATE, INSERT, DELETE
- DDL (Data Definition Language)
Tworzenie i modyfikacja obiektów: CREATE TABLE, ALTER VIEW, DROP
- DCL (Data Control Language)
Kontrola uprawnień: GRANT, DENY, REVOKE
- TCL (Transaction Control Language)
Obsługa transakcji: COMMIT, BEGIN TRAN, ROLLBACK(Więcej o podzbiorach SQL pod tym linkiem)
- SELECT - Wybór kolumn
- SELECT TOP - Wyświetla wyniki nie tylko "od góry" ale jeśli posortuję ORDER BY DESC to wyświetli podaną ilość "od dołu".
- SELECT DISTINCT (link to query) - Wyświetla wartość unikalną danego zapytania, np. jeśli jest
- Jan Kowalski,
- Mateusz Kowalski,
- Andrzej Kowalski, itd...
to SELECT DISTINCT przy sortowaniu "ORDER BY Nazwisko" wyświetli jako wynik "Kowalski" ale już tylko 1 raz.
(Więcej pod tym linkiem)
- SELECT - Wybór kolumn i modyfikacje
- SELECT [kolumna_1] + ' is a ' + [kolumna_2] - Wyświetla łączone zapytanie (robi to w jednej kolumnie) ale dane w łączonej kolumnie muszą być tego samego typu.
Printscreen do tej konkatenacji z opisem pod tym linkiem, a tutaj bezpośredni link do tego zapytania.
(Chcesz się dowiedzieć co to jest konkatenacja?)
- SELECT SUBSTRING(wyrażenie/kolumna, start, długość) - wyświetla wyrażenie od podanego przez nas znaku, przez podaną przez nas ilość znaków.
(Printscreen z wyjaśnieniem do tego zapytania oraz samo zapytanie)
- CAST([kolumna/wyrażenie] AS [typ_danych]) - zmienia typ danych dla podanego przez nas wyrażenia/kolumny (np. liczby całkowite zmienia w zmiennoprzecinkowe AS FLOAT)
vs
- CONVERT([typ_danych], [kolumna/wyrażenie]) - też zmienia typ danych; inny sposób składni
(Printscreen oraz CAST vs CONVERT query są tutaj.)
- WHERE - Filtrowanie danych
- Wielkość liter nie ma znaczenia przy imporcie zapytań bo dane są niewrażliwe na wielkość znaków (CI - Case Insensitive), chyba że w kolumnie są dane wrażliwe na wielkość znaków (CS - Case Sensitive).
- Przy filtrowaniu WHERE możemy łączyć warunki przy pomocy operatorów AND czy OR link do printscreena. A link do zapytania SQL tutaj.
Przy czym AND ma pierwszeństwo wykonania przed OR, chyba że zapytanie OR znajduje się w nawiasie, wówczas będzie wykonane jako pierwsze bo nawias jest przed AND.
- WHERE - Dodatkowe opcje filtrowania
- WHERE [kolumna] BETWEEN 'b' AND 'e'
Printscreen z opisem Between...And tutaj, a plik z zapytaniem SQL do tego przykładu tutaj.
- WHERE [kolumna] LIKE 'e%' / '_e'
Printscreen z opisem Like tutaj, a plik z zapytaniem SQL do tego przykładu tutaj.
- WHERE [kolumna] IN(konkretne wartości)
Pozwala na import wyników, które spełniają warunek, np. IN(41,45,50) i tylko te >wyniki będą wyświetlone.
- WHERE [kolumna] IS NULL / IS NOT NULL
Printscreen z opisem IS NULL tutaj, plik z zapytaniem SQL do tego przykładu tutaj, a screen z IS NOT NULL tutaj i jego SQL query tutaj.
- ORDER BY - Sortowanie danych
Ale jeśli jest np.
ORDER BY [kolumna_1] desc, [kolumna_2] asc
to oznacza, że [kolumna_1] będzie sortowana malejąco ale jeśli znajdzie się w niej kilka takich samych wyszukań (np. kilka takich samych stanowisk pracy) to w [kolumna_2] będą one posortowane rosnąco.
Printscreen z opisem tutaj, a plik z zapytaniem SQL do tego przykładu tutaj.
- CAST, CONVERT, STR - typy danych i ich konwersja
-- Wyświetla typy danych w danej tabeli
exec sp_help 'Nazwa_tabeli'
-- np.
EXEC sp_help 'HumanResources.Employee'
Printscreen z przykładem tutaj
Poznane dotychczas rodzaje danych: char (tekst), int (liczba stała), float (liczba zmienno przecinkowa), date (data) /datetime (data i godzina).
- GETDATE - zwraca datę w formacie RRRR-MM-DD GG:MM:SS.ms
Chociaż zawsze można to ograniczyć do samej daty:
/*
Zamienia bieżącą datę i godzinę w formacie [RRRR-MM-DD GG:MM:SS.ms]
na datę [RRRR-MM-DD]
*/
SELECT cast(getdate() as date)
- DATEDIFF - zwraca różnicę w latach, kwartałach, miesiącach, itd...
-- Zwraca różnicę w datach
DATEDIFF([datepart] , [data początkowa/kolumna] , [data końcowa/kolumna])
Gdzie [datepart] to m.in. 'year', 'quarter', 'month', 'dayofyear', 'day', 'week', 'hour'
Printscreen z opisem tutaj, a plik z zapytaniem SQL do tego przykładu tutaj
A tutaj jeszcze inny screen i jego SQL zapytanie do bardziej rozbudowanego przykładu, w którym odejmuję od siebie wyniki innych odejmowań (różnice z innych operacji odejmowania).
- DATENAME - zwraca typ danych nvarchar (np. 'weekday' poda Friday).
Printscreen z przykładem tutaj, a zapytanie SQL tutaj
- STR - zwraca typ danych varchar
STR ([wyrażenie/kolumna], [długość podanego wyniku], [ilość miejsc po przecinku])
-- np.
SELECT STR(123.45, 6, 1)
-- da nam wynik
123.5
-- bo 6 to była MAKSYMALNA długość wyrażenia, jaką mogło nam wyświetlić, a liczy jako miejsce wszystko: zarówno cyfrę, jak i przecinek.
- ISNUMERIC, ISDATE, ISNULL - Walidacja danych