====Erste Schritte mit der Derby-Datenbank==== Derby kann [[http://db.apache.org/derby/derby_downloads.html|hier]] herunter geladen werden. Alles, was auf dieser Seite kurz erklärt wird, gibt es noch viel [[http://db.apache.org/derby/papers/DerbyTut/index.html|ausführlicher]]. Nach kurzer Zeit will man [[http://db.apache.org/derby/docs/dev/ref/|mehr über die Befehle]] wissen. Oder [[http://publib.boulder.ibm.com/infocenter/cscv/v10r1/index.jsp|hier]] ''ij'' ist ein Skript, das intensiv nach seiner eigenen Lage forscht und dann die entsprechende Klasse startet. Folgendermaßen wird eine Datenbank in dem Verzeichnis angelegt, in dem ''ij'' gestartet wurde und ein Nicht-Server-Prozess gestartet: pfadzu/ij > connect 'jdbc:derby:hierbank;create=true'; Die meisten anderen Skripte finden sich und ''derby.jar'' nicht so leicht automatisch, weshalb es sinnvoll ist, ''DERBY_HOME'' zu setzen mit z.B. export DERBY_HOME=/pfad/zu/derby bzw. in Windows set DERBY_HOME=/pfad/zu/derby Praktisch viel wichtiger ist aber die Umgebungsvariable ''CLASSPATH''. Erst wenn sie korrekt gesetzt ist, kann ein beliebiges Java-Programm automatisch die entsprechenden Klassen einbinden. Den Classpath kann man selber setzen oder durch Aufruf eines Skripts. Damit das Ergebnis erhalten bleibt, muss ein solches Skript in Linux gesourct werden, z.B. . /bin/setEmbeddedCP . /bin/setNetworkServerCP In Windows ruft man es einfach auf; die darin definierten Umgebungsvariablen bleiben global erhalten. Einen Server, der von überallher Anfragen annimmt, startet und stoppt man mit java -jar lib/derbyrun.jar server start -h 0.0.0.0 & java -jar lib/derbyrun.jar server shutdown Auf einen entfernten Server greift man z.B. aus ''ij'' heraus zu per connect 'jdbc:derby://localhost:1527//pfad/zu/hierbank'; Von den [[http://db.apache.org/derby/docs/10.1/ref/|wichtigsten SQL-Befehlen]] folgen hier einige Auszüge: create table person( pid integer primary key generated always as identity, name varchar(20) not null, geb date ); create table mag( moeger integer not null, gemocht integer not null, primary key(moeger,gemocht), constraint m_fs foreign key(moeger) references person(pid), constraint g_fs foreign key(gemocht) references person(pid) ); insert into person(name, geb) values('Cindy','1946-07-12'); insert into person(name, geb) values('Bert', '1944-03-02'); insert into person(name, geb) values('Franz','1965-03-26'); insert into mag values(1,1); insert into mag values(1,2); insert into mag values(2,2); update person set geb='1946-07-22' where pid=1; delete from person where name='Franz'; select a.name, b.name from person a, person b, mag m where a.pid=m.moeger and b.pid=m.gemocht; describe mag; ===Anmerkungen=== * Automatisch inkrementierende Primärschlüssel mit id integer primary key generated always as identity id integer primary key generated by default as identity