|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
PostgreSQL (4) - Datové typy, vytvoření tabulekV dnešním díle se podíváme na vytvoření databázových tabulek a na typy proměných, které nám PostgreSQL poskytuje.
V minulém díle jsem psal o instalaci a prvovytvoření uživatele a databáze pomocí příkazů creteuser a createdb. Pokud si to nepamatujete, podívejte se, protože v tomto pokračování budete potřebovat jak uživatele, tak databázi. Nejdříve napíšu něco o typech (proměnných), které můžete použít. Předpokládám, že není třeba se dnes již zabývat PgSQL před verzí 7, protože tam jsou některé typy trochu jinak. ProměnnéProměnné můžeme rozdělit do několika skupin a to celočíselné, v plovoucí desetinné čárce (reálné), časovodatumové a znakové. Pro znalce MySQL mám jednu smutnou zprávu, PgSQL nezná výčtový typ enum (můžete jej ale definovat jako vlastní typ), ale má jiné typy, třeba geometrické, síťové i binární a s autoinkrementačními se zachází jinak, trochu logičtěji, alespoň podle mého názoru. Při definici tabulky můžeme každý typ ještě nějakým způsobem dále modifikovat, třeba zakážeme nevložení hodnoty, či předepíšeme defaultní hodnotu. Občas (většinou) se nám budou tato nastavení překrývat. Celočíselné typy (integer)Základní typ proměnné, používá se například (a většinou) pro vyjádření pozice, výšky, hmotnosti, ... Tento typ máte k dispozici v několika délkách a volba je jen na Vás, respektive na potřebách Vaší aplikace.
Tak toto jsou základní celočíselné typy. Už z názvů je vidět, které lze používat jako autoinkrementační identifikátory. Jsou to serial a bigserial. Troufám si tvrdit, že pro většinu (web)aplikací bude stačit typ serial. Reaálné typy... neboli typy s plovoucí desetinnou čárkou. Nejčastěji používaný typ z číselných. Používá třeba k vyjádření peněz...
Snad mi ti, kteří koukali dokumentaci prominou, že jsem typ money přiřadil k reálným typům, přestože v původní dokumntaci je vyjmut mimo. Je to typ, kdy máte k dispozici napevno 2 desetinná místa. Jeho rozsah ale limituje použití. Pokud budete třeba psát webshop, je málo pravděpodobné, že dojdete na jeho hranice u objednávky a cen zboží, ale kdyby se jednalo třeba o databázi pro makléře, nebo pojišťovny, neřku-li banky, budete na hranici velmi rychle. Potom vám poslouží dobře dva typy, které popíšu dále.
Typy Řetězcové binární typyŘetězcové typy slouží k uložení textů od délky 1 znaku až po snad neomezeno. Obvykle se první dva typy používají do délky 255 znaků, třetí jmenovaný pro neomezené texty a poslední pro binární data. Je to ale spíše otázka zvyku a discipliny, jako asi většina lidí jsem přešel na PgSQL z MySQL, takže používám typy ekvivalentně. Při neudání délky u char se implicitně počítá s jedním znakem a zavádí se speciální typ pro jména s délkou 64 znaků.
Pokud budete v svém produktu (lhostejno, či se jedná o PHP, nebo třeba Javu, Python) pracovat s kódováním UTF-8, které nemá všechny znaky s pevnou délkou a nebudete měnit kódování na db serveru z defaultního ISO-8859-1, doporučuji si nechat nějakou rezervu. Já jí dávám na 25%, takže pokud v formuláři mám pole s délkou 100 znaků, je tato položka ukládána do políčka dimenzovaného na 125 znaků. Zatím mi to kupodivu funguje.
Logické hodnoty
Tento typ se používá pro přepínače, kde stačí pouze hodnoty Ano a Ne, typ se jmenuje Bitové řetězcePokud budete potřebovat uložit přepínačů poněkudsi více, doporučuji použít tento typ. Bitové řetězce obsahují jen hodnoty 1 (jedna) a 0 (nula). Při ukládání hodnot tohoto typu je třeba kus opatrnosti, protože byste si třeba mohli špatně definovat administrátorká práva. Pokud máte pevnou délku bitového řetězce, a zadáte jej kratší, bude zprava doplněn nulami. Pokud se pokusíte uložit řetězec, který obsahuje i něco jiného, než nuly a jedničky, povede to k chybě.
Existují 4 varianty, jak tento typ při vytváření tabulky definovat, jsou to Zase platí co již bylo řečeno u řetězců, co má pevnou délku, je zpracováno rychleji. Datum a časTento typ můžete samozřejmě ukládat jako řetězec, ale přišli byste o spoustu možností při práci s ním.
U položek Modifikátory
Data v tabulce můžeme ovlivnit zadáním modifikátorů k té které konkrétní položce. Pomocí Vytvoření tabulkyOd této kapitoly dále budu pracovat nad reálným příkladem půjčovny DVD/videokazet, pro kterou v současnosti připravuji aplikaci, která pojede přes WWW rozhraní s možností rezervace DVD/VC od zákazníků přes web, protože zde se ukáží i další věci, jako jsou triggery a indexace. Tato kapitolka ukáže, jak vytvoříte vlastní tabulky v již vytvožené databázi. Bude to jeden jednoduchý příklad, které napoví vše. Možná i proto bude tato kapitolka extrémě krátká, protože nejlepší je, když si co nejvíce odzkoušíte s.a.m.i.
Pro vytvoření tabulky musíte být buď v terminálu PostgeSQL s Vaší databází, kam se dostanete pomocí
Tabulku vytvoříme příkazem CREATE TABLE users( id bigserial NOT NULL, login char(50), firstname char(125), surename char(125), pwd char(32) );Jak prosté milý Watsone dalo by se říci. Stejným způsobem můžete definovat tabulky další, další a tak dále, až se utabulkujete. Zvolte si jednotný styl pojmenovávání tabulek a proměnných v nich. Osvědčilo se mi třeba prefixovat tabulky patřící k jedné aplikace, protože třeba na webu můžete mít vícero "aplikací", ale ten u koho máte hosting Vám poskytne jen jednu databázi. Zkuste si sami teď vytvořit tabulku, kde budete mít data pro jednotlivé DVD, videokazety a výpůjčky. Odzkoušíte si tak návrh databázové struktury i jednotlivých. ZávěremDneska jsme se koukli na to jaké jsou základní typy proměnných PostgreSQL, do příštího týdne mi tu zbyly nějaké specifičtější typy, jako pole, geometrické typy, ... , podíváme se podrobněji na práci s datumem/časem a binátními řetězci. Pokusím se tam vejít i vkládání dat na server.
Related article
PostgreSQL (1) - Historie a pohledy jinam PostgreSQL (2) - Proč PgSQL, data a relace PostgreSQL (3) - Instalace, základní administrace PostgreSQL (5) - Další datové typy a práce s časem i binarními řetězci PostgreSQL (6) - Uložení, aktualizace a mazání dat. PostgreSQL (7) - Výběr dat z databáze PostgreSQL (8) - SELECT II. PostgreSQL (9) – SELECT III PostgreSQL (10) - SELECT IV PostgreSQL (11) - Výběr pomocí vzorků PostgreSQL 12 - urychlení výběrů PostgreSQL (13) - Na co se zapomnělo PostgreSQL (14) - omezení dat (Constraints) PostgreSQL (15) - Transakce PostgreSQL (16) - Zamykání PostgreSQL (17) - Datový typ pole PostgreSQL (18) - Datový typ pole II PostgreSQL (19) - Vlastní datové typy PostgreSQL (20) - Vlastní datové typy II PostgreSQL (21) - Spojování dotazů PostgreSQL (22) - Poddotazy PostgreSQL (23) - Optimalizujeme rychlost PostgreSQL (24) - Views (Pohledy) PostgreSQL (25) - Administrace skupin a uživatelů PostgreSQL (26) - Rozšiřujeme funkčnost Previous Show category (serial) Next
|
Szukanie oprogramowania
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |