7 Datenbankabfragen. 7.1 Die Hibernate Query Language

Größe: px
Ab Seite anzeigen:

Download "7 Datenbankabfragen. 7.1 Die Hibernate Query Language"

Transkript

1 149 Dieses Kapitel widmet sich dem effektiven Zugriff auf Daten. Mit Datenbankabfragen können Objekte mit bestimmten Eigenschaften gesucht werden. Erst mit Abfragen ist es möglich, Objekte zu laden, deren ID nicht bekannt ist. Es werden die drei Möglichkeiten beschrieben, wie Abfragen definiert und ausgeführt werden können. Zuerst wird die Hibernate Query Language (HQL) erläutert. Wir zeigen auch die programmatische Form der Abfrage mit Queries und Criterias. Außerdem zeigen wir, wie in Hibernate SQL-Abfragen genutzt werden können. Zum Ende des Kapitels werden Filter beschrieben, welche die Ergebnismenge von Abfragen einschränken. Für die Beispiele wird in dem Kapitel das einfache Beispiel weiter verwendet. Wie in der folgenden Abbildung verwenden wir Termine, die ihre Teilnehmer kennen. Überblick Abb. 7 1 Termin und Benutzer 7.1 Die Hibernate Query Language Die Syntax der HQL ist der von SQL sehr ähnlich. Groß- und Kleinschreibung ist für die Schlüsselwörter der HQL unerheblich. Für die weiteren Beispiele werden wir Kleinschreibung benutzen. Die einfachste Abfrage mit der HQL ist in unserem Fall die folgende: from Termin gleichbedeutend zu FROM Termin

2 150 Query ausführen Diese ganz einfache Abfrage liefert alle Termine aus der Datenbank und wird mit dem Befehl createquery an einer Session erzeugt: Query q = session.createquery( from Termine ); List<Termin> alletermine = q.list(); Die Ausführung der Query wird erst mit einer der Methoden list, scroll oder iterator gestartet. Ausführung der Query Befehl list() iterator() scroll() uniqueresult() Ergebnis Liefert eine Liste der Ergebnisse vom Typ java.util.list Liefert einen Iterator über die Ergebnisse vom Typ java.util.iterator Bietet die Möglichkeit, innerhalb des Ergebnisses zu blättern, liefert als Typ org.hibernate.scrollableresults Nützlich, wenn die Abfrage nur ein Ergebnis liefern kann, ist entweder null oder vom Typ java.lang.object Falls mehrere Ergebnisse gefunden werden, wird eine Exception geworfen! Ergebnis der Abfrage auto-import Eine Query kann nur mit den beschriebenenen Methoden ausgeführt werden, solange die erzeugende Session aktiv und nicht geschlossen ist. Die gefundenen Objekte befinden sich im persistenten Zustand, solange die Session nicht beendet wurde. Daher werden Änderungen an Objekten auch gespeichert, wenn diese durch eine Abfrage bezogen wurden und die Session aktiv ist. Das Ergebnis der obigen Abfrage from Termin sind alle Termine, die in der Datenbank gespeichert sind. In der from-klausel wird der Typ der Objekte angegeben, nach denen gesucht wird. Als Bezeichnung wird der Name des Typs angegeben. Es ist zu beachten, dass bei der Angabe des Typs auf Groß- und Kleinschreibung unterschieden wird. Die Schreibweise muss der der Klasse bzw. des Interfaces entsprechen! Im Beispiel haben wir den Typ Termin ohne das Package angegeben. Der Name des Typs muss in der Abfrage nur voll qualifiziert angegeben werden, wenn in der Mapping-Datei explizit das Attribut auto-import= false gesetzt wurde. Ansonsten sucht Hibernate nach dem Typ in allen Klassen und Interfaces, die bei der Configuration angemeldet sind 1. Dadurch können die Typen in den Abfrage ohne volle Qualifizierung angegeben werden.

3 7.1 Die Hibernate Query Language 151 Wird innerhalb mehrerer Objekttypen gesucht, werden diese durch Kommata getrennt. Das entspricht einem Join in SQL. Um diese Objekttypen in anderen Teilen der Abfrage zu referenzieren, wird nach dem Objekttyp ein Alias angegeben. Dieses Alias steht dann stellvertretend in der Abfrage für alle persistenten Objekte dieses Typs. Zur besseren Lesbarkeit darf optional»as«dazwischen stehen. Aliase from Termin as termin from Termin termin, Benutzer benutzer Sind in der from-klausel einer Abfrage mehrere Typen angegeben, werden die Ergebnisse als Liste von Arrays geliefert. Die nächste Abfrage liefert alle Kombinationen von Terminen und Benutzern als Liste von Arrays: Tupel Query q = session.createquery( from Termin, Benutzer ); List tupel = q.list(); Object[] arr = (Object[]) tupel.get(0); Termin termin = arr[0]; Benutzer benutzer = arr[1]; Die Abfragen können auf Ergebnisse mit bestimmten Eigenschaften eingeschränkt werden. Wie in SQL gibt eine where-klausel die Bedingung an, die für das Ergebnis zutreffen muss. Mit der folgenden Abfrage finden wir alle Termine, die im»raum 123«stattfinden: from Termin as term where term.ort = Raum 123 Der Bezeichner»ort«in der obigen Abfrage bezieht sich auf das gleichnamige Property der Klasse Termin und nicht auf den Spaltennamen in der Tabelle! Genauso bezieht sich der Bezeichner Termin auf den Namen der Klasse und nicht auf den Tabellennamen. Achtung Um Attribute von enthaltenen Objekten mit in die Abfrage einzubeziehen, werden sie einfach mit einem Punkt verknüpft. Als Beispiel suchen wir nach allen Terminen für einen Benutzer. Bei der Abfrage soll nur dessen Kürzel bekannt sein. Die Abfrage für die Termine des Benutzers, mit dem Kürzel»rb«lautet dann wie folgt: from Termin t where t.teilnehmer.kuerzel = rb 1. Wenn gleichnamige Klassen in unterschiedlichen Packages mit Hibernate verwaltet werden, muss auto-import ausgeschaltet werden, ansonsten ist der Typname für die Abfragen nicht eindeutig, und es wird eine Exception geworfen.

