Nauka TSQL'a w tydzień

Nauka TSQL'a w tydzień
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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

grzesiek51114
grzesiek51114
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 4 lata
  • Postów:2442
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.

edytowany 1x, ostatnio: grzesiek51114
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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

BlackBad
  • Rejestracja:ponad 8 lat
  • Ostatnio:3 miesiące
  • Postów:454
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/

W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
0

super, dziękuję Wam bardzo ;)

hyde
  • Rejestracja:ponad 16 lat
  • Ostatnio:około miesiąc
  • Postów:456
0

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

W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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.

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 1x, ostatnio: Haskell
Marcin.Miga
Wszystko to się zgadza... Ale po warunkiem, że zaznaczysz, że dotyczy to MS-SQL. Np. postgreSQL takich ograniczeń nie ma.
Haskell
Autor pytania miał na myśli T-Sql czy mi się wydaje?
hyde
W typowej praktyce to będziesz pisał procedury. Funkcje raczej rzadko.
KiK
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 3 lata
  • Postów:88
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/

W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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źć

fasadin
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0
edytowany 1x, ostatnio: fasadin
hyde
t-sql będzie znacznie uboższy od pl/sql. Oczywiście da się zrobić w t-sql pewnie wszystko to co pl/sql, tylko się trzeba więcej nastukać w klawisze i więcej kodu wyprodukować.
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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

edytowany 1x, ostatnio: Wojtus123
Marcin.Miga
Na jakim egzaminie?
W1
teście do pracy
CJ
Co miałeś na teście ?
W1
wywoływanie jakichś funkcji, które zwrócą jakieś wartości walutowe, tworzenie procedur, szczerze, to nawet ciężko mi to powtórzyć. jedyne co mi się udało zrobić to złączyć tabele i napisać ogólnie jak wygląda ciało funkcji/procedury. prosiłbym Was o jakąś pomoc w tutorialach, bo myślałem, że poniekąd to umiem, a jak popatrzyłem na zadania to biała ściana. chyba, że pójdę na jakieś korki z tego, bo samemu ciężko to ogarnąć:P
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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ć.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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.

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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?

Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 3x, ostatnio: Haskell
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
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 ?;)

edytowany 1x, ostatnio: Wojtus123
Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
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.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 1x, ostatnio: Haskell
W1
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
0

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

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)