Search
Na minulých cvičeních jsme probrali základy dotazování v jazyku SQL. Nyní se podíváme na další příkazy. Zkratka v názvu cvičení CRUD vyjadřuje (create,read,update,delete). Doposud jsme se zabývali “čtením - read” dotazováním do databáze. Dnes se zaměříme na další práci s daty (INSERT, UPDATE, DELETE) i na práci s tabulkami (CREATE TABLE, ALTER, DROP).
CREATE TABLE jméno_tabulky ( jméno_sloupce_1 datový_typ [DEFAULT výraz] [integritní omezení], ... jméno_sloupce_N datový_typ [DEFAULT výraz] [integritní omezení], další_integritní_omezení )
CREATE TABLE kniha( kniha_id int, nazev varchar(100), autor varchar(100), pocet_stran int, vydani int );
Primární klíč:
CREATE TABLE kniha( kniha_id int PRIMARY KEY, nazev varchar(100), autor varchar(100), pocet_stran int, vydani int );
Přidání kontroly nevyplněné hodnoty (NOT NULL) a kontroly hodnoty (CHECK):
CREATE TABLE kniha( kniha_id int PRIMARY KEY, nazev varchar(100) NOT NULL, autor varchar(100), pocet_stran int CHECK (pocet_stran > 0), vydani int );
Kontrola více hodnot (možno kontrolovat i např. součty a rozdíly hodnot polí):
CREATE TABLE kniha( kniha_id int PRIMARY KEY, nazev varchar(100) NOT NULL, autor varchar(100), pocet_stran int, vydani int, CONSTRAINT con1 CHECK (pocet_stran > 0 AND vydani > 0) );
Unikátní hodnota:
CREATE TABLE kniha( kniha_id int PRIMARY KEY, nazev varchar(100) NOT NULL, autor varchar(100), pocet_stran int, vydani int, UNIQUE(nazev) );
Cizí klíče:
CREATE TABLE kniha( kniha_id int PRIMARY KEY, nazev varchar(100) NOT NULL );
CREATE TABLE vytisk(
vytisk_id integer PRIMARY KEY, \\ kniha_id integer, \\ police integer, \\ FOREIGN KEY (kniha_id) REFERENCES kniha (kniha_id) );
Další varianty a příklady lze najít v dokumentaci PostgreSQL.
ALTER TABLE jméno_tabulky ( ADD COLUMN jméno_sloupce typ [integritní omezení], ALTER COLUMN jméno_sloupce typ [integritní omezení], DROP COLUMN jméno_sloupce, RENAME COLUMN jméno_sloupce TO nové_jméno_sloupce, RENAME TO nové_jméno_tabulky )
ALTER TABLE kniha ADD COLUMN vydavatel varchar(50); ALTER TABLE kniha DROP COLUMN vydavatel; ALTER TABLE kniha RENAME COLUMN pocet_stran TO pages; ALTER TABLE kniha RENAME TO books; ALTER TABLE kniha ALTER COLUMN autor TYPE varchar(120);
DROP TABLE jméno_tabulky
DROP TABLE kniha
Vkládání nových dat do tabulky
INSERT INTO jméno_tabulky (seznam sloupců) VALUES (hodnoty v pořadí uvedených sloupců)
Seznam sloupců je nepovinný, pokud není seznam uveden, berou se všechny sloupce v pořadí, v jakém byly vytvořeny při vytváření tabulky (CREATE TABLE).
INSERT INTO kniha VALUES (1,'Myslime objektove v jazyku Java', 'Rudolf Pecinovsky', 576); INSERT INTO kniha (kniha_id,nazev) VALUES (1,'Myslime objektove v jazyku Java');
Úprava dat v tabulce
UPDATE jméno_tabulky SET sloupec = nová_hodnota WHERE podmínka
UPDATE kniha SET vydani=2 where nazev='Myslime objektove v jazyku Java'
v rámci jednoho příkazu UPDATE lze upravovat i několik sloupců najednou UPDATE kniha SET vydani=2,pocet_stran=580 where nazev='Myslime objektove v jazyku Java'
Mazání dat v tabulce
DELETE FROM jméno_tabulky WHERE podmínka
Smazání všech dat v tabulce DELETE FROM kniha
Smazání všech druhých vydání knih DELETE FROM kniha WHERE vydani=2