4 152 Kriterien Für die Beschreibung der Kriterien stehen die Standard-SQL-Operatoren zur Verfügung: =, <>, <, >, >=, <=, like, between, not between, in und not in. Folgendes Beispiel zeigt eine Abfrage aller Termine, deren Property Ort mit dem String»Raum A«anfängt: from Termin term where term.ort like Raum A% Wie man sieht, wird die Wildcard % aus SQL auch in HQL für das String-Kriterium like verwendet und steht für beliebig viele Zeichen. Mehrere Kriterien werden innerhalb der where-klausel mit den booleschen Operatoren and, or und not verknüpft und können mit Klammern gruppiert werden. Das folgende Beispiel liefert alle Termine, die in der Beschreibung mit»projekt Hibernate«anfangen und in Hamburg oder Berlin stattfinden: from Termin termin where termin.beschreibung like Projekt Hibernate% and (termin.ort = Hamburg or termin.ort= Berlin ) Die obige Abfrage lässt sich auch mit dem in-operator formulieren: from Termin termin where termin.beschreibung like Projekt Hibernate% and termin in ( Hamburg, Berlin ) Der in-operator kann wie alle anderen Operatoren mit not negiert werden. Die folgende Abfrage findet somit alle Termine mit der obigen Beschreibung, die weder in München noch in Köln stattfinden: from Termin termin where termin.beschreibung like Projekt Hibernate% and termin not in ( München, Köln ) Eine weitere Möglichkeit, ein Kriterium zu bestimmen, sind Funktionen. Die folgende Abfrage liefert alle Termine, für die mindestens zwei Teilnehmer eingetragen sind. from Termin t where size(t.teilnehmer) > 2 Mit empty ist es sehr einfach abzufragen, ob eine Collection leer ist. So können mit der Abfrage alle Termine gefunden werden, für die keine Teilnehmer eingetragen sind: from Termin t where t.teilnehmer is empty Select Sind für die Abfrage nur Objekte eines bestimmten Typs erforderlich, werden vor der from-klausel mit einer select-klausel die Ergebnistypen ausgewählt. Im Vergleich zu SQL ist die select-klausel bei der Hibernate Query Language optional. In der select-klausel werden die Aliase

5 7.1 Die Hibernate Query Language 153 der Objekte angegeben, die als Ergebnis für die Abfrage von Interesse sind. Die nächste Abfrage liefert z.b. alle Benutzer als Liste, die bei Terminen mit der Beschreibung»Buchbesprechung«eingetragen sind: select t.teilnehmer from Termin as t where t.beschreibung = Buchbesprechung Eine Abfrage wie from Termin bezieht sich auf alle in der Datenbank gespeicherten Objekte des Typs Termin. Bei der Abfrage werden auch sämtliche Subklassen von Termin aus der Datenbank geladen, die der Session bzw. der Configuration bekannt sind. Als Typ kann natürlich auch ein Interface angegeben werden. Das Ergebnis bezieht dann alle persistenten Objekte mit ein, die dieses Interface implementieren. Polymorphe Abfragen werden in HQL immer identisch formuliert, unabhängig von der Abbildung der Vererbungshierarchie. Hibernate muss bei polymorphen Anfragen mehrere SQL-Statements an die Datenbank schicken. Es ist zu beachten, dass in den Resultaten nicht mit dem Befehl scroll geblättert werden kann! Polymorphe Abfragen Achtung Nicht bei jeder Anfrage stehen zur Zeit der Programmierung die Kriterien fest. Häufig ist es notwendig, der Abfrage zur Laufzeit Parameter für die Kriterien zu übergeben. Hibernate bietet zwei Möglichkeiten, Parameter anzugeben. Ein Parameter kann in einer Abfrage mit einem Fragezeichen als Platzhalter angegeben werden. Anstelle dieses Platzhalters muss der Query zur Laufzeit vor der Ausführung der Abfrage ein Wert- oder ein kompatibles Objekt übergeben werden. Damit mehrere Parameter pro Abfrage benutzt werden können, übergibt man diese nummeriert der Query. Um Termine z.b. nach Ort zu suchen, würde man folgende Abfrage stellen: Parameter String gesuchterort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort =? ); q.setstring(0, gesuchterort); List gefundenetermine = q.list(); Bei Hibernate fängt die Nummerierung von Parametern immer bei 0 an und verhält sich somit wie Arrays oder die Collections aus dem JDK. Bei JDBC wird dagen die 1 für den ersten Parameter verwendet! Achtung

6 154 Benannte Parameter Entitäten als Parameter Sortierung Hibernate bietet auch die Möglichkeit, benannte Parameter zu benutzen. Ein benannter Parameter wird in der HQL mit einem Doppelpunkt eingeleitet. Diese benannten Platzhalter erhöhen die Lesbarkeit und verringern die Fehleranfälligkeit bei Abfragen. Die gleiche Abfrage mit einem benannten Parameter sieht wie folgt aus: String gesuchterort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort = :ort ); q.setstring( ort, gesuchterort); List gefundenetermine = q.list(); Einer Query kann auch eine Entität als Suchparameter übergeben werden. Für den Platzhalter wird der Query ein bereits geladenes Objekt eingesetzt. Hibernate erzeugt für die Query selbstständig die Verknüpfung in seiner SQL-Abfrage. Es kann damit z.b. nach allen Terminen für einen bestimmten Ort gesucht werden: Ort ort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort = :ort ); q.setentity( ort, ort); List gefundenetermine = q.list(); Die Ergebnisse einer Abfrage können sortiert werden. Dazu wird nach der from- und der where-klausel der Befehl order by angegeben, mit einem Attribut, nach dem sortiert werden soll. Das entspricht genau dem order by in SQL. Zusätzlich kann mit asc oder desc angegeben werden, ob auf- oder absteigend sortiert werden soll. Wird zu dem Befehl order by weder asc noch desc angegeben, wird aufsteigend sortiert (asc). Sind mehrere Sortierkriterien erwünscht, werden sie in absteigender Rangfolge mit Kommata getrennt angegeben. Die obige Anfrage suchte nach Terminen mit einem bestimmten Ort. Diese Anfrage sieht wie folgt aus, wenn sie um eine Sortierung nach dem Anfang erweitert wird: from Termin termin where termin.ort = :ort order by termin.anfang Joins Bei einer Abfrage, die sich auf mehrere Typen bezieht, werden die Tabellen zum kartesischen Produkt verknüpft. Alle möglichen Kombinationen der Zeilen der beteiligten Tabellen werden dabei kombiniert. Die Auswahl der gelieferten Kombinationen wird durch die unterschiedlichen Join-Typen bestimmt. Bei einem Join werden die gesuchten Typen in der from-klausel angegeben. Die Basis der Abfrage bilden alle möglichen Kombinationen zwischen den angegebenen Typen.

