Kde se naučit SQL

qwertz

Re:Kde se naučit SQL
« Odpověď #30 kdy: 21. 10. 2017, 14:40:16 »
S tím bych nesouhlasil. Pro optimální využití vlastností té či oné databáze musíte znát její specifika i to, na co je optimalizovaná. Např. MSSQL má rádo subselecty, PostgreSQL je neumí optimalizovat. Zase umí lépe optimalizovat joiny. Složité dotazy v každé databázi budete psát jinak, byť je jazyk prakticky stejný.

Pokud ale databázi používáte jen na dotazy key-value (KVS), pak je lepší zvolit mysql nebo nějaké nosql. Ale to je skill, který ovládá kdekdo, na to se asi tazatel neptá.

Ale to už jsou platform specific záležitosti, které sestejně bude muset učit za chodu pokaždé když změní databázi.

Navíc v některých oblastech (typicky business inteligence) spoustu té logiky občas dělá BI tool nad tou databází, a ten dotaz buď nemůžete nijak ovlivnit (vrcholem optimalizace je, že si to postavíte nad nějakým custom VIEW) nebo to logiku včetně JOIN operací provádí nástroj sám. Rozhodně je tam hranice mezi obecným SQL a optimalizacemi, které pak řešíte na konkrétní implementaci.

To je mimochodem jako kdybyste tvrdil, že Franta - dlouholetý Oracle specialista, neumí SQL,protože firma přešla na MSSQL  ;)


ehmmm

Re:Kde se naučit SQL
« Odpověď #31 kdy: 21. 10. 2017, 17:40:42 »
Ja se to treba ucim v praci. Uz nekolik let.  :)

Jak tu nekdo rikal, SQL jazyk je v podstate standardizovan, ale dabel je ukryt v detailech.

Re:Kde se naučit SQL
« Odpověď #32 kdy: 21. 10. 2017, 18:16:09 »
Rozhodně je tam hranice mezi obecným SQL a optimalizacemi, které pak řešíte na konkrétní implementaci.

To je mimochodem jako kdybyste tvrdil, že Franta - dlouholetý Oracle specialista, neumí SQL,protože firma přešla na MSSQL  ;)

To bych opět nesouhlasil. Je velký rozdíl, jestli někdo stejná data vydoluje na 10 dotazů za sebou, nebo jestli napíše jeden dotaz a složí si ho. V prvním případě není co optimalizovat a je to výsledek blbých návyků - já to tu rád přisuzuju mysql, protože to k takto blbě dělané SQL práci vysloveně vede.

Milfaus

Re:Kde se naučit SQL
« Odpověď #33 kdy: 21. 10. 2017, 18:18:02 »
dabel je ukryt v detailech.

To mluvíš asi hlavně o MySQL/MariaDB a jejich "No, tak nějak to je, tak nějak to funguje" :-D
Ostatně tu nedávno byl článek, odkaz nebo diskuze, kde se probíralo, jak MySQL nevrací chybu, ale příkaz neprovede korektně. Třeba to sem někdo postne.

Kit

Re:Kde se naučit SQL
« Odpověď #34 kdy: 21. 10. 2017, 18:28:04 »
Ostatně tu nedávno byl článek, odkaz nebo diskuze, kde se probíralo, jak MySQL nevrací chybu, ale příkaz neprovede korektně. Třeba to sem někdo postne.

To bylo při vkládání řetězce delšího, než je limit. MySQL ho uloží ve zkrácené podobě a vrátí zpět jen warning, který většina aplikací prostě ignoruje. Uživatel se tedy o zkrácení nemusí dozvědět.


Milfaus

Re:Kde se naučit SQL
« Odpověď #35 kdy: 21. 10. 2017, 19:22:52 »

Je tam daleko víc věcí.

Kit

Re:Kde se naučit SQL
« Odpověď #36 kdy: 21. 10. 2017, 20:12:04 »

Je tam daleko víc věcí.

Tak to zkus dohledat, projedu to svými testy.

Re:Kde se naučit SQL
« Odpověď #37 kdy: 21. 10. 2017, 20:52:16 »
Tak to zkus dohledat, projedu to svými testy.

