Adattípusok interbase, cikkek, programozás - programozás C, Delphi, C #

Annak ellenére, hogy az adattípusok részletesen a dokumentációban (lásd. [1, Ch. 4]), akkor meg kell vizsgálni számos fogalmat gyakran alkalmazott a következő fejezetekben. Amellett, hogy a prezentáció általános jellegű is figyelembe kell venni példákat adattípusok InterBase adatbázisok, és ajánlásokat fogalmaz meg azok használatáról és az átalakulás. Vegyük is részletezi a különbségeket a fajta adat 1. és 3. nyelvjárások InterBase adatbázis.

Adattípusok - alapvető elemei bármely programozási nyelv, vagy valamilyen adatbázis kezelő, és InterBase sem kivétel. Amikor azt mondjuk, hogy néhány információ az adatbázisban tárolt, akkor mindig tisztában, hogy ezt az információt nem lehet lerakott egy nagy halom; Ezzel szemben, az adatokat meg kell válogatni és lefektetett a „polcokon”. meghatározzák adattípusok tudunk a „polcról” megfelelő és mi nem. A „polcok” kifejezés elsősorban táblák az adatbázisban mezőben (lásd a fickó. „Táblázatok. Az elsődleges kulcsokat és generátorok” (h. 1) bekezdés), valamint a változókat kiváltó, tárolt eljárásokat, és így tovább. D.
Mindegyik adattípus olyan műveletek végezhető az értékek az ilyen típusú, tehát ki kell választani a megfelelő típusú adatok tervezésénél egy adatbázis, amely segít elkerülni a sok probléma a fejlesztés kliens programok.
Az InterBase van 12 típusú adatok, amelyek megfelelnek szinte minden fejlesztő tárolási igényeinek. Az ilyen típusú hagyományos osztva a következő 6 csoportok:

  • tárolására egészek - egész és smallint;
  • tárolni valós számok - úszó és a kétszeres pontosságú;
  • számok fix pontosság - Numerikus és DECIMAL;
  • A dátum, az idő és a dátum / idő - dátum, idő és TIMESTAMP;
  • Tárolás szimbólumok - CHARACTER (rövidítve CHAR) és változó CHARACTER (VARCHAR);
  • A tárolási dinamikusan bővíthető adatok - BLOB.

Lehetőség van arra is, hogy meghatározzák, hogy milyen típusú tömbök elemi értékeket, azaz Az összes fenti típusok kivételével BLOB.
A legtöbb InterBase adattípusok megfelelnek a meghatározott típusok a SQL92 szabvány, de azon kívül, hogy van még a saját „highlight” - tömbök elemi adattípusok és BLOB.
InterBase tömbök tartalmazhat több egyféle adatot egy mező meghatározható például egy sor értékek INTEGER típusú. Sőt, tömbök több dimenzió!
Az adattípus BLOB - egy dinamikusan bővíthető adattípus, amelynek neve gyakran áll a nagy bináris objektum - „nagy bináris objektum”. Azt kell mondanom, hogy a BLOB - A találmány InterBase fejlesztők később terjedt és gyökeret minden modern SQL-szerver.

Syntax adattípus definíciók

Az adattípusok leírására használt mezők táblázatokban változók kiváltó és tárolt eljárások. Az alábbiakban egy általános szintaxis meghatározására minden lehetséges adattípusok az InterBase.

Részletek Ingatlan adattípusok, mint például a felbontás, pontosság és a lehetséges értékeket táblázatban ismertetjük. 4.1 [1], így nem kell megismételni. A továbbiakban röviden áttekintjük az alapvető adattípusok és funkciók fog összpontosítani lehetséges alkalmazásukat.

A integer típusok smallint és egész. Azt kell mondani, amely képviseli smallint INTEGER verzióban és egy 2 bájt hosszúságú, szemben a 4 bájt elkülönített tárolására INTEGER. Általában menteni lemezterület nem lehet, ezért az általános javaslat, hogy használja, hogy tárolja egész értékeket INTEGER típusú.
Scope integer típusú nyilvánvaló: ők szükséges mezők, amelyek csak egész számok - a tárolási számlálók, mennyiség, stb Általában egész típusú mezőket is, amelyek elsődleges kulcsokat.

