PostGre SQL-Anweisungen in pgadmin



Ähnliche Dokumente
Arbeiten mit einem lokalen PostgreSQL-Server

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

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

SQL structured query language

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

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

Informatik 12 Datenbanken SQL-Einführung

SQL-Befehlsliste. Vereinbarung über die Schreibweise

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

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

IV. Datenbankmanagement

Microsoft Access 2010 Auswahlabfragen erstellen. Leibniz Universität IT Services Anja Aue

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

Labor 3 - Datenbank mit MySQL

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

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Übersicht der wichtigsten MySQL-Befehle

Sructred Query Language

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

S(tructured)Q(uery)L(anguage)

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

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Datenbanken Microsoft Access 2010

Relationale Datenbanken in der Praxis

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Microsoft Access 2010 SQL nutzen

Datenbank und Tabelle mit SQL erstellen

Microsoft Access 2010 SQL nutzen

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

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

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

Access Grundkurs. M. Eng. Robert Maaßen

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Datenbanken Kapitel 2

7. Übung - Datenbanken

PostgreSQL unter Debian Linux

105.3 SQL-Datenverwaltung

ipin CSV-Datenimport (Mac OS X)

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

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

MySQL: Einfaches Rechnen.

Datenbanken. 5 Tabellen. Karl Meier karl.meier@kasec.ch Inhalt. Domänen verwenden Tabellen anzeigen, ändern, löschen Übung

Bibliografische Informationen digitalisiert durch

-Inhalte an cobra übergeben

Einführung in Datenbanksysteme. H. Wünsch

SQL und MySQL. Kristian Köhntopp

Microsoft Access 2010 Daten importieren

1. Erreichen Sie, dass im Feld KdNr (Kunden-Nummer) nur 4-stellige Zahlen eingetragen

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Beispiel 1: Filmdatenbank

SQL: statische Integrität

Abfragen: Grundbausteine

SQL (Structured Query Language) Schemata Datentypen

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Excel Pivot-Tabellen 2010 effektiv

Ein Ausflug zu ACCESS

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

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

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Access Verbrecherdatenbank Teil 3

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Oracle: Abstrakte Datentypen:

Microsoft Access 2010 SQL nutzen

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

Microsoft Access 2010 Bilder

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Referenzielle Integrität SQL

Kurzanleitung für Umsteiger von DataEase.

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

CVR Seniorentreff vom 04. und Serienbriefe/Seriendruck. Serienbriefe / Seriendruck

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

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

SQL - Übungen Bearbeitung der Datenbank Personal (1)

U 8 SQL. = Structured Query Language (heute auch Standard Query Language) ALLGEMEIN:

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Michaela Weiss 01. April Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

Leseprobe: SQL mit MySQL - Band 4 Kompendium mit Online-Übungs-DB. Kompendium zur schnellen Kurzinformation der Datenbanksprache SQL/MySQL 5.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Views in SQL. 2 Anlegen und Verwenden von Views 2

Erstellen von Mailboxen

MS Excel 2010 Kompakt

Unterabfragen (Subqueries)

Access 2000 und MS SQL Server im Teamwork

Alerts für Microsoft CRM 4.0

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

Aufgaben zur fachwissenschaftlichen Prüfung Modul 3 Daten erfassen, ordnen, verarbeiten und austauschen: Schwerpunkt Datenbanken

Auswahlabfragen mit ACCESS

Arbeiten mit ACCESS 2013

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue

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

Im Original veränderbare Word-Dateien

Transkript:

PostGre SQL-Anweisungen in pgadmin

S(tructured)Q(uery)L(anguage)... ist eine eigenständige Sprache für relationale Datenbanken. bietet Befehle zum Bearbeiten von Daten und Erstellen von Objekten in relationalen Datenbanken. beschreibt eine Aktion wie zum Beispiel Erstelle eine Tabelle oder Alle Kunden aus Hannover. ist standardisiert. wird von allen gängigen Datenbanksystemen mehr oder weniger unterstützt. PostGre - SQL, 21.11.13 Seite 2

Manual PostgreSQL-Manual (englisch): http://www.postgresql.org/docs/manuals/ PostgreSQL-Manual (deutsch): http://doc.postgres.de/ PostGre - SQL, 21.11.13 Seite 3

Beispieldatenbanken http://wiki.postgresql.org/wiki/sample_databases http://www.postgresqltutorial.com/postgresql-sample-database PostGre - SQL, 21.11.13 Seite 4

Weitere Informationen http://www.schulserver.hessen.de/darmstadt/lichtenberg/ SQLTutorial/ http://sql.lernenhoch2.de/lernen/ http://ssl.gymnasium-zwettl.ac.at/postgresql/html/tutorial.html http://sqlzoo.net/de/ PostGre - SQL, 21.11.13 Seite 5

