Fakulta elektrotechniky a informatiky

Slides:



Advertisements
Podobné prezentace
MS ACCESS - DOTAZY DATABÁZOVÉ SYSTÉMY.
Advertisements

Základy jazyka SQL Jan Tichava
Zpracování SQL Lubomír Andrle 5. přednáška
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Databáze.
Microsoft Office Access
Fakulta elektrotechniky a informatiky
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Databázové systémy 1 Cvičení č. 3 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Radek Špinka Přepínače MSSQL výběr.
Vzdělávací materiál / DUMVY_32_INOVACE_02B14 Příkazový řádek: obsah souborů PŘÍKLADY AutorIng. Petr Haman Období vytvořeníLeden 2013 Ročník / věková kategorie3.
VY_32_INOVACE_INF_RO_12 Digitální učební materiál
Databáze Jiří Kalousek.
VY_32_INOVACE_ 14_ sčítání a odčítání do 100 (SADA ČÍSLO 5)
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Dělení se zbytkem 6 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Dělení se zbytkem 5 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Čtení myšlenek Je to až neuvěřitelné, ale skutečně je to tak. Dokážu číst myšlenky.Pokud mne chceš vyzkoušet – prosím.
Databáze Úvod.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Dělení se zbytkem 8 MODERNÍ A KONKURENCESCHOPNÁ ŠKOLA
Zásady pozorování a vyjednávání Soustředění – zaznamenat (podívat se) – udržet (zobrazit) v povědomí – představit si – (opakovat, pokud se nezdaří /doma/)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Fakulta elektrotechniky a informatiky
Databázové systémy teorie a návrh relačních databázových systémů část II.
Relační databáze.
Vypracoval: Ondřej Dvorský Třída: VIII.A
Aplikační a programové vybavení
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Informatika I 4. přednáška
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové systémy II Přednáška č. 9. Transakce je logická jednotka práce sestávající z jednoho nebo více SQL příkazů, které jsou atomické z hlediska.
Databázové systémy II Cvičení č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Databázové modelování
Informatika II PAA DOTAZOVACÍ JAZYKY
Aplikační a programové vybavení
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
Základní obeznámení s jazykem SQL Databázové systémy.
Databázové systémy SQL Výběr dat.
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Základní obeznámení s jazykem SQL Databázové systémy.
Databázové systémy I Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Úvod do databází zkrácená verze.
Databázové systémy I Přednáška 5 Databázové systémy 1 – KIT/IDAS1
Dotazovací jazyk SQL I.
Databázové systémy a SQL
Informatika pro ekonomy přednáška 8
Šablona 32 VY_32_INOVACE_038.ICT.34
Počítačová cvičení z předmětu Datové sklady #1 Relační model dat
Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
Transkript prezentace:

Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz Databázové systémy I Přednáška č. 5 Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky jiri.zechmeister@upce.cz

Databázové systémy 1 - př. 2 Obsah Jazyk SQL Jednoduché typy základních příkazů CREATE TABLE DROP TABLE SELECT INSERT UPDATE DELETE Databázové systémy 1 - př. 2

Pravidla pro tabulkovou prezentaci relace (zjednodušení rozmanitostí vztahů zkoumaných teorií relací na binární relace) každý řádek odpovídá jedné entitě relace 2. pořadí řádků je nevýznamné 3. žádné dva řádky nejsou stejné (tabulka neobsahuje duplicitní řádky) Databázové systémy 1 - př. 2

Pravidla pro tabulkovou prezentaci relace 4. pořadí sloupců je nevýznamné 5. význam každého sloupce je určen jménem atributu 6. žádné dva názvy sloupců (atributy) nejsou stejné 7. hodnoty ve sloupcích jsou atomické (skalární – nelze je dále rozkládat) Databázové systémy 1 - př. 2

Relace – databázové tabulky Databázové systémy 1 - př. 2

