-- Szalai Laci, link a régi honlapról az újra. http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins http://stackoverflow.com/questions/10324836/mysql-insert-string-with-white-space -- Szándékos hibázás a jó módszerek közé. -- CONCAT - CONCAT_WS (NULL esetén). -- http://www.mysqldiary.com/conditional-joins-in-mysql/ -- http://www.mysqldiary.com/mysql-left-join/#more-234 -- http://code.openark.org/blog/mysql/useful-database-analysis-queries-with-information_schema -- INNER JOIN ON nélkül? -- Táblaszerkezet kialakításnál, alap-tesztelésnél kikapcsolni a megkötéseket, mert nehézkessé teszi a tesztelést. Pl. egy táblát újra szeretnék kreálni --> az összes hivatkozó táblát üríteni/törölni kell. -- Megkötésekhez megírni a lekérdezéseket, amelyek ellenőrzik ezek sértését (2 arcú szakemberhez). -- Batch paraméterek: http://dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html -- Scripting: http://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_Intermediate.html http://www.mysqldiary.com/user-defined-variables/ -- Nullobjektum esetleg? -- Kelepcegyűjtemény. -- SELECT nev, IF(nev LIKE 'h\_1%','YES','NO') FROM test_users;. -- A history-rekordokat nem muszáj külön táblába tenni, hanem meg lehet jelölni egy mezőben, hogy a rekord az aktuális-e. Ez nem megy, ha van UNIQUE mezője a rekordnak, ilyenkor muszáj külön táblába tenni. -- Alfajtákat külön táblába-e, egy rekordhoz tartozó adatokat külön táblába-e: Ez túlmutat a normalizáláson. -- Nagy kérdések: 1 táblába vagy többe, 1 mezőbe vagy többe? Használattól függ. -- usertype ENUM('N','S','A') NOT NULL DEFAULT 'N' -- ha hibás értéket próbálok beilleszteni, üres sztring megy be; akkor is ha NULL mező. http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/ -- A 3 teszter. -- Decimal: amikor a centek bevonulnak. Kerekítés: ha havonta 0.45-öt számolok el és havonta kerekítek, 0 lesz; ha évente, akkor 5.4 --> 5. -- Az alias később jön, FROM-ban, mégis már a SELECT-ben használható. Nehezebb megérteni a működést, ha több tábla esetén csak az egyikből megy ki a kimenetre valami, vagy ha a feltételben szereplő mező nem megy ki. Megvan már, csak példa kellene. -- Kapcsolótábla segédinformációval és anélkül. KT: leképezés. -- Tanárok és hallgatók példa kiegészítve: JOIN-os megoldás, NOT IN megoldás kiegészítve WHERE tanarok.lakhely = hallgatok.lakhely. -- JOIN - EXISTS - IN szentháromság. -- TEXT nem indexelhető. -- http://dev.mysql.com/doc/refman/5.1/en/select-into.html -- Keresztszorzat: DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2; CREATE TABLE t1(f1 INT); INSERT INTO t1 VALUES(10),(20),(30),(NULL); CREATE TABLE t2(f2 INT); INSERT INTO t2 VALUES(10),(20),(30),(NULL); SELECT COUNT(*),COUNT(f1) FROM t1,t2; +++++++++++++ DROP TABLE IF EXISTS t1; DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t3; CREATE TABLE t1(id INT,t1name VARCHAR(20)); INSERT INTO t1 VALUES(1,'t1_1'),(2,'t1_2'); CREATE TABLE t2(id INT,t2name VARCHAR(20)); INSERT INTO t2 VALUES(1,'t2_1'),(2,'t2_2'); CREATE TABLE t3(id INT,t3name VARCHAR(20)); INSERT INTO t3 VALUES(1,'t3_1'),(2,'t3_2'); SELECT t1name,t2name,t3name FROM t1 INNER JOIN t2 ON t1.id = t2.id INNER JOIN t3 ON t1.id = t2.id; <-- t3.id helyett t2.id-t írtunk; példa: miért az az eredmény, ami? ++++++++++++++++++++ -- Derived table alkalmazás, csak a sorok számát akarom tudni: SELECT COUNT(*) FROM ( SELECT f1,f2 FROM t1 LEFT JOIN t2 ON f1 = f2 ) AS x; Alias kötelező! Vagy: A rekordszám megállapításához nem kell a SORT --> a SORT-ot a külsőbe teszem. -- Google sql null problémák; galibák -- csak magyar nyelvű találatokat kérni. -- http://www.biprojekt.hu/blog/Mi_a_kulonbseg_az_IN_es_az_EXISTS_kozott.htm -- INSERT egyszerre több rekord vs. egyszerre egy: ha valamelyiknél hiba van, pl. UNIQUE sértés, akkor a csoportosnál semmi nem megy be. (MySQL). -- SELECT * JOIN-nál. -- FULL JOIN. -- null mezőnél is lehet default megadva. Olyan eset, amikor nagyon kevés rekordban van kitöltve egy mező és ritkán is vagyunk kíváncsiak az értékére: ezt a mezőt külön táblába. -- http://stackoverflow.com/questions/4875745/usage-of-select-null -- CUBE függvény. http://www.sqlservercentral.com/Forums/Topic1048812-17-1.aspx#bm1049877 http://technet.microsoft.com/en-us/library/ms175939(v=sql.90).aspx http://technet.microsoft.com/en-us/library/bb522495(v=sql.105).aspx -- het_09_peldak_01.txt: LEFT JOIN, amikor a szűrő feltételt az összekapcsolási feltételbe KELL tenni! -- Oracle könyv, idősorok, NULL vagy nagy érték felső határnak? -- Using negative numbers to represent missing quantities does not work, because it makes accurate calculations too complex. -- celkos-sql-for-smarties-2005.pdf NULLS: MISSING DATA IN SQL; EXISTS and NULLs; NULLs and OUTER JOINs. -- NULL és az indexek. -- SELECT * FROM t1 WHERE f1 <> 1 AND f1 <> NULL. -- Ildi példája, a duplán rossz megoldás: több státusz egy mezőbe, karakterenként egy státusz + space is van köztük. Ettől aztán nagyon jól látsik, hogy ha kijön pl. egy B betű, hogy az melyik pozícióban is van. -- SQL does not allow a string column of zero length, but you may find vendors whose products do allow it so that you can store an empty string. -- AUTO_INCREMENT NULL is lehet, adhatok neki értéket MySQL-ben; előny: nem lesz duplázás törlés után sem. -- Link: Gyakorikérdések? youtube? -- 'NULL' példa; CHECK constraint nem megy MySql-ben --> trigger. NULL megjelenítése: programon keresztül sokszor üres sztringnek mutatja. https://www.simple-talk.com/sql/learn-sql-server/sql-and-the-snare-of-three-valued-logic/ AVG példa folytatás: egyetlen sor sincs, mi a kimenet? MySQL Cookbook: Counting Missing Values Összefűzős példa: itt NULL és üres megkülönböztetése. http://www.1keydata.com/sql/sql-concatenate.html http://www.techonthenet.com/access/functions/string/concat.php data_analysis_using_sql_and_excel.pdf SELECT status,COUNT(*) AS N FROM t1 -- csak egy sort ad ki; SELECT status,'qq' FROM t1 ez az összeset; count(*) nem úgy viselkedik, mint egy konstans. sql all in one 244.o.; 246.o. Drawing valid conclusions from your data is complicated immensely if the data contains nulls. -- Új mező hozzáadása táblához az adatok miatt nehéz + megkötések megváltoztatása miatt (ha már van PRIMARY KEY, nem tudok AUTO INCREMENT mezőt rátenni) + meglévő programok eltaknyolhatnak, ld. a fenti mezőnevek nélküli INSERT-es példát. ALTER TABLE: az adatokkal együtt érdekes! -- Sztring concat: http://blog.mclaughlinsoftware.com/2009/03/09/sql-concatenation-blues/ CONCAT_WS -- Precedenciák; de Morgan. -- Minden példa (téma) becsukása gomb. -- DELETE: nem visszacsinálható; először egy SELECT-el próbáljuk ki; logikai törlés; egyszer kiadott azonosítót többször ne adjuk ki --> autoincrement. -- Miért nem jó ötlet, hogy amikor eszembe jutott egy x tábla ötlete, akkor ezzel kezdem: DROP TABLE IF EXISTS x; (Hátha más definiálta más célra már. Először megnézni, van-e.) -- html szerkesztő (text --> html). Markdown. https://www.google.hu/webhp?source=search_app&gws_rd=cr&ei=ub0YUteVMIKStQb7yYHwCg#fp=a7f7210b23dd2bc&q=markdown -- http://google-code-prettify.googlecode.com/svn/trunk/README.html -- Tree: http://homework.nwsnet.de/releases/ea21/ -- A szótár jó, * ha ugyanazon értékhez többfélét akarok hozzárendelni (pl. VIENNA --> Bécs, Wien; rövidített név; térkép...); * ha több rekordban biztosan ugyanazt az értéket akarom (pl. ÁFA kulcs különböző termékeknél; AFA_1 szerepel a rekordban --> AFA_1 = 17% a szótárban), illetve az előzővel lehet kombinálni: országtól,időtől függően más lehet az áfakulcs. -- http://sqlzoo.net/wiki/Self_join -- Optimalizálás http://weblabor.hu/forumok/temak/21848 http://weblabor.hu/forumok/temak/103064 -- sql.lap.hu; olyan oldalak, ahol irodalom-listák vannak --> személyes jelentkezés; népszerű oldal --> címe keresőbe --> megvan, hogy ki hivatkozik rá. http://hu.wikipedia.org/wiki/SQL -site:wikipedia.org -- Egyetemi weblapra hivatkozás a verklire. http://www.informationweek.com/software/business-intelligence/celko-on-sql-natural-artificial-and-surr/201806814 -- MySQL vs Postgre http://www.quora.com/Database-Systems/What-are-the-advantages-and-disadvantages-of-using-PostgreSQL-over-MySQL -- bootstrap themes? ------------- Programozóknak -- Hasonlóságok és különbségek az OO világgal. -- A szerver program elejére tenni a session-ből, DB-ből kiolvasását az adatoknak. Session elengedése utána: Nem blokkolja a többi felhasználót. DB: a lekérdezések száma minimális. És világosan látszik, mely adatokra van szükség.