besteht aus... DDL (Data Definition Language). Datenbanken, Tabellen etc. anlegen. Datenbankschema festlegen. DML (Data Manipulation Language). Daten in einer Datenbank lesen, ändern, einfügen oder löschen. DCL (Data Controlling Language). Administration von Datenbanken. PostGre - SQL, 21.11.13 Seite 6

Menübefehle Neue Datenbank Bearbeiten Neues Objekt Neue Datenbank -- Database: "dbsprodukt" -- DROP DATABASE "dbsprodukt"; CREATE DATABASE "dbsprodukt" WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'German_Germany.1252' LC_CTYPE = 'German_Germany.1252' CONNECTION LIMIT = -1; PostGre - SQL, 21.11.13 Seite 7

SQL-Anweisungen... Beginn mit einem SQL-Befehl. Semikolon als Ende-Zeichen einer Anweisung. Leerzeichen, Tabulatoren, neue Zeilen erhöhen die Lesbarkeit von Anweisungen. Groß- und Kleinschreibung bei Befehlen und Bezeichnern wird nicht beachtet. PostGre - SQL, 21.11.13 Seite 8

SQL-Feld in pgadmin Anzeige von SQL-Befehlen zu dem gewählten Objekt. Schreibschutz der Anweisungen. Kommentare werden standardmäßig grün angezeigt. SQL- Schlüsselwörter werden blau angezeigt. PostGre - SQL, 21.11.13 Seite 9

Kommentare in SQL-Anweisungen -- Database: "dbsprodukt" -- DROP DATABASE "dbsprodukt"; Der Kommentar beginnt mit zwei Bindestrichen und endet automatisch mit der Zeile. Aufgrund der besseren Lesbarkeit folgt dem Bindestrichpaar ein Leerzeichen. Beliebige Positionierung. PostGre - SQL, 21.11.13 Seite 10

SQL-Anweisung Neue Datenbank -- CREATE DATABASE [Datenbankname] CREATE DATABASE "dbsprodukt" WITH OWNER = postgres -- Eigentümer der Datenbank ENCODING = 'UTF8' -- Zeichencodierung TABLESPACE = pg_default -- Speicherort der Datenbank -- Betrifft die Zeichen LC_COLLATE = 'German_Germany.1252' -- Sortierung LC_CTYPE = 'German_Germany.1252' -- Kategorisierung CONNECTION LIMIT = -1; -- -1 beliebig viele Zugriffe PostGre - SQL, 21.11.13 Seite 11

Aufbau einer Datenbank Datenbank Tabelle A Tabelle B Tabelle Zeile 1 Zeile 2 Zeile n Tabelle... PostGre - SQL, 21.11.13 Seite 12

SQL-Anweisung eingeben Werkzeuge Abfragewerkzeug. Oder: Beliebige SQL-Abfragen ausführen in der Symbolleiste. PostGre - SQL, 21.11.13 Seite 13

Query PostGre - SQL, 21.11.13 Seite 14

SQL-Editor Eingabe von SQL-Anweisungen. Ausführen von SQL-Anweisungen (Abfrage Ausführen; F5). Das Ergebnis der SQL-Anweisung wird im Ausgabefeld; Registerkarte Datenanzeige angezeigt. Speichern von SQL-Anweisungen (Datei Speichern unter). PostGre - SQL, 21.11.13 Seite 15

Tabelle anlegen -- CREATE TABLE [Tabllenname] CREATE TABLE tblprodukt ( -- Felder in der Tabelle -- Feldname Datentyp, produktname varchar(100), produktnr int, produktpreis numeric, aufgenommenam timestamp ); PostGre - SQL, 21.11.13 Seite 16

SQL-Befehle... beschreiben eine Aktion. In diesem Beispiel CREATE TABLE erstellt eine neue Tabelle. werden häufig groß geschrieben. beginnen immer mit einem Buchstaben. PostGre - SQL, 21.11.13 Seite 17

Auflistungen Die Listenelemente werden durch ein Kommata getrennt. Feldnamen werden dem Befehl CREATE TABLE als Liste hinzugefügt. Werte, die in einer Tabelle gespeichert werden, werden als Liste angegeben. Attribute eines Objekts werden beim Anlegen als Liste übergeben. PostGre - SQL, 21.11.13 Seite 18

Anweisung ausführen Abfrage Ausführen oder F5 im SQL-Editor. Im Ausgabefeld wird das Ergebnis der Ausführung angezeigt. Die Registerkarte Meldungen zeigt eventuelle Fehler oder die korrekte Ausführung an. Ausgewählte Daten werden auf der Registerkarte Datenanzeige angezeigt. Bei der Erstellung von Objekten, muss anschließend das Eltern-Objekt aufgefrischt werden (rechter Mausklick; Auffrischen). PostGre - SQL, 21.11.13 Seite 19

