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



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

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

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

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

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

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

1. Relační databázový model

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

Jazyk SQL 3 - DML, DDL, TCL, DCL

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

Dotazovací jazyk SQL I

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

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

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

Databáze SQL SELECT. David Hoksza

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

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

Konceptuální modelování a SQL

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

Jazyk SQL slajdy k přednášce NDBI001

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

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

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

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

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

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

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

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

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Structured Query Language SQL

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

Databázové a informační systémy

RELAČNÍ DATABÁZOVÉ SYSTÉMY

- sloupcové integritní omezení

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

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

Databázové systémy úvod

Databázové systémy a SQL

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

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

Jazyk S Q L základy, příkazy pro práci s daty

Databázové systémy trocha teorie

Kód v databázi. RNDr. Ondřej Zýka

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

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

Dotazovací jazyk SQL I

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

Databázové systémy I

Co se stane po jeho vykonání? Vyberte libovolný počet možných odpovědí. Správná nemusí být žádná, ale také mohou být správné všechny.

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

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

Materiál ke cvičením - SQL

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

Vkládání, aktualizace, mazání

Optimalizace dotazů a databázové transakce v Oracle

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

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Jazyk PL/SQL Úvod, blok

Databázové systémy a SQL

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Marian Kamenický. Syntea software group a.s. marian.kamenicky. MFFUK Praha 2012/13

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

Zadání. Slovníček pojmů. Otázka 18 A7B36DBS

4IT218 Databáze. 4IT218 Databáze

FAKULTA STAVEBNÍ STUDIJNÍ PROGRAM: GEODÉZIE A KARTOGRAFIE TYP PROGRAMU: MAGISTERSKÝ STUDIJNÍ OBOR: GEOMATIKA ÚVOD DO ZPRACOVÁNÍ PROSTOROVÝCH DAT

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

Kapitola 4: SQL. Základní struktura

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

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

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

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

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

MySQL sežere vaše data

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník ATRIBUTY ZÁKLADN POJMY VÝBĚR PRVKŮ DLE ATRIBUTŮ

Integritní omezení (IO)

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

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

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

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

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Tabulka fotbalové ligy

PG 9.5 novinky ve vývoji aplikací

Univerzita Pardubice. Centrální správa dokumentů

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

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

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

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

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

NÁVRH DATABÁZE SQL PRO MORAVSKÉ GYMNÁZIUM BRNO S.R.O.

Informační systémy 2008/2009. Radim Farana. Obsah. Základní principy XML

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

FIREBIRD relační databázový systém. Tomáš Svoboda

Zápisování dat do databáze

Transkript:

4 Vysoká škola báňská Technická univerzita Ostrava Fakulta strojní, Katedra automatizační techniky a řízení 2008/2009 Radim Farana 1 Obsah Jazyk SQL, datové typy, klauzule SELECT, WHERE, a ORDER BY. Doporučená literatura: Gruber, M. Mistrovství v SQL. Svazek 1. Praha : SoftPress s.r.o., 2004. ISBN 80-86497-62-3 2 Jazyk SQL Historie začíná 1974 uveřejněním prvních prací dr. Codda. Snaha o vytvoření přirozeného jazyka pro dotazování (Angličtiny). První použitelná verze IBM (SEQUEL). Postupně se přidávaly další firmy (Oracle, SyBase). Postupně vznikaly standardy SQL-86, SQL-92 označovaná SQL-2. 3 1

Základní pojmy Použití Jako jazyk pro manipulaci s daty v relačních databázových systémech Jako součást hostitelského jazyka Oracle procedurální jazyk PL/SQL MS SQL Server transakční T-SQL Rozdělení Data Definition Language (DDL) Data Manipulation Language (DML) Data Control Language (DCL) 4 Jazyk SQL - DDL Data Definition Language Definuje struktury a objekty v databázi Tabulky, pohledy, indexy apod. Příkazy CREATE TABLE DROP TABLE ALTER TABLE CREATE VIEW DROP VIEW ALTER VIEW CREATE DATABASE DROP DATABASE ALTER DATABASE 5 Jazyk SQL - DML Data Manipulation Language (DML) Umožňuje manipulaci s daty Vkládání Výběr Aktualizace SELECT UPDATE INSERT DELETE 6 2

