Jelenlegi hely

23.2. Táblák használata

Tábla létrehozása

Először létrehozzuk az egyik táblát a példa adatbázisban. Ez a tábla a Coffees, mely tartalmazza az alapvető információkat a Coffee Break által eladott kávékról, ideértve a kávé nevét, annak árát, aktuális héten eladott mennyiséget és a napi eladott mennyiséget. A Coffee tábla látható itt, melyet később részletesebben leírunk:

COF_NAME SUP_ID PRICE SALES TOTAL
Colombian 101 7.99 0 0
French_Roast 49 8.99 0 0
Espresso 150 9.99 0 0
Colombian_Decaf 101 8.99 0 0
French_Roast_Decaf 49 9.99 0 0

A COF_NAME mező, amely a kávé nevét tárolja, maximum 32 karakter hosszú VARCHAR típusú. Miután minden egyes kávétípust különböző névvel látunk el, a név egyértelműen meghatározza az egyes kávékat, így ez lehet a tábla elsődleges kulcsa. A SUP_ID a kávé-kiegészítő egyedi azonosítóját tartalmazza, SQL típusa INTEGER. A harmadik mező neve PRICE, típusa FLOAT, mert tizedes szám tárolására van szükség.

Megjegyzés: A pénz adat általában SQL DECIMAL vagy NUMERIC típusú mezőben tárolódik, de a DBMS-k közötti különbség miatt, és hogy elkerüljük az inkompatibilitást valamelyik régebbi JDBC-vel, most az általánosabb FLOAT típust használjuk.

A SALES mező INTEGER típusú adatokat tárol, és megmutatja, hogy mennyi kávé lett eladva az adott héten. Az utolsó mező a TOTAL, amely INTEGER típusú, és megadja, hogy mennyi kávét adtak el összesen az adott napig.

Az adatbázis SUPPLIERS nevű táblája, amely információt tárol az egyes kávé-kiegészítőkről:

SUP_ID SUP_NAME STREET CITY STATE ZIP
101 Acme, Inc. 99 Market Street Groundsville CA 95199
49 Superior Coffee 1 Party Place Mendocino CA 95460
150 The High Ground 100 Coffee Lane Meadows CA 93966

A COFFEES és a SUPPLIERS tábla is tartalmazza a SUP_ID mezőt, ezért ez a mező használható a SELECT utasításoknál, hogy a két táblát össze tudjuk kapcsolni. A SUP_ID oszlop az egyedi azonosítója a SUPPLIERS táblának. A COFFEES táblában pedig idegen kulcsként szerepel. (Azért idegen kulcs, mert ez egy másik táblából lett importálva.) Minden egyes SUP_ID csak egyszer szerepel a SUPPLIER táblában, hiszen ez az elsődleges kulcsnál követelmény. A COFEE táblában, ahol idegen kulcsként szerepel, teljesen természetes, hogy többszörösen megjelenik, hiszen egy kiegészítő eladható több típusú kávéhoz is. A fejezet későbbi részében bemutatunk néhány példát az elsődleges és az idegen kulcs használatára a SELECT lekérdezésekben.

A következő SQL utasítás létrehozza a COFFEES nevű táblát. A két külső zárójel tartalmazza az egyes oszlopok nevét és SQL típusát vesszővel elválasztva. A VARCHAR típusnál zárójelek között megadható annak maximális hossza. A példakód megadja, hogy a COF_NAME oszlop maximum 32 karakter hosszú lehet:

CREATE TABLE COFFEES (
  COF_NAME VARCHAR(32),
  SUP_ID INTEGER,
  PRICE FLOAT,
  SALES INTEGER,
  TOTAL INTEGER )

Az utasítás végén nem szerepel DBMS záró jel, mert ez az egyes DBMS-eknél különböző. Például az Oracle pontosvesszőt (;) használ a mondatok lezárásra, a Sybase pedig a go szót. Ezért a Java kódban nem szükséges megadni, a driver automatikusan a mondat végére teszi a megfelelő jelet.

Másik dolog, ami meg kell említenünk az SQL utasításokról, azok formája. A CREATE TABLE mondatban a kulcsszavak nagybetűvel és minden rész külön sorban van írva. Az SQL nem követeli ezt meg, ez a konvenció csak az olvashatóságot teszi könnyebbé. Alapvető az SQL-ben, hogy a kulcsszavakban nem kis-nagybetű érzékeny (case sensitive), így például a SELECT szót bármilyen módon le lehetett volna írni. Példának okáért a két verzióval korábbi teljesen megegyezik az SQL illetően:

Az egyes DBMS-k különbözőek lehetnek a névazonosításban. Például néhány DBMS megköveteli, hogy az oszlop és a tábla nevek pontosan megfeleljenek a CREATE TABLE utasításban megadottaknak, míg mások nem. A biztonság kedvéért nagybetűt használunk az azonosítóknál, mint például COFFEES és SUPPLIERS, mert így definiáltuk őket.

Eddig kész vagyunk az SQL utasítás megírásával, amely létrehozza a COFFEES nevű táblát. Most tegyük idézőjelek közé (készítsünk String–et), és nevezzük el ezt a String-et createTableCoffees-nek, így ezt a változót fel tudjuk használni a Java kódban.

Amint láttuk, a DBMS nem foglalkozik a sortörésekkel, de a Java programozási nyelvben az a String objektum, ami meghaladja az egy sort, nem fog lefordulni. Következésképpen, amikor String-et adunk meg, minden egyes sort idézőjelek közé kell tenni, és pluszjelet (+) használni az összefűzéshez:

String createTableCoffees = "CREATE TABLE COFFEES " +
    "(COF_NAME VARCHAR(32), SUP_ID INTEGER, PRICE FLOAT, " +
    "SALES INTEGER, TOTAL INTEGER)";

Mielőtt futtatunk egy alkalmazást, menjük végig a JDBC alapjain.