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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

8039fe0 · Aug 30, 2023
Jan 30, 2021
Jan 4, 2021
Jan 4, 2021
Jul 19, 2021
Aug 30, 2021
Mar 2, 2021
Aug 25, 2021
Sep 13, 2021
Sep 7, 2021
Aug 30, 2021
Jul 9, 2021
Aug 25, 2021
Aug 25, 2021
Jul 9, 2021
Jul 14, 2021
Aug 30, 2023
Jul 16, 2021
Jul 19, 2021
Jul 19, 2021
Jul 21, 2021
Jul 19, 2021
Jul 19, 2021
Jul 12, 2021
Jul 7, 2021
Jul 9, 2021
Jul 9, 2021
Jul 16, 2021
Aug 2, 2021
Jul 9, 2021
Aug 30, 2021

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