Valódi adattípusok

A valós típusú (más néven típusú lebegőpontos számok) úszó és a kétszeres pontosságú. Meg kell azonnal figyelmezteti az olvasót a használata float típusú - a pontosság nem elegendő ahhoz, hogy tárolja a legtöbb tört értékeket. Különösen nem ajánlott tárolni benne a pénz értéke - az úszós változók nagyon gyorsan nőnek, hogy a kerekítési hibák, amelyek nagyban meglepetés a könyvelő összefoglaló.
Ha az adatbázis állítólag tárolja a lebegőpontos számok (például a számviteli rendszert és tudományos számítások), akkor a legjobb választás a típus kétszeres pontosságú.

Meg kell jegyezni, hogy a 3. InterBase nyelvjárás tárolására pénzértékeket létezik tárolórendszer típusú fix pont 64 bit hosszúságú. A alkalmazzák ezeket a legjobb pontosság.

Típusai fixpontos adatok

Ezek az adattípusok numerikus és DECIMAL. Gyakran hallotta a kérdést, mi a különbség a numerikus és DECIMAL. Mindkét típus ugyanazokkal a bit mélység - 1-18 karakter, azonos pontosság - nullától a kicsit.

Emlékezzünk vissza, hogy egy kicsit - ez a számjegyek teljes száma a szám és a pontosság - a számjegyek száma a tizedespont után

A vicces dolog, hogy. annak ellenére, hogy meg van írva a dokumentációban, hogy ezek abban különböznek, a maximális szóhosszt tényleges megvalósítása, szinte egyformán és nincs különbség a kettő között! Ezt könnyen ellenőrizheted ezt a segédprogram futtatása isql és elvégzése a következő sorrendben akciókat.
Készítsen táblázatot a következő formában:

SQL> create table test (
CON> Num_field NUMERIC (15,2),
CON> Dec_field DECIMÁLIS (15,2));

Akkor adja a parancsot, hogy bemutassák a szerkezet a táblázat:

SQL> mutatják táblák teszt;

És tartsa be az alábbi képet:

NUM_FIELD NUMERIC (15, 2) nullképes
DEC_FIELD NUMERIC (15, 2) nullképes

Mint látható. InterBase tájékoztatja. hogy mind ezek az oszlopok NUMERIC típusú!
Ennek oka abban rejlik, viselkedés végrehajtása az ilyen típusú fix pont. Az a tény, hogy az InterBase összesen 3 tárolórendszer bármely integer kifejezése, és minden típusú, amit hívják őket, amelyek ezekre a kiviteli alakokra.
Itt van egy táblázat [1], amely szemlélteti, hogy a szerves tárolja a különböző típusú (lásd 1.1 táblázat.). Mint látható, az adatok tárolása a 3. nyelvjárás eltérő számok nagy mentesítés:
Táblázat 1.1. Tárolás fixpontos számok

Tehát most meg tudjuk mondani a különbség típusok szám- és DECIMAL: abban az esetben meghatározó területén (változó) alacsony bitmélységet (legfeljebb négy), az első tárolni, mint egy 2 bájtos integer smallint, és a második - formájában 4 byte-os egész.
Így abban az esetben, a bit-nél nagyobb négyféle tizedes és a szám lesz teljesen azonos!
Megjegyzés: a különbség a végrehajtás a fajta nagyobb kapacitású, az 1. és a 3. nyelvjárások. Az 1. nyelvjárás fixpontos számmá konvertálni Egész Real, akiket a kerekítés mechanizmusok! A 3. nyelvjárás Ez a furcsaság már megszűnt - nagy egész számokat ténylegesen tárolt egészek - INT64 mechanizmus használatával, amely képes tárolni 64 bites szám tartományban +/- 2 A 32. Ezért a tárolt adatok az ajánlott készpénz adatbázisok, segítségével létrehozott harmadik dialektus - csak ha INT64 mechanizmus garantálja a biztonságos kis készpénzállomány.

Típusai tárolására dátum és az idő

