Databáze 2011/2012 T-SQL - kurzory, funkce. RNDr.David Hoksza, Ph.D.

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

Databáze 2011/2012 SQL SELECT II. RNDr.David Hoksza, Ph.D.

Databáze 2011/2012. Optimalizace, základní konstrukty T-SQL RNDr.David Hoksza, Ph.D.

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

Databáze. Optimalizace, základní konstrukty T-SQL David Hoksza

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

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

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

Distanční opora předmětu: Databázové systémy Tématický blok č. 8: Transact SQL Autor: RNDr. Jan Lánský, Ph.D.

Informační systémy 2008/2009. Radim Farana. Řešený příklad. Struktura navržené databáze

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

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

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

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

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

Databáze SQL SELECT. David Hoksza

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

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

Verzování a publikace dat na webu za pomoci PostgreSQL

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

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

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

HTML šablona v MarushkaDesignu

Kapitola 4: SQL. Základní struktura

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

Databázové systémy. Dotazovací jazyk SQL - III

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

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

Informační systémy 2008/2009. Radim Farana. Obsah. Bezpečnost uložených procedur

:20 1/13 Techniky T-SQL

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

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

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

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

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

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

PG 9.5 novinky ve vývoji aplikací

Databázové systémy I

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

Popis souboru pro generování reportů *.report

Databázové systémy I

Tabulka fotbalové ligy

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

TEORIE ZPRACOVÁNÍ DAT Cvičení 8

Práce s WKT řetězci v MarushkaDesignu

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

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

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

ZŠ ÚnO, Bratří Čapků 1332

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

Databázové systémy I. - II. 2009/2010

Databázové systémy a SQL

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

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

Virtual Private Database (VPD) Jaroslav Kotrč

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

DATABÁZOVÉ A INFORMAČNÍ SYSTÉMY

zobrazení délky ve výpisu v psql

Embedded SQL Dotazovací Jazyky I. Bc. CHOMUT Miroslav Bc. VODOLÁN Miroslav

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

Embedded SQL. Tomáš Skalický. Říjen 2010

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

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

Vizualizace TIN (trojúhelníková nepravidelná síť) v Marushka Designu

Embedded C výjimky, kurzory. Šárka Hlušičková

Databázové systémy. Tomáš Skopal. * embedded SQL * externí aplikace. - Databázové aplikace

Optimalizace Profinit. All rights reserved.

Mechanismus obarvení řádků browse

Databáze 2011/2012. Logický model DB. RNDr.David Hoksza, Ph.D.

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

U koly na procvic ení jazyka T-SQL

Databáze 2011/2012 Konceptuální model DB. RNDr. David Hoksza, Ph.D.

SPARTAN DAIRY 3.0. Uživatelský manuál. Vytvořeno s podporou Interní vzdělávací agentury projekt č. 2017FVHE/2220/47 VFU BRNO

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

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

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

Použití databází na Webu

6. blok část B Vnořené dotazy

Helios Orange Plugin Zadávání vlastností

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

10. Architektura klient/server a třívrstvá architektura

Virtual private database. Antonín Steinhauser

10. Architektura klient/server a třívrstvá architektura

Semestrální práce z DAS2 a WWW

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Embedded SQL v C/C++ III - pole, struktury. Jindřich Vodrážka

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

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

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

NÁVRH A TVORBA HUDEBNÍ DATABÁZE

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

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

Vykreslení obrázku z databázového sloupce na referenční bod geometrie

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

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

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

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

Transkript:

Databáze 2011/2012 T-SQL - kurzry, funkce RNDr.David Hksza, Ph.D. http://siret.cz/hksza

Osnva T-SQL kurzry T-SQL funkce Cvičení

