abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 15:33 | IT novinky

    Po 26 letech od protiprávního policejního zásahu, který byl spuštěn na základě podnětu společnosti Microsoft, Obvodní soud pro Prahu 2 rozsudkem potvrdil, že Mironet prokázal významnou část svého nároku na náhradu škody vůči Ministerstvu spravedlnosti ČR. Soudem nyní přiznaná část nároku znamená rekordní odškodné, jaké kdy české soudy přiznaly za nesprávný postup státu. Spor byl rozdělen na několik škod, u pravomocně uzavřených částí

    … více »
    Ladislav Hagara | Komentářů: 9
    dnes 15:22 | Nová verze

    Lehké desktopové prostředí LXQt bylo vydáno ve verzi 2.4.0. Jde o převážně opravné vydání s drobnými vylepšeními podpory Waylandu.

    |🇵🇸 | Komentářů: 0
    dnes 12:44 | IT novinky

    Počítačová hra Kingdom Come: Deliverance 2 českého studia Warhorse získala cenu BAFTA v kategorii nejlepší příběh. V konkurenci pěti dalších nominovaných děl porazila i úspěšnou francouzskou hru Clair Obscur: Expedition 33, která v letošním ročníku získala cenu za nejlepší hru roku.

    Ladislav Hagara | Komentářů: 1
    dnes 12:22 | Komunita

    Projekt KDE oslaví v říjnu 30 let. Matthias Ettrich poslal 14. října 1996 do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu. Důležité milníky jsou zobrazeny na časové ose KDE.

    Ladislav Hagara | Komentářů: 1
    dnes 02:55 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucí/ho projektu Debian (DPL, Wikipedie). Poprvé povede Debian žena. Novou vedoucí je Sruthi Chandran. Letos byla jedinou kandidátkou. Kandidovala již v letech 2020, 2021, 2024 a 2025. Na konferenci DebConf19 měla přednášku Is Debian (and Free Software) gender diverse enough?

    Ladislav Hagara | Komentářů: 15
    dnes 00:55 | Nová verze

    Byla vydána nová verze 10.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přidána byla podpora Orange Pi 4 LTS. Přibyl balíček Prometheus.

    Ladislav Hagara | Komentářů: 0
    včera 18:55 | Nová verze

    Implementace VPN softwaru WireGuard (Wikipedie) pro Windows, tj. WireGuard pro Windows a WireGuardNT, dospěly do verze 1.0.

    Ladislav Hagara | Komentářů: 2
    včera 16:11 | IT novinky

    V Pekingu dnes proběhl 2. ročník půlmaratonu humanoidních robotů. První 3 místa obsadili roboti Honor Lightning v různých týmech. Nový rekord autonomního robota je 50 minut a 26 sekund. Operátorem řízený robot to zvládl i s pádem za 48 minut a 19 sekund. Řízení roboti měli časovou penalizaci 20 %. Před rokem nejrychlejší robot zvládl půlmaraton za 2 hodiny 40 minut a 42 sekund. Aktuální lidský rekord drží Jacob Kiplimo z Ugandy s časem 57 minut a 20 sekund [𝕏].

    Ladislav Hagara | Komentářů: 5
    17.4. 17:11 | Zajímavý článek

    Stanislav Fort, vedoucí vědecký pracovník z Vlčkovy 'kyberbezpečnostní' firmy AISLE, zkoumal dopady Anthropic Mythos (nový AI model od Anthropicu zaměřený na hledání chyb, který před nedávnem vyplašil celý svět) a předvedl, že schopnosti umělé inteligence nejsou lineárně závislé na velikosti nebo ceně modelu a dokázal, že i některé otevřené modely zvládly v řadě testů odhalit ve zdrojových kódech stejné chyby jako Mythos (například FreeBSD CVE-2026-4747) a to s výrazně nižšími provozními náklady.

    MakeIranBombedAgain❗ | Komentářů: 6
    17.4. 12:44 | IT novinky

    Federální návrh zákona H.R.8250 'Parents Decide Act', 13. dubna předložený demokratem Joshem Gottheimerem a podpořený republikánkou Elise Stefanik coby spolupředkladatelkou (cosponsor), by v případě svého schválení nařizoval všem výrobcům operačních systémů při nastavování zařízení ověřovat věk uživatelů a při používání poskytovat tento věkový údaj aplikacím třetích stran. Hlavní rozdíl oproti kalifornskému zákonu AB 1043 a kolorádskému SB26-051 je ten, že federální návrh by platil rovnou pro celé USA.

    MakeIranBombedAgain❗ | Komentářů: 13
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1364 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Tvorba databází v MySQL - III

    4. 4. 2003 | David Hauzar | Návody | 29842×

    Celý třetí díl seriálu je zasvěcen datovým typům a modifikátorům sloupců.

    Při návrhu databáze musíte určit datové typy sloupců. V tomto díle seriálu se s datovými typy sloupců, které můžete používat v MySQL, seznámíte. Dále se dozvíte, co to jsou modifikátory sloupců.

    Datový typ je atribut sloupce, který určuje, jaké hodnoty se budou moci do daného sloupce zapisovat. Každý sloupec může tedy uchovávat hodnoty pouze jednoho, předem určeného typu.

    Prázdná hodnota (NULL)

    Před tím, než se vrhnete na studium datových typů, je třeba, abyste chápali pojem prázdná hodnota. Jestliže se ve sloupci záznamu nachází prázdná hodnota, znamená to, že v něm nic není. Nula je hodnota jako každá jiná, a proto není prázdná hodnota

    Číselné datové typy

    Číselné datové typy dovolují uchovávat pouze čísla. Rozlišujeme dva základní typy číselných typů. A to číselné typy, které dovolují uchovávání celých čísel a číselné typy, které dovolují uchovávání desetinných čísel. Jednotlivé podtypy se liší intervalem ukládatelných hodnot.

    Proč ale potřebujeme takové množství datových typů? Definujete-li sloupec jako datový typ BIGINT, bude mít jakékoli uložené číslo do takového sloupce 64 míst ve dvojkové soustavě. Pokud tedy uložíte do takového sloupce číslo 1, uloží se vám do něj 63 nul a jedna jednička na konci. To je ale značně neefektivní, a proto se k ukládání malých čísel používá datový typ SMALLINT.

    MySQL zpracovává číselné datové typy rychleji, než ostatní datové typy.

    Číselné datové typy typu INT

    Číselné datové typy typu INT slouží k ukládání celých čísel. Pokud při jejich definici použijete modifikátor UNSIGNED (např. UNSIGNED INT), nebudete moci do takového sloupce ukládat záporné hodnoty, zato se velikost nejvyššího uložitelného čísla zdvojnásobí.

    Číselné datové typy umožnující ukládání desetinných čísel

    Jsou to datové typy FLOAT, DOUBLE, DECIMAL. MySQL umožňuje omezit počet cifer desitinného čísla. V definici FLOAT (M, D) určuje M celkovou délku čísla a D délku čísla za desetinnou čárkou.

    Datový typ DECIMAL se používá k ukládání velmi velkých čísel a měn, protože nemá prakticky žádné velikostní omezení a zaručuje požadovanou přesnost.

    Číselné datové typy v MySQL
    Název typu Interval Bez znaménka Paměťový prostor
    TINYINT <-128; 127> <0; 255> 1 bajt
    SMALLINT <-32768; 32767> <0; 65535> 2 bajty
    MEDIUMINT <-8388608; 8388607> <0; 16777215> 3 bajty
    INT <-2147483648; 2147483647> <0; 4294967295> 4 bajty
    BIGINT <-9223372036854775808; 9223372036854775807> <0; 18446744073709550615> 8 bajtů
    FLOAT(M, D) Liší se podle použitých hodnot Liší se podle použitých hodnot 4 bajty
    DOUBLE(M, D) Liší se podle použitých hodnot Liší se podle použitých hodnot 8 bajtů
    DECIMAL(M, D) Liší se podle použitých hodnot Liší se podle použitých hodnot M+2 bajty

    Textové datové typy

    Textové datové typy umožňují ukládat textové řetězce. Textový řetězec je množina znaků (např. "Pivovarská 69").

    Seznam textových datových typů je v následující tabulce:

    Číselné datové typy v MySQL
    Název typu Maximální velikost Paměťový prostor
    CHAR(X) 255 bajtů X bajtů
    VARCHAR(X) 255 bajtů X+1 bajt
    TINYTEXT 255 bajtů X+1 bajt
    TINYBLOB 255 bajtů X+2 bajty
    TEXT 65535 bajtů X+2 bajty
    BLOB 65535 bajtů X+2 bajty
    MEDIUMTEXT 1,6 MB X+3 bajty
    MEDIUMBLOB 1,6 MB X+3 bajty
    LONGTEXT 4,2 GB X+4 bajty
    LONGBLOB 4,2 GB X+4 bajty

    CHAR a VARCHAR

    CHAR definuje sloupec pevné délky. Znamená to, že pokud nadeklarujeme sloupec jako CHAR(8), budou všechny do něj uložené hodnoty dlouhé 8 bajtů. Když do takového sloupce uložíte tři znaky, MySQL automaticky doplní chybějící znaky.

    Naopak VARCHAR definuje sloupec proměnné délky. Pokud do sloupce definovaného jako VARCHAR(8) uložíte 3 znaky, bude se celková délka sloupce rovnat 4 bajty (délka pole + 1).

    Výhoda sloupců deklarovaných jako CHAR je to, že jsou rychlejší, nevýhodou je zase nevyužité místo.

    V jedné tabulce nemohou být sloupce deklarované jako CHAR společně se sloupci deklarovanými jako VARCHAR. Stane-li se to, MySQL převede všechny sloupce CHAR na sloupce VARCHAR. Pokud jsou ale sloupce VARCHAR deklarovány na 4 znaky a méně, převede je MySQL naopak na datový typ CHAR.

    TEXT a BLOB

    TEXT a BLOB jsou datové typy proměnné délky - jsou to vlastně velmi rozsáhlé obdoby typu VARCHAR. Do sloupců s datovým typem TEXT a BLOB je vhodné ukládat například obsah značky <TEXTAREA> ve formuláři WWW.

    Do sloupců typu TEXT a BLOB můžete ukládat i celé soubory. Nevýhodou těchto datových polí je ale jejich rychlost a velikost, která může vést k fragmentaci. Pokud tedy chcete v databázi ukládat rozsáhlé soubory (např. obrázky), je většinou lepší ukládat je v nějakém adresáři a v databázi ukládat jen odkazy na umístění těchto souborů.

    Výčtové datové typy

    Jsou to datové typy ENUM a SET. Do těchto datových typů můžete ukládat pouze informace určené při deklaraci. Vypadají a chovají se jako řetězce, ale v databázích MySQL se ukládají jako čísla. Jejich zpracování je proto velmi rychlé.

    Datový typ ENUM

    Sloupec typu ENUM může uchovávat pouze jednu z hodnot deklarovaných ve jmenovitém seznamu přípustných hodnot. Datový typ ENUM je vhodný například k uchovávání informací získaných z rozbalovacích seznamů na stránkách WWW. Sloupec typu ENUM musí obsahovat hodnotu uvedenou ve jmenovitém seznamu nebo prázdnou hodnotu.

    Příklad deklarace sloupce s datovým typem ENUM:

    CREATE TABLE Test(
      Vratit ENUM("A", "N") DEFAULT "N",
      Barva ENUM("Cerna", "Cervena", "Bila")
    )

    pokud do sloupce Vratit nezadáte žádnou hodnotu, uloží se do něj N

    Datový typ SET

    Sloupec typu SET může na rozdíl od sloupce datového typu ENUM uchovávat jednu nebo víc hodnot deklarovaných ve jmenovitém seznamu přípustných hodnot. Je proto vhodný například pro uchovávání informací získaných ze zaškrtávacích formulářů u stránek WWW.

    Příklad deklarace sloupců s datovými typy SET:

    CREATE TABLE Test(
      Zajmy SET("Lyzovani", "Programovani", "Linux"));

    Při vkládání nového záznamu do sloupce typu SET je třeba vkládané hodnoty zabalit mezi uvozovky a oddělit čárkou.

    INSERT INTO TEST (Zajmy) values ("Lyzovani, Programovani");

    Do polí typu SET proto nevkládejte hodnoty obsahující čárky!

    Datové typy, které se používají k uchovávání datumu a času

    O těchto datových typech si povíme v nějakém z příštích dílů seriálu.

    Modifikátory sloupců

    Modifikátory sloupců jsou klíčová slova, která upravují chování sloupců tabulky.

    AUTO_INCREMENT (Automatické číslo)

    Modifikátor AUTO_INCREMENT lze použít na sloupce typů INT. Hodnota sloupce označeného tímto modifikátorem se po přidání nového záznamu vždy zvýší o 1. Hodnota prvního sloupce v prvním záznamu je 1. Hodnota tohoto sloupce bude tedy v každém záznamu jiná. Modifikátor AUTO_INCREMENT je výborný nástroj pro vytváření jedinečných hodnot.

    Každá tabulka může obsahovat pouze jeden sloupec s modifikátorem AUTO_INCREMENT.

    Do sloupce s modifikátorem AUTO_INCREMENT můžete při vložení nového záznamu ukládat hodnoty NULL, 0, nebo můžete uložení hodnoty zcela vynechat. Pokud zadáte číslo, které už v databázi existuje, program vypíše chybové hlášení a záznam neuloží. Pokud číslo v databázi ještě neexistuje, číslo do záznamu uloží a příště vloží do databáze číslo o 1 větší. Počáteční hodnotu sloupce s modifikátorem AUTO_INCREMENT můžete určit i při deklaraci.

    Poslední uložené číslo modifikátorem AUTO_INCREMENT zjistíte pomocí funkce LAST_INSERT_ID(). Tato funkce vrátí poslední vámi uložené číslo. Pokud by jako poslední uložil automatické číslo jiný uživatel, funkce stejně vrátí to vámi uložené.

    Pokud by hodnota sloupce měla přesáhnout maximální povolenou hodnotu datového typu příslušného sloupce, MySQL nahlásí chybu.

    ZEROFILL

    Modifikátor ZEROFILL se používá k zobrazení vedoucích nul. Chcete-li číslo 7 zobrazit jako jako 00007, musíte příslušný sloupec deklarovat jako INT(5) ZEROFILL.

    BINARY

    Modifikátor BINARY lze použít na sloupce typu CHAR a VARCHAR. Pokud nadeklarujeme sloupec s modifikátorem BINARY, budou řetězce uložené v těchto sloupcích rozlišovat malá/velká písmena.

    DEFAULT

    Modifikátor DEFAULT lze použít na všechny typy kromě BLOB a TEXT. Umožňuje změnit implicitní hodnotu sloupce (tj. hodnotu, kterou bude mít sloupec, pokud do něj nic neuložíte). Implicitně je výchozí hodnota sloupce NULL. Modifikátor použijete například takto:

    CREATE TABLE Test(Zeme char(2) NOT NULL DEFAULT "CZ");

    NULL, NOT NULL

    Určují, zda je zadání hodnoty do příslušného sloupce povinné. Pole s modifikátorem NOT NULL musí obsahovat hodnotu. Hodnota NULL je absolutně prázdná. Prázdný řetězec "" není NULL!

    PRIMARY KEY (primární klíč)

    Sloupec označený modifikátorem PRIMARY KEY jedinečným způsobem identifikuje každý záznam tabulky. Primární klíč nedovoluje hodnoty NULL. Sloupec označený tímto modifikátorem nesmí obsahovat duplicitní hodnoty (musí být jedinečný - musí obsahovat vždy jiné hodnoty). Primární klíč by měla obsahovat každá tabulka.

    (Více, nejen o primárních klíčích, se dočtete v jednom z příštích pokračování.)

    UNIQUE

    Sloupec označený identifikátorem UNIQUE nesmí obsahovat duplicitní hodnoty.

    Závěr

    Dnes jste se dozvěděli, že rozlišujeme číselné datové typy, textové datové typy, výčtové datové typy, datové typy, které se používají k uchovávání datumu a času, a že modifikátory sloupců jsou klíčová slova, která upravují chování sloupců tabulky.

    Po přečtení dnešního dílu byste měli být schopni vymodelovat a následně vytvořit databázi.

    Příští díl je věnován klíčům a zamykání záznamů. Naučíte se tedy správně používat klíče, využívat zabudované fulltextové vyhledávání a seznámíte se s problematikou zamykání záznamů.

           

    Hodnocení: 36 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    4.4.2003 10:18 Karel Zak
    Rozbalit Rozbalit vše CHAR()
    Dle normy SQL92 je u CHAR(n) nebo VARCHAR(n) 'n' pocet znaku a ne pocet bytu. Je treba si uvedomit, ze existuji multi-byte kodovani a pak cela ta implementace "fixnich" delek dostava ponekud jiny rozmer :-)
    4.4.2003 11:49 rat
    Rozbalit Rozbalit vše OT
    jen poznamka - "by jste" a nektere podobne tvary nejsou cesky. je skoda kdyz jsou v jinak velmi povedenem clanku hrubky.
    Hanba mi. Nemelo by se to stavat, ale obcas mi neco unikne.
    4.4.2003 12:16 hugis
    Rozbalit Rozbalit vše rozsah bigint
    len pre presnost rozsah BIGINT je zle, mal by byt 0 - 18446744073709551615 :-), iba ak by moj intel nevedel nasobit, ale vzdy som to cislo vedel takto. len pre najdenie chyby, stvrte cislo od konca je 1 a nie 0. to len aby niekoho neodradilo, ze sa tesne nezmesti do toho cisla :-)
    4.4.2003 23:13 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše diky
    Zdravim Zrovna tohle jsem potreboval. MySQL jsem se naucil sam z manualu a examplu, ale tohle tam vysvetlene nebylo. Diky za ten ZEROFILL. Zrovna nedavno jsem hrozne zapasil s tim, jak tridit hodnoty podle cisla. To bez nul nejde. Ale vlastne ja to mam opacne. V databazi s nulama, aby mi to vypisovalo poporade a ve skriptu je odstranuju. Ale to je jedno, stejne je to moc dobry serial. Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.