Myslím, že Vám věříme, že umíte s MySQL hodně dobře, ale možná byste byl překvapený, jak dál můžete jít s opravdovou databází.

Milfaus

Re:Kde se naučit SQL
« Odpověď #38 kdy: 21. 10. 2017, 21:13:58 »
Tak to zkus dohledat, projedu to svými testy.

Už jsem to zkoušel, vlastně mě to ani nezaujalo, spíš jsem jen přikyvoval.
Netušil jsem, že se o tom bude za pár dní znova mluvit.

Milfaus

Re:Kde se naučit SQL
« Odpověď #39 kdy: 21. 10. 2017, 21:19:11 »

Pavel Stěhule by mohl vědět, nebo Petr Krčmář.
Nevím, jestli to byl článek, blog nebo koment.

Kit

Re:Kde se naučit SQL
« Odpověď #40 kdy: 21. 10. 2017, 21:51:46 »
Tak to zkus dohledat, projedu to svými testy.

Myslím, že Vám věříme, že umíte s MySQL hodně dobře, ale možná byste byl překvapený, jak dál můžete jít s opravdovou databází.

Vím, že MySQL například bohorovně ignoruje klauzuli CHECK v CREATE TABLE, což je sice ve světě SQL neslýchané, ale webovým vývojářům to obvykle nevadí. Docela jsem se tenkrát vztekal, když jsem na tuto "vlastnost" přišel. Určitě to je jedním z důvodů, proč vývojáři místo SQL používají pochybné ORM frameworky. Cizí klíče také nefungují vždy a vytvoření či změnu struktury tabulky nejde strčit do transakce.

Je toho dost na to, aby se databáze MySQL v pokročilých aplikacích nepoužívala.

Re:Kde se naučit SQL
« Odpověď #41 kdy: 21. 10. 2017, 22:05:22 »
Vím, že MySQL například bohorovně ignoruje klauzuli CHECK v CREATE TABLE, což je sice ve světě SQL neslýchané, ale webovým vývojářům to obvykle nevadí. Docela jsem se tenkrát vztekal, když jsem na tuto "vlastnost" přišel. Určitě to je jedním z důvodů, proč vývojáři místo SQL používají pochybné ORM frameworky. Cizí klíče také nefungují vždy a vytvoření či změnu struktury tabulky nejde strčit do transakce.

Je toho dost na to, aby se databáze MySQL v pokročilých aplikacích nepoužívala.

No a proto tu říkám, že pokud se někdo chce o SQL databáze zajímat, měl by se MySQL vyhnout velkým obloukem. Weboví vývojáři jsou pěkným příkladem celé obrovské skupiny, která si osvojila zbytečně špatné návyky, a to jen kvůli tomu, že je do MySQL o něco nižší vstupní bariéra. Příčina => důsledek. A z toho důsledku je pak další komický důsledek: pro sw firmy je jednodušší najmout neznalé (My)SQLkaře a nastavit způsoby programování tak, aby to MySQL vyhovovalo. Tedy z důsledku se stává příčina pro další důselek. A pak nám vznikají takové věci, jako je HHVM, frameworky, které nevyrendrují ani Hello world pod 300 ms a stihnou k tomu udělat ještě patnáct dotazů do databáze atd. atd.

A tam nechci, aby zapadl pan kolega, který se chce SQL učit.

Tomas2

  • ****
  • 310
    • Zobrazit profil
    • E-mail
Re:Kde se naučit SQL
« Odpověď #42 kdy: 21. 10. 2017, 23:19:20 »
To už jsou pak klasický cargo kulty. Optimalizace poddotazů, joinů je ve všech slušnějších databázích dneska z 80% stejná. Liší se kalkulace statistik a tudíž v některých případech některé dotazy jsou na jedné db rychlejší a na jiné pomalejší. Ve 20 procentech jsou rozdíly, ale to jsou dneska spíš obskurní věci, které se dají moderním SQL udělat jinak a rychleji. Je pravda, že MSSQL má agresivnější optimalizace korelovaných poddotazů obsahujících agregace - ale zase, kvůli tomu, má pomalejší planner. Hitne to malé procento dotazů. U Postgresu 90% lidí neví o parametrech JOIN_COLLAPSE_LIMIT a FROM_COLLAPSE_LIMIT, kterými se tato optimalizace řídí - a pak jsou překvapeni.

