Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 2.8 vom )
|
|
- Holger Adler
- vor 5 Jahren
- Abrufe
Transkript
1 Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 2.8 vom ) Einleitung Im folgenden wird die Erstellung einer Klasse zur Realisierung einer OR-Schicht erläutert. Die Klasse enthält die Basisfunktionalität zum Anlegen, Auslesen, Ändern und Löschen von Datensätzen (konkret Schiffe). Das vorliegende Tutorium beschreibt die Implementierung einer möglichen Zugriffsschicht so wie sie dann auch im nächsten Übungsblatt als Programmierrahmen vorgegeben ist. Datenbank Zu Beginn legen wir erst mal die Datenbank segeltoern mit der Tabelle Schiff an. Dazu rufen wir in einem DOS-Fenster das Kommandozeilentool mysql.exe auf 1 : mysql.exe -u root Anschließend geben wir folgende Statements an: drop database if exists segeltoern; create database segeltoern; use segeltoern; CREATE TABLE schiff ( s_id bigint(20) NOT NULL, s_name varchar(20) NOT NULL, s_laenge double NOT NULL, s_plaetze int(11) NOT NULL, PRIMARY KEY (s_id) ); Danach tragen wir mal zwei Schiffe ein: insert into schiff (s_id, s_name, s_laenge, s_plaetze) values(1, Fury, 12.6, 7); 1. alternativ kannst du auch eine Oracle Datenbank verwenden. Andreas Schmidt PHP-Fingerübungen 1/11
2 insert into schiff (s_id, s_name, s_laenge, s_plaetze) values(2, Olga II, 15.1, 8); Auflisten der beiden Datensätze mit: select * from schiff; CRUD-Schicht Anschließend legen wir eine Datei mit dem Namen CRUD_Schiff.php an und erstellen die folgende Klasse CRUD_Schiff mit Konstruktor, Getter-/Setter-Methoden sowie einer Methode tostring() zun Anzeigen eines Datensatzes: <?php class CRUD_Schiff { protected $id; protected $name; protected $laenge; protected $plaetze; /** * Konstruktor */ function construct($id, $name, $laenge, $plaetze) { $this->id = $id; $this->name = $name; $this->laenge = $laenge; $this->plaetze = $plaetze; /* * GETTER */ public function getid() { return $this->id; Andreas Schmidt PHP-Fingerübungen 2/11
3 public function getname() { return $this->name; public function getlaenge() { return $this->laenge; public function getplaetze() { return $this->plaetze; /* * SETTER */ public function setname($name) { $this->name = $name; public function setlaenge($laenge) { $this->laenge = $laenge; public function setplaetze($plaetze) { $this->plaetze = $plaetze; /** * tostring Funktion */ public function tostring() { $str = "$this->id: $this->name - $this->laenge "; $str.= "$this->plaetze Plaetze"; return $str; ## Ende Klasse CRUD_Schiff Andreas Schmidt PHP-Fingerübungen 3/11
4 Schreib jetzt ein kleines Testprogramm, das eine Schiffsinstanz erzeugt und diese mittels print ausgibt. Als nächstes erstellen wir in der Klasse CRUD_Schiff eine Klassenmethode getall(), welche alle Schiffe zurückliefern soll: public static function getall() { // SQL-Statement $sql = "select s_id as id, s_name as name, s_laenge as laenge, s_plaetze as plaetze from schiff"; $list = MDB2_Util::query($sql); $result = array(); foreach ($list as $s) $result[] = new CRUD_Schiff($s['id'], $s['name'], $s['laenge'], $s['plaetze']); return $result; Die Methode nutzt die Hilfsklasse MDB2_Util, welche du dir von der Homepage herunterladen kannst. Konkret wird die Klassenmethode query(...) genutzt, welche ein SQL-Statement entgegen nimmt und ein Array der Ergebnisdatensätze zurückliefert. Jeder Datensatz wird als Dictionary zurückgeliefert, dessen Schlüssel die (Alias) Namen der Spalten des Select-Statements sind. Um dir die Struktur des Resultats anzuschauen kannst du den Befehl print_r($list); hinter den Methodenaufruf schreiben. Anschließend wird über die Ergebnisdatensätze iteriert und Instanzen der Klasse CRUD_Schiff erzeugt. Damit die Hilfsklasse MDB2_Util genutzt werden kann muss diese zuvor noch eingebunden werden. Dies geschieht zu Beginn der Datei (aber innerhalb des PHP-Blocks) durch den Befehl include 'MDB2_Util.php'; Unsere bisherige Implementierung können wir jetzt durch das folgende Programm testen 1 : Andreas Schmidt PHP-Fingerübungen 4/11
5 <?php include 'CRUD_Schiff.php'; include 'MDB2_Util.php'; $dsn = 'mysql://root:@localhost/segeltoern'; MDB2_Util::connect($dsn); foreach (CRUD_Schiff::getAll() as $schiff) echo $schiff,"\n"; MDB2_Util::close(); Das Programm führen wir von der Kommandozeile einer DOS-/oder CYGWIN- Box aus: $ php.exe 1 test.php und die Ausgabe sollte in etwa wiefolgt aussehen: 1: Fury Plaetze 2: Olga II Plaetze Im nächsten Schritt soll die CRUD-Schicht um eine Methode zum anlegen von Datensätzen erweitert werden Dazu erstellen wir eine statische Methode create(...), welche sowohl den Datensatz in der Datenbank anlegt, als auch eine Instanz des Datensatzes zurückliefert: public static function create($name, $laenge, $plaetze) { $id = MDB2_Util::create_id('schiff')+1000; // SQL-Statement $sql = "insert into schiff (s_id, s_name, s_laenge, s_plaetze) values (?,?,?,?)"; // execute query $data = array($id, $name, $laenge, $plaetze); $affected_rows = MDB2_Util::query($sql, $data); if ($affected_rows!=1) die("fehler: Datensatz konnte nicht angelegt werden!"); return new CRUD_Schiff($id, $name, $laenge, $plaetze); 1. Wenn du eine Oracle Datenbank benutzt, musst du den Connection-String entsprechend anpassen. (etwa so: oci8://<username>:<passwort>@oracledbwi) 1. Im Poolraum bitte die PHP-Version unter h:/schmidt/db2-php.bat verwenden. Andreas Schmidt PHP-Fingerübungen 5/11
6 Die Methode erzeugt zu Beginn mittels einer weiteren Hilfsmethode (create_id(...)) der Klasse MDB2_Util eine eindeutige ID für das Schiff und bastelt dann das Insert-Statement mit Platzhaltern (?) zusammen. Anschließend werden in einem Array ($data) die Werte für die Platzhalter eingetragen und das ganze dann wieder über die Methode query(...) in die Datenbank eingetragen. Im Unterschied zu einem Select-Statement, das die Ergebnisdatensätze in einem Array zurückliefert wird im Falle eines insert,update/oder delete Statements die Anzahl der vom SQL-Statement betroffenen Datensätze zurückgeliefert, bei diesem insert-statement logischerweise 1. Wird eine anderer Werzt zurückgeliefert so ist irgendwas falsch gelaufen und wir geben eine Fehlermeldung aus. Zum Abschluss der Methode wird noch eine Instanz mit den Werten erzeugt und diese zurückgeliefert. Als nächstes werden wir eine Methode zum löschen eines Datensatzes implementieren. Dies wird durch eine Instanzenmethode realisiert. public function delete() { // SQL-Statement $sql = "delete from schiff where s_id =?"; // execute statement $result = MDB2_Util::query($sql, array($this->id)); // error handling if ($result!= 1) die("fehler: Schiff ($id) wurde nicht aus der Tabelle gelöscht"); unset($this); Die Methode ist relativ selbsterklärend, lediglich das unset($this) am Ende sei noch etwas genauer erläutert: unset(...) zerstört die übergebene Variable (hier: die Instanz selbst), so dass diese später vom Programm aus nicht mehr verwendet werden kann. Als nächstes soll von dir die statische Methode getbyid($id) implementiert Andreas Schmidt PHP-Fingerübungen 6/11
7 werden. Die Methode soll genau eine Instanz zurückliefern, die durch die ID ($id) spezifiziert wird. Nimm als Vorlage die zuvor implementierte Methode getall() und ändere sie entsprechend ab. Wird kein Schiff mit der entsprechenden ID gefunden, so brich mit einer Fehlermeldung ab. Mittels der setter-methoden kann eine Instanz modifiziert werden, die Änderungen werden jedoch nicht in die Datenbank übertragen. Dazu benötigen wir eine Methode update(), welche den Zustand der Instanz mit der Datenbank synchronisiert: public function update() { // SQL-Statement $sql = "update schiff set s_name =?, s_laenge =?, s_plaetze =? where s_id =?"; // Parameter array $data = array($this->name, $this->laenge, $this->plaetze, $this->id); // execute query $result = MDB2_Util::query($sql, $data); Soweit zur Implementierung einer einfachen OR-Schicht für eine Klasse. Eine weitere sinnvolle Funktionalität liefert beispielsweise die Klassenmethode getby- Condition($cond). In der einfachsten Implementierung wird die Bedingung direkt in Form einer SQL-Bedingung formuliert und innerhalb der Methode an das Select-Statement angehängt. Beachte aber, dass dies der SQL-Injection Tür und Tor öffnet, wenn man nicht vorsichtig ist und die Bedingung auf gemeine Zeichen 1 hin überpürft. 1:n-Beziehung Als nächstes soll die Datenbank zusätzlich um eine Tabelle Hafen erweitert werden. Gleichzeitig soll jedes Schiff einen Heimathafen besitzen. Hierbei handelt es sich um eine klassische 1:n-Beziehung, die wie wir wissen mittels Fremdschlüssel in der Datenbank realisiert wird. Die Befehle zum Anlegen der Tabelle Hafen, dem hin- 1. Beispielsweise Anführungszeichen und Kommentare, wenn die Zeichenkette welche die bedingung forrmuliert auch aus Benutzereingaben aufgebaut wird. Andreas Schmidt PHP-Fingerübungen 7/11
8 zufügen des Fremdschlüssels s_hafen_fk und zweier Beispieldatensätze lauten wiefolgt: CREATE TABLE hafen ( h_id bigint(20) NOT NULL, h_name varchar(50) NOT NULL, h_ort varchar(50) NOT NULL, h_anlegeplaetze int(11) NULL, PRIMARY KEY (h_id) ); ALTER TABLE schiff add s_hafen_fk bigint(20) references hafen(h_id); insert into hafen (h_id, h_name, h_ort) values(1, 'English Harbour','Nelsons Dock (Antiqua)'); insert into hafen (h_id, h_name, h_ort) values(2, 'Marine de Fort','Point a Pitre (Guadeloupe)'); Als nächstes muss nun die zuvor entwickelte OR-Schicht der Klasse CRUD_Schiff um dieses Attribut erweitert werden. Dazu muss dass Attribut als Instanzenvariable in der Klasse definiert werden, im Konstruktor Erwähnung finden und auch überall dort wo SQL-Statements vorkommen (außer natürlich bei delete()). Führe diese Änderungen zur Übung durch. Überprüfe deine Modifikationen 1 indem du einem der beiden Schiffe einen Heimathafen zuweist und das Testprogramm durchlaufen lässt. Erweitere gegebenenfalls das Testprogramm. Erstelle weiterhin die Klasse CRUD_Hafen mit den notwendigen Instanzenvariablen, einem Konstruktor, der Getter-Methode getid(), einer statischen Methode getbyid($id) 2 und der Methode tostring(). 1. Wird das zusätzliche Attribut in die Datenbank eingetragen und wieder ausgelesen? 2. Funktionalität analog zu der der Klasse CRUD_Schiff. Andreas Schmidt PHP-Fingerübungen 8/11
9 Als nächstes erstellen wir eine Methode gethafen(...), welche eine Hafeninstanz zurückliefern soll. Die Implementierung sieht wiefolgt aus: public function gethafen() { if ($this->hafen_fk) return CRUD_Hafen::getById($this->hafen_fk); else return null; Die Implementierng überprüft zuerst, ob bei der Instanz die Instanzenvariable hafen_fk gesetzt wurde (andernfalls hat das Schiff keinen Heimathafen). Ist dies der fall so wird die Klassenmethode getbyid(...) der Klasse CRUD_Hafen aufgerufen, welche die Hafeninstanz zurückliefert. Analog dazu kann enine Methode sethafen($hafen_instanz) definiert werden, welche einem Schiff einen Heimathafen zuordnetm (siehe Übnungsblatt 2). Soll nun zusätzliche Applikationslogik mit hinzu programmiert werden, so geschieht dies nicht in der CRUD-Klasser, sondern in einer von der CRUD-Klasse abgeleiteten Klasse. Die minimale Implementierung sieht wiefolgt aus: <?php require_once('crud_schiff.php'); class Schiff extends CRUD_Schiff {?> Existiert eine abgeleitete Applikationslogikklasse so muss überall in der CRUD- Schicht wo Instanzen der CRUD-Schicht erzeugt werden, die Erzeugung von Instanzen der abgeleiteten Klasse erfolgen - sonst geht die schöne Appliationslogik gleich wieder flöten ;-). Andreas Schmidt PHP-Fingerübungen 9/11
10 Dictionary als Konstruktorparameter: Setzt man beim Konstruktor statt mehrerer Parameter einen assoziativen Array ein, so kann man die Realisierung der CRUD-Schicht etwas vereinfachen. Beispielswiese sieht der Konstruktor der Klasse CRUD-Schiff dann wiefolgt aus: function construct($dic) { $this->id = $dic['id']; $this->name = $dic['name']; $this->laenge = $dic['laenge']; $this->plaetze = $dic['plaetze']; $this->hafen_fk = $dic['hafen_fk']; Der Vorteil bei dieser Implementierung ist, dass bei Select-Anfragen die Ergebnisdatensätze in Form eines Dictionaries zurückgeliefert werden, und man deshalb folgendes schreiben kann: $class ='Film'; $res = $stmt->execute($data); $results = array(); while($row = $res->fetchrow(mdb2_fetchmode_assoc)) $results[] = new $class($row); return $results; Wie man sieht ist innerhalb der Schleife, welche die Datensätze aus der datenbank abholt und die Instanzen erzeugt kein klassenspezifischer Code mehr vorhanden. Alle Konstruktoren besitzen einen Parameter (das Dioctionary) und das Erzeugen der Instanzen der entsprechenden Klasse kannn durch den Parameter $class erfolgen. Dieser sachverhalt erlaubt uns die Definition einer weiteren Methode in der Klasse MDB2_Util, die wie query(...) funktioniert, jedoch bereits Instanzen der angegebenen Klasse erzeugt. Dies führt zu einer Reduktion des notwenigen Codes und zu einer höheren Performance, da die liste der Ergebnisdatensätze kein zweites mal (zum Erzeugen der Instanzen) durchlaufen werden muss. So reduziert Andreas Schmidt PHP-Fingerübungen 10/11
11 sich zum Beispiel der Code für die Methode CRUD_Schiff::getAll() auf: public static function getall() { // SQL-Statement $sql = "select s_id as id, s_name as name, s_laenge as laenge, s_plaetze as plaetze from schiff"; return MDB2_Util::object_query($sql, 'Schiff'); einfach, oder? Nach diesem Prinzip ist auch der Programmierrahmen für die 2. Übung aufgebaut. Andreas Schmidt PHP-Fingerübungen 11/11
Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 4.4 vom )
Tutorium zum Aufbau einer objektrelationalen Abbildungsschicht in PHP (Version 4.4 vom 13.11.2018) Einleitung Im folgenden wird die Erstellung einer Klasse zur Realisierung einer OR-Schicht erläutert.
MehrDatenbanken und Informationssysteme II (PO B.3)
Datenbanken und Informationssysteme II (PO B.3) Szenario Öffentlicher Nahverkehr: Es gibt Haltestellen, Streckenabschnitte, Linien und Fahrzeiten. Ein Streckenabschnitt ist die direkte Verbindung zwischen
MehrDatenbanken und Informationssysteme II (PO B.4)
Datenbanken und Informationssysteme II (PO B.4) Szenario Öffentlicher Nahverkehr: Es gibt Haltestellen, Streckenabschnitte, Linien und Fahrzeiten. Ein Streckenabschnitt ist die direkte Verbindung zwischen
MehrProbeklausur Datenbanken und Informationssysteme II
Hochschule Karlsruhe Technik und Wirtschaft- 26.6.2014 Fakultät für Informatik und Wirtschaftsinformatik Probeklausur Datenbanken und Informationssysteme II Szenario: Poolräume, Softwareverteilung Aufgabe
MehrDatenbanken und Informationssysteme II
Fakultät für Informatik und Wirtschaftsinformatik SS 2012 Datenbanken und Informationssysteme II Szenario: Stundenplan. Es gibt Dozenten, Veranstaltungen (Typ: V(orlesung), U(ebung) und L(abor)), die jeweils
MehrDatenbanken und Informationssysteme II
Fakultät für Informatik und Wirtschaftsinformatik WS 2011 Datenbanken und Informationssysteme II Szenario: Es soll eine Datenbank für eine Online Auktionsplattform entworfen werden. Das relationale Schema
MehrObject Relational Mapping Layer
Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung
MehrMultimedia im Netz Wintersemester 2013/14. Übung 02 (Hauptfach)
Multimedia im Netz Wintersemester 2013/14 Übung 02 (Hauptfach) Ludwig-Maximilians-Universität München Multimedia im Netz WS 2013/14 - Übung 2-1 PHP und MySQL Es werden mehrere APIs von PHP angeboten um
Mehr7. 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
MehrProbeklausur Datenbanken und Informationssysteme II
Probeklausur Datenbanken und Informationssysteme II Szenario: Flugverkehr Aufgabe 1 (Trigger) [ 30 ] a) Analysiere das relationale Schema aus Anhang A und erstelle ein ER-Diagramm (Notation mit min/max-
MehrProbeklausur Datenbanken und Informationssysteme II
Probeklausur Datenbanken und Informationssysteme II Szenario: Bibliothek. Es gibt Autoren, Bücher, Exemplare, Kunden, Kategorien und Ausleihvorgänge. Aufgabe 1 (Trigger) [ 32 ] a) Analysiere das relationale
MehrHochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.
Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.
MehrDatenbanken und Informationssysteme II
Datenbanken und Informationssysteme II Szenario: Mondial (zugehöriges DDL-Schema in Anhang A) Es gibt Länder, Provinzen, Städte und Grenzen. Aufgabe 1 (Trigger) [23 + 5] a) Analysiere das relationale Schema
MehrÜbersicht der wichtigsten MySQL-Befehle
Übersicht der wichtigsten MySQL-Befehle 1. Arbeiten mit Datenbanken 1.1 Datenbank anlegen Eine Datenbank kann man wie folgt erstellen. CREATE DATABASE db_namen; 1.2 Existierende Datenbanken anzeigen Mit
MehrDr. Christian Senger DB & IS II, SS15 09.05.2015
Übung MVC Dr. Christian Senger DB & IS II, SS15 09.05.2015 0) Allgemeine Hinweise: In den folgenden Lektionen soll die Realisierung einer objektrelationalen Abbildungsschicht gezeigt werden. Die Realisierung
MehrDatenbank und Tabelle mit SQL erstellen
Datenbank und Tabelle mit SQL erstellen 1) Übung stat Mit dem folgenden Befehlen legt man die Datenbank stat an und in dieser die Tabelle data1 : CREATE DATABASE stat; USE stat; CREATE TABLE data1 ( `id`
MehrMySQL-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Übungen zum Bioinformatik-Tutorium. Blatt 6
Institut für Informatik Wintersemester 2018/19 Praktische Informatik und Bioinformatik Prof. Dr. Ralf Zimmer Übungen zum Bioinformatik-Tutorium Blatt 6 Termin: Dienstag, 27.11.2018, 11 Uhr 1. Klassen und
Mehr7. 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
MehrProbeklausur Datenbanken und Informationssysteme II
Hochschule Karlsruhe Technik und Wirtschaft 29.6.2017 Probeklausur Datenbanken und Informationssysteme II Szenario: Gütertransport: Es gibt Pakete, Container, Transportaufträge, Orte und Verkehrsmittel.
MehrErstellen und Verwalten von Tabellen
Erstellen und Verwalten von Tabellen Als nächstes müssen die Tabellen der Datenbank Personalwesen erzeugt werden. Die Syntax dazu lautet: CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(TABELLENDEFINITION,
MehrIntroduction to Data and Knowledge Engineering. 6. Übung SQL
Introduction to Data and Knowledge Engineering 6. Übung SQL Aufgabe 6.1 Datenbank-Schema Buch PK FK Autor PK FK ISBN Titel Preis x ID Vorname Nachname x BuchAutor ISBN ID PK x x FK Buch.ISBN Autor.ID FB
MehrGrundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich
Grundlagen von SQL Informatik 2, FS18 Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich Markus Dahinden 13.05.18 1 Grundlagen von SQL (Structured Query Language)
Mehr5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp
5/14/18 Grundlagen von SQL (Structured Query Language) Datenbanksprache Befehle Datenbanken und Tabellen erstellen/verändern Daten manipulieren (eingeben, ändern, löschen) Datenbank durchsuchen (Queries
MehrDie Anweisung create table
SQL-Datendefinition Die Anweisung create table create table basisrelationenname ( spaltenname 1 wertebereich 1 [not null],... spaltenname k wertebereich k [not null]) Wirkung dieses Kommandos ist sowohl
MehrUnsere Webapplikation erweitern
Unsere Webapplikation erweitern Um mit Play zu arbeiten: 1. Starten Sie zunächst den MySQL-Server. Führen Sie dazu auf dem USB-Stick mysql_start.cmd aus. 2. Sie brauchen eine Windows-Kommandozeile: Starten
MehrFunktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion
Überblick über Stored Functions Funktionen Eine Funktion ist ein benannter PL/SQL- Block, der einen Wert zurückgibt. Eine Funktion kann in der Datenbank als Objekt zur wiederholbaren Ausführung gespeichert
MehrWillkommen. Datenbanken und Anbindung
Willkommen Datenbanken und Anbindung Welche stehen zur Wahl? MySQL Sehr weit verbreitetes DBS (YT, FB, Twitter) Open-Source und Enterprise-Version Libs in C/C++ und Java verfügbar Grundsätzlich ist ein
MehrÜben von DDL und DML. Ergebnis:
SQL DDL Üben von DDL und DML https://www.jdoodle.com/execute-sql-online Ergebnis: Befehlsgruppen in SQL DDL Data Definition Language DML Data Manipulation Language CREATE: Tabellen anlegen DROP: Tabellen
MehrDatenbanken im WI-Unterricht mit
Datenbanken im WI-Unterricht mit Inhaltsverzeichnis 1 ER-Modell - Entity Relationship Modell 1 1.1 Entitäten................................................. 2 1.2 Relationen................................................
MehrGML und Bibliothek oracle.sdoapi
GML und Bibliothek oracle.sdoapi Nachfolgend werden die Java-Klassen aus dem GML-Kapitel unter Verwendung der alten Klassenbibliothek oracle.sdoapi dargestellt. Erzeugung von GML 3.1 aus SDO_GEOMETRY-Objekten
MehrGrundlagen 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
MehrEinführung in die Programmierung für NF MI. Übung 07
Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare
MehrProbeklausur Datenbanken und Informationssysteme II (SS16)
Hochschule Karlsruhe Technik und Wirtschaft 22.6.2016 Probeklausur Datenbanken und Informationssysteme II (SS16) Szenario: Musiker, Bands, Album, Lieder. Aufgabe 1 (Trigger) [ 29 ] a) Analysiere das relationale
MehrOracle 10g Einführung
Kurs Oracle 10g Einführung Teil 5 Einführung Timo Meyer Administration von Oracle-Datenbanken Timo Meyer Sommersemester 2006 Seite 1 von 16 Seite 1 von 16 Agenda 1 Tabellen und Views erstellen 2 Indizes
MehrÜbung PL/SQL Trigger Lösungen
Übung PL/SQL Trigger Lösungen 1) Gebe das aktuelle Datum aus. Wofür steht dual? Ändere das Datum für Deine aktuelle Session auf das Format Jahr (4 Stellen) Monat (2 Stellen) Tag (2 Stellen)[Leerzeichen]Stunde
MehrLabor 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.
MehrObject Relational Mapping Layer
Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS Andreas Schmidt PHP (Teil 3) 1/33 object relational mapping layer two
MehrSeminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.
Seminar 2 SQL - DML(Data Manipulation Language) und DDL(Data Definition Language) Befehle. DML Befehle Aggregatfunktionen - werden auf eine Menge von Tupeln angewendet - Verdichtung einzelner Tupeln yu
Mehr3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7
1 Data Definition Language (DDL)... 2 1.1 Tabellen erstellen... 2 1.1.1 Datentyp...... 2 1.1.2 Zusätze.... 2 1.2 Tabellen löschen... 2 1.3 Tabellen ändern (Spalten hinzufügen)... 2 1.4 Tabellen ändern
MehrSQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP
SQL,Teil 1: CREATE, INSERT, UPDATE, DELETE, DROP W. Spiegel Übersicht DDL & DML Relationen definieren: CREATE Primärschlüssel setzen mit primary key Tabellen löschen: DROP Daten speichern: INSERT Daten
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrDATENBANKEN 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.
MehrISU 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
MehrKontrollstrukturen MySQL Funktionen. MySQL 4, 5. Kapitel 20a: PHP Teil 2. Marcel Noe
MySQL 4, 5 Kapitel 20a: PHP Teil 2 Gliederung 1 2 Gliederung 1 2 Die ermöglicht ein Bedingtes Ausführen von Code-Abschnitten. Nur wenn die Bedingung erfüllt ist wird der Block hinter if ausgeführt. Ist
MehrFakultät für Informatik & Wirtschaftsinformatik DB & IS II SS Test. Dauer: 20 Minuten. 10 Minuten Pause. Dr. Christian Senger.
Test Dauer: 20 Minuten 10 Minuten Pause. PHP & DBs 1 Befüllen Sie ein Dictionary mit dem kleinen 1x1 Keys: 1x1, 1x2, 9x9 Ausgabe in einer Tabelle (9 Zeilen, 9 Spalten) PHP & DBs 2 PHP & DBs Zugriff auf
MehrDatenbanken 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,
MehrPHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden.
Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Integration von MySQL in PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de) MySQL
MehrUniversität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6
Universität Augsburg, Institut für Informatik WS 2011/2012 Prof. Dr. W. Kießling 09. Dez. 2011 Dr. M. Endres, Dr. S. Mandl, F. Wenzel Lösungsblatt 6 Datenbanksysteme I Aufgabe 1: Deklarative Änderungsoperationen
MehrProgrammierung für Mathematik HS11
software evolution & architecture lab Programmierung für Mathematik HS11 Übung 8 1 Aufgabe: Codeverständnis (Repetition) 1.1 Lernziele 1. Code verstehen können. 2. Fehler im Code finden und korrigieren
MehrObjektorientierung. Marc Satkowski 20. November C# Kurs
Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung
MehrEs geht also im die SQL Data Manipulation Language.
1 In diesem Abschnitt wollen wir uns mit den SQL Befehlen beschäftigen, mit denen wir Inhalte in Tabellen ( Zeilen) einfügen nach Tabelleninhalten suchen die Inhalte ändern und ggf. auch löschen können.
MehrOracle PL/SQL Tutorium (Version 3.7 vom )
Oracle PLSQL Tutorium (Version 3.7 vom 6.10.2017) Einleitung Im vorliegenden Tutorium soll eine Einführung in PLSQL erfolgen. Als Grundlage muss man sich von der Kurshomepage die Tabellendefinition sowie
MehrFakultät IWI DB & IS II - SS PHP Teil 2. Zugriff auf Datenbanken. Objektorientierung in PHP5. Andreas Schmidt PHP - Teil 2 1/24
PHP Teil 2 Zugriff auf Datenbanken Objektorientierung in PHP5 Andreas Schmidt PHP - Teil 2 1/24 Datenbankzugriff mit PHP verschiedene Varianten native Schnittstelle (mysql_, ora_,...) ODBC Funktionen
MehrAusgabe: Abteilungen Summe der Fehltage einer Abteilung. Nur für Mitarbeiter deren Fehltage < 3 Nur Abteilungen deren Fehltage-Summe > 1
mitarbeiter_fehltage abteilung_id mitarbeiter_id fehltage 3 2 2 1 1 1 2 4 5 4 5 3 2 6 10 4 3 3 1 8 1 2 7 5 3 9 1 Ausgabe: Abteilungen Summe der Fehltage einer Abteilung Nur für Mitarbeiter deren Fehltage
MehrDatenbanksysteme 2013
Datenbanksysteme 2013 Kapitel 8: Datenintegrität Vorlesung vom 14.05.2013 Oliver Vornberger Institut für Informatik Universität Osnabrück Datenintegrität Statische Bedingung (jeder Zustand) Dynamische
MehrSoftwaretechnik WS 16/17. Übungsblatt 01
Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and
MehrAuD-Tafelübung T-B5b
6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit
Mehr1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)
Erstellen einer Mitarbeiter-Datenbank 1 Erstellen einer Mitarbeiter-Datenbank Arbeitsauftrag Ziel der Übung Erstellen von Datenbanken mit Hilfe von SQL-Abfragen Aufgabe (1.) Erstellen Sie eine neue Datenbank
MehrDatenbanken erstellen Liste von Datenbanken anzeigen Datenbanken löschen. MySQL 4, 5. Kapitel 06: Datenbanken. Marcel Noe
MySQL 4, 5 Kapitel 06: Datenbanken Gliederung 1 Datenbanken erstellen 2 3 Datenbanken erstellen CREATE DATABASE erstellt. Optional kann der Parameter IF NOT EXISTS die Datenbank bereits existiert.
Mehr3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien
CREATE TABLE SPEND_STAT ( S_STATUS VARCHAR2(1), STAT_TXT VARCHAR2(15), PRIMARY KEY (S_STATUS) ENABLE ) ; 3.3. Implementierung in SQL DDL-Grundlagen Constraint-Verzögerung Implementierungs-Strategien DDL:
MehrDieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.
Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,
MehrEntwicklungsumgebung für die Laborübung
Entwicklungsumgebung für die Laborübung VL Datenbanksysteme Ingo Feinerer Arbeitsbereich Datenbanken und Artificial Intelligence Institut für Informationssysteme Technische Universität Wien Gliederung
Mehr1a) SQL Stored Procedure via IDs
1a) SQL Stored Procedure via IDs Erstellen Sie analog zu Aufgabe 2d) des ersten Übungsblatts eine SQL Stored Procedure, welche den Freundschaftsgrad zweier Benutzer eines sozialen Netzwerks aktualisiert.dazu
MehrÜbungsblatt 8- Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Prof. Günther Specht, R.Binna, N.Krismer, M. Tschuggnall 30. November 2012 Proseminar Datenbanksysteme Übungsblatt 8- Lösungsvorschlag Aufgabe 1 (Trigger)
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Semestralklausur Einführung in die Programmierung Semestralklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList
MehrDB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer
DB-Datenbanksysteme DB-13 043-SQL-DML 1 Mario Neugebauer Einführung Informationsmodellierung Relationales Datenbankmodell Datenbanksprache SQL Einführung Daten-Abfrage-Sprache - DQL Daten-Definitions-Sprache
MehrPROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN
PROGRAMMIERPROJEKT 2016 VERWENDETE TECHNOLOGIEN Mathias Weber und Annette Bieniusa ÜBERBLICK Spark SQL SQL in Java SPARK WAS IST DAS? Framework zur Erstellung von Web-Anwendungen in Java Einfach zu verwenden
MehrSQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)
SQL DDL (Data Definition Language) Befehle und DML(Data Manipulation Language) DML(Data Manipulation Language) SQL Abfragen Studenten MatrNr Name Vorname Email Age Gruppe 1234 Schmidt Hans schmidt@cs.ro
Mehr5.8 Bibliotheken für PostgreSQL
5.8 Bibliotheken für PostgreSQL Haskell/WASH: Modul Dbconnect PHP: pqsql-funktionen Java/JSP: JDBC Perl: DBI database interface modul Vorläufige Version 80 c 2004 Peter Thiemann, Matthias Neubauer 5.9
MehrSQL 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
MehrFakultät für Informatik & Wirtschaftsinformatik DB & IS II - WS Metadaten. Andreas Schmidt Metadaten 1/17
Metadaten Andreas Schmidt Metadaten 1/17 Metadaten Metadaten sind Daten über Daten Data-Dictionary speichert Informationen über die Struktur der Daten, z.b.: Tabellen, Spalten, Datentypen Primär- und Fremdschlüssel,
MehrKapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1
Kapitel 9 Embedded SQL Vorlesung Datenbanken 1 Embedded SQL (siehe auch [Date00]) Arbeitsweise ähnlich PL/SQL, allerdings: Normale Programmiersprache mit eingestreuten SQL-Befehlen und anderen Befehlen
MehrOracle: 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
MehrAbbildung 6-8: Abfolge beim doppelten Abschicken von Formularen
HACK #55 Hack Doppeltes Abschicken von Formularen verhindern Durch die Verwendung einer Transaktionstabelle in Ihrer Datenbank können Sie das klassische Problem der doppelt abgeschickten Formulare verhindern.
MehrC++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision
C++ Anwendungskurs Tag 4: Datenbanken Daniela Horn Institut für Neuroinformatik Real-time Computer Vision 15. März 2018 C++ Anwendungskurs 15. März 2018 Daniela Horn 1 Übersicht 1 Motivation 2 Relationale
MehrKlausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
MehrMultimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011
Übung zur Vorlesung Multimedia im Netz Ludwig-Maximilians-Universität Wintersemester 2010/2011 Ludwig-Maximilians-Universität München Multimedia im Netz - Übung - 2-1 Übungsblatt - 2 Thema: HTML, PHP und
MehrMultimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)
Multimedia im Netz Wintersemester 2013/14 Übung 03 (Nebenfach) Ludwig-Maximilians-Universität München Multimedia im Netz WS 2013/14 - Übung 3-1 Datenbanken und SQL Mit Hilfe von Datenbanken kann man Daten
MehrOracle & Java HOW TO
Oracle & Java HOW TO Helge Janicke, Niels-Peter de Witt, Karsten Wolke 21. Januar 2002 Inhaltsverzeichnis 1 Java-Anbindung an Oracle-DB 2 2 Benötigte Programme und Daten 2 3 Einbinden der Klassen 2 4 Aufbau
MehrRelationales Datenbanksystem Oracle
Relationales Datenbanksystem Oracle 1 Relationales Modell Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben: RS = R 1 X 1 SC 1... R n X n SC n SC a a : i=1...n X i B Information
MehrÜbung Datenbanken in der Praxis. Datenmodifikation mit SQL
Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern
MehrKapitel 7: Referentielle Integrität
Kapitel 7: Referentielle Integrität Im Allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen (IB) erfüllen. Integritätsbedingungen
MehrGrundlagen 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
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
MehrPHP- Umgang mit Datenbanken (1)
PHP- Umgang mit Datenbanken (1) Weitere Funktionen zum Umgang mit Datenbanken (Erzeugen, Löschen) und Tabellen (Erzeugen, Löschen) Zum Beispiel für das Erzeugen einer neuen Datenbank $dbname= blumendb
MehrDatenbanken 1. Sommersemester Übung 1
Datenbanken 1 Sommersemester 2017 Übung 1 Übersicht Entwurf Anforderungsanalyse -> Dokumentation der Anford. Konzeptuelles Modell -> ER-Diagramm Logisches Modell -> Relationales Datenmodell Physisches
MehrTU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.
TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Übung zur Vorlesung Einführung in die Informatik 2 für Ingenieure (MSE) Alexander van Renen (renen@in.tum.de)
MehrObjektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern
Thema Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern Referent: Frank Sanders Seite 1 Inhalt Der Vortrag hat einen sehr kurzen Einleitungsteil der sich mit Objektorientierung
MehrDatenbanken SQL. Insert, Update, Delete, Drop. Krebs
Datenbanken SQL Insert, Update, Delete, Drop Krebs Inhalt 1. Datensätze einfügen: INSERT 2. Datensätze verändern: UPDATE 3. Datensätze löschen: DROP vs. DELETE Beispiel Datenbank Schule Klasse P_Klasse
MehrPraktische SQL-Befehle
Praktische SQL-Befehle Datenbanksysteme I WiSe 2018/2019 Todor Ivanov DB1 WS2018 1 Praktische SQL-Befehle Nested Selects Inserts Updates Views Triggers Constraints Functions Voraussetzung: Laptop + MySQL/
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
MehrUniversität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7
Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 11. Dez. 2006 M. Endres, A. Huhn, T. Preisinger Lösungsblatt 7 Aufgabe 2 + 3: Datenbanksysteme I import java.sql.*; import oracle.jdbc.driver.*;
MehrEine neue Datenbank erstellen
Eine neue Datenbank erstellen Eine neue Datenbank erstellen Eine Tabelle in der Entwurfsansicht erstellen Eine Tabelle in der Entwurfsansicht erstellen Eine Tabelle in der Entwurfsansicht erstellen Das
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
Mehr