7 7.1 Die Hibernate Query Language 155 Die folgende Abfrage liefert alle Termine und Benutzer, die sich in Berlin treffen. Die Ergebnisse sind Arrays mit jeweils dem Termin und einem der Teilnehmer. from Termin t inner join t.teilnehmer where t.ort = Berlin Um alle Termine zu bekommen, auch die ohne Teilnehmer, ist ein left outer join notwendig. In dem Ergebnis sind jetzt auch Termine ohne Teilnehmer enthalten. Das Ergebnis ist eine Liste von Arrays. Bei den Terminen ohne Teilnehmer ist das Feld des Arrays für die Teilnehmer null. from Termin t left outer join t.teilnehmer where t.ort = Berlin Ein right outer join liefert alle Kombinationen zwischen den beiden Tabellen und alle Einträge aus der zweiten Tabelle, für die es keinen entsprechenden Eintrag in der ersten Tabelle gibt. Die folgende Abfrage liefert eine Liste aller Benutzer, die einen Termin in Berlin eingetragen haben. Die Abfrage enthält keinen Join- Befehl. Hibernate macht intern einen Join über die Fremdschlüssel- Tabelle für die Benutzer und die Einschränkung auf den Ort. Daher wird diese Art auch impliziter Join genannt. select t.teilnehmer from Termin t where t.ort = Berlin Es gibt die Möglichkeit, Queries in Mapping-Dateien zu definieren, anstatt diese im Progammcode zu schreiben. Diese können dann unabhängig vom Rest des Programms weiterentwickelt und optimiert werden. Eine solche Named Query wird direkt an der Session mit der Methode getnamedquery bezogen. Benannte Queries Ort ort = xyz.getgesuchterort(); Query q = session.getnamedquery( alletermine ); q.setentity( ort, ort); List alletermine = q.list(); Wie in dem Beispiel zu sehen, entfällt der lange Text der eigentlichen Query im Programmcode. Als Nachteil ist sofort ersichtlich, dass die Namen der Parameter im Programmtext nicht erkennbar sind! Die Query wird in der Mapping-Datei durch das Element <query> definiert und mit dem Attribut name als»alletermine«benannt. Die eigentliche Query wird zusätzlich in einem CDATA-Element verpackt:

8 156 <query name= alletermine > <![CDATA[from Termin as t where t.ort = :ort ]]> </query> Projektion Genauere Angaben zu den Mapping-Dateien und deren Syntax sind in Kapitel 4 zu finden. Für Auswertungen und Berichte sind bei einer Abfrage nicht immer die kompletten Objekte mit allen Attributen notwendig. Auch wird bei diesen Abfragen nicht die transparente Persistenz benötigt, um geladene Objekte ändern zu können. Bei diesen Abfragen wird nur ein Teil der Werte aus den Ergebnissen benötigt. Das wird Projektion genannt. In der select-klausel dürfen auch ausgewählte Attribute eines gesuchten Objektes angegeben werden. Diese Attribute werden in der Ergebnisliste dann als Array geliefert. Das Ergebnis ist nur ein aktuelles Abbild der Daten, es hat für Hibernate keinen Zustand und keine transparente Persistenz. Somit werden Änderungen an diesen Daten nicht wieder in die Datenbank geschrieben. Das folgende Beispiel liefert den Titel, die Anfangszeit und die Beschreibung aller Termine: Query q = session.createquery( select t.titel, termin.anfang, termin.beschreibung + from Termin as termin ); List<Object[]> uebersicht = q.list(); for (Object[] zeile : uebersicht) { String titel = (String) zeile[0]; Date anfang = (Date) zeile[1]; String beschreibung = (String) zeile[2];... } Gruppierungen und Zusammenfassungen In unserem Beispiel kann es gewünscht sein, dass wir in einem Bericht die Anzahl der Termine pro Ort ausgeben. Wir wollen die Frage beantworten, in welchen Städten die meisten Termine stattfinden, um damit eine Rangliste zu erzeugen. Anstatt alle Objekte zu laden, zu vergleichen, Termine zu addieren usw., können wir eine Abfrage mit Gruppierung benutzen.

9 7.1 Die Hibernate Query Language 157 Query q = session.createquery( select termin.ort, count(termin) + from Termin as termin group by termin.ort + order by count(termin) desc ); List<Object[]> uebersicht = q.list(); for (Object[] zeile : uebersicht) { String ort = (String) zeile[0]; int anzahl = (Integer) zeile[1]; System.out.println("Stadt=" + ort + ", Anzahl Termine=" + anzahl); } In der Abfrage werden alle Orte ausgewählt und nach den Orten gruppiert. Die Aggregatsfunktion count() zählt alle Einträge, die in dieselbe Gruppierung fallen. In diesem Fall zählen wir die Termine mit dem gleichen Ort. Bei der order-by-klausel darf auch die Aggregatsfunktion verwendet werden, damit nach deren Ergebnis sortiert wird. Das Beispiel sortiert absteigend nach der Anzahl der Termine pro Gruppierung. Neben count() gibt es noch die folgenden Aggregatsfunktionen: Aggregatsfunktionen Funktion count() min() max() sum() avg() Zweck Berechnet die Anzahl der Elemente in der Gruppierung Bestimmt das Minimum der Elemente in der Gruppierung Bestimmt das Maximum der Elemente in der Gruppierung Summiert die Elemente in der Gruppierung Berechnet den Mittelwert Eine Aggregatsfunktion ist entweder mit einer Gruppierung kombiniert oder bezieht sich auf alle Ergebnisse der Abfrage. Wenn keine Gruppierung angegeben wird, dann gibt es nur ein Ergebnis. Die in der select-klausel ausgewählten Attribute dürfen in diesem Fall dann auch nur Aufrufe von Aggregatsfunktionen sein! So kann als Beispiel die Abfrage dienen, um zu erfahren, wie viele Termine in einer gegebenen Stadt geplant sind: Query query = session.createquery("select count(t) + from Termin as t where t.ort = :ort"); query.setstring("ort", "Berlin"); int anzahl = (Integer) query.uniqueresult();

