Databáze I. Přednáška 4

Podobné dokumenty
Databázové systémy Cvičení 5.2

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Konceptuální modelování a SQL

Transformace konceptuálního modelu na relační

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Úvod do databázových systémů

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

6. SQL složitější dotazy, QBE

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Jazyk SQL 3 - DML, DDL, TCL, DCL

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Databáze I. 5. přednáška. Helena Palovská

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

5. POČÍTAČOVÉ CVIČENÍ

Jazyk SQL slajdy k přednášce NDBI001

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Databáze I. Přednáška 7

Databáze I. Přednáška 6

Databázové systémy. Cvičení 6: SQL

Kapitola 6: Omezení integrity. Omezení domény

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Databázové systémy Cvičení 5.3

DUM 12 téma: Příkazy pro tvorbu databáze

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

Dotazovací jazyk SQL I

- sloupcové integritní omezení

Dotazovací jazyk SQL I

Relace x vztah (relationship)

Relační databázová technologie

Kapitola 4: SQL. Základní struktura

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Jazyk SQL databáze SQLite. připravil ing. petr polách

Internetová filmová databáze IFDB

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Databázové systémy Cvičení 5

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Měřící systém se vzdáleným přístupem. Databáze

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Materiál ke cvičením - SQL

1. Relační databázový model

8.2 Používání a tvorba databází

Jazyk SQL. Jaroslav Pokorný MFF UK, Praha J. Pokorný 1

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy I

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Úvod do databázových systémů

Databázové systémy. Integritní omezení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 9) Integritní omezení Databázové systémy 1 / 33

Sada 1 - PHP. 14. Úvod do jazyka SQL

Databáze I. Přednáška 2

Analýza dat a modelování. Přednáška 3

Temporální databáze. Jan Kolárik Miroslav Macík

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

Dotazování v relačním modelu a SQL

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Administrace Oracle. Práva a role, audit

PG 9.5 novinky ve vývoji aplikací

Text úlohy. Systémový katalog (DICTIONARY):

Digitální učební materiály

Databázové systémy a SQL

Základní přehled SQL příkazů

Jazyk PL/SQL Úvod, blok

17. července :51 z moravec@yahoo.com

MySQL manuál. Copyright: Adam Jun Stránky manuálu:

Structured Query Language SQL

2. blok část A Jazyk SQL, datové typy

Zkouškový příklad 4IT218 Rezervační systém zážitkové agentury. Karel Kohout FIS VŠE

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Databázové systémy I. 3. přednáška

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

RELAČNÍ DATABÁZE ACCESS

MySQL sežere vaše data

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Změny v Tabulce ALTER TABLE nazev_tabulky prikaz1, prikaz2, prikaz3,..., prikazn; -provede změny ve stávající tabulce s názvem "nazev_tabulky"

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Práva a role. Martin Polák. NDBI013 Administrace Oracle

Databázové systémy I

Informační systémy ve zdravotnictví. 6. cvičení

Úvod do databázových systémů

3. Jazyky relačních databázových systémů

SQL - trigger, Databázové modelování

Úvod do databázových systémů. Ing. Jan Šudřich

DBS Transformace konceptuálního schématu na

Oracle XML DB. Tomáš Nykodým

KIV/ZIS cvičení 6. Tomáš Potužák

Transkript:

Databáze I Přednáška 4

Definice dat v SQL Definice tabulek CREATE TABLE jméno_tab (jm_atributu typ [integr. omez.], jm_atributu typ [integr. omez.], ); integritní omezení lze dodefinovat později

Definice dat v SQL Definice tabulek CREATE TABLE CTENAR (RC VARCHAR(11) PRIMARY KEY, JMENO VARCHAR(20), PRIJMENI VARCHAR(30) NOT NULL );

CREATE TABLE SI_VYPUJCIL (PRIR_C INTEGER UNIQUE, RC VARCHAR(11) NOT NULL, DATUM_VYP DATE );