Porovnání terminologie V odborné literatuře se často používá pojmu relace ve smyslu „vztah“, nikoli ve smyslu „entita“. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Přechod k relacím Číslo Jméno Příjmení Narozen Oddělení Pobočka 107 Karel Pilař 12.7.1963 Technické Pardubice, Palackého 232 306 Josef Matěj 29.5.1970 Hradec Králové, Sušilova 1528 125 Kamil Oháňka 13.3.1963 Praha, Dělnická 12 219 Josefína Krátká 23.1.1965 Obchodní Číslo Jméno Příjmení Narozen Id_odd Pobočka 107 Karel Pilař 12.7.1963 1 101 306 Josef Matěj 29.5.1970 102 125 Kamil Oháňka 13.3.1963 103 219 Josefína Krátká 23.1.1965 2 Id_odd Město Ulice čp 101 Pardubice Palackého 232 102 Hradec Králové Sušilova 1528 103 Praha Dělnická 12 Id_odd Oddělení 1 Technické 2 Obchodní Databázové systémy 1 - př. 2

Speciální relační operace Projekce výběr sloupců tabulky – vertikální podmnožina Databázové systémy 1 - př. 2

Speciální relační operace Restrikce výběr určité věty z tabulky na základě stanovené podmínky (výběr řádků tabulky) – horizontální podmnožina Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Databázový jazyk SQL 1970-72 vznik relačního modelu databáze – odpoutání logické organizace dat od fyzického uložení 1974-75 výzkum v IBM ohledně možnosti využití relačních databází -> vytvoření sady příkazů -> jazyk SEQUEL(Structured English Query Language) 1976 představen ERM 1979 Relational Software (dnes Oracle Corporation) 1980 Přejmenování SEQUEL -> SQL (Structured Query Language) Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Databázový jazyk SQL 1986 ANSI – standardizace SQL86 (první verze) 1992 V dalších letech se ukázalo, že SQL-86 obsahuje některé nedostatky a naopak v něm nejsou obsaženy některé důležité prvky týkající se hlavně integrity databáze - nový standard SQL-92 (zkráceně SQL2) 1999 Standard SQL3 (SQL:1999) reaguje na potřeby nejmodernějších databází s objektovými prvky, doplněny regulární výrazy, rekurzivní dotazy, podpora procedur, .. 2003 Standard SQL 2003 doplněny XML funkce, sekvence, sloupce s automaticky generovanými hodnotami 2006 Standard SQL 2006 definuje způsoby pro konverzi dat mezi SQL a XML formou Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Jazyk SQL slouží k Definici dat (struktury a organizace dat a vztahů mezi nimi) Získávání dat Manipulaci s daty Řízení přístupu Sdílení dat Integrita dat Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Úloha jazyka SQL Interaktivní dotazovací jazyk (pro uživatele) Databázový programovací jazyk (začlenění SQL kódu do aplikačních programů) Administrační databázový jazyk (správa databáze) Jazyk aplikací typu klient/server Jazyk pro přístup k datům na internetu Distribuovaný databázový jazyk (provoz distribuovaných databází) Jazyk pro databázové brány (umožňuje jednomu druhu databázového systému komunikovat s jiným) Databázové systémy 1 - př. 2

Přenositelnost jazyka SQL Důvody, které komplikují přenositelnost SQL kódu mezi dtb. systémy: SQL standard je složitý a tak ne všichni implementátoři podporují celý standard. Norma nespecifikuje chování databáze v několika důležitých oblastech (např. indexy, ukládání souborů ...), takže implementátoři se mohou rozhodnout, jak tyto činnosti implementovat. SQL standard přesně specifikuje syntaxi, kterou musí kompatibilní databáze splnit. Standardní specifikace pro sémantiku jazyka je méně dobře definovaná, což vede k nejasnostem. Databázové systémy 1 - př. 2