10 158 Blättern Nicht jede Anfrage liefert eine überschaubare Anzahl von Ergebnissen. Mitunter können die Ergebnisse sehr lange Listen sein, die komplett geladen den Speicher der Anwendung überlasten würden. Hibernate bietet zwei Ansätze, diesem Problem bei Abfragen zu begegnen. Das Ergebnis einer Query kann durch eine untere Schranke eingegrenzt werden. Dazu kann die maximale Anzahl von Ergebnissen angegeben werden. Query q = session.createquery( from Termin ); q.setfirstresult(90); q.setmaxresults(10); List<Termin> termine = q.list(); In diesem Beispiel wurde das Ergebnis auf zehn Termine eingeschränkt. Die ersten 90 Termine der Abfrage sollen ignoriert werden. Die Methode setfirstresult ist nullbasiert wie alle Methoden in Hibernate mit Bezug auf Indizes. Der zweite Lösungsansatz liefert Queries, in denen geblättert werden kann. Die Methode scroll liefert das Ergebnis als ScrollableResults. Das Ergebnis kann sehr variabel iteriert werden. Ergebnisse können auch direkt angesprungen werden. Spätestens bei dem Zugriff auf ein bestimmtes Objekt wird dieses erst aus der Datenbank geladen. Das ScrollableResults hat einen Zeiger auf eine Zeile des Ergebnisses, der mit den Methoden next, first, scroll, previous, last, beforefirst, afterlast und setrownumber verschoben werden kann. Entsprechend der select-klausel der Anfrage können in jeder Zeile der Ergebnisse mehrere Objekte sein. Auf das aktuell selektierte Ergebnis wird immer indiziert zugegriffen, auch wenn pro Zeile nur ein Objekt ausgewählt wird. Folgende Abfrage liefert eine Übersicht der Benutzer, bei der nur jeder zwanzigste angegeben wird: Query q = session.createquery( select b.nachname + from Benutzer b + order by b.nachname ); ScrollableResults ergebnis = q.scroll(); List<String> benutzer = new ArrayList<String>(); if (ergebnis.first()) { do { benutzer.add(ergebnis.getstring(0)); } while(ergebnis.scroll(20)); }

11 7.2 Typsichere Abfragen mit Criteria 159 Wird über ein ScrollableResults iteriert und auf enthaltene Objekte zugegriffen, muss die Session noch aktiv sein. Das ScrollableResults kann nur benutzt werden, wenn der eingesetzte JDBC-Treiber Blättern unterstützt. Bisher wurden mit der HQL nur Objekte und Daten ausgelesen. Es ist auch seit Hibernate 3 möglich, mit einer Abfrage zu ändern und zu löschen. Sollen z.b. alle Termine aus Berlin nach Hamburg verlegt werden, kann das wie folgt passieren: Ändern und Löschen Query q = session.createquery( update Termin + set ort = :neuerort where ort = :alterort ); q.setstring( alterort, Berlin ); q.setstring( neuerort, Hamburg ); q.executeupdate(); Auf das Schlüsselwort update folgt der zu ändernde Typ. Dem folgen der Befehl set und die Zuweisung der zu ändernden Attribute. Abschließend kann mit einem where ein Kriterium angegeben, das die Änderung einschränkt. Mit der Methode executeupdate wird diese Form einer verändernden Abfrage ausgeführt. Die Methode liefert als Ergebnis die Anzahl der veränderten Objekte. Mit der HQL können auch Objekte gelöscht werden, die bestimmten Kriterien entsprechen. Somit können auch Objekte gelöscht werden, die nicht geladen sind. Alle Termine, die in München stattfinden sollen, werden mit dem folgenden Beispiel gelöscht: Query q = session.createquery( delete Termin + where ort = :ort ); q.setstring( ort, München ); q.executeupdate(); Auch bei dem Löschen wird die verändernde Query mit der Methode executeupdate ausgeführt. Bei einer ändernden Abfrage dürfen sowohl die Änderung als auch das Kriterium sich dabei nur auf einen Typ beziehen. Subtypen und enthaltene Objekte dürfen nicht mit in eine ändernde Abfrage einbezogen werden! Achtung 7.2 Typsichere Abfragen mit Criteria Hibernate bietet mit Criterias eine programmatische Möglichkeit, Abfragen zu definieren. An der Session kann ein Criteria erzeugt wer-

12 160 den, dabei muss der Ergebnistyp angegeben werden. Das einfachste Criteria, das alle Benutzer als Liste liefert, ist das folgende: Criteria criteria = session.createcriteria(benutzer.class); List<Benutzer> benutzer = criteria.list(); Es sind bei den programmatischen Abfragen mit Criterias Einschränkungen der Ergebnismenge durch Kriterien möglich. Die Klasse Restrictions aus dem Package org.hibernate.criterion ist eine Fabrik für solche Kriterien. Die folgende Abfrage liefert alle Termine aus Hamburg: Criteria crit = session.createcriteria(termin.class); c.add(restrictions.eq("ort", "Hamburg")); List<Termin> termine = criteria.list(); Diese Kriterien liefern als Rückgabewert immer wieder das geänderte Criteria-Objekt. Somit können komplexere Abfragen mit einem Java- Statement definiert werden. Das folgende Beispiel zeigt, wie mit einem einzigen Statement alle Termine aus Hamburg als Liste geliefert werden, die in der Beschreibung»Hibernate«enthalten: List liste = session.createcriteria(termin.class).add(restrictions.eq("ort", "Hamburg")).add(Restrictions.like( beschreibung, %Hibernate% )).list(); Diese Abfrage kann vereinfacht werden durch das neue Feature des statischen Imports in Java 5. Damit können die statischen Methoden und Attribute der importierten Klasse ohne Qualifizierung durch den Namen der Klasse benutzt werden. import static org.hibernate.criterion.restrictions.*;... List liste = session.createcriteria(termin.class).add(eq("ort", "Hamburg")).add(like( beschreibung, %essen% )).list(); Gruppierung Mit der Criteria-API können auch Gruppierungen in Abfragen erzeugt werden. Ein Beispiel zur Gruppierung hatte die Anzahl der Termine pro Ort abgefragt. Dem Criteria muss eine Projection gesetzt werden. int anzahl = (Integer) session.createcriteria(termin.class).setprojection(projections.rowcount()).add(like("ort", "Berlin")).uniqueResult();