Jazyk SQL - DCL Data Control Language Příkazy pro řízení provozu a údržbu databáze Příkazy pro přidělování práv uživatelům a skupinám CREATE USER DROP USER Transaction Control Language (TCL) Příkazy pro práci s transakcemi SET TRANSACTION COMMIT ROLLBACK 7 Datové typy Typ dat: Popis: SMALLINT Celá čísla v délce až šesti číslic (včetně znaménka). Rozpětí povolených hodnot je od -32,768 do 32,767. Velikost: 2 Byte. INTEGER Celá čísla v délce až 11 číslic (včetně znaménka). Rozpětí povolených hodnot je interval od - 2,147,483,648 až do 2,147,483,647. Velikost: 4 Byte. DECIMAL(x,y) Čísla s pevnou řádovou čárkou se znaménkem celkem s x číslicemi a y desetinnými místy, x je implicitně 30 a y se implicitně rovná 6. Velikost: proměnná. NUMERIC(x,y) Obdobně jako DECIMAL(x,y). Velikost: proměnná. FLOAT(x) Čísla v pohyblivé řádové čárce. Rozpětí čísel sahá od 2.22507385850720160*10-308 až k 1.79769313486231560*10 +308. Velikost: 8 Byte. CHAR(n) Znakové řetězce v délce n znaků. Povolené rozpětí pro n je interval od 1 do 32767. Bez určení n je (CHARAKTER (n)) implicitně rovno 1. Velikost : n znaků. VARCHAR(n) Umožňuje používat řetězců proměnné délky. Dovoluje ukládat řetězce různé délky v jednotlivých (VARYING řádcích. Stanovuje se horní maximálně možná délka řetězce. Jinak podobně jako u CHAR(n). Velikost: n CHARAKTER) znaků. LONG VARCHAR Řetězec libovolného počtu znaků. Maximální velikost je omezena maximálně dovolenou velikostí databázového souboru. DATE Datum ve formátu dle nastavení: yyyy/mm/dd. Velikost: 4 Byte. TIMESTAMP Stejně jako datum plus hodina, minuta, vteřina a zlomek vteřiny (na 6 míst): yyyy/mm/dd hh-mmss.ffffff. Velikost: 8 Byte. TIME Časový okamžik dne. Ve formátu hodina/minuta/vteřina. Velikost: 4 Byte. DOUBLE Obdobně jako FLOAT. Velikost: 8 Byte. REAL Reálná čísla s vědeckotechnickým formátem. Rozpětí čísel sahá od 1.175494351*10-38 až do 3.402823466*10 38. Velikost: 4 Byte. BINARY(n) Binární data celkové délky n Byte. Implicitně je size = 1 Byte. Max. délka je 32767 Byte. Velikost: n Byte. LONG BINARY Binární datový typ libovolné délky. Omezení jako u LONG VARCHAR. 8 Datové typy SQL Serveru binary Bigint bit Char datetime decimal Float image Int Money nchar Ntext nvarchar Numeric Real smalldatetime smallint smallmoney sql_variant sysname text timestamp tinyin tvarbinary varchar uniqueidentifier 9 3

Vytvoření databáze CREATE {DATABASE SCHEMA} "<specif_souboru> " [USER "username" [PASSWORD "password"] [PAGE_SIZE [=] int] [LENGTH [=] int [PAGE[S]]] [DEFAULT CHARACTER SET charset] 10 Vytvoření tabulky CREATE TABLE tabulka "<jm_souboru>"] (<def_sloupce> [, < def_sloupce> <t_omezení>...]) CREATE TABLE osoba (osc Integer, oname CHAR(50), oaddr CHAR(255)); 11 Změna tabulky ALTER TABLE jméno {ADD <sloupec_def> ADD <tab_omezení> DROP sloupec DROP CONSTRAINT omezení}; ALTER TABLE osoba ADD ostreet CHAR(100), DROP oaddr; 12 4

Odstranění tabulky DROP TABLE jméno Někdy je potřeba nejprve odstranit definovaná omezení, U některých systémů také odstranit všechny záznamy. 13 Deklarace omezení Vyloučení hodnoty NULL (osc INTEGER NOT NULL) Unikátnost hodnot (osc INTEGER NOT NULL UNIQUE) Primární klíč (osc INTEGER NOT NULL PRIMARY KEY) 14 Deklarace omezení Omezení IDENTITY (automatické číslo) (osc INTEGER IDENTITY (1, 1)) První číslo řady Přírůstek 15 5

Kontrola sloupcových hodnot Omezení oboru hodnot (oplat DECIMAL CHECK (oplat>10000)) Omezení výčtem hodnot (oplat DECIMAL CHECK (oplat IN (1000, 2000, 3000))) Omezení více sloupců (oplat DECIMAL CHECK (oplat>1000 OR ostreet= Moje ulice )) 16 Pojmenování omezení CONSTRAINT jméno CHECK (omezení) CONSTRAINT MinMzda CHECK (oplat>10000) Je možné je dodatečně odstranit ALTER TABLE DROP CONSTRAINT MinMzda 17 Přiřazení implicitní hodnoty (oplat DECIMAL DEFAULT=10000)) Není-li implicitní hodnota určena, pak nabývá nevyplněná položka hodnoty NULL. 18 6

