Warning
This page is located in archive.

SQL - CRUD

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).

Vytvoření, změna struktury a mazání tabulek

Vytvoření tabulky

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.

Změna struktury tabulky

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.

Mazání tabulky

DROP TABLE jméno_tabulky

DROP TABLE kniha

Vkládání, úprava a mazání údajů v tabulkách

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

courses/a4b33ds/cviceni-6.txt · Last modified: 2017/02/17 14:46 by komenant