Trénink SQL

nobody

Trénink SQL
« kdy: 16. 01. 2016, 17:28:34 »
Ahoj dobří lidé,
existuje spousta projektů, na učení se programování na "reálných" / "rozumných" úkolech (codeacademy, code.org a dalsi). Znáte něco na SQL? Když v práci/ve škole dostanu nějaký data a otázku, kde řešení je napsat na to SQL dotaz. Problém je, že otázka bývá docela složitá a pak sqlko docela dlouhý. Nejde o to, že neumím group by nebo heaving ale když ten problém je dlouhej a komplikovanej, tak nemám úplně zkušenosti jako problém dekomponovat, a řešit.


Kit

Re:Trénink SQL
« Odpověď #1 kdy: 16. 01. 2016, 17:43:34 »
Nejlépe si nainstalovat vlastní DB server, spustit si konzoli a zkoušet, co všechno to snese. Po každém dotazu dostaneš ihned odpověď, takže hned vidíš, co bylo a co nebylo správně.

nobody

Re:Trénink SQL
« Odpověď #2 kdy: 16. 01. 2016, 19:42:36 »
rozdíl mezi project euler a nainstalovat si server a zkouset to je v tom, ze u eulera jedu od nejlehciho po nejslozitejsi a mam nad sebou vedei. kdezdo druhy zpusob vyzaduje sehnat rozumna data, nalit je do db (zatim v pohode) ale pak vymejslet rozumne otazky a psat na ne sql. a trening / uceni chapu jako moznost zobrazit si spravne reseni, nebo optimalni reseni - taky bych se chtel vypracovat k psani rychleho a efektivniho sql

ehmmm

Re:Trénink SQL
« Odpověď #3 kdy: 16. 01. 2016, 20:32:50 »
Budu tady mozna ukamenovan, ale ono to nejde zkouset primo v praci na skutecnych problemech? I za cenu toho, ze holt pujdes domu pozdeji a zkusis si to zadarmo pres cas?

qqqqqqqqq

Re:Trénink SQL
« Odpověď #4 kdy: 16. 01. 2016, 20:57:38 »
Nejlepší to má v bance. Tam rovnou může projíždět, kolik kdo bere a určitě budou všichni nadšení :D Nevím, jestli jsi myslel, že pracuje ve startupu, kde je MySQL na PC šéfa a na tom jede všechno, ale normálně to zase tak jednoduché není.


Kit

Re:Trénink SQL
« Odpověď #5 kdy: 16. 01. 2016, 21:16:32 »
Nejlepší to má v bance. Tam rovnou může projíždět, kolik kdo bere a určitě budou všichni nadšení :D Nevím, jestli jsi myslel, že pracuje ve startupu, kde je MySQL na PC šéfa a na tom jede všechno, ale normálně to zase tak jednoduché není.

V bance zase máš několik dalších databází pro takové experimenty. Nemůžeš chtít po vývojáři, aby si své aplikace neměl na čem řádně otestovat a rovnou ji nasadil naostro.

Kit

Re:Trénink SQL
« Odpověď #6 kdy: 16. 01. 2016, 21:20:44 »
Znáte něco na SQL? Když v práci/ve škole dostanu nějaký data a otázku, kde řešení je napsat na to SQL dotaz.

Vůbec ses nezmínil, které SQL, tedy konkrétně kterou databázi máš na mysli. Každá má totiž jiné rozšíření proti základu SQL a mnohé z nich ho ani nesplňují celý.

sql_lama

Re:Trénink SQL
« Odpověď #7 kdy: 16. 01. 2016, 22:55:43 »
http://sqlzoo.net/wiki/SQL_Tutorial (jakmile zvladnete z hlavy ty pokrocile priklady uvedene dole, tak si muzete bez ostychu zacit rikat SQL guru; ja osobne jsem nejeden z nich nedal a musel jsem se nechat inspirovat jejich resenim :().

