< Definièní pøíkazy | SQL postupnì | ALTER TABLE >
Tímto pøíkazem zalo¾íme v databázi novou tabulku. Musíme ji pojmenovat, pojmenovat její sloupce a urèit datové typy pro tyto sloupce. Seznam konkrétních mo¾ných datových typù naleznete v referenèní pøírùèce jazyka. Základní syntaxe:
create table <jméno_tabulky> (<jméno_sloupce> <datový_typ>[,<jméno_sloupce> <datový_typ> ...]);
Základní syntaxe mù¾e být roz¹íøena o rùzná integritní omezení kladená na jednotlivé sloupce nabo jejich kombinaci. Omezení v¹ak mohou být definována i pøíkazem ALTER TABLE, jako¾ i pøidávání nebo zmìna sloupcù, tak¾e v na¹em pøíkladu zvolíme urèité rozdìlení tìchto definic.
Roz¹íøená syntaxe pøíkazu CREATE TABLE:
create table <jméno_tabulky> (<jméno_sloupce> <datový_typ> [<omezení_tohoto_sloupce>]
[,<jméno_sloupce> <datový_typ> [<omezení_tohoto_sloupce>] ...]
[,<dal¹í_omezení> [,<dal¹í_omezení>...]] );
Mo¾ná omezení nepøesahující rámec tabulky:
- PRIMARY KEY ... definice primárního klíèe tabulky
- UNIQUE ... definice unikátního klíèe
- NOT NULL ... sloupec nesmí být prázdný
- DEFAULT <výraz> ... definice defaultní hodnoty pro sloupec
- CHECK (<podmínky>) ... urèení podmínek, které musí splòovat pøípustné hodnoty èi kombinace hodnot ve sloupcích jednoho øádku tabulky
Omezení referenèní integrity uvedeme v kapitole ALTER TABLE.
Ka¾dé omezení mù¾e být pojmenováno klauzulí CONSTRAINT, syntaxe:
constraint <jméno_omezení> <definice omezení>
Pøíklad: Zalo¾te tabulku OSOBA, definujte v¹echny její sloupce, a urèete její primární klíè. Urèete, ¾e jméno a pøíjmení musí být v záznamech vyplnìno. Urèete, ¾e ICQ i SKYPE musí být unikátní
create table OSOBA (
ID INT,
JMEN VARCHAR2(50) not null,
PRIJM VARCHAR2(50) not null,
ULIC VARCHAR2(100),
PSC CHAR(5),
MEST VARCHAR2(100),
ZEME VARCHAR2(100),
EMAIL VARCHAR2(100),
TEL1 VARCHAR2(13),
TEL2 VARCHAR2(13),
ICQ VARCHAR2(9),
SKYPE VARCHAR2(150),
POZN CLOB,
constraint PK_OSOBA primary key (ID),
constraint AK_OSOBA_SKYPE unique (SKYPE),
constraint AK_OSOBA_ICQ unique (ICQ)); |
| Vlo¾te nìkolik øádkù do této nové tabulky. Zkou¹ejte jak fungují datové typy a omezení. O výsledku se v¾dy pøesvìdète pøíkazem SELECT. (Jak zaøídit "automatické èíslování" do pole ID mù¾ete vidìt v komplexním pøíkladu.) |
Pøíklad: Zalo¾te tabulku KOMUNIKAT, definujte v¹echny její sloupce, a urèete její primární klíè. vymezte mo¾né hodnoty pro sloupec FORMA: o - osobní, t - telefonická, e - email, p - písemná. Definujte defaultní hodnotu pro sloupec DATE jako aktuání datum a èas.
create table KOMUNIKAT (
ID_OS INT,
KDY DATE default sysdate,
FORMA CHAR(1) check (FORMA in ('o','t','e','p')),
OBSAH CLOB constraint OBSAH_NOT_NULL not null,
ODKAZ VARCHAR2(100),
constraint PK_KOMUNIKAT primary key (ID_OS,KDY)); |
Funkce sysdate v Oracle vrací aktuální datum a èas. Primární klíè této tabulky je slo¾en z kombinace sloupcù ID_OS a KDY (Vysvìtlení pro tuto volbu je, ¾e jedna osoba nemù¾e najednou komunikovat vícekrát. O tom, zda to tak skuteènì je, by se asi dalo diskutovat, ètenáøe prosíme o laskavou shovívavost. ) ODKAZ mù¾e obsahovat odkaz na dal¹í zdroj, napø dokument, email. Celý design tohoto pøíkladu je zjednodu¹en pro úèely výkladu jazyka SQL, není ukázkou ideálního návrhu. Do této tabulky vkládejte data a¾ po zmìnách z pøíkladù z kapitoly ALTER TABLE. |
< Definièní pøíkazy | SQL postupnì | ALTER TABLE >