Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Příkazy jazyka SQL ve VFP a na SQL Serveru Hana Horová Praha, červen 2010.

Podobné prezentace


Prezentace na téma: "Příkazy jazyka SQL ve VFP a na SQL Serveru Hana Horová Praha, červen 2010."— Transkript prezentace:

1 Příkazy jazyka SQL ve VFP a na SQL Serveru Hana Horová Praha, červen 2010

2 Příkazy jazyka SQL DDL Data Definition Language CREATE TABLE CREATE TABLE ALTER TABLE ALTER TABLE DROP TABLE DROP TABLE … DML Data Manipulation Language INSERT INSERT UPDATE UPDATE DELETE DELETE SELECT SELECT

3 Ukázková data

4 CREATE TABLE CREATE TABLE název_tabulky [ „obecné“ vlastnosti tabulky – jen VFP ] ( seznam definic sloupců [, omezení tabulky ] )

5 Definice sloupce – VFP název_sloupce datový_typ [ ( délka [, des_místa ] ) ] [ NULL | NOT NULL ] [ NULL | NOT NULL ] [ AUTOINC [ NEXTVALUE počátek [ STEP krok ] ] ] | [ DEFAULT výraz ] [ AUTOINC [ NEXTVALUE počátek [ STEP krok ] ] ] | [ DEFAULT výraz ]omezení: [ CHECK log_výraz [ ERROR text ] ] [ CHECK log_výraz [ ERROR text ] ] [ PRIMARY KEY | UNIQUE [ COLLATE collate_sequence ] ] [ PRIMARY KEY | UNIQUE [ COLLATE collate_sequence ] ] [ REFERENCES název_tabulky [ TAG název_složky ] ] [ REFERENCES název_tabulky [ TAG název_složky ] ]