13 7.3 Abfragen mit SQL 161 Das Beispiel hat eine Gruppierung auf die gesamte Ergebnismenge. Um mit Criterias für jeden Ort die Anzahl der Termine auszugeben, wird nach dem Ort gruppiert. Um eine Projektion auf mehrere Attribute und Aggregierungen zu erreichen, muss eine ProjectionList benutzt werden. Das folgende Beispiel nutzt die Möglichkeit von Hibernate, die Befehle»aneinander zu ketten«. So liefert z.b. die Methode setprojection dasselbe Criteria als Ergebnis, an dem sie aufgerufen wurde: List<Object[]> list = session.createcriteria(termin.class).setprojection( Projections.projectionList().add(Projections.property("ort")).add(Projections.rowCount()).add(Projections.groupProperty("ort"))).list(); for (Object[] zeile : list) { String ort = (String) zeile[0]; int anzahl = (Integer) zeile[1];... } Abfragen mit Criterias bieten einen großen Vorteil, denn durch die Angabe des Typs als Class-Objekt bei der Erzeugung des Criterias bieten sie Typsicherheit. Werden Änderungen an dem Namen des Typs gemacht, fällt das schon zur Kompilierzeit auf. Für die Erstellung einer Abfrage ist keine Kenntnis von HQL oder von SQL notwendig. Wenn Abfragen optionale Kriterien enthalten, ist das mit Criterias einfacher zu lösen als mit HQL, wobei dort der Abfragetext jeweils angepasst werden muss. Criterias unterstützen keine Joins, sie sind somit nicht so mächtig wie Abfragen mit der HQL. Der Vorteil der Typsicherheit gilt nicht für die Angabe der Properties, diese müssen als String angegeben werden. Sie sind somit anfällig gegenüber Änderungen an den persistierten Klassen und werden zur Kompilierzeit nicht aufgedeckt. Abfragen mit Criterias sind nicht so»übersichtlich«wie HQL-Abfragen. Vor- und Nachteile 7.3 Abfragen mit SQL An der Session kann eine SQL-Query erzeugt werden. Das kann für mehrere Fälle sinnvoll sein: Stored Procedures sollen an der Datenbank aufgerufen werden. Auf die spezielle Datenbank optimierte Abfragen sollen gerufen werden. Bei der Umstellung von alten SQL-Abfragen auf HQL

14 162 Damit Hibernate den Bezug von der Abfrage zu den verwalteten persistenten Klassen bekommt, müssen diese der Query angegeben werden. In dem einfachsten Beispiel sollen mit SQL alle Termine ausgegeben werden: SQLQuery q = session.createsqlquery( select {termin.*} + from TERMIN {termin} ); q.addentity( termin, Termin.class); List termine = q.list(); Named Queries Als Erstes fällt die select-klausel auf. Die geschweiften Klammern sind Platzhalter für Hibernate. Und in der from-klausel wird der Tabellenname angegeben, nicht der Typ! In dem Beispiel werden Objekte vom Typ Termin mit allen Attributen erwartet, daher der Stern hinter dem Platzhalter termin. Es wäre hier auch möglich, durch die Angabe von Propertys an dieser Stelle nur einzelne Attribute aus der Datenbank auszulesen. An Stelle der Platzhalter werden die Spalten aus der Datenbank eingesetzt. Dies muss mit einer Benennung und Reihenfolge geschehen, die Hibernate kennt. Ansonsten könnte Hibernate aus dem Ergebnis kein Objekt des Typs Termin erzeugen. Hibernate muss den Hinweis bekommen, dass Objekte des Typs Termin gesucht werden. Durch den Aufruf der Methode addentity wird Hibernate dieser Hinweis gegeben, und der Typ Termin wird mit dem Platzhalter termin verbunden. Ansonsten ist SQLQuery eine Spezialisierung und Subklasse einer Query und kann genauso zur Auflistung des Ergebnisses verwendet werden. SQL-Queries können ähnlich wie HQL-Queries in der Mapping- Datei definiert werden. Die Query wird in einem sql-query-element mit einem Namen verpackt. <sql-query name= sqlalletermine > <return alias= termin class= de.abc.termin /> <![CDATA[ select {termin.*} from TERMIN {termin} ]]> </sql-query> Diese Query kann genau wie benannte HQL-Queries an der Session mit der Methode getnamedquery abgerufen werden. Einer SQL-Query können auch benannte und nummerierte Parameter mit übergeben werden. Der Typ des Rückgabewertes wird einer benannten Query nicht mehr im Programmcode gesetzt, er ist in der Definition mit dem Element return inklusive Alias angegeben.