Referenční integrita Definice cizího klíče FOREIGN KEY (oplat) TabPlatOnly REFERENCES TabulkaPlatu(tpsazba) Zkrácená definice (oplat DECIMAL REFERENCES TabulkaPlatu(tpsazba)) 19 Získávání dat z databáze SELECT Nejpoužívanější příkaz Syntaxe Vyber vše z tabulky Zakaznik SELECT * FROM Zakaznik; SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC DESC ] ]; 20 Získávání dat z databáze - sloupce Výběr sloupců z tabulky SELECT Jmeno, Prijmeni FROM Zakaznik; Výpis sloupců pod jiným jménem (aliasy) SELECT Jmeno As Jméno FROM Zakaznik; Přidání konstantního sloupce SELECT Plat:, Plat, Prijmení:, Prijmeni FROM Zakaznik; Plat: 100 Prijmeni: Novak Plat: 300 Prijmeni: Novotny 21 7

Získávání dat z databáze - sloupce Výpočty s hodnotami sloupců SELECT Plat, Plat+100 As Premie FROM ZAMESTNANEC; Spojování hodnot sloupců SELECT Jmeno + + Prijmeni AS CeleJmeno FROM ZAKAZNIK; CeleJmeno Ales Hala Petr Novak 22 Získávání dat z databáze - sloupce Ne vždy se hodí údaje v tabulce pro prezentaci Zobrazit hodnoty v intervalech (Malý dluh, ) Jindy přiřadit jinou hodnotu (AHI Praha západ) SELECT NazevAuta, CASE spz WHEN AHI THEN Praha zapad WHEN OPA THEN OPAVA... ELSE Neznama SPZ END FROM EvidenceAut; 23 Získávání dat z databáze - sloupce SELECT Jmeno, Kategorie dluznika = CASE Dluh WHEN Dluh <= 1000 THEN Maly dluh WHEN Dluh > 1000 AND Dluh < 5000 THEN Velky dluh... ELSE Extemni dluh END FROM Zakaznik; 24 8

Získávání dat z databáze - řádky Vymezení výpisu duplicitních řádků DISTINCT musí následovat hned za SELECT SELECT DISTINCT Nazev, Cena FROM VYROBEK; Výpis omezeného počtu řádků TOP 100 největších dlužníků SELECT TOP 100 * FROM Zakaznik ORDER BY Dluh DESC; 25 Výpis konkrétních řádků Pomocí klauzule WHERE SELECT * FROM Zakaznik WHERE Dluh>100; Můžeme vypsat i konkrétní sloupce Do podmínky můžeme zahrnout i sloupec, který nebude zahrnut do výpisu Porovnávací operátory =, <>, >, <, >=, <=, BETWEEN, NOT BETWEEN Logické operátory AND, OR, NOT Pro řetězce využíváme operátor LIKE WHERE (Jmeno LIKE Pet% ) 26 Příklad podmínek v klauzuli WHERE Porovnávání číselných hodnot WHERE (Vek > 30) WHERE (Vek < 30) WHERE (Vek >= 30) WHERE (Vek <= 30) WHERE (Vek <> 30) WHERE (Vek BETWEEN 30 AND 40) WHERE (Vek NOT BETWEEN 30 AND 40) 27 9

Příklad podmínek v klauzuli WHERE Porovnávání řetězcových hodnot WHERE (Jmeno = Jana ) WHERE (Jmeno <> Jana ) WHERE (Jmeno LIKE Ja% ) začíná WHERE (NOT Jmeno LIKE Ja% ) nezačíná WHERE (Jmeno LIKE %na ) končí WHERE (NOT Jmeno LIKE %na ) nekončí WHERE (Jmeno LIKE %an% ) obsahuje WHERE (NOT Jmeno LIKE %an% ) - neobsahuje 28 Zjištění hodnoty Null Operace s hodnotou Null vrací vždy Null WHERE Jmeno = NULL Je nutné použít operátor IS NULL WHERE Jmeno IS NULL WHERE Jmeno IS NOT NULL 29 Řazení hodnot Databázový stroj nám vrátí neuspořádaná data Nemusí vrátit stejně uspořádané množiny Vzestupné (Ascending) přidáním ASC Sestupné (Descending) přidáním DESC Přidáním klauzule ORDER BY SELECT Vek, Plat FROM Tab ORDER BY Plat; SELECT Vek, Plat FROM Tab WHERE Vek> 40 ORDER BY Plat DESC; 30 10