něco o mně | guestbook | download |  

N A B Í D K A
Úvodní stránka
  Povodeň 2002
  Sbírka citátů
  MySQL - prakticky
  Jak na Apache
  Program. hrátky
  Placený software
  Kolo
  Garmin GPS
  Kytara/Guittar
  Má literatura
  Výplody JÁ
  SMART PHP Proxy
  Robot Surfer
  Dobrovolná účast
  Psychologie
  Veřejný PGP klíč
přidat stránku k oblíbeným
nastavit stránku jako domovskou
A N K E T A
Máte rádi Vánoce?
(celkem hlasů: 538)
Těším se na ně 21%
Nevadí mi 20%
Umím je přežít 20%
Je to trápení 20%
Zrušil bych je 19%
M A I L - L I S T
Počet odběratelů: 18
S E T I @ H O M E
Odeslané jednotky: 21143
Aktuální pořadí: 11200
Všech uživatelů: 5436301
CPU time: 13.681 years
Délka účasti: 5.608 years
Pozice v TOP: 0.206%
P R O J E K T Y
Limiter datových toků přímo na míru
Amateur Wireless Network
diskusní fóra psychologia.sk
R E K L A M A
MySQL - prakticky
Tato stránka je určena především začátečníkům, nicméně si myslím, že i pokročilejší zde třeba objeví něco zajímavého. K dispozici jsou některé základní syntaxe a ukázky kombinování příkazů, dále pak několik univerzálnějších tipů vhodných k dalšímu rozvíjení. Pokud jste zde nenalezli řešení vaší momentální situace, můžete se na mne obrátit. Bude-li to v mých silách, rád pomohu. Zrovna tak máte-li něco, o co byste se rádi podělili, budu rád za zaslání.

Založení nové databáze:
CREATE DATABASE IF NOT EXISTS jméno_databáze;

Odstranění databáze:
DROP DATABASE IF NOT EXISTS jméno_databáze;

Nastavení aktivní databáze:
USE jméno_databáze;

Vytvoření tabulky:
CREATE TABLE IF NOT EXISTS jméno_tabulky ...

Odstranění tabulky:
DROP TABLE IF NOT EXISTS jméno_tabulky;

Výpis duplicit v daném sloupci:
SELECT * GROUP BY sloupec HAVING COUNT(sloupec)>1;

Získání struktury tabulky:
SHOW CREATE TABLE jméno_tabulky;
EXPLAIN jméno_tabulky;
DESCRIBE jméno_tabulky;
SHOW FULL COLUMNS FROM jméno_tabulky;

Verze MySQL databáze:
SELECT VERSION();

Výpis vlastností tabulek:
SHOW TABLE STATUS;
SHOW TABLE STATUS FROM jméno_DB LIKE 'c_%';

Všechny záznamy obsahující:
SELECT * FROM jméno_tabulky WHERE sloupec LIKE '%řetězec%';

Všechny záznamy obsahujících ‘a’ na třetim místě:
SELECT * FROM jméno_tabulky WHERE sloupec LIKE '__a%';

Všechny vyhovující záznamy, s ohledem na velikost písmen:
SELECT * FROM jméno_tabulky WHERE sloupec LIKE BINARY '%<BR>%';

Všechny záznamy začínající písmeny ‘W’ nebo ‘B’:
SELECT * FROM jméno_tabulky WHERE sloupec LIKE '[WB]%';

Všechny záznamy začínající písmeny W-B a končící net:
SELECT * FROM jméno_tabulky WHERE sloupec LIKE '[W-B]net';

Všechny záznamy začínající ‘W’, nikoli však s ‘B’ na druhém místě:
SELECT * FROM jméno_tabulky WHERE sloupec LIKE 'W[^B]%';

Výběr s podmínkou na sloupec typu SET:
SELECT * FROM jméno_tabulky WHERE FIND_IN_SET('Ano',sloupec);

Všechny záznamy seřazené náhodně:
SELECT * FROM jméno_tabulky ORDER BY RAND();

Vypíše všechny řádky, které mají v daném sloupci stejnou hodnotu:
SELECT * FROM jméno_tabulky T1 LEFT OUTER JOIN jméno_tabulky T2 ON T1.sloupec=T2.sloupec
  WHERE T1.sloupec=T2.sloupec AND T1.id<>T2.id;

Výsledkem jsou takové řádky, jejiž thread se odkazuje na neexistující id:
SELECT * FROM jméno_tabulky T1 LEFT OUTER JOIN jméno_tabulky T2 ON T1.thread=T2.id
  WHERE T1.thread<>0 AND T2.id IS NULL;

Součet hodnot včetně možných NULL výskytů:
SELECT IFNULL(sloupec1,0)+IFNULL(sloupec2,0)+IFNULL(sloupec3,0) FROM jméno_tabulky;

Zkopírování obsahu tabulky:
INSERT INTO jméno_cílové_tabulky SELECT * FROM jméno_zdrojové_tabulky;

Zkopírování tabulky (struktury i dat), bez klíčů a indexů:
CREATE TABLE nová_jméno_tabulky SELECT * FROM jméno_zdrojové_tabulky;

Přejmenování tabulky:
ALTER TABLE původní_jméno_tabulky RENAME nové_jméno_tabulky;

Odebrání sloupce z tabulky:
ALTER TABLE jméno_tabulky DROP název_sloupce;

Odebrání indexu tabulky:
ALTER TABLE jméno_tabulky DROP INDEX jméno_indexu;

Změna typu tabulky:
ALTER TABLE jméno_tabulky type=InnoDB;

