Jak už to bývá, dělá se nejvíce chyb v těch nejjednodušších věcech, které jsou “přeci každému úplně jasné”. Takovou samozřejmostí je např. vytváření aliasů (klauzule AS). MS SQL Server je schopen zpracovat opravdu vše, na co si jen může čtenář při způsobech přejmenování vzpomenout a určitě ještě něco navíc:

image(Pro demostraci bylo použito číslo 1, při výběru sloupce z tabulky již tolik možností  na alias není.)

Takže se asi shodneme, že ve vytváření aliasů se nejspíš nedá udělat chyba. Mám tedy pro vás kontrolní otázku: 
Co vrátí dotaz SELECT COUNT(*) Table_A?
Asi vás prvně trkne, že tam chybí klauzule FROM. To je záměr, berme to jako chybu vzniklou kopírováním. Tento dotaz se korektně spustí.

image

Navrátí sloupec pojmenovaný Table_A s jedním řádkem s hodnotou 1. Pokud uděláte takovouto chybu např. vkopírováním ve složitějším dotazu, budete ji jen těžce odhalovat.

Jelikož se jazyk SQL velice podobá běžné řeči, vznikají chyby výmýšlením si nových příkazů či pouze překlepem:

SELECT * FROM Table_A
UNIONWITH
SELECT * FROM Table_B

Takovýchto novotvarů zvláště u nerodilých mluvčích vzniká celkem dost, příkladem: UNION x ONION x UNIONWITH, INTERSECT x INTERCEPT x INTERSECTWITH atd.
Ještě jsme si neuvedli, co bude výstupem výše uvedeného příkazu. Původně to mělo být sjednocení dvou tabulek pomocí UNION, nyní jsou výsledkem 2 tabulky: tabulka Table_A dostala alias UNIONWITH a druhá se nadále jmenuje Table_B. Tato jména ale ve výpisu neuvidíme, o co je to zrádnější.

image

Obrana proti těmto chybám bohužel neexistuje kvůli až příliš benevolentnímu zpracování SQL/T-SQL kódu. A na obarvování u IntelliSence se bohužel také nemůžeme 100% spolehnout Sad smile

Webcast ukáže princip rozdělení libovolného schématu na více stran jednoho Visio dokumentu, aby se tak stal přehlednějším. Určeno mírně pokročilým uživatelům.

Chcete se dozvědět více? Shlédněte webcast kliknutím na obrázek nebo přejděte na MSTV.cz.

image

Stránkování záznamů na straně databázového serveru je bežnou technikou používanou snad každým vývojářem aplikací, kde se získávají data z databáze. Místo získávání všech záznamů tabulky/tabulek z databáze a implementování řádkování na straně klienta, je určitě lepší implementovat stránkování na straně SQL serveru a přenést tak pouze záznamy potřebné pro současnou zobrazenou stránku. To odlehčí nejen databázovému serveru, ale hlavně aplikačnímu či klientské aplikaci.
U MS SQL 2008 R2 a nižších ale tato technika nebyla příliš lehce implementovatelná:

SELECT ROW_NUMBER() OVER (ORDER BY A) AS row, * 
FROM TABLE_NAME
WHERE ( ROW_NUMBER() OVER (ORDER BY A) AS row ) BETWEEN 21 AND 30

Popřípadě pomocí vnořeného selectu:

SELECT *
FROM ( SELECT ROW_NUMBER() OVER (ORDER BY A) AS row, * FROM TABLE_NAME )
WHERE row BETWEEN 21 AND 30

Od MS SQL Serveru Denali CTP1 máme ale možnost využít rozšíření klauzule ORDER BY o OFFSET a FETCH.

SELECT *
FROM TABLE_NAME
ORDER BY ID
OFFSET 20 ROWS 
— přeskoč prvních 20 řádků
FETCH NEXT 10 ROWS ONLY — vyber následujících 10 řádků

Hodnoty u OFFSET a FETCH můžeme buď zadat absolutně, jak to bylo uvedeno u přechodzího příkladu, nebo také pomocí celočíselné proměnné, z poddotazu, TSQL výrazu, popř. stored function, tedy:

OFFSET @offset ROWS
OFFSET ( SELECT offset_value FROM offset_table ) ROWS
FETCH NEXT @pagasize ROWS ONLY
FETCH NEXT (SELECT pagesize FROM pagesize_table) ROWS ONLY

Snad není potřeba dodávat, že u OFFSET se musí jednat o hodnotu větší rovnu 0 a u FETCH větší než 0.

Webcast ukáže schopnosti tvorby diagramu databáze v SSMS a následně je výrazně rozšíří použitím Visio 2010. Určeno mírně pokročilým uživatelům.

Chcete se dozvědět více? Shlédněte webcast kliknutím na obrázek nebo přejděte na MSTV.cz.

image

Data Graphics ve Visio 2010

Posted: 12.3.2010 in Visio

SqlServer

Visio 2010 přináší mnohem lepší spolupráci s externím datovým zdrojem, aby tak mohlo zvýšit informační hodnotu vámi vytvářených diagramů. Webcast obsahuje kompletní příklad užití. Určeno mírně pokročilým uživatelům.

Chcete se dozvědět více? Shlédněte webcast kliknutím na obrázek nebo přejděte na MSTV.cz.

 

MSTV.cz

SqlServer

V závěrečném dílu tohoto dvoudílného webcastu si ukážeme, jak se získávají data z více tabulek a z funkcí vracejících tabulková data pomocí APPLY. Určeno pro všechny vývojáře.

Chcete se dozvědět více? Shlédněte webcast kliknutím na obrázek nebo přejděte na MSTV.cz.

 

MSTV.cz

SqlServer

V prvním díle tohoto dvoudílného webcastu si ukážeme, jak se získávají data z více tabulek pomocí JOIN. Příště se budeme zabývat funkcemi vracejícími tabulková data a operátorem APPLY. Určeno pro všechny vývojáře.

Chcete se dozvědět více? Shlédněte webcast kliknutím na obrázek nebo přejděte na MSTV.cz.

 

 image