Datové typy SQL má předefinované datové typy, mohou se lišit v detailech podle používaného SŘBD datové typy: numerické celočíselné přesné pohyblivá řádová čárka aproximativní znakové řetězce bitové řetězce časy (temporální) časové intervaly

Celočíselné typy INTEGER zpravidla 4 Byty SMALLINT zpravidla 2 Byty, DECIMAL(p,q) celé číslo s p ciframi, desetinnou čárkou a q desetinnými místy NUMERIC(p,q) obdoba DECIMAL, implementace se liší v SŘBD BIGINT pouze v některých implementacích

Aproximativní typy REAL reálné číslo s pevně danou přesností implementací FLOAT(p) reálné číslo s přesností parametrizovanou počtem bitů DOUBLE PRECISION reálné číslo s pevně danou přesností implementací, větší než REAL

Řetězce CHARACTER(n) řetězec znaků pevné délky n doplněné zprava mezerami CHARACTER VARYING(n) řetězec znaků proměnné délky max. délky n znaků

Bitové řetězce definovány ve standardu SQL:1999, ale ve standardu SQL:2003 již nejsou BIT(n) řetězec bitů pevné délky n BIT VARYING(n) řetězec bitů proměnné délky max. délky n

Zkratky typů některé identifikátory typů lze zkracovat CHAR(n) VARCHAR(n) INT

Časové datové typy DATE TIME TIMESTAMP, resp. DATETIME v některých SŘBD ukládá datum a čas společně TIME WITH TIME ZONE TIMESTAMP WITH TIME ZONE

Intervaly INTERVAL kvalifikátor: INTERVAL YEARS TO MONTH interval v rocích a měsících, roky jsou standardně 2 ciferné např. hodnota 123 let a 2 měsíce (musíme specifikovat počet cifer roků): příklad literálu: INTERVAL '123-2' YEAR(3) TO MONTH INTERVAL DAY TO SECOND

logické hodnoty: TRUE FALSE UNKNOWN BOOLEAN

Změna tabulek ALTER TABLE přidání sloupce ADD COLUMN zrušení sloupce DROP COLUMN změna definice sloupce ALTER přidání integritního omezení ADD CONSTRAINT odstranění integritního omezeni DROP CONSTRAINT

Změna tabulek ALTER TABLE jméno_tab příkaz změny ; ALTER TABLE CTENAR ADD COLUMN PSC CHAR(5);

Změna tabulek ALTER TABLE CTENAR DROP COLUMN PSC RESTRICT; RESTRICT hlídá referenční integritu, tj. příkaz se neprovede, pokud se na sloupec odkazuje nějaké integritní omezení

Změna tabulek ALTER TABLE CTENAR DROP COLUMN PSC CASCADE; odstraní sloupec a s ním všechny objekty, které se na něj odkazovaly Poznámka: SŘBD mají různá další rozšíření příkazu ALTER, např. přejmenování tabulky, změna typu atributu,

Zrušení tabulek DROP TABLE CTENAR [CASCADE, RESTRICT]; odstraní tabulku z databáze chování CASCADE a RESTRICT je analogické odstraňování sloupců

Integritní omezení v SQL SQL v původní podobě (1986) nenabízí mnoho možností omezení na unikátnost hodnoty požadavek na neprázdnost hodnoty postupně byla integritní omezení rozšiřována a zobecňována

Integritní omezení sloupců NOT NULL hodnota políčka nesmí být prázdná (nutnost zadání hodnoty) UNIQUE jedinečná hodnota v tabulce PRIMARY KEY označení primárního klíče může být v tabulce pouze jedenkrát významově shodné s NOT NULL a UNIQUE

Integritní omezení sloupců DEFAULT specifikuje implicitní hodnotu, kterou SŘBD do sloupce dosadí, není-li hodnota zadána CHECK integritní omezení specifikované logickým výrazem

příklad: CREATE TABLE SI_VYPUJCIL (PRIR_C INTEGER PRIMARY KEY, RC CHAR(11) PRIMARY KEY, DATUM DATE DEFAULT now() ); integritní omezení je možné specifikovat i pomocí ALTER TABLE ADD CONSTRAINT

