#SQL02-Kontynuacja poprzedniego wpisu, serwer do ćwiczeń mssql, mysql oraz coś więcej niż podstawowy SQL

Reading Time: 10 minutes

Witajcie w kolejnej części wpisu o SQLu.
Jest to kontynuacja wpisu numer 1 czyli :
https://gregkaqa.pl/index.php/2020/04/02/sql01-wstep-informacje-o-bazach-oraz-o-sql-proste-przyklady/
Potraktujcie ten wpis jako zajawkę, a nie pełnoprawny tutorial odnośnie SQLa, zastosowałem tu skróty myślowe albo mniejsze lub większe niedoprecyzowania. Myślę, że we wpisie numer 3, jako, że będziecie mieli serwer SQLa, będziecie móc realnie ćwiczyć przykłady.
(Zakładam, że na razie go nie macie.)

Przypominam dwa dobre miejsca do nauki SQLa to :
https://www.hackerrank.com/ – bawiąc uczy, ucząc bawiąc oraz
https://www.w3schools.com/sql/

Wchodzimy na stronę – > https://www.microsoft.com/pl-pl/sql-server/sql-server-downloads# szukamy i pobieramy instalator wersji Express czyli bezpłatnej

Instalacja MSSQL Server edycja express czyli darmowa

Do użytku dla siebie wystarczy nam darmowa edycja serwa.
Należy pamiętać o jednej rzeczy, to wasz prywatny sprzęt czyt. dysk SSD, więc zalecam i później pokażę jak startować serwer ręcznie a nie automatycznie co start systemu.
Dlaczego jest to ważne ? Po wgraniu przykładowego zestawu do bazy, możecie zbytnio ‚orać’ swój prywatny dysk.
A jak wiadomo jedyne czym powinniśmy ‚orać’ SSD to gry :D.

Jesli wybierasz basic, trudno twoja sprawa ja wybiore custom.
Jeśli już się wahasz znaczy, że jesteś niewolnikiem !

Przejście dalej, dostajemy informacje o niewspieraniu języka polskiego, który aktualnie mam w systemie.

Troszkę miejsca nam potrzeba 🙂 około 6,5GB klikamy install.
Jest to instalator online i wszystko pobiera w locie.

Jak nie masz to możesz pobrać management studio skrótowo znane jako SSMS lub jak mało miejsca to heidisql, ale z nim jak coś Ci nie będzie działać radź sobie sam.
Link SSMS : https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15
Osobiście wolę wersje 17, 18 mimo stable była czasami ‚średnio’ stabilna.
Jednak przekonasz się sam.
Link heidi : https://www.heidisql.com/download.php

No dobra instaluj serwer ale na co mi te programy, z tych linków ?
Bo instalujesz serwer a musisz mieć klienta. 😀
Klient od MS, dla mssql najlepiej działa ale i odpowiednio zajmuje trochę miejsca na dysku i zjada trochę więcej pamięci ram niż inne programy.
Klient

Wybieramy opcje numer jeden czyli nowa instancja serwera SQL
Akceptujemy przechodzimy dalej
Opcjonalnie możemy zaznaczyć opcje aktualizacji.
Instalacja rozpoczyna
Prawie wszystko się udało poza warnem odnośnie zapory.

https://docs.microsoft.com/en-us/sql/sql-server/install/configure-the-windows-firewall-to-allow-sql-server-access?view=sql-server-ver15

Tutaj odznaczcie Machine Learning services and language potem trzeba dodatkowo coś ściągać na etapie początków jest to zbędne.
Instancje zostawiam taką jak jest.

Tu jedyne co zmieniam to mixed mode i będę się logować na su hasłem 🙂

Akceptujemy tutaj potem podobne okno next.
To samo pyton.
Jeśli nie odznaczyliście sekcji dotyczącej machine learning, to będziecie musieli się cofać lub ściągać pliki .cab 🙂
Prawie koniec …
Potem wam pokażę jak się uczyć SQLa w oparciu o lokalny serwer MYSQL to się przekonacie jaka jest różnica. Jak skończy wszystko powinno być na zielono, niestety zamknąłem i nie zrobiłem screena, trudno.

Sprawdzenie połączenia i próba połączenia się z serwerem

Łatwo jest w managment studio rozpoznać gdzie jest nasz lokalny serwer.
Wybieramy file – > connection object … – > rozwijamy server name i tam mamy browser for more, następnie w oknie wskazujemy nasz lokalnie wykryty serwer w kategorii databases engine w oknie local servers.
Jeśli ogarniasz bardziej to w możesz mieć ten serwer w sieci domowej, fimowej i wtedy paczasz na drugą kartą o nazwie network services.

Loguje się zależnie od tego co wybrałeś w instalacji, albo autoryzacja Windows lub hasłem do domyślnego użytkownika czyli sa.
Ja wybrałem opcję numer dwa i wtedy authentication zmieniasz na SQL sever auth…
Jeśli masz jakieś timeouty itp. pierwsze sprawdź zaporę i link.
Najszybsza droga rozwiązania problemu z zaporą przy korzystaniu z bezpiecznej sieci jest wyłączenie zapory.
Nie rób tego, w miejscach WiFi bez hasłowych i niezaufanych.