Anweisungen speichern und erneut ausführen Datei Speichern unter im SQL-Editor. Datei öffnen zeigt eine gespeicherte Anweisung im SQL- Editor an. F5 führt die Anweisung aus. PostGre - SQL, 21.11.13 Seite 20

Bezeichner in SQL-Anweisungen sind Namen, die vom Benutzer für Tabellen, Datenfelder etc. definiert werden. in dem Beispiel sind tblprodukt, produktname etc. beginnen immer mit einem Buchstaben. können Buchstaben (A...Z, a...z), Zahlen (0...9) und den Unterstrich enthalten. sind maximal 63 Zeichen lang. PostGre - SQL, 21.11.13 Seite 21

Aufbau von Tabellen Tabelle Zeile 1 Zeile 2 Zeilen (Datensatz) Spalte 1 Spalte 2 Spalte n Zeile n PostGre - SQL, 21.11.13 Seite 22

Datensätze Die Anzahl der Datensätze ist beliebig. Die Datensätze werden unsortiert abgelegt. produktname produktnr produktpreis aufgenommenam Kaffee Arabica 1 5,99 20.11.2013 09:00 Tee Darjeeling 2 4,99 21.11.2013 10:23 Kaffee Kenia 3 7,99 21.11.2013 12:05 PostGre - SQL, 21.11.13 Seite 23

Spalten in einer Tabelle Identifizierung mit Hilfe eines eindeutigen Namens. Der Datentyp der Spalte beschreibt die Art des Inhaltes. Die Anzahl der Spalten und deren Reihenfolge ist fest. Die maximale Anzahl der Spalten liegt zwischen 250 und 1600. tblprodukt produktname : String produktnr : Integer produktpreis : Currency aufgenommenam : Date / Time PostGre - SQL, 21.11.13 Seite 24

Feldnamen... sind eine eindeutige Bezeichnung für eine Spalte einer Tabelle. identifizieren eindeutig ein Datenfeld in einer Tabelle. entsprechen häufig der Bezeichnung des Attributes des beschriebenen Objekts in der realen Welt. sind frei wählbar. PostGre - SQL, 21.11.13 Seite 25

Der Datentyp eines Feldes... beschreibt die Art der Daten in einem Feld. legt Regeln für die Verwendung der Daten fest. legt den Speicherbedarf der Daten fest. ergibt sich häufig aus der Funktion und / oder Nutzung des, in dem Feld zu speichernden Wert. in PostgreSQL http://www.postgresql.org/docs/9.3/static/datatype.html. PostGre - SQL, 21.11.13 Seite 26

Zeichenketten / Text Alle Zeichen der Tastatur in Abhängigkeit des Eingabegebietsschema. Speicherung von Telefonnummern, Postleitzahlen etc. Standardlänge 1. PostGre - SQL, 21.11.13 Seite 27

Möglichkeiten Datentyp char(n) varchar(n) Beschreibung Zeichenkette von N Zeichen In Abhängigkeit der Länge der Zeichenkette N = maximale Zeichenkettenlänge PostGre - SQL, 21.11.13 Seite 28

Zahlenwerte Mathematische Berechnungen Ganzzahl. Nachkommastellen werden automatisch entfernt. Dezimalzahlen sind Nährungswerte. Das Dezimaltrennzeichen ist von dem Eingabegebietsschema des Rechners abhängig. Implemtentierung nach dem IEEE Standard 754 für binäre Fließkommazahlen. PostGre - SQL, 21.11.13 Seite 29

Ganzzahlen Datentyp Zahlenraum smallint -32768 bis +32767 int -2147483648 bis +2147483647 bigint -9223372036854775808 bis +9223372036854775807 PostGre - SQL, 21.11.13 Seite 30

Dezimalzahlen Datentyp double precision real Beschreibung 15 Stellen nach dem Komma genau 6 Stellen nach dem Komma genau numeric(precision, scale) 131072 Stellen vor dem Komma und 16383 Stellen nach dem Komma precision = Genauigkeit scale = Anzahl der Nachkommastellen Standardwert von 0 money -92233720368547758,08 bis +92233720368547758,07 PostGre - SQL, 21.11.13 Seite 31

Auto-Inkrement Datentyp Beschreibung smallserial 1 bis 32767 serial 1 bis 2147483647 bigserial 1 bis 9223372036854775807 PostGre - SQL, 21.11.13 Seite 32

Datumswerte und Uhrzeiten Datumswerte basieren auf den gregorianischen Kalender. Abhängig vom genutzten SQL-Dialekt und das gewählte Eingabegebietsschema. PostGre - SQL, 21.11.13 Seite 33

Möglichkeiten Datentyp date time timestamp Beschreibung Jahr, Monat, Tag. Stunde, Minute, Sekunde. Zeitstempel. Datum und Uhrzeit. PostGre - SQL, 21.11.13 Seite 34