15 7.4 Filter 163 Aus dem Beispiel ist schon ersichtlich, dass Abfragen mit HQL oder Criterias gegenüber Abfragen mit SQL vorzuziehen sind. Es ist umständlicher und unsicherer als HQL und Criterias, denn z.b. die Namen der Tabellen und Spalten müssen bekannt sein, polymorphe Abfragen und implizite Joins sind nicht möglich. SQL-Abfragen können in einer Migration für den Umstieg auf Hibernate geeignet sein. Außerdem ist es seit Hibernate 3 möglich, mit der Hilfe benannter SQL-Queries stored procedures aufzurufen. Vor- und Nachteile 7.4 Filter Filter bieten die Möglichkeit, für eine Session sämtliche Abfragen auf Ergebnisse mit bestimmten Kriterien einzuschränken. Ein Filter wird in der Mapping-Datei definiert. Nach der Mapping-Definition der Klassen gibt man dort den Namen und die Parameter des Filters an: </hibernate-mapping>... </class> <filter-def name= nureinort > <filter-param name= ort type= string /> </filter-def>... </hibernate-mapping> Hier wurden nur der Name und die Parameter eines Filters definiert. Innerhalb des Mappings für persistente Klassen und Collections kann dieser Filter mit Kriterien gefüllt werden. </hibernate-mapping>... <class name= Termin >... <property name="ort"/> <filter name="nureinort" condition="ort = :ort"/> </class> <filter-def name= nureinort > <filter-param name= ort type= string /> </filter-def>... </hibernate-mapping> Innerhalb des Mappings für die Klasse Termin wird jetzt für den Filter mit dem Namen nureinort eine Bedingung angegeben. Dieser Filter bestimmt die zurückgelieferten Termine, die von jeder Abfrage mit diesem Filter geliefert werden. In dem Beispiel müssen Ergebnisse in der Spalte ort den gleichen Wert haben wie der Parameter :ort.

16 164 Achtung Der Bezeichner»ort«für das obige Kriterium bezieht sich nicht auf das Property mit dem Namen Ort, sondern die gleichnamige Tabellenspalte! Filterkriterien beziehen sich direkt auf die Namen der Spalten und nicht wie sonst in Hibernate üblich auf die Namen der Properties. Da Filter in der Mapping-Datei definiert werden, ist an dieser Stelle der Name der entsprechenden Tabellenspalte bekannt. Um den eben definierten Filter zu aktivieren, muss dieser an der Session mit enablefilter aktiviert werden. Zusätzlich müssen an dem Filter die benötigten Parameter gesetzt werden. Filter ortfilter = session.enablefilter("nureinort"); ortfilter.setparameter("ort", "Hamburg"); List termine = session.createquery( from Termin ).list(); Hier in dem Beispiel wurden nur Termine aus Hamburg geliefert. Der Filter beschränkt nur die Ergebnisse von sondierenden Abfragen. Ist in dem System noch ein Objekt, das dem Filter nicht entspricht, z.b. ein Termin aus München, dann kann dieser mit delete an der Session gelöscht werden, obwohl der Filter aktiv ist. Genauso können noch Objekte mit ihrer ID geladen werden, deren Attribute nicht den Filterkriterien entsprechen. Wird ein Filter nicht mehr benötigt, deaktiviert man ihn mit der Methode disablefilter und dem Namen des Filters: session.disablefilter("nureinort"); Filter können in der Praxis mehrere sinnvolle Einsatzgebiete finden. In unserem Beispiel könnte man z.b. für bestimmte Umstände sämtliche Termine herausfiltern, die in der Vergangenheit stattfanden. 7.5 Referenzen [Hibernate] Die Hibernate-Website mit der Dokumentation bietet sehr viel Information zu Abfragen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski. www.iit.tu-cottbus.de 08 Datenbanken Übung SQL Einführung Eckbert Jankowski www.iit.tu-cottbus.de Datenmodell (Wiederholung, Zusammenfassung) Objekte und deren Eigenschaften definieren Beziehungen zwischen den Objekten erkennen/definieren

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten.

Eine völlig andere Form Abfragen zu erstellen ist, sie mit Hilfe der Datenbankabfragesprache SQL zu gestalten. Einführung SQL 2010 Niko Becker Mit unseren Übungen zu ACCESS können Sie Aufbau und Struktur einer relationalen Datenbank kennenlernen. Wir zeigen Ihnen wie Sie Tabellen, Formulare und Berichte erstellen

Mehr

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien 1.1 Definition Datenbank Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS

Mehr

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. MySQL-Befehle 1. Einleitung In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben. 2. Arbeiten mit Datenbanken 2.1 Datenbank anlegen Eine Datenbank kann man wie folgt

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language)

Einführung in SQL. 1. Grundlagen SQL. Structured Query Language. Viele Dialekte. Unterteilung: i. DDL (Data Definition Language) Einführung in SQL 1. Grundlagen Structured Query Language Viele Dialekte Unterteilung: i. DDL (Data Definition Language) ii. iii. DML (Data Modifing Language) DRL (Data Retrival Language) 1/12 2. DDL Data