6 Definice sloupce – SQL Server název_sloupce datový_typ [ ( délka [, des_místa ] ) ] [ COLLATE collate_sequence ] [ COLLATE collate_sequence ] [ NULL | NOT NULL ] [ NULL | NOT NULL ] [ IDENTITY [ (počátek, krok) ] | [ DEFAULT výraz ] [ IDENTITY [ (počátek, krok) ] | [ DEFAULT výraz ] omezení: [ CONSTRAINT název_omezení ] PRIMARY KEY | UNIQUE | [ FOREIGN KEY ] REFERENCES název_tabulky [ (název_sloupce) ] | CHECK (log_výraz)

7 Omezení tabulky jako omezení sloupce jako omezení sloupce v indexových a logických výrazech smí figurovat více sloupců v indexových a logických výrazech smí figurovat více sloupců

8 Dočasné tabulky VFP SELECT … INTO CURSOR CursorAlias SELECT … INTO CURSOR CursorAlias bez fráze READWRITE jen ke čteníbez fráze READWRITE jen ke čtení CREATE CURSOR CursorAlias … CREATE CURSOR CursorAlias … přepisovatelnýpřepisovatelný některé vlastnosti jako pro tabulky v databáziněkteré vlastnosti jako pro tabulky v databázi SQL Server SELECT … INTO #TableName SELECT … INTO #TableName CREATE TABLE #TableName CREATE TABLE #TableName #TableName se založí v databázi Tempdb #TableName se založí v databázi Tempdb table table CTE CTE

9 INSERT (1) jen VFP: INSERT INTO název_tabulky FROM ARRAY název_pole | FROM MEMVAR | FROM NAME název_objektu

10 INSERT (2) INSERT INTO název_tabulky [ (seznam sloupců) ] VALUES (seznam výrazů) INSERT INTO název_tabulky [ (seznam sloupců) ] VALUES (seznam výrazů) INSERT INTO název_tabulky [ (seznam sloupců) ] příkaz_SELECT

11 UPDATE UPDATE cílová_tabulka SET název_sloupce = výraz [,... ] [ FROM zdrojové_tabulky ] [ WHERE log_výraz ]

12 DELETE DELETE [ cílová_tabulka ] [ FROM zdrojové_tabulky ] [ WHERE log_výraz ] bez WHERE odstraní všechny řádky tabulky! bez WHERE odstraní všechny řádky tabulky! na SQL Serveru řádky opravdu odstraní, nikoliv označí k odstranění! na SQL Serveru řádky opravdu odstraní, nikoliv označí k odstranění!

13 ALTER TABLE (1) Přidání sloupce: ALTER TABLE název_tabulky ADD definice_sloupce Přidání sloupce: ALTER TABLE název_tabulky ADD definice_sloupce Odebrání sloupce: ALTER TABLE název_tabulky DROP COLUMN název_sloupce Odebrání sloupce: ALTER TABLE název_tabulky DROP COLUMN název_sloupce Přejmenování sloupce ve VFP: ALTER TABLE název_tabulky RENAME COLUMN starý_název TO nový_název Přejmenování sloupce ve VFP: ALTER TABLE název_tabulky RENAME COLUMN starý_název TO nový_název Přejmenování sloupce na SQL Serveru: uloženou procedurou sp_rename Přejmenování sloupce na SQL Serveru: uloženou procedurou sp_rename

14 ALTER TABLE (2) Změna definice sloupce ve VFP: ALTER TABLE název_tabulky ALTER COLUMN název_sloupce datový_typ [ ( délka [, des_místa ] ) ] Změna definice sloupce ve VFP: ALTER TABLE název_tabulky ALTER COLUMN název_sloupce datový_typ [ ( délka [, des_místa ] ) ] [ NULL | NOT NULL ] [ NULL | NOT NULL ] [ SET DEFAULT výraz ] [ SET DEFAULT výraz ] [ SET CHECK log_výraz ] [ SET CHECK log_výraz ] [ DROP DEFAULT ] [ DROP DEFAULT ] [ DROP CHECK ] [ DROP CHECK ]

15 ALTER TABLE (3) Změna definice sloupce na SQL Serveru: ALTER TABLE název_tabulky ALTER COLUMN název_sloupce datový_typ [ ( délka [, des_místa ] ) ] Změna definice sloupce na SQL Serveru: ALTER TABLE název_tabulky ALTER COLUMN název_sloupce datový_typ [ ( délka [, des_místa ] ) ] [ NULL | NOT NULL ] [ NULL | NOT NULL ] [ ADD CONSTRAINT omezení sloupce ] [ ADD CONSTRAINT omezení sloupce ] [ DROP CONSTRAINT název_omezení ] [ DROP CONSTRAINT název_omezení ]

16 ALTER TABLE (4) Změna omezení tabulky ve VFP: ALTER TABLE název_tabulky [ SET CHECK log_výraz ] [ DROP CHECK ] [ ADD PRIMARY KEY výraz TAG název_složky [ COLLATE collate_sequence ] ] [ DROP PRIMARY KEY ] [ ADD UNIQUE výraz TAG název_složky [ COLLATE collate_sequence ] ] [ DROP UNIQUE TAG název_složky ] [ ADD FOREIGN KEY [ výraz ] TAG název_složky REFERENCES název_tabulky [ TAG název_složky ] ] [ DROP FOREIGN KEY TAG název_složky [ SAVE ] ] Změna omezení tabulky ve VFP: ALTER TABLE název_tabulky [ SET CHECK log_výraz ] [ DROP CHECK ] [ ADD PRIMARY KEY výraz TAG název_složky [ COLLATE collate_sequence ] ] [ DROP PRIMARY KEY ] [ ADD UNIQUE výraz TAG název_složky [ COLLATE collate_sequence ] ] [ DROP UNIQUE TAG název_složky ] [ ADD FOREIGN KEY [ výraz ] TAG název_složky REFERENCES název_tabulky [ TAG název_složky ] ] [ DROP FOREIGN KEY TAG název_složky [ SAVE ] ]

17 ALTER TABLE (5) Změna omezení tabulky na SQL Serveru: ALTER TABLE název_tabulky [ ADD CONSTRAINT omezení tabulky ] [ DROP CONSTRAINT název_omezení ] Změna omezení tabulky na SQL Serveru: ALTER TABLE název_tabulky [ ADD CONSTRAINT omezení tabulky ] [ DROP CONSTRAINT název_omezení ]

18 DROP TABLE DROP TABLE název_tabulky

19 SELECT – základní syntaxe SELECT sloupce [ INTO výstup ] FROM tabulka [ JOIN tabulka ON podmínky … ] [ WHERE podmínky ] [ GROUP BY sloupce ] [ HAVING podmínky ] [ ORDER BY sloupce ] [ … ]

20 Typy spojení [ INNER ] JOIN [ INNER ] JOIN LEFT [ OUTER ] JOIN LEFT [ OUTER ] JOIN RIGHT [ OUTER ] JOIN RIGHT [ OUTER ] JOIN FULL [ OUTER ] JOIN FULL [ OUTER ] JOIN „SELF JOIN“ „SELF JOIN“ „CROSS JOIN“ „CROSS JOIN“

21 NULL NULL + hodnota = NULL NULL + hodnota = NULL porovnání: IS NULL, IS NOT NULL porovnání: IS NULL, IS NOT NULL nikdy neporovnáváme = NULL nebo <> NULLnikdy neporovnáváme = NULL nebo <> NULL VFP: VFP: ISNULL(par)ISNULL(par) NVL(par1, par2)NVL(par1, par2) SQL Server: SQL Server: ISNULL(par1, par2) nebo COALESCE(par1, par2, … parN)ISNULL(par1, par2) nebo COALESCE(par1, par2, … parN) NULLIF(par1, par2)NULLIF(par1, par2)

22 Standardní pořadí zpracování FROM tabulky FROM tabulky WHERE WHERE GROUP BY GROUP BY HAVING HAVING SELECT sloupce SELECT sloupce DISTINCT DISTINCT ORDER BY ORDER BY TOP TOP

23 Pořadí zpracování ve VFP FROM tabulky FROM tabulky WHERE WHERE SELECT sloupce SELECT sloupce GROUP BY GROUP BY HAVING HAVING DISTINCT DISTINCT ORDER BY ORDER BY TOP TOP

24 Poddotazy (1) ve frázi WHERE ve frázi WHERE výraz operátor ALL (poddotaz) | ANY (poddotaz) | SOME (poddotaz)výraz operátor ALL (poddotaz) | ANY (poddotaz) | SOME (poddotaz) výraz [ NOT ] IN (poddotaz)výraz [ NOT ] IN (poddotaz) [ NOT ] EXISTS (poddotaz)[ NOT ] EXISTS (poddotaz) ve všech verzích FoxPro ve všech verzích FoxPro ve VFP 9 a na SQL Serveru je lze vnořovat ve VFP 9 a na SQL Serveru je lze vnořovat

25 Poddotazy (2) VFP 9 a SQL Server: ve frázi FROM místo tabulky ve frázi FROM místo tabulky musí mít lokální aliasmusí mít lokální alias v seznamu sloupců SELECT v seznamu sloupců SELECT smí vracet jediný sloupec a max. 1 řádeksmí vracet jediný sloupec a max. 1 řádek

26 Poddotazy (3) korelované korelované odkazují se na sloupec některé tabulky v hlavním příkazu SELECTodkazují se na sloupec některé tabulky v hlavním příkazu SELECT jsou pomalejšíjsou pomalejší nekorelované nekorelované SELECT si je může „předzpracovat“SELECT si je může „předzpracovat“

27 GROUP BY agregační funkce COUNT, SUM, AVG, MAX, MIN agregační funkce COUNT, SUM, AVG, MAX, MIN kromě COUNT(*) ignorují NULL kromě COUNT(*) ignorují NULL nelze je vnořovat nelze je vnořovat všechny výstupní sloupce buď obsahují agregační funkci, nebo musí být uvedeny v seznamu GROUP BY všechny výstupní sloupce buď obsahují agregační funkci, nebo musí být uvedeny v seznamu GROUP BY HAVING podmínka filtrující výsledek HAVING podmínka filtrující výsledek SQL Server: SQL Server: WITH ROLLUP, WITH CUBEWITH ROLLUP, WITH CUBE GROUPING()GROUPING()

28 SELECT – SQL Server ROW_NUMBER() ROW_NUMBER() APPLY APPLY FOR XML PATH FOR XML PATH PIVOT PIVOT …

29 ROW_NUMBER() ROW_NUMBER() OVER ( [ PARTITION BY sloupce ] ORDER BY sloupce ) … a další „ranking functions“ … a další „ranking functions“ RANK()RANK() DENSE_RANK()DENSE_RANK() NTILE(int)NTILE(int)

30 APPLY zdrojová_tabulka { CROSS | OUTER } APPLY funkce nebo poddotaz obdoba { INNER | LEFT OUTER } JOIN obdoba { INNER | LEFT OUTER } JOIN pravá strana se zpracuje pro každý řádek levé strany pravá strana se zpracuje pro každý řádek levé strany

31 FOR XML PATH SELECT … FROM … WHERE … FOR XML PATH ('') pohodlné zřetězení hodnot z několika vstupních řádků pohodlné zřetězení hodnot z několika vstupních řádků

32 PIVOT SELECT pevný_sloupec, [první_souhrnný_sloupec] AS alias_sloupce, [druhý_souhrnný_sloupec] AS alias_sloupce,... [poslední_souhrnný_sloupec] AS alias_sloupce FROM ( poddotaz ) AS lokální_alias PIVOT ( agregační_výraz FOR [sloupec_jehož_hodnoty_budou_hlavičkami_sloupců] IN ( [první_souhrnný_sloupec], [druhý_souhrnný_sloupec],... [poslední_souhrnný_sloupec] ) ) AS lokální_alias

33 Zdroje informací anglicky nápověda nápověda Taming Visual FoxPro's SQL Taming Visual FoxPro's SQL Inside MS SQL Server 2008: T-SQL Querying Inside MS SQL Server 2008: T-SQL Querying webová fóra, např. webová fóra, např.

34 Zdroje informací česky SQL Bez předchozích znalostí SQL Bez předchozích znalostí předchozí přednášky předchozí přednášky Nejen SELECTem živ je člověk (DevCon 2009)Nejen SELECTem živ je člověk (DevCon 2009) Visual FoxPro – úvod do jazyka SQL (seminář jaro 2007)Visual FoxPro – úvod do jazyka SQL (seminář jaro 2007) Magický příkaz SELECT (DevCon 2005)Magický příkaz SELECT (DevCon 2005) webová fóra, např. webová fóra, např. pandora.idnes.cz/conference/foxpro/pandora.idnes.cz/conference/foxpro/ knowledge-base.havit.cz/sql/knowledge-base.havit.cz/sql/

35 Dotazy (možná i odpovědi )


Stáhnout ppt "Příkazy jazyka SQL ve VFP a na SQL Serveru Hana Horová Praha, červen 2010."

Podobné prezentace


Reklamy Google