Standardwerte CREATE TABLE tblprodukt ( produktname varchar(100), produktnr int, produktpreis numeric DEFAULT 2.00, aufgenommenam timestamp ); PostGre - SQL, 21.11.13 Seite 35

Konstante Werte in SQL Strings / Zeichenketten: 'Dies ist eine Zeichenkette'. Integer / Ganzzahlen: int8 '400' oder 400. Dezimalzahlen: float4 '2.00' oder 2.0. Als Dezimaltrennzeichen wird der Punkt genutzt. Datums- und Zeitwerte: '2013-11-22'. Datumswerte werden in dem Format yyyy-mm-dd und Zeitwerte in dem Format hh:mm:ss angegeben PostGre - SQL, 21.11.13 Seite 36

Aktueller Zeitstempel als Standardwert CREATE TABLE tblprodukt ( produktname varchar(100), produktnr int, produktpreis numeric, aufgenommenam timestamp DEFAULT CURRENT_TIMESTAMP ); PostGre - SQL, 21.11.13 Seite 37

NULL CREATE TABLE tblprodukt ( produktname varchar(100) NOT NULL, produktnr int, produktpreis numeric, aufgenommenam timestamp ); Das Datenfeld darf keinen undefinierten Inhalt enthalten. Das Datenfeld muss gefüllt werden. PostGre - SQL, 21.11.13 Seite 38

Tabelle löschen DROP TABLE tblprodukt; Die Tabelle wird ohne Nachfrage gelöscht! PostGre - SQL, 21.11.13 Seite 39

Primärschlüssel Identifizierung eines Datensatzes. Setzen von künstlichen Attributen. Das Produkt existiert auch ohne Produktnummer. Verknüpfung von Tabellen. PostGre - SQL, 21.11.13 Seite 40

in SQL CREATE TABLE tblprodukt ( produktname varchar(100) NOT NULL, produktnr int UNIQUE NOT NULL, aufgenommenam timestamp ); CREATE TABLE tblprodukt ( produktname varchar(100) NOT NULL, produktnr int PRIMARY KEY, aufgenommenam timestamp ); PostGre - SQL, 21.11.13 Seite 41

Zusammengesetzte Primärschlüssel CREATE TABLE tblprodukt ( produktname varchar(100) NOT NULL, produktnr int, aufgenommenam timestamp, PRIMARY KEY (produktnr, aufgenommenam) ); PostGre - SQL, 21.11.13 Seite 42

Fremdschlüssel Der Wert identifiziert einen Datensatz in einer Tabelle. Der Fremdschlüssel und der dazugehörige Primärschlüssel haben den gleichen Datentyp. PostGre - SQL, 21.11.13 Seite 43

in SQL CREATE TABLE tblprodukt ( produktname varchar(100) NOT NULL, produktnr int PRIMARY KEY, aufgenommenam timestamp ); CREATE TABLE tbllager ( IDLager produktnr bestandaenderung ); int PRIMARY KEY int REFERENCES tblprodukt(produktnr), int PostGre - SQL, 21.11.13 Seite 44

Weitere Möglichkeit CREATE TABLE tbllager ( IDLager serial, FIDProduktNr int, Entnahme int PRIMARY KEY (IDLager), FOREIGN KEY (FIDProduktNr) REFERENECES tblprodukt (produktnr) ); PostGre - SQL, 21.11.13 Seite 45

Daten einfügen INSERT INTO tblprodukt VALUES ( 'Kaffee Arabica', 1, 5.99, '2013-11-20 09:00' ); PostGre - SQL, 21.11.13 Seite 46

Daten aus einer Textdatei einfügen COPY tblprodukt FROM '/pfad/datei.txt'; Der Pfad wird aus Sicht des Servers angegeben. Der Server muss die Rechte zum Lesen der Datei besitzen. Andernfalls wird ein Fehler angezeigt. Es können Textdateien oder Dateien im CVS-Format kopiert werden. Pro Zeile in der Textdatei wird ein Datensatz in der Tabelle angelegt. PostGre - SQL, 21.11.13 Seite 47

Daten aus einer Textdatei einfügen COPY tblprodukt FROM '/pfad/datei.txt'; Der Pfad wird aus Sicht des Servers angegeben. Der Server muss die Rechte zum Lesen der Datei besitzen. Andernfalls wird ein Fehler angezeigt. Es können Textdateien oder Dateien im CVS-Format kopiert werden. Pro Zeile in der Textdatei wird ein Datensatz in der Tabelle angelegt. PostGre - SQL, 21.11.13 Seite 48