CREATE TABLE SI_VYPUJCIL (PRIR_C INTEGER NOT NULL, RC VARCHAR(11) NOT NULL, DATUM DATE DEFAULT now() ); ALTER TABLE SI_VYPUJCIL ADD CONSTRAINT si_vypujcil_pk PRIMARY KEY ( PRIR_C, RC ) ; si_vypujcil_pk jméno omezení

CREATE TABLE ZAMESTANEC (ID INTEGER PRIMARY KEY, RC VARCHAR(11) NOT NULL, JMENO VARCHAR(20), PRIJMENI VARCHAR(20) NOT NULL, PLAT DECIMAL(7,2) CHECK (plat<50000), USERNAME VARCHAR(10) UNIQUE );

příklad složitějšího omezení CONSTRAINT maximalni_plat CHECK (plat< (SELECT MAX(horni_hranice) FROM PLATOVE_TRIDY))

Referenční integrita v SQL příklad: CREATE TABLE SI_VYPUJCIL (PRIR_C INTEGER PRIMARY KEY, RC VARCHAR(11) PRIMARY KEY, DATUM DATE DEFAULT now() ); ALTER TABLE SI_VYPUJCIL ADD CONSTRAINT SI_VYP_CTEN_FK FOREIGN KEY ( RC ) REFERENCES CTENAR ( RC ) ;

pokud není specifikován u nadřízené tabulky atribut, na který se odkazuje cizí klíč, automaticky se jedná o primární klíč: ALTER TABLE SI_VYPUJCIL ADD CONSTRAINT SI_VYP_CTEN_FK FOREIGN KEY ( RC ) REFERENCES CTENAR; ALTER TABLE SI_VYPUJCIL ADD CONSTRAINT SI_VYP_EXEMP_FK FOREIGN KEY ( PRIR_C ) REFERENCES EXEMPLAR;

Chování SŘBD pro zajištění referenční integrity vložení dat (INSERT) SŘBD nevloží do podřízené tabulky záznam, pokud vkládaná hodnota cizího klíče neexistuje v nadřízené tabulce výmaz dat (DELETE) nebo změna (UPDATE) v hlavní tabulce chování lze nastavit pomocí SQL v definici cizího klíče klauzulí ON DELETE akce, resp. ON UPDATE akce

Chování SŘBD pro zajištění referenční integrity ALTER TABLE SI_VYPUJCIL ADD CONSTRAINT SI_VYP_EXEMP_FK FOREIGN KEY ( PRIR_C ) REFERENCES EXEMPLAR ON DELETE CASCADE;

Chování SŘBD pro zajištění akce: CASCADE referenční integrity při odstranění řádku v nadřízené tabulce se odstraní všechny řádky v podřízené tabulce, u kterých cizí klíč odkazuje na nadřízený záznam SET NULL hodnota cizího klíče se nastaví na hodnotu NULL SET DEFAULT hodnota cizího klíče se nastaví implicitní hodnotu

Chování SŘBD pro zajištění akce: NO ACTION referenční integrity pokud existuje v podřízené tabulce záznam, u kterého cizí klíč odkazuje na nadřízený záznam, operace se neprovede tato volba je implicitní, není-li při definici cizího klíče nic zadáno

Integritní omezení tabulek kromě integritních omezení sloupců lze zadat integritní omezení jako omezení celé tabulky zadává se za definici sloupců některá omezení sloupců mohou být zapsaná i jako omezení tabulky

integritní omezení pro výši maximálního platu jako omezení sloupce CREATE TABLE ZAMESTNANEC (ID INTEGER PRIMARY KEY, RC VARCHAR(11) NOT NULL, JMENO VARCHAR(20), PRIJMENI VARCHAR(20) NOT NULL, PLAT INT CHECK (plat<50000), USERNAME VARCHAR(10) UNIQUE );

