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.