Beispiel: Textdatei Kaffee Arabica 1 5.99 2013-11-20 09:00 Tee Darjeeling 2 4.99 2013-11-21 10:23 Kaffee Kenia 3 7.99 2013-11-21 12:05 COPY tblprodukt FROM 'D:\temp\produkte.txt' Trennung durch Tabulatoren. Als Dezimaltrennzeichen wird der Punkt genutzt. Datums- und Zeitwerte sollten wie in SQL geschrieben werden. PostGre - SQL, 21.11.13 Seite 49

Beispiel: CSV-Datei Kaffee Arabica,1,5.99,2013-11-20 09:00 Tee \"Darjeeling\",2,4.99,2013-11-21 10:23 Kaffee Kenia,3,7.99,2013-11-21 12:05 COPY tblprodukt (produktname, produktnr, produktpreis, aufgenommenam) FROM 'D:\temp\produkte.csv' WITH DELIMITER ','; PostGre - SQL, 21.11.13 Seite 50

Beispiel: CSV-Datei COPY tblprodukt (produktname, produktnr, produktpreis, aufgenommenam) FROM 'D:\temp\produkte.csv' WITH DELIMITER ','; Dem Tabellennamen folgen in Klammern die Felder, die von der Datei gefüllt werden. Alle anderen Felder nutzen den vorgegebenen Standardwert oder sind leer. Das Trennzeichen zwischen den Daten wird angegeben (WITH DELIMITER). PostGre - SQL, 21.11.13 Seite 51

Escape-Sequenzen... beginnen immer mit einem Backslash \. sind nicht druckbare Zeichen eines Zeichensatzes. maskieren Zeichen, die in SQL-Anweisungen genutzt werden. Sequenz Erläuterung \b Backspace. Einen Schritt zurück. \f Formfeed. Seitenvorschub \n New Line. Neue Zeile. \r Carriage Return. Wagenrücklauf. \t Tabulator \\ Backslash \' Apostroph \" Anführungszeichen PostGre - SQL, 21.11.13 Seite 52

Auswahlabfragen... sortieren Informationen aus ein oder mehreren Tabellen. filtern Informationen in Abhängigkeit von bestimmten Kriterien. stellen Informationen neu zusammen. berechnen Daten aus vorhandenen Informationen. liefern eine leere Tabelle zurück, wenn kein Datensatz die Bedingung erfüllt. PostGre - SQL, 21.11.13 Seite 53

in SQL SELECT * FROM Tabelle WHERE Kriterium ORDER BY Tabelle.Feld; SELECT Tabelle.Feld, Tabelle.Feld, Tabelle.Feld FROM Tabelle WHERE Kriterium ORDER BY Tabelle.Feld; PostGre - SQL, 21.11.13 Seite 54

Alle Felder aus einer Tabelle SELECT * FROM film; Wähle (SELECT) alle Felder (*) aus (FROM)... Das Sternchen ist ein Platzhalter für alle Felder einer Tabelle. Dem Schlüsselwort FROM folgt der Name der Tabelle. PostGre - SQL, 21.11.13 Seite 55

Felder aus einer Tabelle SELECT title, description, length FROM film; Dem Befehl SELECT folgt eine Auflistung der gewünschten Felder einer Tabelle. Es muss mindestens ein Feld oder das Sternchen angegeben werden. Die einzelnen Felder werden durch ein Kommata getrennt. Das erste Feld in der Auflistung wird auch als erste Spalte angezeigt. PostGre - SQL, 21.11.13 Seite 56

Felder aus einer Tabelle SELECT film.title, film.description, film.length FROM film; Der Punkt verbindet ein Tabellennamen mit einem darin definierten Feldnamen. Die Angabe des Tabellennamens wird nicht benötigt, wenn der Feldname eindeutig einer Tabelle zugeordnet werden kann. PostGre - SQL, 21.11.13 Seite 57

Daten sortieren SELECT last_name, first_name, email FROM customer ORDER BY last_name, first_name; Dem Befehl ORDER BY folgt eine Liste von Feldern nach denen die Daten sortiert werden. Standardmäßig werden die Daten aufsteigend sortiert (ASC). In diesem Beispiel werden die Daten zuerst nach dem Nachnamen aufsteigend sortiert und anschließend nach dem Vornamen. PostGre - SQL, 21.11.13 Seite 58

Daten aufsteigend sortieren SELECT film.title, film.description, film.length FROM film ORDER BY film.length ASC; PostGre - SQL, 21.11.13 Seite 59

Daten absteigend sortieren SELECT film.title, film.description, film.length FROM film ORDER BY film.length DESC; PostGre - SQL, 21.11.13 Seite 60

Doppelte Datensätze ausblenden SELECT DISTINCT release_year FROM film ORDER BY release_year DESC; Jahreszahlen werden nur einmal angezeigt, egal wie oft die Daten in der Tabelle angezeigt werden. Aus welchen Jahren liegen Filme vor? PostGre - SQL, 21.11.13 Seite 61

