Megosztás a következőn keresztül:


SQL-szintaxis

A Windows Installer SQL-lekérdezési sztringjei a következő formátumokra korlátozódnak.

Akció Lekérdezés
Rekordcsoport kiválasztása SELECT [DISTINCT]{column-list} FROM {table-list} [WHERE {operation-list}] [ORDER BY {column-list}]
Rekordok törlése egy táblából DELETE FROM {table} [WHERE {operation-list}]
Tábla meglévő rekordjainak módosítása UPDATE {table-list} SET {column}= {constant} [, {column}= {constant}][, ...] [WHERE {operation-list}]AZ UPDATE-lekérdezések csak nemprimáris kulcsoszlopokon működnek.
Rekordok hozzáadása táblához INSERT INTO {table} ({column-list}) VALUES ({constant-list}) [TEMPORARY]Bináris adatok nem szúrhatók be közvetlenül a táblába az INSERT INTO vagy UPDATE SQL lekérdezések használatával. További információ: Bináris adatok hozzáadása táblához SQL-használatával.
Táblázat hozzáadása CREATE TABLE {table} ( {column} {column type}) [HOLD]Oszloptípusokat kell megadni minden oszlophoz táblázat hozzáadásakor. Új tábla létrehozásához legalább egy elsődleges kulcsoszlopot meg kell adni. A fenti {oszloptípus} lehetséges helyettesítései a következők: CHAR [( {size} )] | CHARACTER [( {size} )] | LONGCHAR | RÖVID | INT | EGÉSZ SZÁM | HOSSZÚ | OBJECT [NOT NULL] [IDEIGLENES] [HONOSÍTHATÓ] [, oszlop...][, ...] ELSŐDLEGES KULCS oszlop [, oszlop][, ...].
Tábla eltávolítása DROP TABLE {table}
Oszlop hozzáadása ALTER TABLE {table} ADD {column} {column type}Az oszloptípust oszlop hozzáadásakor kell megadni. A fenti {oszloptípus} lehetséges helyettesítései a következők: CHAR [( {size} )] | CHARACTER [( {size} )] | LONGCHAR | RÖVID | INT | EGÉSZ SZÁM | HOSSZÚ | OBJECT [NOT NULL] [IDEIGLENES] [LOCALIZABLE] [HOLD].
Ideiglenes táblák megtartva és felszabadítva ALTER TABLE {table name} HOLDALTER TABLE {table name} FREE
A felhasználó a HOLD és a FREE parancsokkal szabályozhatja egy ideiglenes tábla vagy egy ideiglenes oszlop élettartamát. A táblán lévő visszatartási szám a táblán lévő összes SQL HOLD műveletnél növekszik, és a tábla összes SQL FREE-műveletéhez csökken. Ha az utolsó visszatartás száma egy táblában szabadul fel, az összes ideiglenes oszlop elérhetetlenné válik. Ha az összes oszlop ideiglenes, a tábla elérhetetlenné válik.

 

További információ: Példák adatbázis-lekérdezésekre SQL és szkripthasználatával.

SQL-nyelvhelyesség

Az opcionális paraméterek zárójelben jelennek meg [ ]. Ha több választási lehetőség is szerepel a listában, az opcionális paramétereket függőleges sáv választja el egymástól.

A (z) {constant} karakterlánc vagy egész szám. Egy sztringet "példa" idézőjelek közé kell foglalni. A {constant-list} egy vagy több állandó vesszővel tagolt listája.

A LOCALIZABLE beállítás beállít egy oszlopattribútumot, amely azt jelzi, hogy az oszlopot honosítani kell.

A(z) {column} oszlophivatkozás egy tábla mezőjében lévő értékre.

A {marker} paraméterhivatkozás a lekérdezéssel elküldött rekord által megadott értékre. Az SQL-utasításban kérdőjel jelöli? A paraméterek használatával kapcsolatos információkért tekintse meg az MsiViewExecute függvényt vagy az Execute metódust.

A Windows Installer SQL szintaxisa nem támogatja az egyszeres idézőjelek (ASCII-érték 39) sztringkonstansban való menekülését. Beolvashatja vagy létrehozhatja a rekordot, beállíthatja a mezőt a StringData vagy IntegerData tulajdonsággal, majd meghívhatja a Módosítás metódust. Másik lehetőségként létrehozhat egy rekordot, és használhatja a Execute metódusban leírt paraméterjelölőket (?). Ezt az adatbázisfüggvényekkel is megteheti, MsiViewExecute, MsiRecordSetIntegerés MsiRecordSetString.