Změna komentáře tabulky:
ALTER TABLE jméno_tabulky COMMENT='libovolný popis';

Vytvoření jedinečného indexu:
ALTER TABLE jméno_tabulky ADD UNIQUE sloupec (sloupec);

Výpis konfigurace serveru:
SHOW VARIABLES;
SHOW VARIABLES LIKE 'have_%';

Znovu založení lokálního uživatele s přístupem ke všem tabulkám v db:
REVOKE ALL PRIVILEGES ON *.* FROM "uzivatel"@"localhost";
DELETE FROM db WHERE User = "uzivatel";
DELETE FROM user WHERE User = "uzivatel";
FLUSH PRIVILEGES;

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON db.* TO 'uzivatel'@'localhost' IDENTIFIED BY 'heslo';

Výpis klíčů tabulky:
SHOW INDEX FROM jméno_tabulky;

Zobrazení práv uživatele:
SHOW GRANTS FOR uživatel;

Nastavení hesla existujícímu uživateli:
SET PASSWORD FOR uživatel = PASSWORD('heslo');

Uzamknutí tabulky:
LOCK TABLES jméno_tabulky WRITE, název_další_tabulky READ;
  WRITE – ostatním zakázán zápis i čtení, READ – povoleno pouze čtení.
LOCK TABLES jméno_tabulky LOW_PRIORITY WRITE;
  LOW_PRIORITY – veškeré požadavky budou mít vyšší prioritu než výhradní přístup.

Zrušení zámku tabulky:
UNLOCK TABLES;
UNLOCK TABLE jméno_tabulky;

Úprava záznamu:
UPDATE jméno_tabulky SET sloupec='hodnota' WHERE sloupec='hodnota';

Změna všech záznamů v tabulce, jejichž velikost je menší 3:
UPDATE jméno_tabulky SET sloupec='?' WHERE LENGTH(sloupec)<3;

První písmeno každého záznamu na velké:
UPDATE jméno_tabulky SET sloupec=CONCAT(UPPER(LEFT(subject,1)),SUBSTRING(subject,2));

Odebrat mezery z levé i pravé strany:
UPDATE jméno_tabulky SET sloupec=TRIM(sloupec);

Nahradí zalomení řádku mezerou:
UPDATE jméno_tabulky SET sloupec=REPLACE(sloupec,'\r\n',' ');

Nové vytvoření tabulky s původními údaji – pro návaznost pole auto_increment:
DROP TABLE IF EXISTS tmp_jméno_tabulky;
CREATE TABLE tmp_jméno_tabulky ...
INSERT INTO tmp_jméno_tabulky SELECT * FROM původní_jméno_tabulky;
DROP TABLE původní _jméno_tabulky;
ALTER TABLE tmp_jméno_tabulky RENAME původní_jméno_tabulky;

Vytvoření indexu pro fulltextové vyhledávání:
CREATE FULLTEXT INDEX jméno_indexu ON jméno_tabulky (sloupec);

Full-text vyhledávání:
SELECT id_záznamu,MATCH(fulltext_sloupec) AGAINST('hledaný_výraz') FROM jméno_tabulky;

Full-text vyhledávání, vypisují se jen vyhovující záznamy:
SELECT id_záznamu,MATCH(fulltext_sloupec) AGAINST('hledaný_výraz') AS score FROM jméno_tabulky
  WHERE MATCH(message) AGAINST('hledaný_výraz') ORDER BY score DESC;

Př.: všechny záznamy začínající 're: ', jejiž následné písmeno není v tozsahu A-Z:
SELECT id_záznamu,sloupec FROM jméno_tabulky WHERE sloupec LIKE 're: %' AND
  (ORD(SUBSTRING(sloupec,5,1))<65 OR ORD(SUBSTRING(sloupec,5,1))>90);

U vyhovujících záznamů převede pátý znak na velké písmeno:
UPDATE jméno_tabulky SET sloupec = CONCAT(LEFT(sloupec,4),UPPER(SUBSTRING(sloupec,5,1)),
  SUBSTRING(sloupec,6)) WHERE sloupec LIKE 're: %';

Převod na unixtime (yyyy-mm-dd hh:mm:ss):
SELECT UNIX_TIMESTAMP('2002-10-10 00:04:00');

Násobná podmínka při výběru:
SELECT * FROM jméno_tabulky WHERE sloupec='řetězec1' OR sloupec='řetězec2' OR sloupec ='řetězec3';
SELECT * FROM jméno_tabulky WHERE sloupec IN ('řetězec1','řetězec2','řetězec3');

Výběr řádků s omezením na rozpětí data:
SELECT * FROM jméno_tabulky WHERE datum BETWEEN '2005-01-01' AND '2005-02-01';

Zjištění průměrné délky hodnoty:
SELECT ROUND(AVG(LENGTH(název_sloupce))) FROM jméno_tabulky;

Převod hodnot na malá písmena:
UPDATE jméno_tabulky SET sloupec=LOWER(sloupec);

Test přítomnosti příznaku v poli typu enum:
SELECT * FROM jméno_tabulky WHERE FIND_IN_SET("E",flags);

Zjednodušená kontrola validity IP adres:
SELECT ip FROM jméno_tabulky WHERE ip NOT REGEXP "^([0-9]{1,3}\.){3}[0-9]{1,3}$";

Ověření správnosti emailu podle příslušného RFC:
SELECT email FROM jméno_tabulky WHERE LENGTH(email)>0 AND email NOT
  REGEXP "^[-a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+(\.[-a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$";



[CNW:Counter]


Copyright © 2000-2008, This site is best viewed with MSIE 5 or higher at 1024x768 or higher screen resolution