Daten filtern SELECT first_name, last_name FROM staff WHERE (active = TRUE) ORDER BY last_name; Dem Befehl WHERE folgen eine oder mehrere Bedingungen. Die Datensätze werden mit Hilfe der Bedingung gefiltert. PostGre - SQL, 21.11.13 Seite 62

Bedingungen Überprüfung von Daten in einem Feld. Ausdrücke, die einen boolschen (True, False) Wert zurückliefern. Mit Hilfe von Vergleichsoperatoren wird ein Wert überprüft. PostGre - SQL, 21.11.13 Seite 63

Vergleichsoperatoren ist... Operator gleich = ungleich <> kleiner < kleiner gleich <= größer > größer gleich >= PostGre - SQL, 21.11.13 Seite 64

Überprüfung von Ganzzahlen SELECT title, length FROM film WHERE (length > 60) ORDER BY length; PostGre - SQL, 21.11.13 Seite 65

Überprüfung von Dezimalzahlen SELECT customer_id, amount FROM payment WHERE (amount > 5.5) ORDER BY customer_id; Als Dezimaltrennzeichen wird ein Punkt genutzt. Es werden Nährungswerte überprüft! PostGre - SQL, 21.11.13 Seite 66

Liste von Werten SELECT title, rental_rate FROM film WHERE (rental_rate IN (0.99, 2.99)) ORDER BY title; Einer Werte in der Liste muss zutreffen. PostGre - SQL, 21.11.13 Seite 67

Überprüfung von Datums- und Zeitwerten SELECT * FROM payment WHERE (payment_date = '2007-03-01') ORDER BY customer_id; Datums- und Zeitwerte werden in Apostrophs eingeschlossen. Konstante Datumswerte: YYYY-MM-DD. PostGre - SQL, 21.11.13 Seite 68

Zwischen und... SELECT * FROM payment WHERE (payment_date BETWEEN '2007-03-01' AND '2007-03-31') ORDER BY customer_id; Zwischen [min] und [max]. Zwischen [Beginn Datum / Uhrzeit] und [Ende Datum / Uhrzeit]. PostGre - SQL, 21.11.13 Seite 69

Überprüfung von boolschen Werten SELECT first_name, last_name FROM staff WHERE (active IS TRUE) ORDER BY last_name; IS TRUE. Ist das Feld gesetzt / an? IS FALSE. Ist das Feld nicht gesetzt / aus? PostGre - SQL, 21.11.13 Seite 70

Überprüfung von Text SELECT last_name, first_name FROM customer WHERE (last_name = 'May') ORDER BY last_name; Konstante Zeichenketten werden in Apostrophs eingeschlossen. PostGre - SQL, 21.11.13 Seite 71

Arbeiten mit Suchmustern SELECT last_name, first_name, email FROM customer WHERE (email LIKE '%.%@%') ORDER BY last_name; Platzhalter %: Beliebige Anzahl von Zeichen. Platzhalter _: Ein beliebiges Zeichen. Die Platzhalter können an beliebiger Position in beliebiger Anzahl in einem Suchmuster vorkommen. Beachtung von Groß- und Kleinschreibung. PostGre - SQL, 21.11.13 Seite 72

Suche nach leeren Zeichenfolgen SELECT * FROM address WHERE (postal_code LIKE '') ORDER BY city_id; Das Feld ist leer, aber hat einen definierten Wert. PostGre - SQL, 21.11.13 Seite 73

Null-Werte abfragen SELECT * FROM address WHERE (postal_code IS NULL) ORDER BY city_id; Das Feld hat einen undefinierten Wert. PostGre - SQL, 21.11.13 Seite 74

Not-Operator SELECT * FROM address WHERE (postal_code NOT LIKE '') ORDER BY city_id; SELECT * FROM address WHERE (postal_code IS NOT NULL) ORDER BY city_id; a True False Null Not a False True Null PostGre - SQL, 21.11.13 Seite 75

AND-Operator SELECT amount, customer_id FROM payment WHERE ((amount > 3.0) AND (amount < 4.0)) ORDER BY customer_id; a b a AND b True True True True False False False True False False False False True Null Null False Null False PostGre - SQL, 21.11.13 Seite 76

Or-Operator SELECT amount, customer_id FROM payment WHERE ((customer_id = 5) OR (customer_id = 6)) ORDER BY customer_id; a b a Or b True True True True False True False True True False False False True Null True False Null Null PostGre - SQL, 21.11.13 Seite 77

Daten löschen DELETE FROM city WHERE country_id = 20; Daten können nur kaskadierend gelöscht werden. Zuerst werden die Daten in den Tabellen gelöscht, in dem der Primärschlüssel als Fremdschlüssel genutzt wird. Anschließend können Datensätze mit dem Primärschlüssel gelöscht werden. PostGre - SQL, 21.11.13 Seite 78