Off topic: Na tech pokrocilych prikladech je krasne videt, ze SQL standard je velice nepodareny (a implementace od implementace se vyrazne lisi, takze jiz i pro stredne komplexni programy nelze psat ciste SQL a musi se "ifdefit") a samotne SQL je dost spatne navrzeny koncept (ma hrozne moc der a ani zdaleka nesplnuje dnesni pozadavky). Ani plne relacni databaze (napr. http://shark.armchair.mb.ca/~erwin/) nejsou vselek (v cem vsem je SQL slabe/nepouzitelne a jako to pripadne resit vcetne diskuze o plne relacnich jazycich lze nalezt v diskuzich pod ruzne zanorenymi odkazy na http://c2.com/cgi/wiki?StructuredQueryLanguage), a tak osobne sazim na Datalog-based databaze (napr. http://docs.datomic.com/query.html nebo FLOSS in-memory varianta https://github.com/tonsky/datascript), ktere resi snad vsechny stavajici technicke problemy databazi a zadne nove problemy mi nejsou zname.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Trénink SQL
« Odpověď #8 kdy: 16. 01. 2016, 23:03:52 »
http://sqlzoo.net/wiki/SQL_Tutorial (jakmile zvladnete z hlavy ty pokrocile priklady uvedene dole, tak si muzete bez ostychu zacit rikat SQL guru; ja osobne jsem nejeden z nich nedal a musel jsem se nechat inspirovat jejich resenim :().

Off topic: Na tech pokrocilych prikladech je krasne videt, ze SQL standard je velice nepodareny (a implementace od implementace se vyrazne lisi, takze jiz i pro stredne komplexni programy nelze psat ciste SQL a musi se "ifdefit") a samotne SQL je dost spatne navrzeny koncept (ma hrozne moc der a ani zdaleka nesplnuje dnesni pozadavky). Ani plne relacni databaze (napr. http://shark.armchair.mb.ca/~erwin/) nejsou vselek (v cem vsem je SQL slabe/nepouzitelne a jako to pripadne resit vcetne diskuze o plne relacnich jazycich lze nalezt v diskuzich pod ruzne zanorenymi odkazy na http://c2.com/cgi/wiki?StructuredQueryLanguage), a tak osobne sazim na Datalog-based databaze (napr. http://docs.datomic.com/query.html nebo FLOSS in-memory varianta https://github.com/tonsky/datascript), ktere resi snad vsechny stavajici technicke problemy databazi a zadne nove problemy mi nejsou zname.
Datalog je mnohem snazší na pochopení, ale SQL je na některé úlohy lepší.

sql_lama

Re:Trénink SQL
« Odpověď #9 kdy: 17. 01. 2016, 11:23:33 »
Datalog je mnohem snazší na pochopení, ale SQL je na některé úlohy lepší.
Zatim jsem se s zadnou takovou ulohou nesetkal a ani me teoreticky zadna takova nenapada :( Docela by me to zajimalo (castecne strkam nos do vyzkumu o databazich) - mate nejake priklady uloh, kde je SQL lepsi?

Jinak ohledne pochopeni SQL myslim, ze ciste relacni usporadani a algebra je vyrazne snazsi na pochopeni nez Datalog (jeste aby ne, vyjadrovaci schopnost Datalogu je silnejsi nez relacni algebry), ale SQL ma tolik vyjimek a divnych konstrukci apod., ze s vami mohu souhlasit, ze Datalog je z hlediska nauceni se (nikoliv pochopeni "co a proc se deje na pozadi") snazsi nez SQL. To jen tak pro uplnost, protoze co me zajima jsou ty ulohy, pro ktere je SQL "lepsi" (tedy neporovnavame samotne jazyky Datalog a SQL, nybrz jejich pouziti v praxi).

Franta <xkucf03/>

Re:Trénink SQL
« Odpověď #10 kdy: 17. 01. 2016, 12:03:19 »
Na úplné základy jsem napsal tohle: https://demo-1.sql-vyuka.cz/

Ale pro další studium už potřebuješ mnohem víc dat a pořádné zadání. Jak už tu někdo psal, nejvíc se toho naučíš v práci, kde budeš řešit reálné úlohy. Ale chce to firmu, která na databázích hodně staví – ideálně nějakou banku – ne firmu, kde lepí weby nad databází o pěti tabulkách, tam se toho moc nenaučíš. Nemusíš se bát, že bys něco rozbil – v bance tě na ostrou databází hned nepustí – mají dost testovacích prostředí, na kterých můžeš vyvíjet a při tom se učit.

Abys měl nutné teoretické základy je dobré absolvovat nějaký kurz – např. na VŠE je to 4IT218. Případně si to přečíst v knížce, ale na kurzu ti to učitel systematicky vyloží.

Mezitím čti – studuj, jak to dělají ostatní – najdi si nějaký svobodný software, který hodně staví na SQL databázi, a čti si SELECTy, které se v něm používají. Před tím si prohlédni datový model a snaž se ho pochopit. Taky koukni na http://postgres.cz/wiki/PostgreSQL – je tam pár zajímavých návodů a příkladů. Další věci najdeš v článcích o SQL tady na Rootu.

andy

Re:Trénink SQL
« Odpověď #11 kdy: 17. 01. 2016, 12:14:47 »
Nejlepší to má v bance. Tam rovnou může projíždět, kolik kdo bere a určitě budou všichni nadšení :D Nevím, jestli jsi myslel, že pracuje ve startupu, kde je MySQL na PC šéfa a na tom jede všechno, ale normálně to zase tak jednoduché není.
tu sa hodi to meme..that's not how it works

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Trénink SQL
« Odpověď #12 kdy: 17. 01. 2016, 13:14:08 »
Datalog je mnohem snazší na pochopení, ale SQL je na některé úlohy lepší.
Zatim jsem se s zadnou takovou ulohou nesetkal a ani me teoreticky zadna takova nenapada :( Docela by me to zajimalo (castecne strkam nos do vyzkumu o databazich) - mate nejake priklady uloh, kde je SQL lepsi?

Jinak ohledne pochopeni SQL myslim, ze ciste relacni usporadani a algebra je vyrazne snazsi na pochopeni nez Datalog (jeste aby ne, vyjadrovaci schopnost Datalogu je silnejsi nez relacni algebry), ale SQL ma tolik vyjimek a divnych konstrukci apod., ze s vami mohu souhlasit, ze Datalog je z hlediska nauceni se (nikoliv pochopeni "co a proc se deje na pozadi") snazsi nez SQL. To jen tak pro uplnost, protoze co me zajima jsou ty ulohy, pro ktere je SQL "lepsi" (tedy neporovnavame samotne jazyky Datalog a SQL, nybrz jejich pouziti v praxi).
Datalog je syntakticky osekaný prastarý Prolog, ale s SLG rezolucí nebo něčím ekvivalentním pro inferenci. Hodí se tedy na různé ontologie a sémantické blbinky, ale ne na analýzu číselných dat hrubou silou. Numerické úlohy okolo "big data" by řešil obtížněji nebo přinejmenším pomaleji.

hoj

Re:Trénink SQL
« Odpověď #13 kdy: 17. 01. 2016, 18:01:38 »
Budu tady mozna ukamenovan, ale ono to nejde zkouset primo v praci na skutecnych problemech? I za cenu toho, ze holt pujdes domu pozdeji a zkusis si to zadarmo pres cas?

urcite nebudes :) tohle je ta posledni moznost, kterou zvolit, pokud nenajdu co hledam. vzhledem k tomu, ze ale existuji reseni po kterych se ptam, tak ta cesta bude jednodussi :)