Kurzr Datvá struktura umžňující pracvat s výsledkem dtazu Smyslem kurzru je přemsti prpast mezi jazykem SQL, který je mnžinvě rientvaný a prcedurálními (OO) jazyky (C, C++, C#, Java, ) knverze tabulkvé struktury na mdel sekvenčníh subru Kurzr je v pdstatě emulace magnetické pásky

Pstup práce s kurzrem DECLARE deklarace kurzru specifikace SELECTu, jehž result set chceme prcházet OPEN tevření kurzru a načtení dat specifikvaných v DECLARE části FETCH CLOSE načtení záznamu z kurzru, tj. řádku výsledku děje se typicky v cyklu zavření kurzru z kurzru nelze dále číst pmcí FETCH, ale struktura v paměti stále existuje lze následně vlat znvu OPEN DEALLOCATE dealkace všech dat spjených s kurzrem

Příklad pužití kurzru DECLARE curprductprice CURSOR FOR SELECT pc.name, SUM(p.ListPrice) AS SumPrice FROM SalesLT.Prduct p JOIN SalesLT.PrductCategry pc ON (p.prductcategryid = pc.prductcategryid) GROUP BY pc.name; DECLARE @Name VARCHAR(50), @SumPrice REAL; OPEN curprductprice; FETCH NEXT FROM curprductprice INTO @Name, @SumPrice; WHILE @@FETCH_STATUS = 0 IF @SumPrice > 50000 PRINT @Name; FETCH NEXT FROM curprductprice INTO @Name, @SumPrice; CLOSE curprductprice; DEALLOCATE curprductprice;

Typy kurzrů DECLARE cursr_name CURSOR [typ] FOR select_statement [fr_update_klauzule] LOCAL GLOBAL SCROLL defaultně je kurzr GLOBAL, tj. jeh živtnst trvá i p uknčení dávky LOCAL zajistí autmaticku dealkaci kurzru při uknčení dávky (např. prcedury) umžňuje phybvat se v kurzru v libvlném směru libvlný pčet řádků parametry FETCH - FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE FOR UPDATE [OF clumn_name [,...n]] definuje aktualizvatelné slupce (nejsu-li žádné definvané, pak lze aktualizvat libvlný slupec)

Příklad pužití SCROLL kurzru DECLARE curprductprice CURSOR SCROLL FOR SELECT pc.name, SUM(p.ListPrice) AS SumPrice FROM SalesLT.Prduct p JOIN SalesLT.PrductCategry pc ON (p.prductcategryid = pc.prductcategryid) GROUP BY pc.name; DECLARE @Name VARCHAR(50), @SumPrice REAL; OPEN curprductprice; FETCH LAST FROM curprductprice INTO @Name, @SumPrice; WHILE @@FETCH_STATUS = 0 IF @SumPrice > 50000 PRINT @Name; FETCH PRIOR FROM curprductprice INTO @Name, @SumPrice; CLOSE curprductprice; DEALLOCATE curprductprice;

Funkce v T-SQL Uživatelsky definvané funkce (user-defined functin - UDF) umžňují na rzdíl d prcedur vracet libvlný datvý typ (včetně tabulky) Nelze vlat nedeterministické funkce, tj. funkce vracející různé výsledky při vlání se stejnu sadu vstupních parametrů (RAND, GETDATE, ) Zdrj funkce T-SQL CLR (Cmmn Language Runtime) C#, VB.NT, Typy Skalární funkce vracejí skalární hdntu, tj. NE mnžinu (INT, REAL, VARCHAR(n), ) Tabulkvé funkce vracejí tabulku s kteru lze pracvat ve FROM části SELECT klauzule Pužití v SELECT příkazech, v jiných UDF, V CHECK IO, vždy je třeba při vlání UDF (na rzdíl d systémvých funkcí) uvádět schéma

Skalární funkce IF OBJECT_ID('udfExpensiveCategries') IS NOT NULL DROP FUNCTION udfexpensivecategries; CREATE FUNCTION udfexpensivecategries(@minprice INT) RETURNS VARCHAR(MAX) AS DECLARE @rv VARCHAR(MAX) = ''; DECLARE curprductprice CURSOR FOR SELECT pc.name, SUM(p.ListPrice) AS SumPrice FROM SalesLT.Prduct p JOIN SalesLT.PrductCategry pc ON (p.prductcategryid = pc.prductcategryid) GROUP BY pc.name; DECLARE @Name VARCHAR(50), @SumPrice REAL; OPEN curprductprice; FETCH NEXT FROM curprductprice INTO @Name, @SumPrice; WHILE @@FETCH_STATUS = 0 IF @SumPrice > @minprice IF @rv!= '' SET @rv = @rv+'; '; SET @rv = @rv + @Name; FETCH NEXT FROM curprductprice INTO @Name, @SumPrice; CLOSE curprductprice; DEALLOCATE curprductprice; RETURN @rv; SELECT db.udfexpensivecategries(5000)

Inline tabulkvé funkce IF OBJECT_ID('udfExpensiveCategriesTab') IS NOT NULL DROP FUNCTION udfexpensivecategriestab; CREATE FUNCTION udfexpensivecategriestab(@minprice INT) RETURNS TABLE AS RETURN ( SELECT pc.name, SUM(p.ListPrice) AS SumPrice FROM SalesLT.Prduct p JOIN SalesLT.PrductCategry pc ON (p.prductcategryid = pc.prductcategryid) GROUP BY pc.name HAVING SUM(p.ListPrice) > @minprice); SELECT * FROM db.udfexpensivecategriestab(50000)

Multi-statement tabulkvé funkce IF OBJECT_ID('udfExpensiveCategriesTabExt') IS NOT NULL DROP FUNCTION udfexpensivecategriestabext; CREATE FUNCTION udfexpensivecategriestabext(@value INT, @cnt INT) RETURNS @rvtab TABLE (cl1 INT, cl2 INT) AS DECLARE @i INT = 1; WHILE @i <= @cnt INSERT INTO @rvtab VALUES (@value+@i, @value+@i+1); SET @i = @i + 1; RETURN; SELECT * FROM db.udfexpensivecategriestabext(10, 7);