Daten ändern UPDATE [Tabelle] SET [Feldname] = [neuer Wert], [Feldname] = [neuer Wert] WHERE [Bedingung]; UPDATE customer SET active = 0, activebool = FALSE WHERE store_id = 2; UPDATE payment SET amount = amount + 1 WHERE amount < 1; PostGre - SQL, 21.11.13 Seite 79

Mathematische Operatoren Operator Beschreibung Beispiel + Addition 2 + 3 = 5 - Subtraktion 2 3 = -1 * Multiplikation 2 * 3 = 6 / Division 5 / 2 = 2.5 % Modula 5 % 2 = 1 ^ Expontential 2^3 = 8 @ Absolutwert @-5 = 5 PostGre - SQL, 21.11.13 Seite 80

Relationen... beschreiben Beziehungen zwischen Tabellen. werden mit Hilfe von Primärschlüssel und Fremdschlüssel zwischen den Tabellen gebildet. beschreiben Hierarchien zwischen Tabellen. PostGre - SQL, 21.11.13 Seite 81

Beispiel Mastertabelle IDKey Feldname_A Feldname_B Detailtabelle IDKey FIDkey Feldname_A Produkte IDProduktNr Produktname Produktbeschreibung Lager IDBestandAenderung FID_ProduktNr Bestandaenderung PostGre - SQL, 21.11.13 Seite 82

Master- und Detailtabelle Eine Mastertabelle beschreibt ein Objekt allgemein. Die Mastertabelle befindet sich in der Hierarchie oberhalb einer anderen Tabelle. Eine Detailtabelle beschreibt ein Detail-Aspekt eines Objekts. Detailtabellen besitzen einen Fremdschlüssel aus einer anderen Tabelle. Eine Mastertabelle kann eine Detailtabelle für ein bestimmtes Objekt sein. PostGre - SQL, 21.11.13 Seite 83

1:1-Relation Mitarbeiter ID_MitarbeiterNr Vorname Nachname EMail Personal ID_Person FID_MitarbeiterNr Gehalt Geburtsdatum Jedem Datensatz aus der Mastertabelle kann exakt ein Datensatz in der Detailtabelle zugeordnet werden. Nutzung bei Tabellen mit sehr vielen Spalten. Informationen werden in Abhängigkeit ihrer Nutzung gespeichert. PostGre - SQL, 21.11.13 Seite 84

1:n-Relation Produkte IDProduktNr Produktname Produktbeschreibung Lager IDBestandAenderung FID_ProduktNr Bestandaenderung Jedem Datensatz aus der Mastertabelle können beliebig viele Datensätze aus der Detailtabelle zugeordnet werden. Häufigst vorkommende Relation. PostGre - SQL, 21.11.13 Seite 85

m:n-relation Kurse ID_KursNr Kursname Kursbeschreibung Kurse_Teilnehmer FID_KursNr FID_Teilnehmer ID_Nr Teilnehmer ID_TeilnehmerNr Anrede Nachname Beliebig viele Datensätze können mit Datensätzen aus einer anderen Tabelle verknüpft werden. Die Relation wird in einer Pseudo-Tabelle abgebildet. PostGre - SQL, 21.11.13 Seite 86

Inner-Join-Verknüpfung SELECT customer.last_name, customer.first_name, payment.amount FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id; Aktion: Kunden und deren Bezahlung. PostGre - SQL, 21.11.13 Seite 87

Beispiel ID Erdteil ID Erdteil Land 1 Europa 1 1 Belgien 2 Asien 3 Afrika 4 Amerika Erdteil Europa Europa Land Belgien Polen 2 1 Polen 3 3 Algier 4 2 Indien Afrika Algier Asien Indien PostGre - SQL, 21.11.13 Seite 88

Left-Join-Verknüpfung SELECT customer.last_name, customer.first_name, payment.amount FROM customer LEFT JOIN payment ON customer.customer_id = payment.customer_id; Aktion: Alle Kunden und falls vorhanden, deren Bezahlung. PostGre - SQL, 21.11.13 Seite 89

Beispiel ID Erdteil ID Erdteil Land 1 Europa 1 1 Belgien 2 Asien 3 Afrika 4 Amerika Erdteil Europa Europa Land Belgien Polen 2 1 Polen 3 3 Algier 4 2 Indien Afrika Algier Asien Indien Amerika PostGre - SQL, 21.11.13 Seite 90

Right-Join-Verknüpfung SELECT language.name, film.title FROM film RIGHT JOIN language ON film.language_id = language.language_id; Aktion: Alle Sprachen und falls vorhanden, die dazugehörigen Filme. PostGre - SQL, 21.11.13 Seite 91