A WHERE {operation-list} záradék nem kötelező, és a kijelölés szűréséhez használandó műveletek csoportosítása. A műveleteknek a következő típusúaknak kell lenniük:

  • {column} = {column}
  • {column} = | <> | > | < | >= | <= {constant}
  • {column} = | <> | > | < | >= | <= {marker}
  • A(z) {column} null értékű
  • A(z) {column} nem null értékű

Sztringértékek esetén csak az = vagy <> műveletek lehetségesek. Az objektumérték-összehasonlítások NULL értékűek és NEM NULL értékűek.

Az egyes műveletek ÉS vagy OR operátorok szerint csoportosíthatók. A rendelést zárójelek () használatával lehet elrendelni.

Az ORDER BY záradék nem kötelező, és kezdeti késést okoz a rendezés során. A sztringek szerinti rendezés azonos sztringeket csoportosít, de nem betűrendbe rendezi a sztringeket.

A DISTINCT záradék nem kötelező, és nem ismétli meg az azonos rekordokat a visszaadott eredményhalmazban.

A (z) {table-list} egy vesszővel tagolt lista, amely az illesztésben {table} néven ismert egy vagy több táblanevet tartalmaz.

A(z) {column-list} egy vesszővel tagolt lista egy vagy több kijelölt {column} nevű táblaoszlopból. A nem egyértelmű oszlopok tovább minősíthetők {tablename.column} néven. Csillagot használhat oszloplistaként egy SELECT lekérdezésben a hivatkozott táblák összes oszlopának megjelenítéséhez. Ha mezőkre hivatkozik oszlophelyzet szerint, válassza ki az oszlopokat név szerint a csillag használata helyett. A csillag nem használható oszloplistaként az INSERT INTO lekérdezésben.

Az SQL-kulcsszavakkal ütköző táblanevek és oszlopnevek kizárásához a nevet két "" (ASCII-érték 96) jelölőjel közé kell foglalnia. Ha egy oszlopnevet meg kell szökni, és {tablename.column} minősítéssel kell rendelkeznie, akkor a táblát és az oszlopot egyenként {'tablename'.'column'} néven kell feloldani. A fenntartott szavakkal való ütközések elkerülése és a jelentős teljesítmény érdekében ajánlott az összes táblanév és oszlopnév ilyen módon történő feloldása.

A táblanevek legfeljebb 31 karakter hosszúságúak. További információ: Táblanevek. A tábla- és oszlopnevek megkülönböztetik a kis- és nagybetűket. Az SQL-kulcsszavak nem megkülönböztetik a kis- és nagybetűket.

Egy SQL-lekérdezés WHERE záradékában a kifejezések maximális száma legfeljebb 32 lehet.

Csak a belső illesztések támogatottak, és a különböző táblák oszlopainak összehasonlítása határozza meg. A körkörös illesztések nem támogatottak. A körkörös illesztés olyan SQL-lekérdezés, amely három vagy több táblát kapcsol össze egy kapcsolatcsoporttal. A következő például egy körkörös illesztés:

WHERE Table1.Field1=Table2.Field1 AND Table2.Field2=Table3.Field1 AND Table3.Field2=Table1.Field2.

A táblához tartozó elsődleges kulcs(ok) részét képező oszlopokat először prioritási sorrendben kell meghatározni, majd minden nem elsődleges kulcsoszlopot. Az állandó oszlopokat az ideiglenes oszlopok előtt kell definiálni. A szövegoszlop rendezési sorrendje nincs meghatározva; az azonos szöveges értékek azonban mindig csoportosítva lesznek.

Vegye figyelembe, hogy oszlop hozzáadásakor vagy létrehozásakor meg kell adnia az oszlop típusát.

A táblák legfeljebb egy "objektum" típusú oszlopot tartalmazhatnak.

Az SQL-lekérdezések sztringoszlopához explicit módon megadható maximális méret 255. A végtelen hosszúságú sztringoszlopok mérete 0. További információ: Oszlopdefiníció formátuma.

Bármely SQL-utasítás végrehajtásához létre kell hozni egy nézetet. Az eredményhalmazt nem létrehozó nézet( például a CREATE TABLE vagy az INSERT INTO) azonban nem használható MsiViewModify vagy a módosítása metódussal a táblák nézet szerinti frissítéséhez.

Vegye figyelembe, hogy nem tud bináris adatokat tartalmazó rekordot lekérni egy adatbázisból, majd ezzel a rekorddal beszúrhatja az adatokat egy teljesen másik adatbázisba. Ha bináris adatokat szeretne áthelyezni az egyik adatbázisból a másikba, exportálja az adatokat egy fájlba, majd importálja őket az új adatbázisba egy lekérdezésen és az MsiRecordSetStream függvényen keresztül. Ez biztosítja, hogy minden adatbázis saját másolatot készítsen a bináris adatokról.