Rożnica między programowanie w SQL a tworzeniem zapytań?

0

Witam,
Do czego się stosuje programowanie w SQL a do czego tworzenie zapytań? Nauczyłem się tworzyć zapytania w SQL z pewnego tutoriala (SELECT,ALTER,UPDATE,CREATE DATABASEitd.itp. z 30-40 było tych poleceń)a tu patrzę i jest jeszcze coś takiego jak programowanie w SQL. Nie bardzo rozumiem o co chodzi. Ktoś mógłby wytłumaczyć?

0

zapewne chodzi o to ze systemy bazodanowe umozliwiaja duzo wiecej niz tylko zapytania sql o ktorych napisales
pozwalaja na inne manipulowanie danymi, zawieranie wrecz logiki biznesowej po stronie systemow bazodanowych, ale takze manipulowanie ustawieniami bazy, calego serwera bazodanowego
generalnie duzo moznaby jeszcze napisac, ale wszystko zalezy od konkretnego systemu bazodanowego
dodatkowo kazdy system bazodanowy na swoj sposob "rozszerza" standard sql dodajac wlasna skladnie, ktora umozliwia specyficzna manipulacje danymi

0

Chodzi o to że procedury przechowywane i wyzwalacze mogą zawierać całkiem skomplikowany kod z instrukcjami warunkowymi, pętlami itp który jest rodzajem uproszczonego języka programowania. Niekiedy nie da się uniknąć umieszczenia kodu programu właśnie w tej części nazywanej poziomem serwera bazy danych. Jeśli da się jakąś część kodu tam nie umieszczać, to umieszcza się ją w warstwie "środkowej" czyli części "client" programu client-server i wtedy trzeba bardziej uważać bo ten kod musimy powtarzać we wszystkich aplikacjach, które łączą się z tą bazą, a z drugiej strony nie musimy wtedy tworzyć kodu w języku serwera bazy danych tylko robimy go w języku znanego nam kompilatora.

0

czyli chodzi o to, że takie zapytanie SELECT można samemu zaimplementować oraz że można do tych zapytać dodać inne implementując je?

0

Nie nie, chodzi o to że możesz napisac funkcje/procedury które robią więcej niż możesz zrobic jednym zapytaniem. Załóżmy że masz na przykład Bazę Danych biura turystycznego. Chciałbyś mieć procedurę DodajUczestnikaWycieczki(), do której podałbyś jedynie dane uczestnika i kliknął OK (zamiast wklepywać ręcznie insert into...). Poza tym taka procedura powinna też zmniejszyć ilość miejsc dostępnych w danej wycieczce itd.
Uważasz ze normalne byłoby żeby każdy pracownik umiał SQL i z palca za każdym razem wklepywał to zapytania do bazy? A moze lepiej zamknąć to w jakiejs procedurze którą tylko sie wywoluje? ;)
Idąc dalej naszym tokiem rozumowania: załóżmy że masz tabele Klienci. Możesz mieć klienta który jest osobą fizyczną, albo firmą. Masz procedurę DodajKlienta(), która w zależności od tego czy mamy do czynienia z osobą fizyczną czy z firmą wpisuje pewne dane do innych tabel. Przydaloby się mieć tam zwykłego if'a (instrukcję warunkową), żeby zrobić:
if(osoba_fizyczna)
rób cośtam
else
rób coś innego
I mamy taką możliwość ;)

0

Oczywiście chodziło mi o część "środkową" aplikacji trójwarstwowej client-server nazywanej "server".
Pierwsza warstwa to jest server bazy danych, druga warstwa - server aplikacji i trzecia - client aplikacji.
Różne bazy danych mają różną składnię języka programowania procedur przechowywanych i wyzwalaczy. Dla przykładu interbase ma składnię przypominającą język Pascal. Dlatego trzeba poszukać artukułów dotyczących programowania procedur przechowywanych i wyzwalaczy odnoszących się do konkretnego typu bazy danych, jakiej się używa.

0

A jak nazywa sie jezyk za pomocą ktorego kodzi się to? Czy to sie robi w Javie/C++ a po prostu dodatkowy nagłówek się dodaje czy jest odrębny język (inna semantyka, składnia)?

0

ok rozumiem.

0

Ja rozumiem programowanie w SQLu poprzez tworzenie tutaj:

-procedur
-funkcji
-wyzwalaczy

cala reszta to zapytania.

Tak jak masz programowanie w C++ i bys mial tam napisac strumien wejscia lub wyjscia to pomysl ze to zapytanie (trudno nazwac programowaniem napis hello word). A teraz pomysl by to rozbudowac. Piszesz funkcje zwracajaca wartosc ... czyli kilka zapytan zebranych po obrobce danych zwroca jakas wartosc albo procedure do obrobki danej i wyswietlenia jej. Ja tak to rozumiem ;-P

0

Prosty przykład jest taki, że chcemy wprowadzać do pola rekordu nazwiska które nie zawierają więcej niż jedno wystąpienie litery "ń". Można to napisać jako procedurę w języku programowania naszej aplikacji a można też napisać albo procedurę przechowywaną albo wyzwalacz, w języku bazy danych, która to procedura prawdopodobnie będzie miała kilka linii i wywoła wyjątek jeśli nazwisko będzie miało więcej niż jedną literę "ń".

0

Aha czaję czyli dla baz np. Oracle językiem programowania jest język PL/SQL. Da radę się tego w 1 dzień nauczyć tak jak tworzenia zapytań w SQL? Czy tam też jest dużo bibliotek jak w C/C++ i w 1 dzień tylko podstawy można opanować? Oraz jakie narzędzie do baz danych Oracle jest potrzebne by można w nim było kodzić a potem jakoś sprawdzać czy dobrze się zaprogramowało?

0

w 1 dzien? :D niemozliwe aby opanowac wszystkie niuanse, ale podstawy o jakich pisali porzednicy tak, czyli pisanie procedur, funkcji, wyzwalaczy (trigger) etc.
instalujac oracla, na pewno instaluje sie tez domyslnie jakis manager, nie pamietam nazwy i on pozwala na tworzenie wszelkich tego typu rzeczy
a jak sprawdzic? jesli execute danego query sie powiedzie, tzn. ze przynajmniej pod wzgledem semantyki napisalem wszystko ok, a czy dziala jak chciales musisz to wywolac (jesli to procedura/funkcja), jesli wyzwalacz to wymusic jego wywolanie

0

Nie ma możliwości nauczyć się w 1 dzień programowania. Nawet jeśli znasz już inne technologiie to w 1 dzień zdąrzysz się co najwyżej zapoznać z częścią składni języka. SQL to język do komunikacji z bazą oparty na standardzie SQL. PL/SQL to dodatek do SQL-a, czyli Pl/SQL to SQL + instrukcje programistyczne takie jak procedury, pętle, ify itd. Jeśli interesuje Cie nauką to tutaj znadziesz wprowadzenie do tematyki.

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