SELECT WHERE JOIN INSERT

Beispi elprojekte www.delphi-treff.de 186 Jetzt stellt si h die F age, ie die Ta elle „Ausleihe auszusehe hat. Diese e i det ja die Lese it de Büchern, die sie ausgeliehen haben. Dazu müssen die Bücher und die Leser zunächst einmal eindeutig identifizierbar gemacht werden. Der Buchtitel reicht dafür nicht aus, weil dieser nicht eindeutig ist. Die ISBN wäre geeignet, allerdings bieten Bibliotheken häufig ja auch andere Medien wie CDs oder Zeitschriften an. Bei den Lesern besteht das gleiche Problem. Namen sind nicht eindeutig. Deshalb bekommen beide Tabellen eine zusätzli he “palte „ID e passt. Die ID i d ei e fo tlaufe de ahl sei . Date a k a age e ts ste e iete in der Regel einen entsprechenden Automatismus an, so dass man sich als Entwickler nicht selbst um das Hochzählen der IDs kümmern muss. Diese IDs, die jeden Datensatz einer Tabelle eindeutig identifizierbar machen, nennt man Primärschlüssel. Nu i d au h kla e , ie die Ta elle „Ausleihe aussehe kö te. We Ma Muste a ID das Bu h „Delphi “ta te ID ausleiht, uss ei fa h ei Date satz it diese eide I fo atio e a gelegt e de kö e . Natü li h kopie e i i ht die Date aus de Ta elle „Bu h u d „Lese so st hätte i einiges zu ändern, wenn Max Mustermann umzieht, sondern speichern nur die IDs des Buchs und des Lesers. Das e t a „Fremdschlüssel , da si h de We t auf de P i ä s hlüssel ei e f e de Ta elle ezieht. Die Ta elle „Ausleihe kö te also so aussehe : Tabelle Ausleihe Leser-ID Fremdschlüssel Buch-ID Fremdschlüssel Ausleihdatum Rückgabedatum

7.2.5. Wichtige SQL-Befehle

Wie schon erwähnt, geschieht das Abfragen von Daten aus einer relationalen Datenbank mit Hilfe der Sprache SQL. Hier die wichtigsten FunktionenSchlüsselwörter:

7.2.5.1. SELECT

Jede SQL-Abfrage wird durch SELECT eingeleitet. Die einfachste Form lautet SELECT FROM Tabellenname Das Sternchen bedeutet, dass alle Felder ausgelesen werden sollen. Um nur gewisse Felder auszulesen, kann man hier eine Liste der gewünschten Felder anführen. Das könnte beispielsweise so aussehen: Beispi elprojekte - Datenbankprogrammierung – SQLite mit Delphi www.delphi-treff.de 187 SELECT nr, bezeichnung FROM artikel

7.2.5.2. WHERE

Um die Abfrage einschränken zu können, kann mittels WHERE eine Bedingung gestellt werden. Der Aufbau lautet SELECT Felder FROM Tabelle WHERE Bedingung Wenn eine Tabelle „Artikel Preise enthält, kann man beispielsweise alle Artikel heraussuchen, die weniger als 10 Euro kosten: SELECT FROM artikel WHERE preis10 WHERE-Bedingungen lassen sich wie auch die logische Bedingung in Pascal durch AND und OR verknüpfen: SELECT FROM artikel WHERE preis10 AND preis100

7.2.5.3. JOIN

Joins lesen Daten aus verschiedenen Tabellen und vereinigen diese nach bestimmten Kriterien. Dieser Abschnitt kann nicht in die Details gehen, zumal die Syntax sich von DBMS zu DBMS unterscheidet. Deshalb nur eine einfache Variante am Beispiel unserer Bücherei: Möchte man wissen, wann welcher Titel und nicht nur die ID ausgeliehe u de, uss a alle Ta elle „Bu h u d „Ausleihe itei a de e i de : SELECT a.ausleihdatum, b.titel FROM buch b, ausleihe a WHERE a.buch_id = b.id Die Tabelle „Buch bekommt hier den Alias-Namen „b , „Ausleihe den Namen „a , damit alles weitere übersichtlich bleibt. Dann wird der Fremdschlüssel in der Ausleihe-Tabelle dem zugehörigen Primärschlüssel in der Buch-Tabelle gleichgesetzt. Dadurch stehen im Select-Ergebnis die passenden Spalten der Buchtabelle in jeder Zeile der Ausleihe-Tabelle zur Verfügung.

7.2.5.4. INSERT

Mit dem Befehl INSERT können neue Datensätze in die Datenbank eingefügt werden. Die Struktur sieht folgendermaßen aus: INSERT INTO Tabelle Felder VALUES Werte Will man in die bereits erwähnte Artikel-Tabelle einen neuen Artikel aufnehmen sieht der SQL-Befehl so aus: Beispi elprojekte - Datenbankprogrammierung – SQLite mit Delphi www.delphi-treff.de 188 INSERT INTO artikel bezeichnung, preis VALUE Delphi XE Starter, 149

7.2.5.5. UPDATE