Beispiel ID Erdteil ID Erdteil Land 1 Europa 1 1 Belgien 2 Asien 3 Afrika 4 Amerika Erdteil Europa Europa Land Belgien Polen 2 1 Polen 3 3 Algier 4 2 Indien Afrika Algier Asien Indien PostGre - SQL, 21.11.13 Seite 92

und sortieren SELECT language.name, film.title FROM film RIGHT JOIN language ON film.language_id = language.language_id ORDER BY language.name, film.title; PostGre - SQL, 21.11.13 Seite 93

Daten filtern SELECT language.name, film.title, film.length FROM film RIGHT JOIN language ON film.language_id = language.language_id WHERE film.length > 100 ORDER BY language.name, film.length; PostGre - SQL, 21.11.13 Seite 94

1 : n : 1 -Relation SELECT category.name, film.title FROM film INNER JOIN film_category ON film.film_id = film_category.film_id INNER JOIN category ON film_category.category_id = category.category_id; PostGre - SQL, 21.11.13 Seite 95

Aggregatfunktionen... fassen das Ergebnis einer SQL-Anweisung zusammen. gruppieren alle Datenfelder in einer Abfrage. komprimieren Datensätze auf die angegebenen Datenfelder. PostGre - SQL, 21.11.13 Seite 96

in SQL Aggregatfunktion Sum([Datenfeld]) Avg([Datenfeld]) Min([Datenfeld]) Max([Datenfeld]) Count([Datenfeld]) Count(*) Erläuterung Summe einer Spalte. Durchschnitt einer Spalte. Kleinster Wert einer Spalte. Größter Wert einer Spalte. Anzahl der Datensätze. Leere Datenfelder werden nicht berücksichtigt. Alle Datensätze zählen. Undefinierte Datenfelder werden nicht berücksichtigt. PostGre - SQL, 21.11.13 Seite 97

Anzahl der Datensätze SELECT COUNT(*) AS customerpaycount FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id; Die Anzahl der Zeilen wird ausgegeben. Mit Hilfe von AS wird dem berechneten Feld ein neuer Name zugewiesen. PostGre - SQL, 21.11.13 Seite 98

Grafische Darstellung Kunde A Kunde B Kunde C 4 Kunde D PostGre - SQL, 21.11.13 Seite 99

Summe von Feld x SELECT SUM(amount) AS allpayment FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id; PostGre - SQL, 21.11.13 Seite 100

Grafische Darstellung 6,20 7,80 6,20 6,80 4,20 7,80 1 1 2 2 1 2 59,80 PostGre - SQL, 21.11.13 Seite 101

Felder gruppieren SELECT customer.last_name, SUM(amount) AS PaymentForCustomer FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id GROUP BY customer.last_name ORDER BY customer.last_name; PostGre - SQL, 21.11.13 Seite 102

Hinweis Für jedes Feld, welches in der SQL-Anweisung angegeben ist und nicht mit einer Aggregatfunktion wie Sum(), Count(), usw. berechnet wird, muss mit der Group-By-Anweisung zusammengefasst werden. Null-Werte werden in der Group-By-Anweisung zusammengefasst. PostGre - SQL, 21.11.13 Seite 103

Grafische Darstellung Bestellung 1 6,20 1 6,20 Bestellung 2 Bestellung 2 7,80 6,20 1 2 20,20 Bestellung 3 Bestellung 3 6,80 4,20 2 1 17,80 Bestellung 4 7,80 2 15,60 PostGre - SQL, 21.11.13 Seite 104

Daten filtern SELECT customer.last_name, SUM(amount) AS PaymentForCustomer FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id WHERE customer.last_name LIKE 'A%' GROUP BY customer.last_name ORDER BY customer.last_name; PostGre - SQL, 21.11.13 Seite 105

Having-Klausel SELECT customer.last_name, SUM(amount) AS PaymentForCustomer FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id GROUP BY customer.last_name HAVING SUM(amount) > 100 ORDER BY customer.last_name; PostGre - SQL, 21.11.13 Seite 106

Hinweise Der Befehl Where bezieht sich auf Felder, die nicht mit Hilfe einer Aggregatfunktion zusammengefasst werden. Die Where- Klausel filtert einzelne Datensätze. Der Befehl Having bezieht sich auf Felder, deren Felder mit Hilfe von Aggregatfunktionen berechnet wurden. Die Having- Klausel filtert Gruppen von Datensätze. PostGre - SQL, 21.11.13 Seite 107

Kombination SELECT customer.last_name, SUM(amount) AS PaymentForCustomer FROM customer INNER JOIN payment ON customer.customer_id = payment.customer_id WHERE customer.last_name LIKE 'A%' GROUP BY customer.last_name HAVING SUM(amount) > 100 ORDER BY customer.last_name; PostGre - SQL, 21.11.13 Seite 108