Típusai tárolására dátum és az idő megváltozott változat InterBase 6.x és a klónok, mint 4.x és 5.x A félreértések elkerülése érdekében a történelmi bonyolult az ilyen típusú, megvizsgálja a helyzetet ez a 6. változat InterBase, majd ennek alapján rövid említést, hogy milyen volt, mielőtt - ez azok számára, akik még mindig futnak régebbi verziói InterBase
Tehát, InterBase 6.x, van 3 fajta tárolására dátum és az idő - a dátum, az idő és a TGME8TAMR.

Hogyan működik a dátumok? Mikor jön a szintjén működik a szerver tárolt eljárások vagy kiváltó, akkor minden nagyon egyszerű - mi mindig, hogy egy változót a kívánt típusú és rendeljen hozzá egy értéket egy táblázatban, és fordítva. Azonban meg kell továbbítani az adatokat az adatbázisból az alkalmazás és vissza. Ebben az esetben a kétféle megközelítés létezik - vagy a könyvtárakból, hogy használja az eredeti InterBase dátumformátumát hozzáférés objektumok típusai és átalakítani ezt a formátumot a szokásos intralingvális dátum / idő típusú (például ilyen a könyvtár FIBPlus), vagy használja a dátum konvertáló mechanizmus sorokban, beépített InterBase.
Mi van, ha kell kivágni a teljes dátumot csak egy év, vagy egy hónapban? Ez használ a kiemelés funkció csoport (minden klónok InterBase 6.x), amely lehetővé teszi, hogy válasszon a dátumot csak a kívánt részt. Ezekkel a következőképpen működik:

Kivonat (hónap DATE_FIELD)
Kivonat (ÉVI DATE_FIELD)

A teljes lista a paraméterek a kiemelés funkció a következő: év, hónap, nap, óra, perc, másodperc, WEEKDAY YEARDAY. Céljuk nyilvánvaló nevüket, így nem ad a dekódolás.

Az adattípusok tárolására szöveg

Az InterBase kétféle, tárolására szöveges információk - CHAR és VARCHAR. Teljes nevüket, - karakter és KARAKTER változó, de nincs ok arra, hogy használja a hosszú neveket - még a csapat megjelenítése táblázatok isql segédprogram rövid neve típusok.
Annak megállapításához, a mező vagy változó karakter kell lennie után zárójelben a típus neve vagy adja meg a karakterek számát, amelyeket használni fognak az erre kijelölt létesítmény vagy csökkentse a karakterek számát - ebben az esetben okozna egy olyan területen, amelynek teljes hossza 1 szimbólum.

CREATE TABLE testCHARLen (
Fieldl CHAR (255),
Mező2 CHAR);

Ennek eredményeként a teremtés ez a táblázat Fieldl mező lesz a hossza 255 karakter, a Mező2 - 1 szimbólum.
CHAR és VARCHAR típusok hasonló sok - mind tartalmazhat akár 32.768 karakter, de vannak különbségek. Bár ez a két típus tárolja ugyanabban az adatbázisban, de működik InterBase őket másképp. Ez demonstrálható a következő példa:

SQL> create table testCHAR (cl char (10), c2 varchar (10));
SQL> beilleszteni testCHAR (cl, c2) értékek ( 'test', 'test');
SQL> SELECT '

Ennek eredményeképpen megkapjuk a következő eredménnyel:

CREATE TABLE TestCHARSET (
Fieldl VARCHAR (255)
Mező2 VARCHAR (255) karakterkészletet winl251);

BLOB adattípus

CREATE TABLE testBLOB (
myBlobField BLOB);

Ennek eredményeként, a mező jön létre myBlobField, amely elfér a nagy adat. De annak ellenére, hogy a BLOB mező meghatározás módszere nem különbözik a többi, a végrehajtás őket az adatbázis jelentősen különbözik. He-BLOB-mezők vannak elrendezve egy adatlap (lásd a fickó. „Az adatbázis szerkezete InterBase” (h. 4)) egymás mellett, és abban az esetben BLOB adatok az oldal csak a tárolt azonosító BLOB és maga a massza is található egy külön oldalt. Ez egy szervezet, az adatok tárolását teszi lehetővé a változó hosszúságú adat.
Egy BLOB lehetőség van, hogy határozza meg a különböző altípusok és a különleges eljárások, úgynevezett szűrők (BLOB szűrők), hogy működnek ezek altípusai. Számos előre definiált altípusai BLOB, amelyek be vannak ágyazva InterBase. Mindezek altípusok nem negatív, például altípus 0 - határozatlan adat típus, altípus 1 - szöveges, altípus 2 - BLR (Binary Language képviselet, lásd Szószedet és fejezet „Adatbázis szerkezet InterBase”.) Stb a felhasználó is .. azonosítani tudják altípusai BLOB, ami lehet negatív érték. Minden típusú lehet térképezni, hogy egy szűrő, amely átalakítja ezt altípus a területen egy másik altípus.
Meg kell jegyezni, hogy a használata BLOB-mezők általában alternatívát tároló külső az adatbázis fájlokat. Ami a BLOB szűrők, csak ritkán használják, mert az orientáció egy szűk körét problémákat.