Mehr

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken OODB 11 Slide 1 Objektorientierte Datenbanken Vorlesung 11 Sebastian Iwanowski FH Wedel OODB 11 Slide 2 Wesentliche Eigenschaften von Hibernate Transparente Persistenz Transitive Persistenz (Persistenz

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

ACCESS SQL ACCESS SQL

ACCESS SQL ACCESS SQL ACCESS SQL Datenbankabfragen mit der Query-Language ACCESS SQL Datenbankpraxis mit Access 34 Was ist SQL Structured Query Language Bestehend aus Datendefinitionssprache (DDL) Datenmanipulationssprache

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY.

Details zu den Ausdrücken nach FROM, WHERE, GROUP BY und HAVING finden Sie in den Abschnitten über JOIN, WHERE und GROUP BY. SELECT - Der Grundbefehl zur Auswahl von Daten Die SELECT-Anweisung fragt Daten aus einer Datenbank ab und stellt diese in einer virtuellen Tabelle zur Verfügung. Diese virtuelle Tabelle, eine Menge von

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Structured Query Language (SQL) 1

Structured Query Language (SQL) 1 Structured Query Language (SQL) 1 1. Grundlagen und Hilfsmittel Structured Query Language, kurz SQL, wurde in den 70er Jahren bei IBM entwickelt, als eine Arbeitsgruppe die erste relationale Datenbank

Mehr

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL

Kompaktes Datenbank-Wissen rund um die Datenbank-Programmierung mit Transact-SQL UnternehmensDatenbanken im Netzwerk Teil 3: SQL Programmierung - Grundlagen SQL-Befehle Funktionen Operatoren Datentypen Datenbank erstellen Tabellen SQL-Abfragen Autor: Rainer Egewardt Copyright Kompaktes

Mehr

Abfragen: Grundbausteine

Abfragen: Grundbausteine Abfragen: Grundbausteine Abfragen sollen gezielt Teile der Information wiedergeben. Das Ergebnis einer solchen Operation ist eine. Der Aufbau der Ergebnistabelle wird durch zwei Grundverfahren festgelegt:

Mehr

8 Access-Abfragen migrieren

8 Access-Abfragen migrieren Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 8 Access-Abfragen migrieren Mit der Migration der Tabellen Ihrer Anwendung zu einer SQL Server-Datenbank und dem Verknüpfen der SQL Server-Tabellen

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

4. Datenabfrage mit QBE 11

4. Datenabfrage mit QBE 11 Informationsbestände analysieren Datenabfrage mit QBE 4. Datenabfrage mit QBE 11 4.1. QBE vs. SQL Relationale Datenbanken haben schon früh den Anspruch gestellt, auch für Nicht- Informatiker nutzbar zu

Mehr

Access Grundkurs. M. Eng. Robert Maaßen

Access Grundkurs. M. Eng. Robert Maaßen Access Grundkurs M. Eng. Robert Maaßen Wer steht da? M. Eng. Robert Maaßen ich@robertmaassen.de www.robertmaassen.de Studium: Informatik Vertiefungsrichtung Medientechnik, Diplom Ingenieur (FH), HAWK,

Mehr

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 531 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services Im zweiten Teil dieses Buches haben wir die Eigenschaften der Transact-SQL- Sprache in Bezug auf die Bearbeitung von operativen Daten gezeigt.

Mehr

SQL. Structured Query Language

SQL. Structured Query Language SQL Structured Query Language Grundlagen zu Abfrage SQL Jede SQL-Abfrage enthält die drei Hauptbefehle: select (engl. auswählen), from (engl. von) und where (engl. wo). Mit select gibt man an, welche Spalten

Mehr

Klausur zur Vorlesung Datenbanksysteme I

Klausur zur Vorlesung Datenbanksysteme I Prof. Dr. W. Kießling 30.01.2002 Lehrstuhl für Datenbanken und Informationssysteme Universität Augsburg Klausur zur Vorlesung Datenbanksysteme I Wintersemester 2001/2002 Name Vorname Matrikelnummer Aufgabe

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Gregor Raschke 2008 HIBERNATE. Eine Einführung 1 HIBERNATE Eine Einführung Inhalt 2 Einleitung Beispielkonfiguration Die hibernate.cfg.xml Eine Beispieltransaktion Abfragemöglichkeiten JPA und Hibernate Ressourcen und Quellen Einleitung (1) - Geschichtliches

Mehr

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

Mehr

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Vorlesungsteil SQL Grundlagen - 1 / 8 - SQL SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Auf einem Server (Rechner im Netz, der Dienste

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus: Einführung in MySQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine relationale Datenbank kann man sich als eine

Mehr

Vorlesung Datenbankmanagementsysteme

Vorlesung Datenbankmanagementsysteme Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse & Einführung Online Analytical Processing (OLAP) (auf Basis von Oracle) Vorlesung Datenbankmanagementsysteme SQL zur Datenanalyse M. Lange, S.

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Java Persistence API 2.x. crud + relationships + jp-ql

Java Persistence API 2.x. crud + relationships + jp-ql Java Persistence API 2.x crud + relationships + jp-ql Grundprinzip 10.02.10 2 Problematik Man muss bei der Persistierung immer das Klassenmodell und dessen Umsetzung im Datenmodell (in der DB) berücksichtigen.

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Projektion. Projektion. Operation: Projektion

Projektion. Projektion. Operation: Projektion Projektion einfache Abfragen Aufbereiten der Ergebnisse von Abfragen Ausdrücke und Formeln Abfragen im Verbund aggregierende Abfragen gruppierende Abfragen Angabe der zu bearbeitenden Tabelle(n) Angabe

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

EXT: kool_leute. Extension Key: kool_leute Copyright 2008-2009, Renzo Lauper,

EXT: kool_leute. Extension Key: kool_leute Copyright 2008-2009, Renzo Lauper, <renzo.lauper@kircheonline.ch> EXT: kool_leute Extension Key: kool_leute Copyright 28-29, Renzo Lauper, This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml

Mehr

(Von der Nähe zur Distanz zum User geordnet)

(Von der Nähe zur Distanz zum User geordnet) Datebanken Was ist eigentlich eine Datenbank? Datenbanken, Datenhaltungsschicht und Datenbankensysteme (hier als Synonyme zu verstehen) finden viele unterschiedliche Anwendungsbereiche. Datenbanken kann

Mehr

1. Funktionen und Datenflüsse; Tabellenkalkulationssysteme

1. Funktionen und Datenflüsse; Tabellenkalkulationssysteme Grundwissen Informatik 1. und Datenflüsse; Tabellenkalkulationssysteme Zellbezug relativer Zellbezug absoluter Zellbezug iterative Berechnungen Datentypyen z. B. A4 A ist der Spaltenbezeichner 4 ist die

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Microsoft Access 2010 SQL nutzen

Microsoft Access 2010 SQL nutzen Microsoft Access 2010 SQL nutzen Welche Bestellungen hat Kunde x aufgegeben? Welche Kunden haben noch nie bestellt? Wer hat welche Bestellungen von welchen Kunden aufgenommen? S(tructured)Q(uery)L(anguage)

Mehr

Online-Kurs 'Datenbanken und Datenmodellierung'

Online-Kurs 'Datenbanken und Datenmodellierung' Online-Kurs 'Datenbanken und Datenmodellierung' n Print-Version - 15.04.2002 (c) StR S. Winter - Universität Passau Inhaltsverzeichnis 1 Der Aufbau von SQL-Anfragen im Überblick 1.1 Der Aufbau einer SQL-Anfrage

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

Mehr

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010 O/R Mapper O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010 Agenda Object-relational impedance mismatch Mapping Session Abfragen No. 2 Object-relational impedance mismatch Object-relational

Mehr

Prozedurale Datenbank- Anwendungsprogrammierung

Prozedurale Datenbank- Anwendungsprogrammierung Idee: Erweiterung von SQL um Komponenten von prozeduralen Sprachen (Sequenz, bedingte Ausführung, Schleife) Bezeichnung: Prozedurale SQL-Erweiterung. In Oracle: PL/SQL, in Microsoft SQL Server: T-SQL.

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Whitepaper. Produkt: combit Relationship Manager 6. Import von Adressen nach Firmen und Kontakte. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager 6. Import von Adressen nach Firmen und Kontakte. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager 6 Import von Adressen nach Firmen und Kontakte Import von Adressen nach Firmen und Kontakte - 2 - Inhalt Ausgangssituation

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter SQLJ Standardisierte Java-DB DB-Schnittstelle Spezifikationen Part 0: Embedded SQL für Java (ANSI-Standard; Object Language Binding) Statische Einbettung von SQL-Anweisungen in Java-Quelltext Part 1: Java

Mehr

Tutorial Excel Übung 8 Datenbanken II -1- Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung 8.

Tutorial Excel Übung 8 Datenbanken II -1- Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung 8. Tutorial Excel Übung 8 Datenbanken II -1-1 Aufgabenstellung Die Aufgabenstellung ist der folgenden URL zu entnehmen: Übung 8. 2 Abfragen auf Muster und nach Listenelementen Zur Formulierung von Abfragen

Mehr

Universität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Universität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures SQLJ Basics Universität Stuttgart Abteilung Anwendersoftware 01.07.2002 Was ist SQLJ? SQLJ Part 0: - Steht für Embedded SQL in Java SQLJ Part 1: - Java-Methoden als SQL Stored-Procedures SQLJ Part 2: -

Mehr

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5 Aufgabe 1: Projektion Datenbanksysteme I π A1,...,A n (π B1,...,B

Mehr

Erweiterte SQL-Programmierung

Erweiterte SQL-Programmierung Erweiterte SQL-Programmierung In diesem Kapitel lernen Sie wie Sie mithilfe von Unterabfragen komplexe SELECT-Abfragen schreiben können welche Möglichkeiten es gibt, um komplexere Datenänderungsanweisungen

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 29. April 2013 - MySQL 2 Sebastian Cuy sebastian.cuy@uni-koeln.de Aufgaben Anmerkungen Best practice: SQL Befehle

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Mehr Ergebnisse: Linguistische Funktionen und Ähnlichkeitssuche mit SQL. Carsten Czarski ORACLE Deutschland B.V. & Co KG München

Mehr Ergebnisse: Linguistische Funktionen und Ähnlichkeitssuche mit SQL. Carsten Czarski ORACLE Deutschland B.V. & Co KG München Mehr Ergebnisse: Linguistische Funktionen und Ähnlichkeitssuche mit SQL Carsten Czarski ORACLE Deutschland B.V. & Co KG München Einleitung Jede Suche in den Tabellen im Data Warehouse ist eine SQL-Abfrage

Mehr

Labor 3 - Datenbank mit MySQL

Labor 3 - Datenbank mit MySQL Labor 3 - Datenbank mit MySQL Hinweis: Dieses Labor entstand z.t. aus Scripten von Prof. Dr. U. Bannier. 1. Starten des MySQL-Systems MySQL ist ein unter www.mysql.com kostenlos erhältliches Datenbankmanagementsystem.

Mehr

Hibernate Das Praxisbuch für Entwickler

Hibernate Das Praxisbuch für Entwickler Sebastian Hennebrüder 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Hibernate Das Praxisbuch für Entwickler Galileo

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen

Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen Im Rahmen der IFB - Veranstaltung Nr. 92 177 01 01 Informatik in der Sek I Programmierung vom 21.-22.09.2009 Peter Dauscher Gymnasium am Kaiserdom,

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

DB2 for z/os. Übungen zur Schulung

DB2 for z/os. Übungen zur Schulung DB2 for z/os Übungen zur Schulung 2. Dezember 2011 Eine Ausarbeitung von: cps4it Ralf Seidler Stromberger Straße 36A 55411 Bingen Fon: +49-6721-992611 Fax: -49-6721-992613 Mail: ralf.seidler@cps4it.de

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung

Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung 6. Datenintegrität Motivation Semantische Integrität (auch: Konsistenz) der in einer Datenbank gespeicherten Daten als wichtige Anforderung nur sinnvolle Attributwerte (z.b. keine negativen Semester) Abhängigkeiten

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

Mehr

SQL,Teil 3: Unterabfragen, Views & Berechnungen

SQL,Teil 3: Unterabfragen, Views & Berechnungen SQL,Teil 3: Unterabfragen, Views & Berechnungen W. Spiegel Übersicht Hinweis... Unterabfragen (subqueries) Virtuelle Spalten: AS Logik Berechnungen: Aggregatfunktionen in SQL GROUP BY & HAVING Views (Sichten)

Mehr

3.17 Zugriffskontrolle

3.17 Zugriffskontrolle 3. Der SQL-Standard 3.17. Zugriffskontrolle Seite 1 3.17 Zugriffskontrolle Datenbanken enthalten häufig vertrauliche Informationen, die nicht jedem Anwender zur Verfügung stehen dürfen. Außerdem wird man

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

RIS-ABFRAGEHANDBUCH REICHS-, STAATS- UND BUNDESGESETZBLATT 1848 1940

RIS-ABFRAGEHANDBUCH REICHS-, STAATS- UND BUNDESGESETZBLATT 1848 1940 RIS-ABFRAGEHANDBUCH REICHS-, STAATS- UND BUNDESGESETZBLATT 1848 1940 1 Überblick Die Dokumentation der Reichs-, Staats- und Bundesgesetzblätter 1848 bis 1940 ist eine Teilapplikation des Rechtsinformationssystems

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

Lösungen der Übungsaufgaben von Kapitel 10

Lösungen der Übungsaufgaben von Kapitel 10 Lösungen der Übungsaufgaben von Kapitel 10 1. Legen Sie mit einem SQL - Befehl eine neue Tabelle PERSON_KURZ mit den Feldern Kurz_Id, Kurz_Name an. Machen Sie das so, dass Kurz_Id der Primärschlüssel wird

Mehr