Tazatel by měl říct co chce umět. Tvoje odpověď směřuje k tomu, že db považuješ jako relační uložiště dat pro eshop či podobnou aplikaci, tam se ten provoz tolik opravdu neliší, já naopak vidím SQL jako jazyk pro analýzu/zpracování/reporting terabajtů dat v tisících tabulkách nad databázovým clusterem, kdy člověk několik měsíců píše sql dotazy, aby splnil jediný úkol.

Na trhu ve velkém chybí přesně tihle lidé, analytici (ať už byznys, BI, sales či jiní) s dobrou znalostí databáze a SQL jazyka.

V praxi jsem se snad nepotkal s programátorem, pro kterého by byl velký problém se naučit SQL v potřebné hloubce za pár týdnů/měsíců při běžném plnění úkolů. Pokud si tazatel chce jen k programování rozšířit znalosti, aby uměl napsat i nějaký "join" v SQL, asi mu stačí jakýkoliv manuál, knížka, kurz. Pokud naopak chce být tím SQL pánem na full time, zabere mu to dva roky studováním a učením se konkrétní databáze a jejich zákoutí.

Re:Kde se naučit SQL
« Odpověď #43 kdy: 22. 10. 2017, 00:17:54 »
To už jsou pak klasický cargo kulty. Optimalizace poddotazů, joinů je ve všech slušnějších databázích dneska z 80% stejná. Liší se kalkulace statistik a tudíž v některých případech některé dotazy jsou na jedné db rychlejší a na jiné pomalejší. Ve 20 procentech jsou rozdíly, ale to jsou dneska spíš obskurní věci, které se dají moderním SQL udělat jinak a rychleji. Je pravda, že MSSQL má agresivnější optimalizace korelovaných poddotazů obsahujících agregace - ale zase, kvůli tomu, má pomalejší planner. Hitne to malé procento dotazů. U Postgresu 90% lidí neví o parametrech JOIN_COLLAPSE_LIMIT a FROM_COLLAPSE_LIMIT, kterými se tato optimalizace řídí - a pak jsou překvapeni.

Tazatel by měl říct co chce umět. Tvoje odpověď směřuje k tomu, že db považuješ jako relační uložiště dat pro eshop či podobnou aplikaci, tam se ten provoz tolik opravdu neliší, já naopak vidím SQL jako jazyk pro analýzu/zpracování/reporting terabajtů dat v tisících tabulkách nad databázovým clusterem, kdy člověk několik měsíců píše sql dotazy, aby splnil jediný úkol.

Na trhu ve velkém chybí přesně tihle lidé, analytici (ať už byznys, BI, sales či jiní) s dobrou znalostí databáze a SQL jazyka.

V praxi jsem se snad nepotkal s programátorem, pro kterého by byl velký problém se naučit SQL v potřebné hloubce za pár týdnů/měsíců při běžném plnění úkolů. Pokud si tazatel chce jen k programování rozšířit znalosti, aby uměl napsat i nějaký "join" v SQL, asi mu stačí jakýkoliv manuál, knížka, kurz. Pokud naopak chce být tím SQL pánem na full time, zabere mu to dva roky studováním a učením se konkrétní databáze a jejich zákoutí.
Já určitě nejsem ten, kdo by považoval databázi za storage. Pokud se někdo pídí informací tady na rootu, tak předpokládám, že se bude jednat o skutečného začátečníka. Samozřejmě, že je možné dál pokračovat - ale to už asi chce mít jasnější představu - už jen OLAP nebo OLTP se bude hodně lišit. I když pořád ANSI/SQL je pořád stejné.

Re:Kde se naučit SQL
« Odpověď #44 kdy: 22. 10. 2017, 00:32:57 »
Nevím, jestli to byl článek, blog nebo koment.

Bylo to v článku z LinuxDays, protože právě tam o tom měl přednášku David Karban. Můžete si i pustit záznam.