SELECT kromě jednoho záznamu

Ahoj.

Chtěl bych se zeptat, existuje v MySQL něco jako "kromě"? Pokud chci dostat třeba sloupců s daty a mám jich v tabulce 21 (tzn. že nechci pouze jeden), jde to nějak jinak, než všech 20 vypsat?
SELECT * FROM tabulka; se vlastně používá jen ve školních a začátečnických aplikacích. V běžných aplikacích se sloupečky poctivě vypisují, aby se při změně designu databáze nemusela aplikace celá přepisovat. Zároveň se tím šetří přenosová kapacita, protože nevytahujeme data, která nepotřebujeme.

Kromě toho se často vypisují i generované sloupce, které jsou funkcí několika sloupců. To proto, že normalizovaná databáze nepřipouští v jednom políčku tabulky více hodnot, ale často takové hodnoty potřebujeme vypisovat.

21 sloupečků je už na tabulku docela dost, ale neměl být problém vypsat jména všech požadovaných sloupců i sloupců syntetických. Délka SQL dotazu bývá omezena na cca 1 MB.

Obecně se říká, že pokud počet sloupců v tabulce přesáhne stovku, asi je chyba v návrhu databáze.
<HTML>Magnusi, záznam = řádek tabulky, sloupec = místo pro pojmenovanou "vlastnost" každého záznamu v té tabulce.

Vytažení všech sloupců až na jeden je možné konkrétním vyjmenováním sloupců, které chceš vytáhnout. Z praktického hlediska můžeš vytáhnout všechny a na ten jeden se při dalším zpracování v PHP vykašlat.

Nicméně naučil bych se konkrétní sloupce v dotazech vyjmenovávat. Jednak zajistím, že budu tahat pouze ty informace, které potřebuji, jednak při změně struktury tabulky hned vím, které dotazy jsou (a jak) ovlivněny.

Co se záznamů týče, prozkoumej WHERE a LIMIT.</HTML>
Děkuji moc.

Já to mám v jedné tabulce tak, že tam mám sloupeček "jméno" a za ním dalších 23 sloupců. Vyhledávám pomocí WHERE jmeno = "nějaké jméno", takže SELECTovat i jméno je zbytečné.
Já to tedy dělám tak, že si vše vypíšu, přes "*" to nedělám. A očividně je to asi správně.
Pokud provádíš takový SELECT, doporučuji k němu přidat i LIMIT 1. Doba zpracování takového dotazu se může zkrátit, protože po nalezení záznamu již nebude prohledávat zbytek tabulky.

Je dobré, pokud sloupec "jméno" má atribut UNIQUE. Takový sloupec pak není nutné indexovat, protože již má zjednodušený index typu HASH. Práce s takovým indexem je o něco rychlejší, ale výpis jmen podle abecedy je pomalejší.

Také je dobré se zamyslet, PROČ děláš takový SELECT. Jestli je to kvůli vypisování údajů, je to OK. Pokud kvůli následné modifikaci, je to chyba. Ale o tom jsme si už možná povídali.