Nauka TSQL'a w tydzień

0

Witam,

Do nauczenia się mam w TSQL takich zapytań:

Tworzenie:
· zapytań (ze złączeniami tabel zawierające INNER JOIN, LEFT JOIN itp.),
· widoków (jak wyżej),
· procedur składowanych SQL,
· funkcji.

Kiedyś uczyłem się SQL'a, ale tylko podstawy. Czy jest szansa nauczenia się tego w jeden tydzień siedząc przy tym cały dzień? ;)

pozdrawiam

0

Na poziomie podstawowym każdy z tych punktów spokojnie w jeden dzień połkniesz, tym bardziej, że napisałeś, iż znasz podstawy SQL.

0

czy ktoś poleca z Was sqlpedia.pl? ;) bo właśnie zaczynam z tego się uczyć i nie wiem, czy będzie w miarę ok

0

Zdecydowanie jest OK - wielo krotnie tutaj polecane.

Poćwiczyć możesz sobie natomiast tu: http://sql-exercises.edu.pl/category/tsql/sredniozaawansowany-t-sql/

0

super, dziękuję Wam bardzo ;)

0

Na poziomie najbardziej elementarnym pewnie sie da w tydzień....

0

a co będzie najtrudniejsze z tego? większość zapytań oraz łączenie tabel już umiem. co to są te widoki? i procedury składowane? bo jak patrzyłem funkcje to na razie wydają się dosyć trudne.

3

Widoki, funkcje oraz procedury składowane służą w uproszczeniu do zapisywania w bazie często wykonywanych zapytań, tak aby nie trzeba było ich pisać ponownie. Dla tych obiektów silnik bazodanowy tworzy plany zapytań, dzięki czemu wykonują się szybciej niż za pierwszym razem. Obiekty te różnią się między sobą możliwościami. Przykładowo w widoku nie można używać order by (można to ominąć), w procedurze można używać procedur, widoków i funkcji, a w funkcji można używać funkcji i widoków, ale nie można już procedur. Z kolei w widoku można używać funkcji, ale tylko takich, które zwracają tą samą wartość dla tych samych parametrów. Funkcji masz dwa rodzaje skalarne i tabelaryczne. Skalarne zwracają jedną wartość, a tabelaryczne tabelę, z kolei procedury mogą zwracać wszystkom Oczywiście to nie wszystko na ten temat. Co jest najtrudniejsze? Chyba procedury, chociaż funkcje są podobnie trudne.

0

Do nauki polecam stronkę Anonco.pl
ćwiczenia z kodem zapytania tu: http://anonco.pl/sql/
opis poleceń i funkcji tutaj: http://anonco.pl/sql-polecenia-funkcje/

0

ktoś poleci jakiś kurs/tutorial do nauki z procedur i funkcji? nic ciekawego i dosyć w przystępny sposób wytłumaczone nie mogę znaleźć

0

czy mógłby ktoś jeszcze coś polecić? poległem na tym na egzaminie i chcę się do tego przyłożyć. może ktoś polecić coś w miarę przystępnego?

edit: może jakaś książka, gdzie będzie wszystko od początku do końca wytłumaczone, jeżeli chodzi o funkcje i procedury składowane?

pozdrawiam

0

Przepraszam, że tak spamuje, ale czy ktoś byłby w stanie polecić książkę, w której dość przystępnie wytłumaczone jest tworzenie funkcji, procedur składowanych, widoków? ale na trochę wyższym poziomie

1

IMHO masz braki w podstawach SQL, stąd masz problemy z egzaminem. Cofnij się krok wstecz, żeby zrobić dwa kroki do przodu.

Napisz jakie miałeś pytania na egzaminie, to będzie łatwiej ocenić gdzie masz braki i czego powinieneś się poduczyć.

0

nie pamiętam praktycznie nic z tego testu, jedyne co pamiętam, to dosyć proste operacje na złączeniach tabel i operacje na tworzeniu i modyfikacji tabel.

reszta to funkcje, procedury i widoki, tylko takie bardziej zaawansowane.

moje pytanie: czy jest jakaś książka, która w bardziej przystępny sposób tłumaczy właśnie procedury składowane, funkcje i widoki? Teraz czytam T-SQL dla zaawansowanych, ale mnie to przerasta.

0

Ale widoki, funkcje i procedury to nie jest żadna filozofia w porównaniu ze złączeniami tabel. Nie rozumiem z czym masz problem, to są proste rzeczy i jedynie wierzchołek góry.

0

nie rozumiem za bardzo tych wszystkich deklaracji zmiennych @, ogólnie całe ciało funkcji, procedur itp znam

np. taka funkcja

create function krezus(@z int)
RETURNS @lista table (id int PRIMARY KEY,
nazwisko varchar(22), dochod int)
as
begin
if @z > 5000
insert @lista select id_prac,nazwisko,zarobki
from pracownik1 where zarobki > @z
RETURN
end

rozumiem, że ta funkcja, zwraca listę pracowników, którzy zarabiają powyżej 5000, i jeżeli jakiś pracownik zarabia mniej, to wtedy go nie pokazuje. ogolnie nie rozumiem za bardzo całej konstrukcji ;)

ze złączeniami tabel nie mam problemów.

0

A co to za szkoła i jaki to egzamin?

1
Wojtus123 napisał(a):

nie rozumiem za bardzo tych wszystkich deklaracji zmiennych @, ogólnie całe ciało funkcji, procedur itp znam

np. taka funkcja

