-- 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.