Nacházíte se: tvorba webu :: mysql :: tabulky

MySQL - Tabulky

Práce s tabulkami je jednou z velmi duležitých věcí, proto je nutné, abyste vše pořádně pochopili.

Vytvoření tabulky

Tabulka se vytváří v právě aktuální databázi. Maximální délka názvu tabulky a sloupců je 65 znaků.

CREATE TABLE jmeno_tabulky (nazev_sloupce datovy_typ, dalsi_vlastnosti);
  CREATE TABLE `vyrobek` (
    `id`      INT( 255 ) NOT NULL AUTO_INCREMENT ,
    `jmeno`   VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL ,
    `popis`   VARCHAR( 255 ) CHARACTER SET ucs2 COLLATE utf8_czech_ci NULL ,
    `vyrobce` VARCHAR( 255 ) CHARACTER SET ucs2 COLLATE utf8_czech_ci NULL ,
    PRIMARY KEY ( `id` ) 
  ) ENGINE = MYISAM


Smazání tabulky

  DROP TABLE jmeno_tabulky;


Typy tabulek

  • MYISAM
    • standardní typ tabulky
    • data mají koncovku .myd
    • indexy mají koncovku .myi
    • bez podpory transakcí
    • velmi rychlé
  • ISAM
    • standardní typ tabulky
    • ve starších databázích
  • MERGE
    • virtuální tabulka nad dvěmi i více stejnými(názvy, počty sloupců) tabulkami typu MYISAM
    • například, pokud v tabulkce vyčerpáte místo, pak virtuálně spojíte více tabulek
  • MEMORY (HEAP)
    • tabulka je uložena pouze v paměti
    • má dost omezení
    • použití pro mezivýpočty
    • o data lze přijít při vypnutí serveru
  • INNODB
    • podpora transakce
    • možnost použití příkazů příkazy BEGIN, COMMIT a ROLLBACK
    • optimalizovány pro příkazy INSERT a UPDATE
    • zamykání záznamů na úrovni řádků
    • vyvíjena jinou firmou a dost nejistá budoucnost
  • BDB
    • typ tabulky podobný INNODB
    • podpora transakce
    • zatím ve fázi testování
  • FALCON
    • vyvíjen jako náhrada za INNODB
    • podpora transakce
    • zatím ve fázi testování
  • FEDERATED
    • tabulka neobsahuje lokální data, ale data z jiného serveru
    • nepodporuje transakce
  • ARCHIVE
    • k datům přistupujeme jen zřídka
    • data jsou komprimována
    • lze použít jen příkazy SELECT a INSERT
    • nelze použít příkazy DELETE, REPLACE a UPDATE
  • CSV
    • data uloženy v textovém formátu
    • záznamy na řádcích, sloupce odděleny čárkou
  • BLACKHOLE
    • neukládá data, při pokusu je uložit, jsou zahozena
    • příkaz SELECT vrací prázdný záznam


Vytvoření dočasné tabulky

Takto vytvořená tabulka po ukončení spojení s databází zanikne.

CREATE TEMPORARY TABLE jmeno_tabulky (nazev_sloupce datovy_typ, dalsi_vlastnosti);


Výpis popisu tabulky

Vypíše informace o tabulce.

  DESCRIBE jmeno_tabulky;
  SHOW COLUMNS FROM jmeno_tabulky;


Aktualizace dat v tabulce

Aktualizace v tabulce probíhají nasledujícím způsobem:

ALTER TABLE nazev_tabulky prikaz1, prikaz2, ...;

Přiklad aktualizuje sloupce dodavatel, prodejna a jmeno u záznamu s id rovnajícím se 1

UPDATE `jmeno_tabulky` SET  `dodavatel`= 'dodavatel1', `prodejna`= '$prodejna', 
`jmeno` = '$jmeno' WHERE `produkty`.`id` ='1' LIMIT 1


Přidání sloupce do tabulky

ALTER TABLE ADD jmeno_sloupce datovy_typ;
 nebo 
ALTER TABLE ADD COLUMN jmeno_sloupce datovy_typ;

Modifikátory

FIRST

Sloupec bude přidán na začátek tabulky

AFTER jmeno_sloupce;

Sloupec bude přidán za sloupec, který je definovaný za AFTER

Smazaní sloupce z tabulky

ALTER TABLE  ADD DROP jmeno_sloupce;
 nebo 
ALTER TABLE  DROP COLUMN  jmeno_sloupce datovy_typ;

Přejmenování tabulky

ALTER TABLE  RENAME nove_jmeno_tabulky;

Změna parametrů tabulky

ALTER TABLE  CHANGE jmeno_sloupce nove_jmeno_sloupce nove_paramatery;

Modifikace parametrů

ALTER TABLE  MODIFY jmeno_sloupce nove_parametry;


Zamknutí/odemknutí tabulek

LOCK - zamknutí

Příkaz zamkne tabulku buď pro čtení(READ), nebo pro zápis (WRITE). Pokud i přesto chcete zapsat nebo přečist data z tabulky, je potřeba tyto dotazy vložit mezi LOCK a UNLOCK. Dotazy vně nebudou mít přistup k tabulce.

  LOCK TABLES jmeno_tabulky READ, jmeno_tabulky WRITE;

UNLOCK - odemknutí

UNLOCK odemkne tabulku

  UNLOCK TABLES;


Pro tabulky typu INNODB

BEGIN .. COMMIT

Všechny dotazy, které jsou umístěny mezi příkazy BEGIN a COMMIT se vykonají, pokud nedojde k přerušení spojení s databází a to až do vykonání příkazu COMMIT.

  BEGIN; dotaz; dotaz; dotaz; dotaz; ... COMMIT;

SELECT .. FROM .. LOCK IN SHARE MODE;

Příkaz počká, dokud se nedokončí předchozí dotazy a až poté vypíše obsah tabulky.

  SELECT co_se_bude_nacitat FROM odkud_se_bude_nacitat LOCK IN SHARE MODE;
úvod | tvorba webu | ostatní | služby | návštěvní kniha | kontakt