InterBase adatbázis egyike volt az első, amely nem volt tömbök. Támogatás tömbök az adatbázisban egy kiterjesztése a hagyományos relációs modell. A jelenléte tömbök egyszerűsítése munkát adatsorok azonos típusú.
Array - egy sor értéket az azonos típusú, amelynek közös neve, és lehetővé teszi, hogy alkalmazni kell minden olyan elemet a tömb a száma. InterBase tömbök lehetnek egydimenziós és többdimenziós.
Ahhoz, hogy hozzon létre egy táblázatot terén típusú tömbök egész számok, meg kell írni valamit, mint a következő:

Create table test (
myOneDimArray egész szám [12]
myTwoDimArray egész szám [5,4],
myThreeDimArray egész szám [2,10,8]);

Amikor ezen a területen jön létre tömb típusú 3: myOneDimArray tartalmazó mező egy 12-dimenziós tömböt a számok, myTwoDimArray hossza, amely egy kétdimenziós tömb (mátrix) 5x4 számok Egész, és myThreeDimArray területen - kétdimenziós tömböt 2x10x8. Meg kell jegyezni, hogy ez a meghatározás a tömb elemek vannak számozva kezdve egy, azaz, az első elem van számozva 1, a második - .. No. 2, stb Ha valaki meg akarja meghatározza a határait a tömb egymástól függetlenül, például 0-5, akkor .. meg kell határoznia a területén az alábbiak szerint:

Megvalósított tömbök alapján BLOB mező, így nem kell attól tartani, hogy egy többdimenziós tömb „szennyezi” a tábla hihetetlen mennyiségű adat: InterBase óvatosan tegye az array adatokat az egyes oldalakat, hogy optimalizálja IO művelet ezeken a területeken.
Hogyan kell használni tömbök? Ők biztosítják a kényelmes mechanizmust tárolására ugyanazon tárgyak. Azonban, az esetek 80% helyett tömbök fejlesztők inkább tartani több adat alárendelt (részlet) táblák, így a tömbök nem olyan gyakran használják a kliens InterBase adatbázis-alkalmazások. Sokat segít, hogy jön a Delphi és C ++ Builder, hogy hozzáférjen a könyvtár, mint a BDE és GWH, nem kell a lehetőséget, hogy tömbökkel. A dokumentáció InterBase képességére utal, hogy működjön együtt a fájlokat az elpárologtató gpre, de nem ez a legkényelmesebb módja a fejlesztő Delphi / C-H-Builder. Szerencsére FIBPlus könyvtár támogatja a tömbök területeken InterBase, részletesen ismertetve a fejezetben „különlegességei FIBPlus”. Client Library of IBProvider, amely lehetővé teszi, hogy hozzon létre kliens alkalmazások InterBase a Microsoft fejlesztői környezet is támogatja tömbök (lásd a fickó. "Fejlődő ügyfél InterBase adatbázis-alkalmazások a Microsoft OLE DB technológiák" (ch. 3) bekezdés).

Meg kell jegyezni, hogy lehetetlen beszélni a adattípusok, nem előre néz - így behatolni kulcsfontosságú területeinek fejlesztéséhez kapcsolódó adatbázis-alkalmazások. Ezért során olvassa ezt a könyvet, akkor használja ezt a fejezetet, mint egy útmutató, amely elérhető, ha ez szükséges, hogy felfrissít az alapjait InterBase memóriát.

Kapcsolódó cikkek