Struktura wygląda następująco po zalogowaniu się.
No się naczekaliśmy i umordowaliśmy by postawić serwer na laptopie.
Żartuje, tak naprawdę to dalej, dalej, dalej. 😀

Ok co dostaliśmy ?
No prawie, że nic tabele systemową, tymczasową.
Tu nie ma się co rozpisywać.
Klikając prawym na databases możemy zrobić nową bazkę.

Możemy ustawić ustawienia ale raczej niewiele z tego wykorzystacie.
Na początek zostawiacie domyślne.

Domyślnie bazy tworzą się w schemacie dbo.

Takie coś jest dobre na początek, kiedy już nie będziecie mieli do tego siły.
Najlepiej pobrać przykładowy zestaw danych przygotowany przez Mikrosyf.
https://docs.microsoft.com/pl-pl/dotnet/framework/data/adonet/sql/linq/downloading-sample-databases

https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs

https://raw.githubusercontent.com/microsoft/sql-server-samples/master/samples/databases/northwind-pubs/instnwnd.sql

Trzeba odświeżyć sekcję serwerów i pojawi nam się nowy serwer o nazwie Northwind

Ma to jakiś logiczny sens na początku. Tabele na pierwszy rzut oka będzie można łączyć grupować wyniki itp. Dobra baza na początek.

Drugi skrypt jaki dostaliśmy do dyspozycji to Pubs.

Jakaś inna także ciekawa baza.

Jeśli nie znacie bazy i macie trochę czasu, nie polecam na wielkich bazach tego robić, ale kilka tabelek możecie podejrzeć w sposób diagramowy.

Z diagramu jako, że bierzemy jakiś losowy nieznany nam skrypt.
Za pomocą tego łatwego tricku wiemy jak wygląda schemat bazy aby pisać zapytania.

Bawiąc uczy, ucząc bawi

Połączyłem dwie tabele i trzecią z innej bazy jest to bardzo proste jak widzicie. Ale dobra na zapytania przyjdzie czas później.

Zobaczyliście jak w prosty sposób postawić Serwer bazy MSSQL.
Skąd wziąć przykładowe dane.
Czas na szybkiego mysqla i na koniec coś ciekawego pokażę.
Mysql docenią ludzie, którzy nie mają zasobów by trzymać taką kobyłe jak serwer MSSQLa. Jednak na potrzeby tego co chciałem pokazać będzie baza MariaDB taki oddzielny nurt w kontrze do Oraclowego MySQLa.
https://hostclub.pl/mariadb-vs-mysql-porownanie-baz-danych/
Nie zweryfikowałem tych informacji, więc jak coś szukajcie na własną rękę.

Zatrzymujemy oraz wyłączamy automatycznie włączanie usługi MS Server

Sql server configuration manager lub w usługach.
Przestawiamy spis SQL Server az Automatic na Manual i tyle

MariaDB najszybsza droga na postawienie normalnego serwera SQL – instalacja XAMPP

Najszybszą metodą jest ściągnięcie fajnego pakietu o nazwie XAMPP.
XAMPP to nic innego jak uproszczony pakiet serwera WWW czy aplikacji opakowany w niezbędne narzędzia.
Ten kto próbował kiedyś przygodę ze storonami WWW, na pewno kojarzy program.
Program to składowa ‚apaszkowych przyjaciół’ 😀
https://www.apachefriends.org/pl/index.html

https://www.apachefriends.org/pl/add-ons.html

Oprócz tego program oferuje także wsparcie np. aby wyprobówać pakiet blogowy WordPress czy liczne cmsy jak np. Joomla!
W skład XAMPP wchodzi serwer Apache, zawiera pożądaną przez nas MariaDB, do tego php, phpmyadmin, perl, xampp control panel, open ssl, tomcat w wersji 7 oraz mercury mail transport.

W między czasie możecie ściągnąć mysql workbench lub używać heidisql on tez to obsłuży.

Link – > https://dev.mysql.com/downloads/workbench/

Ważne aby uruchomić XAMPP jako administrator.
Odpalamy MySQL klikając start oraz serwer Apache i klikamy na Admin na sekcji MySQL
http://localhost/phpmyadmin/server_privileges.php?adduser=1

W PhpMyAdmin zróbcie sobie nowego użytkownika i dajcie mu prawa do wszystkiego.

Z niewiadomych powodów workbench mi wywala do pulpitu po dodaniu połączenia, czemu ? NIE WIEM !
Na szczęście w HeidiSQL jakoś się udało
Importujemy z skryptu SQL udostępnionego przez Oracle bazkę o nazwie World.
Po użyciu refresha mamy naszą bazę.

W ramach ćwiczeń możecie korzystać z której tam chcecie, mi pasuje MSSQL, tak więc dalsza część wpisu będzie właśnie na podstawie tego co tam będę pokazywać.

Wyłączenie automatycznego odpalania MYSQL