integritní omezení pro výši maximálního platu jako omezení tabulky CREATE TABLE ZAMESTNANEC (ID INTEGER PRIMARY KEY, RC VARCHAR(11) NOT NULL, JMENO PRIJMENI PLAT USERNAME VARCHAR(20), VARCHAR(20) NOT NULL, INT, VARCHAR(10) UNIQUE, CONSTRAINT max_plat CHECK (plat<50000) );

Integritní omezení tabulek integritní omezení tabulek se testuje na neprázdné tabulce při vkládání dat, mazání, změně dat problém: integritní omezení typu požadavek na neprázdnost tabulky se po výmazu posledního záznamu neotestuje po vytvoření tabulky při vzniku databáze je samozřejmě prázdná, první záznam, po založení databáze musí nějaká procedura vložit alespoň jeden záznam

Integritní omezení tabulek řešení: zadat omezení ve tvaru tvrzení (ASSERTION) až po vzniku tabulky a vložení prvního záznamu CREATE ASSERTION jeden_ctenar CHECK (SELECT COUNT(*) FROM CTENAR > 0);

Vytvoření vlastních domén v SQL lze definovat vlastní domény a specifikovat tak vlastní datový typ např. omezením rozsahu hodnot CREATE DOMAIN rok_20_stoleti AS NUMERIC CHECK (VALUE BETWEEN 1900 AND 1999); porovnávání a kontrola legitimity spojení se provádí na základních typech

Vytvoření schématu schéma databáze kolekce tabulek, indexů, pohledů, uživatelských práv pojmenované schéma umožní logické seskupení tabulek, lze mít tabulky se stejným názvem v různých schématech, odkazujeme se na ně pomocí tečkové notace

Vytvoření schématu CREATE SCHEMA název_schématu [AUTHORIZATION username] seznam objektů schématu username jméno uživatele, který je vlastníkem schématu

Vytvoření schématu CREATE SCHEMA knihovna CREATE TABLE ctenar ( ) CREATE TABLE kniha ( ) ; na tabulky se můžeme odkazovat knihovna.ctenar

Vytvoření schématu lze zadat také jen CREATE SCHEMA knihovna; všechny další příkazy (CREATE TABLE, ), které SŘBD zadáváme, se automaticky provádějí v rámci schématu knihovna

Vytvoření schématu lze zadat také jen CREATE SCHEMA knihovna; všechny další příkazy (CREATE TABLE, ), které SŘBD zadáváme, se automaticky provádějí v rámci schématu knihovna

Vytvoření schématu v různých SŘBD se definice databáze mohou lišit v MySQL existuje ekvivalentní příkaz CREATE DATABASE, který musíme zadat jako první před tvorbou tabulek Microsoft SQL Server zná oba příkazy: CREATE DATABASE, CREATE SCHEMA jedna databáze může obsahovat několik schémat

Vytvoření indexů indexy jsou záznamy o tabulkách umožňující rychlé vyhledávání realizovány B-stromy pro jednu tabulku může být definováno více indexů, i podle více sloupců praktická představa: provede se seřazení řádků tabulky dle přílušných kritérií v indexu a tato informace o pařadí se zapíše vlastní data v tabulce se nepřehazují

Vytvoření indexů CREATE [UNIQUE] INDEX jméno_indexu ON jméno_tabulky ( jméno_atrib_1 [uspořádání], jméno_atrib_2 [uspořádání], ) [CLUSTER]; jako CLUSTER může být definován pro tabulku pouze jeden index data jsou podle něj uspořádány v tabulce

Vytvoření indexů uspořádání: ASC: vzestupně (implicitní) DESC: sestupně UNIQUE unikátní index, tj. žádné dva řádky dle tohoto indexu nesmí mít stejné hodnoty sloupcu(ů) v tomto indexu

Vytvoření a zrušení indexů CREATE INDEX prijmjmdat ON CTENAR ( prijmeni, jmeno, dat_nar DESC ); vytvoří index pro seřazení dle příjmení, jména vzestupně a data narození sestupně (od nejmladších) zrušení indexů DROP INDEX prijmjmdat