Operace nad daty z dotazu
Je-li dotaz uložen v databázi pod jménem (v SQL jako VIEW), dá se používat v manipulačních příkazech jazyka SQL na těch místech, kde může být tabulka. V uložené proceduře lze dotaz použít také v deklaraci kurzoru nebo v příkazu FOR.
Existuje však řada omezení na použití dotazu v operacích vkládajících a rušících záznamy a pro přepis dat. Níže uvedená tabulka ukazuje, jak konstrukce použité v dotazu ovlivňují možnosti práce s daty v dotazu:
Konstrukce |
INSERT |
DELETE |
UPDATE |
Operace JOIN |
Nelze |
Nelze |
Lze, pokud to umožňuje alespoň jeden operand |
Klauzule GROUP BY nebo agregační funkce |
Nelze |
Nelze |
Nelze |
Operace UNION |
Nelze |
Nelze |
Nelze |
Operace INTERSECT |
Nelze |
Dle prvního operandu |
Dle prvního operandu |
Operace EXCEPT |
Nelze |
Dle prvního operandu |
Dle prvního operandu |
Klauzule FOR READ ONLY |
Nelze |
Nelze |
Nelze |
Klauzule INSENSITIVE |
Nelze |
Nelze |
Nelze |
Proměnné v klauzulích SELECT nebo ORDER BY |
Nelze |
Nelze |
Nelze |
Uvedení více než jedné tabulky v klauzuli FROM je operací JOIN. Jiné operace a také operace použité v subdotazech nemají na práci s daty vliv.
Pokud struktura dotazu umožňuje přepis dat (UPDATE), neznamená to ještě, že bude možno přepsat data ve všech sloupcích. Nelze přepisovat například data ve sloupcích zadaných výrazem nebo pocházejících z needitovatelných operandů v operaci JOIN.