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

Podobné prezentace


Prezentace na téma: "Příkazy jazyka SQL ve VFP a na SQL Serveru"— 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
ALTER TABLE DROP TABLE DML Data Manipulation Language INSERT UPDATE DELETE 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 ] [ AUTOINC [ NEXTVALUE počátek [ STEP krok ] ] ] | [ DEFAULT výraz ] omezení: [ CHECK log_výraz [ ERROR text ] ] [ PRIMARY KEY | UNIQUE [ COLLATE collate_sequence ] ] [ 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 ] [ NULL | NOT NULL ] [ 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
v indexových a logických výrazech smí figurovat více sloupců

8 Dočasné tabulky VFP SELECT … INTO CURSOR CursorAlias
bez fráze READWRITE jen ke čtení CREATE CURSOR CursorAlias … přepisovatelný některé vlastnosti jako pro tabulky v databázi SQL Server SELECT … INTO #TableName CREATE TABLE #TableName #TableName se založí v databázi Tempdb table 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ů) ] 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! 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 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 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 ] ) ] [ NULL | NOT NULL ] [ SET DEFAULT výraz ] [ SET CHECK log_výraz ] [ DROP DEFAULT ] [ 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 ] ) ] [ NULL | NOT NULL ] [ ADD CONSTRAINT omezení sloupce ] [ 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 ] ]

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í ]

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 LEFT [ OUTER ] JOIN RIGHT [ OUTER ] JOIN
FULL [ OUTER ] JOIN „SELF JOIN“ „CROSS JOIN“

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

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

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

24 Poddotazy (1) ve frázi WHERE ve všech verzích FoxPro
výraz operátor ALL (poddotaz) | ANY (poddotaz) | SOME (poddotaz) výraz [ NOT ] IN (poddotaz) [ NOT ] EXISTS (poddotaz) ve všech verzích FoxPro 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
musí mít lokální alias v seznamu sloupců SELECT smí vracet jediný sloupec a max. 1 řádek

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

27 GROUP BY agregační funkce COUNT, SUM, AVG, MAX, MIN
kromě COUNT(*) ignorují NULL nelze je vnořovat 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 SQL Server: WITH ROLLUP, WITH CUBE GROUPING()

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

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

30 APPLY zdrojová_tabulka { CROSS | OUTER } APPLY funkce nebo poddotaz
obdoba { INNER | LEFT OUTER } JOIN 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ů

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 Taming Visual FoxPro's SQL Inside MS SQL Server 2008: T-SQL Querying webová fóra, např.

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

Podobné prezentace


Reklamy Google