|
|
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%
|
|
|
|
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-]+)+$";
|
|