Nie trzeba wyłączać, gdyż automatycznie wszystkie moduły w XAMPP CP są wyłączone 🙂
Zatrzymujemy tylko usługi klikając stop, jak jest X w kolumnie service znaczy, że zatrzymana.
Czas na przerwę 🙂

SQL czym jest widok ?

Wracamy do SQLa, widok czyli view czym jest widok ?
W sekcje zapytania czyli query możemy sobie dawać zapytania i je wykonywać.
Jednak z pewnych dla siebie potrzeb lub potrzeb raportu, programu robimy to tak, że do ciała widoku zapisujemy nasze zapytanie i odwołujemy się prostą składnią lub np. jakąś metodą w kodach aby przetwarzać owy widok.

Widok to nic innego jak opakowanie zapytania w obiekt na bazie danych pod daną nazwą jako typ view. Zaletą tego jest przechowywanie bardzo skomplikowanych zapytań w bazie i szybkie uzyskanie do nich dostępu poprzez select np. top 10 from nazwabazy.nazwaschmeatu.nazwawidoku
Lub po prostu wołanie na widok jeśli aktualnie jesteśmy na danmej bazie / używamy use i nasz obiekt jest w domyślnym schemacie dbo.
Jeśli widok nazwiemy tak samo jak np. tabele to wywali błąd, że obiekt o nazwie już istnieje.
Widoki najlepiej tworzyć z prefiksami, ale co firma itp. to inne prefiksy.

Np. Vauthors, authorsV, v_authors, authors_v
Najlepsza opcja moim daniem to taka z v_.

Funkcje w SQL – wstęp

Wstęp dlatego, że temat jest dość rozległy i tutaj postaram się powiedzieć w jak największym skrócie co to funkcje w SQL oraz co nieco o nich.
Funkcje mogą być tabelaryczne i skalane.
Ważną cechą jest to, że funkcja musi coś zwracać a procedura nie.
Funkcje można wywołać z procedury ale odwrotnie już nie.
Funkcje posiadają parametry tylko jako wejściowe.
Zaś procedury mogą posiadać i wejściowe i wyjściowe.

Zaczniemy od skalarnych czyli tych łatwiejszych.

create function dbo.gelo()
returns varchar(8000) as
begin
return 1+2;
end


SELECT [dbo].[gelo] ()

alter function dbo.gelo()
returns varchar(8000) as
begin
return 'mojapierwszafunkcjasql';
end

SELECT [dbo].gelo

alter function dbo.gelo(@ebeebe varchar(8000))
returns varchar(8000) as
begin
declare @gelo varchar(8000)
set @gelo = (select top 1 advance from dbo.grzegorzowy);
return 'wartosc ' + @gelo + ' ' + @ebeebe + 'mamy godzine : ' + convert(varchar, getdate(), 20);
end

Ulepszyłem nieco funkcje i pokazałem też, że oprócz przekazywania dowolnej ilości funkcji, można w środku też deklarować dowolne zmienne.
Raczej bym powiedział, że te parametry to zmienne a te w ciele funkcji to stałe, dopóki nie zalterujesz funkcji i coś w nich nie zmienisz.

Funkcje zwracające tabele

No i tamto było skalarne, a teraz zwracamy tabele w funkcji.

Ważne aby typy się zgadzały no i wiadomo ilość kolumn.
Tzn. z niezgodnymi typami da się czasami założyć funkcje ale przy jej wywołaniu dostaniecie error.
Jako, że po scrollu widzę, że wpis będzie przeogromny przejdę do procedur i reszta SQLowej wiedzy w kolejnym wpisie

Procedury co to a na co to

Niejako obiekt w którym przechowywać można powtarzalny kod taki jak inserty, updaty albo selecty. Procedury mają taką właściwość że mają typy parametrów wejściowych i wyjściowych. Kompilowane są w czasie ich wywoływania exec.

Procedury proste bez parametrów

No i proszę przykład czegoś co właściwie można by było opakować w widok a da się w procedure.
Procedura z parametrem
Taki przykład parametry wejściowe i wyjściowe

Można też robić procedury tymczasowe przed nazwą dajemy #
np. create procedure #proceduratymczasowa bla bla kod …

Generalnie to luźna zajawka dot. funkcji i procedur nie ma np. informacji, że w procedurach używamy WITH czyli opcji procedur.
A także parametru dwukierunkowego czyli parametr jako wejściowy, może być jednocześnie wyjściowym.
Ale o tym w następnym wpisie, pamiętajcie tu dostajecie zajawkę i najlepiej byłoby douzupełnić to co przeczytacie tutaj o wiedzę z innych miejsc, może jakieś książki, wykłady ? Oraz musi no musi być praktyka.
Dlatego zainstalujcie sobie ten serwer i trenujcie sami.
W następnym wpisie chce także poruszy temat triggerów bazodanowych, uzupełnić bardziej spójnie to co tutaj napisałem.
No i oczywiście do tego postawionego serwera przećwiczcie sobie przykłady z w3school sekcja SQL.

Pozdro i #zostanwdomu

1 thought on “#SQL02-Kontynuacja poprzedniego wpisu, serwer do ćwiczeń mssql, mysql oraz coś więcej niż podstawowy SQL

Napisz komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.