Přenositelnost jazyka SQL Mnoho prodejců databázových systémů má velké existující zákaznické základny, kde SQL standard se střetává s předchozím chováním databáze a prodejce může být neochotný ztratit zpětnou kompatibilitu. V některých případech mají prodejci zájem vytvořit či zachovat nekompatibility s jinými produkty, protože zajišťují silnou motivaci pro stávající uživatele zůstat loajální. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Popis jazyka SQL Standardní příkazy dělíme do skupin: Příkazy pro definici dat (DDL) Data Definition Language 2. Příkazy pro manipulaci s daty (DML) Data Manupation Language 3. Příkazy pro řízení dat (DCL) Data Controll Language 4. Ostatní příkazy Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Popis jazyka SQL Příkazy pro definici dat Těmito příkazy se vytvářejí struktury databáze – tabulky, indexy, pohledy a další objekty. Vytvořené struktury lze také upravovat, doplňovat a mazat. Tato skupina příkazů se nazývá zkráceně DDL – Data Definition Language („jazyk pro definici dat“). CREATE – vytváření nových objektů. ALTER – změny existujících objektů. DROP – odstraňování objektů. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Popis jazyka SQL Příkazy pro manipulaci s daty příkazy pro získání dat z databáze a pro jejich úpravy se označují zkráceně DML (data Manipulation Language) SELECT – vybírá data z databáze INSERT – vkládá do databáze nová data. UPDATE – mění data v databázi (editace). DELETE – odstraňuje data (záznamy) z databáze. EXPLAIN PLAN FOR – speciální příkaz, který zobrazuje postup zpracování SQL příkazu. Pomáhá uživateli optimalizovat příkazy tak, aby byly rychlejší. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Popis jazyka SQL Příkazy pro řízení dat Do této skupiny patří příkazy pro nastavování přístupových práv, řízení provozu a údržby databáze transakcí. Označují se jako DCL – Data Control Language („jazyk pro ovládání dat“), GRANT – příkaz pro přidělení oprávnění uživateli k určitým objektům. REVOKE – příkaz pro odnětí práv uživateli. ALTER USER – změna uživatele DROP USER – odstranění uživatele Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Popis jazyka SQL Příkazy pro řízení dat – skupina příkazů pro řízení transakcí Označují se TCC – Transaction Control Commands („jazyk pro ovládání transakcí"). COMMIT – potvrzení transakce. ROLLBACK – zrušení transakce, návrat do původního stavu. SAVEPOINT SET TRANSACTION Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Popis jazyka SQL Ostatní příkazy Do této skupiny patří příkazy pro správu databáze. Pomocí nich lze nastavovat systémové parametry (kódování znaků, způsob řazení, formáty data a času apod.). Tato skupina není standardizována a konkrétní syntaxe příkazů je závislá na databázovém systému. Databázové systémy 1 - př. 2

Standardní datové typy SQL Číselné datové typy (výběr) DECIMAL (<celé číslo1>, <celé číslo2>) Desetinné číslo s celkovým počtem <celé číslo1> číslic a s počtem <celé číslo2> za desetinnou čárkou. Stejný typ je NUMERIC. FLOAT (<celé číslo>) Desetinné číslo s plovoucí desetinnou tečkou. Parametr udává počet platných číslic (max. 38) REAL (<celé číslo>) Desetinné číslo s plovoucí desetinnou tečkou. Parametr udává počet platných číslic (max. 18) INTEGER Celé číslo v rozsahu – 2 147 483 648 až 2 147 483 647. SMALLINT Celé číslo v rozsahu – 32 768 až 32 767. Databázové systémy 1 - př. 2

Standardní datové typy SQL Znakové datové typy CHAR (<celé číslo>) Řetězec znaků pevné délky <celé číslo> znaků. Maximální délka bývá 255 znaků. VARCHAR (<celé číslo>) Řetězec znaků proměnlivé délky, maximálně <celé číslo> znaků. Maximální délka bývá delší než u typu CHAR. Oba datové typy mohou být ve variantě s národními znaky jako NCHAR či NVARCHAR. Databázové systémy 1 - př. 2

Standardní datové typy SQL Datové typy pro datum a čas DATE - Vyjádření datumu. TIME - Vyjádření času. TIMESTAMP - Struktura obsahující datum a čas. INTERVAL - Časové intervaly. Čas a časové razítko mohou být doplněny i o informace o časové zóně: TIMESTAMP(přesnost) WITH TIME ZONE TIME WITH TIME ZONE Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Datové typy Oracle Číselné datové typy NUMBER (<celé číslo1>, <celé číslo2>) Desetinné číslo s celkovým počtem <celé číslo1> číslic a s počtem <celé číslo2> číslic za desetinnou čárkou. Příklady: NUMBER číslo s pohyblivou řádovou čárkou NUMBER (9) celé číslo s přesností na 9 číslic NUMBER (9,2) desetinné číslo s pevnou řádovou čárkou s přesností na 9 číslic, z toho 2 za desetinnou čárkou (setiny) NUMBER (7,-2) desetinné číslo s pevnou řádovou čárkou s přesností na 7 číslic počínaje 2. před desetinnou čárkou (zaokr. na stovky) NUMBER (4,5) desetinné číslo s pevnou řádovou čárkou s přesností na 4 číslice počínaje 5. za desetinnou čárkou Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Datové typy Oracle Znakové datové typy CHAR (<celé číslo>), NCHAR Řetězec znaků pevné délky <celé číslo> znaků. Maximální délka 2000 znaků, default je 1. VARCHAR2 (<celé číslo>), NVARCHAR2 Řetězec znaků proměnlivé délky, maximálně <celé číslo> znaků či bytů. Maximální délka je 4000, default je 1. Upřesnění: VARCHAR2(20 CHAR) - řetězec znaků proměnlivé délky, maximálně 20 znaků VARCHAR2(20 BYTE) - řetězec znaků proměnlivé délky, maximálně 20 bytů Rozdíl vzniká v případech znaků národních abeced, které potřebují 2-4 B na svoje uložení. Defaultní hodnota zda BYTE či CHAR závisí na nastavení serveru a prostředí. LONG - zastaralé Řetězec znaků proměnlivé délky, max. 2 GB. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Datové typy Oracle Datové typy pro kalendářní a časové hodnoty datum a čas datový a časový interval Oba typy se skládají z polí YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE DATE Vyjádření konkrétního datumu a času s přesností na sekundy, rozsah je od 1.1.4712 př.n.l. do 31.12.9999 TIMESTAMP (<přesnost sekund>) Struktura obsahující datum a čas s požadovanou přesností (až na miliontiny sekundy pro hodnotu parametru <přesnost sekund>=6). INTERVAL YEAR (<rozsah roků>) TO MONTH K vyjádření delšího časového intervalu. INTERVAL DAY (<rozsah dní>) TO SECOND (<přesnost sekund>) K vyjádření relativně kratšího časového intervalu. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Datové typy Oracle Datové typy pro objemná data long object block (LOB) BLOB - binární objekty do 4GB CLOB – textové (CHAR) objekty do 4GB NCLOB - textové objekty v národních sadách do 4GB RAW – formát pro binární data, v současnosti pouze pro zachování zpětné kompatibility Databázové systémy 1 - př. 2

Jak pochopit zápisy syntaxí < par > parametr, za který se dosazuje konkrétní hodnota {A|B|C} povinná volba jedné z uvedených možností | oddělení variant [ ] nepovinná část … možnost opakování ’ označení konstant typu řetězec znaků Databázové systémy 1 - př. 2

Syntaxe příkazu CREATE TABLE CREATE TABLE <název tabulky> (<specifikace sloupce> [, <název sloupce1> = <výraz1> [, … ] ]) <specifikace sloupce> = {<název sloupce> <datový typ> [<omezení sloupce>] | <omezení tabulky> } < omezení sloupce> = [CONSTRAINT <název omezení> ] { [NOT] NULL | [NOT NULL] UNIQUE | [NOT NULL] PRIMARY KEY | REFERENCES <název tabulky> [(<název sloupce>)] | CHECK (<podmínka>)} Databázové systémy 1 - př. 2

Syntaxe příkazu CREATE TABLE /2 < omezení tabulky> = [CONSTRAINT <název omezení> ] { UNIQUE (<seznam sloupců>) | PRIMARY KEY (<seznam sloupců>) | CHECK (<podmínka>) | FOREIGN KEY (<seznam sloupců>) REFERENCES <název tabulky> [(< seznam sloupců>)] | } Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 CREATE TABLE Vytvoří tabulku dle popsané struktury. Příklad: CREATE TABLE dodavatele ( dodavatel_id number(4), nazev varchar2(100), zastoupeni varchar2(100) ); Strukturu tabulky lze zobrazit příkazem DESC <název tabulky> Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 CREATE TABLE Omezující podmínky pro sloupce: NOT NULL – hodnota ve sloupci nesmí být NULL UNIQUE – jedinečnost = zakázány duplicity PRIMARY KEY – primární klíč (zakázány duplicity a NULL hodnoty) FOREIGN KEY – cizí klíč (odkazuje na sloupec jiné tabulky – podpora pro udržení integrity dat) CHECK – podmínka pro hodnoty ve sloupci (např. ID INTEGER CHECK ID BETWEEN 0 AND 100) DEFAULT – předdefinovaná hodnota (např. sloupec_1 INTEGER DEFAULT 50) Mysql has this nice column autoincrement attribute that will create unique identifiers for that column. In oracle, it is a bit more complex to create such a fetaure, but allows any customization through the use of two specific oracle elements : sequence and trigger. the first step is to create you table, including the field you plan to use as a  unique autoincremented identifier : create table my_test ( id number, my_test data varchar2(255) ); secondly you can create a sequence for that table - a sequence is a specific oracle command that handles increments. - create sequence test_seq start with 1 increment by 1 nomaxvalue; an finally you can instanciate a trigger for that table forcing auto allocation of the designated column before the insert is performed : create trigger test_trigger before insert on my_test for each row begin select test_seq.nextval into :new.id from dual; end; an alternative to using a trigger would be to invoke the sequence next value within the insert statement : insert into my_test values(test_seq.nextval, 'voila!'); XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Example Number 1 ... create sequence product_seq start with 1 increment 1 / create or replace trigger product_insert before insert for each row begin select productseq.nextval into :new.product_id from dual; end; Example Number 2 ... How to create an autoincrement field in a table with a sequence ... SQLWKS> create table bob(a number , b varchar2(21)); Statement processed. First create a sequence SQLWKS> create sequence x ; Then create the trigger. create trigger y before insert on bob for each row when (new.a is null) begin select x.nextval into :new.a from dual; Example Number 3 ... First create a sequence: create sequence emp_no_seq; By default it increments by 1 starting at 0. Use its values when inserting data into the table: insert into t_emp values (emp_no_seq.nexval, 'Joe Black'); Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 CREATE TABLE Vytvoří tabulku dle popsané struktury. Příklad: CREATE TABLE employees_demo (employee_id NUMBER(6) PRIMARY KEY, first_name VARCHAR2(20), last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL, email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL, phone VARCHAR2(20), hire_date DATE DEFAULT SYSDATE CONSTRAINT emp_hire_date_nn NOT NULL, job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL, salary NUMBER(8,2) CONSTRAINT emp_salary_nn NOT NULL, commiss_pct NUMBER(2,2), manager_id NUMBER(6), dept_id NUMBER(4), dn VARCHAR2(300), CONSTRAINT emp_salary_min CHECK (salary > 0) , CONSTRAINT emp_email_uk UNIQUE (email) ) ; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 CREATE TABLE Vytvoří tabulku dle popsané struktury. Příklad: CREATE TABLE dodavatele ( dodavatel_id number(4) not null, nazev varchar2(100) not null, zastoupeni varchar2(100), CONSTRAINT dodavatel_pk PRIMARY KEY (dodavatel_id) ); CREATE TABLE produkty ( produkt_id number(8) not null, oznaceni varchar2(30) not null, dodavatel_id number(4) not null, cena number(6), CONSTRAINT fk_dodavatele FOREIGN KEY (dodavatel_id) REFERENCES dodavatele(dodavatel_id) Databázové systémy 1 - př. 2

Syntaxe příkazu DROP TABLE DROP TABLE <název tabulky> Odstraní z databáze tabulku s daným jménem, tj. všechny řádky tabulky, celou strukturu, všechny nad ní definované indexy a všechna případná omezení definovaná nad sloupci či celou tabulkou. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 DROP TABLE Příklad: DROP TABLE dodavatele; Databázové systémy 1 - př. 2

Syntaxe příkazu ALTER TABLE ALTER TABLE <název tabulky> ADD (<specifikace sloupců>) <specifikace sloupce> = {<název sloupce> <datový typ> [<omezení sloupce>] | <omezení tabulky> } Příkaz se používá pro přidání sloupců či omezení do tabulky. ALTER TABLE dodavatele ADD mesto varchar2(50); ALTER TABLE dodavatele ADD (mesto varchar2(50), telefon varchar2(13) ); Databázové systémy 1 - př. 2

Syntaxe příkazu ALTER TABLE ALTER TABLE <název tabulky> MODIFY (<specifikace sloupce>) Příkaz se používá pro úpravu specifikace sloupců či omezení do tabulky. ALTER TABLE dodavatele MODIFY zastoupeni varchar2(80) not null; Databázové systémy 1 - př. 2

Syntaxe příkazu ALTER TABLE ALTER TABLE <název tabulky> DROP COLUMN <název sloupce> Příkaz se používá pro odstranění sloupce z tabulky. ALTER TABLE dodavatele DROP COLUMN telefon; Databázové systémy 1 - př. 2

Syntaxe příkazu ALTER TABLE ALTER TABLE <název tabulky> RENAME COLUMN <název sloupce> Příkaz se používá pro přejmenování sloupce tabulky. ALTER TABLE dodavatele RENAME COLUMN mesto to zastoupeni_mesto; Databázové systémy 1 - př. 2

Syntaxe příkazu INSERT INSERT INTO <název tabulky> [(<název sloupce1> [, <název sloupce2> [, … ] ]) ] {<příkaz SELECT> | VALUES [(<výraz1> [, <výraz2> [, … ] ]) ] } Nový (jeden) řádek přidáme do tabulky uvedením hodnot pro všechny sloupce v tabulce. Více řádků najednou přidáme do tabulky pomocí vnořeného dotazu SELECT. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 INSERT Příklad: INSERT INTO dodavatele (dodavatel_id, nazev, zastoupeni, mesto) VALUES (1, 'Acer','Acer Czech Republic s.r.o.','Praha 4'); VALUES (2, 'Asus','ASUS Czech s.r.o.','Ostrava'); Databázové systémy 1 - př. 2

Syntaxe příkazu UPDATE UPDATE <název tabulky> [<pojmenování tabulky>] SET <název sloupce1> = <výraz1> [, <název sloupce2> = <výraz2> [, … ] ] [WHERE <podmínka řádku>] Změna hodnot ve sloupcích u těch řádků tabulky, které splňují podmínku uvedenou za klauzulí WHERE. Pokud není klauzule WHERE uvedena, bude provedena změna u VŠECH řádků tabulky. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 UPDATE Příklad: UPDATE dodavatele SET nazev = 'HP' WHERE nazev = 'Compaq'; Databázové systémy 1 - př. 2

Syntaxe příkazu DELETE DELETE FROM <název tabulky> [WHERE <podmínka>] Vymazání těch řádků tabulky, které splňují podmínku uvedenou za klauzulí WHERE. Pokud není klauzule WHERE uvedena, budou odstraněny VŠECHNY řádky tabulky. Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 DELETE Příklad: DELETE FROM produkty WHERE dodavatel_id = 7 or dodavatel_id > 10; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT Příkaz SELECT slouží k získávání dat z databáze. SELECT <nazev sloupce(sloupcu)> FROM <nazev tabulky>; Zobrazený příklad, který je ten nejjednodušší, musí obsahovat: Klauzuli SELECT, kde specifikujeme co chceme získat Klazuli FROM, kde specifikujeme odkud to chceme získat Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT Projekce – nám říká, které sloupce budeme zobrazovat Restrikce (selekce) – nám říká, které řádky budeme zobrazovat Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT Výběr dat ze všech sloupců tabulky provedeme použitím zástupného znaku * na pozici názvu sloupce za klauzulí SELECT SELECT * FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT Výběr dat ze všech sloupců tabulky může provézt také explicitním vyjmenováním všech sloupců SELECT zeme_id, zeme_nazev, region_id FROM a_hr.zeme; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT Omezení výběru dat pouze z některých sloupců provedeme výčtem požadovaných sloupců SELECT jmeno, prijmeni, email FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT V příkazu SELECT můžeme používat přímo aritmetické operátory. Například můžeme zobrazit rovnou platy zaměstnanců navýšené o 5%. SELECT jmeno, prijmeni, mzda*1.05 FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Příkaz SELECT V příkazu SELECT můžeme používat přímo aritmetické operátory. Například můžeme zobrazit rovnou platy zaměstnanců navýšené o 5%. SELECT jmeno, prijmeni, mzda*1.05 FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2

Příkaz SELECT Alias – umožňuje přejmenování sloupce ve výstupu, případně pod-dotazu nebo tabulky SELECT * | sloupec | výraz [ AS alias], … FROM tabulka; SELECT jmeno, prijmeni, mzda*1.05 AS „novy_plat“ FROM a_hr.zamestnanci; Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 WHERE Klauzule WHERE – provádí v dotazu restrikci Rozšiřuje syntaxi příkazu SELECT na: SELECT <sloupce> FROM <tabulka> [WHERE podmínka(y)] Také se používá u příkazů INSERT, UPDATE a DELETE Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 WHERE Použití klauzule WHERE nám umožňuje definovat, které řádky se do výsledku zařadí. SELECT jmeno, prijmeni, email FROM a_hr.zamestnanci; (vrátí jména, příjmení a emaily všech zaměstnanců) SELECT jmeno, prijmeni, email FROM a_hr.zamestnanci WHERE zamestnanec_id=22; (vrátí jméno, příjmení a email pracovníka s id 22) Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 WHERE Povolené operace v klauzuli WHERE = rovno > větší než >= větší nebo rovno < menší než <= menší nebo rovno <>(!=, ^=) nerovno Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 WHERE Povolené operace v klauzuli WHERE = rovno > větší než >= větší nebo rovno < menší než <= menší nebo rovno <>(!=, ^=) nerovno Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 WHERE Povolené operace v klauzuli WHERE BETWEEN … AND rozmezí hodnot IN (NOT IN) výčet hodnot ALL všechny hodnoty ANY některá hodnota LIKE (NOT LIKE) jako EXISTS (NOT EXISTS) existuje IS NULL (IS NOT NULL) je/není NULL Databázové systémy 1 - př. 2

Databázové systémy 1 - př. 2 Čas na otázky a praktické ukázky Děkuji za pozornost Databázové systémy 1 - př. 2