create function krezus(@z int)
RETURNS @lista table (id int PRIMARY KEY,
nazwisko varchar(22), dochod int)
as
begin
if @z > 5000
insert @lista select id_prac,nazwisko,zarobki
from pracownik1 where zarobki > @z
RETURN
end

rozumiem, że ta funkcja, zwraca listę pracowników, którzy zarabiają powyżej 5000, i jeżeli jakiś pracownik zarabia mniej, to wtedy go nie pokazuje. ogolnie nie rozumiem za bardzo całej konstrukcji ;)

ze złączeniami tabel nie mam problemów.

@z to parametr który funkcja przyjmuje na wejściu, @lista to zmienna tabelaryczna, którą funkcja zwraca na wyjściu. Tak, dobrze zrozumiałeś cel tej funkcji. Funkcja zwraca tabelę zawierającą pracowników wraz z ich zarobkami, jeżeli funkcja przyjmie jako parametr wartość większą od 5000 i jeżeli pracownicy zarabiają więcej niż 5000.

Cechą charakterystyczną funkcji (nie tylko w SQL) jest to, że wykonuje jakieś obliczenia i musi zwrócić wartość (lub resultset), dla porównania procedura nie musi przyjmować żadnych wartości na wejściu i nie musi również nic zwracać. Procedura ponadto może przyjmować na wejściu zmienne typu OUTPUT, które mogą służyć do zwracania wartości z procedury. W funkcji nie można używać transakcji, ani bloku try-catch, nie można również wykonywać operacji DML takich jak: INSERT, DELETE, UPDATE. Dla porównania procedura może używać transakcji, try-catch oraz DML. Funkcję można użyć w zapytaniu SELECT, a procedury nie.

0

to nie szkoła, tylko rozmowa o pracę ;)

dzięki Haskell, sporo rozjasniłeś. powiedz mi tylko, jakie funkcja może przyjmować parametry wejściowe i wyjściowe? te parametry @z i @lista to przykladowe nazwy, nie muszą się znajdować w tabeli jako nazwy kolumn? i dlaczego czasami w środku funkcji są deklaracje (declare)? np taka funkcja

CREATE FUNCTION lala (@id INT)
RETURNS INT
BEGIN
declare @nr INT
set @nr = (SELECT MAX(IDPrac) FROM pracownik WHERE IdDzialu=@ID)
RETURN @nr
END
albo czasami jest BEGIN i END, a czasami jak w tej poprzedniej funkcji nie ma?

a tak poza tym, co do tej funkcji z zarobkami powyzej 5 tys. jaki jest cel pisania takiej funkcji? nie latwiej napisac polecenie select, from, where zarobki > 5000 ?;)

1
Wojtus123 napisał(a):

to nie szkoła, tylko rozmowa o pracę ;)

dzięki Haskell, sporo rozjasniłeś. powiedz mi tylko, jakie funkcja może przyjmować parametry wejściowe i wyjściowe? te parametry @z i @lista to przykladowe nazwy, nie muszą się znajdować w tabeli jako nazwy kolumn? i dlaczego czasami w środku funkcji są deklaracje (declare)? np taka funkcja

CREATE FUNCTION lala (@id INT)
RETURNS INT
BEGIN
declare @nr INT
set @nr = (SELECT MAX(IDPrac) FROM pracownik WHERE IdDzialu=@ID)
RETURN @nr
END
albo czasami jest BEGIN i END, a czasami jak w tej poprzedniej funkcji nie ma?

a tak poza tym, co do tej funkcji z zarobkami powyzej 5 tys. jaki jest cel pisania takiej funkcji? nie latwiej napisac polecenie select, from, where zarobki > 5000 ?;)

Funkcja może przyjmować dowolne parametry, podobnie może dowolne zwracać. Jedyne ograniczenie to takie, że może zwracać jedną wartość i nazywa się wtedy funkcją skalarną, lub może zwracać tabelę (resultset) i wtedy jest nazywana funkcją tabelaryczną (table-valued function). Nazwy parametrów są dowolne i nie muszą w żaden sposób pokrywać się z nazwami kolumn. Nazwy powinny programiście coś mówić na temat tego, co znajduje się w danym parametrze. Jeżeli w ciele funkcji jest DECLARE to znaczy, że twórca uznał, że do wykonania obliczeń jest potrzebna dodatkowa zmienna i dlatego ją zadeklarował, a później użył. BEGIN, END jest konieczne wtedy gdy funkcja potrzebuje kilku operacji, żeby ostatecznie zwrócić wynik, tak aby było wiadomo gdzie ciało funkcji się zaczyna, a gdzie się kończy. Przykładowo jeżeli najpierw programista zadeklarował zmienną, a później zrobił SELECT, to już musi umieścić kod w bloku BEGIN-END. Jeżeli ciało funkcji składa się wyłącznie z jednej operacji (np. sam SELECT), to BEGIN-END jest nieobowiązkowe i dlatego w poprzedniej funkcji go nie było.

Celem istnienia funkcji (widoków i procedur również) jest to, że kod umieszczony w jej ciele jest zapisywany w bazie danych pod określoną nazwą (nazwą funkcji) i można go użyć wielokrotnie w przyszłości, bez konieczności każdorazowego pisania zapytania, wystarczy tylko znać nazwę tej funkcji. Dodatkowo do funkcji można przydzielić uprawnienia i dać możliwość jej wykonywania tylko określonym użytkownikom. MSSQL dodatkowo może sobie zapisywać w bazie plan zapytania dla takiej funkcji, dzięki czemu funkcja w przyszłości będzie się wykonywała szybciej, niż zapytania napisane z palca.

0

dzięki, Twoje odpowiedzi dały mi więcej niż godzinne czytanie książki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1