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);
Další varianty a příklady lze najít v dokumentaci PostgreSQL.
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