Skip to content

Self learn of SQL with Udemy course. I finished this course with certificate.

Notifications You must be signed in to change notification settings

git-atoms/SQL-training-01

Repository files navigation

SQL - język zapytań do bazy danych SQL Server

(Samokształcenie: kurs z Udemy)



Rozdział pierwszy: Wstęp


  1. Teoria baz danych.

  2. Język zapytań SQL.

  3. Instalacja SQL Server oraz SQL Server Management Studio (SSMS).

  4. Import bazy AdventureWorks2014.

  5. Wynik testu z rozdziału pierwszego.


Podsumowanie składni SQL:

  • 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


Podsumowanie podzbiorów SQL:

  • 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)




Rozdział drugi: Odpytywanie danych



  1. SELECT - Wybór kolumn

Podsumowanie:

  • 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)



  1. SELECT - Wybór kolumn i modyfikacje

Podsumowanie:

  • 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.)




  1. WHERE - Filtrowanie danych

Podsumowanie:

  • 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.



  1. WHERE - Dodatkowe opcje filtrowania

Podsumowanie:

  • 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.




  1. ORDER BY - Sortowanie danych

Podsumowanie:

  • ORDER BY Printscreen tutaj, oryginalne query tutaj.

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.




Rozdział trzeci: Konwersja, walidacja i działania arytmetyczne na danych



  1. CAST, CONVERT, STR - typy danych i ich konwersja

Podsumowanie:

-- 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.


  1. ISNUMERIC, ISDATE, ISNULL - Walidacja danych

About

Self learn of SQL with Udemy course. I finished this course with certificate.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published