Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
db2
#db2
Inhaltsverzeichnis
Über 1
Kapitel 1: Erste Schritte mit db2 2
Bemerkungen 2
Examples 2
Installation 2
Kapitel 2: Analysieren Sie durch Kommas getrennte Werte in einer Spalte in mehrere Zeilen 3
Syntax 3
Examples 3
Rekursive Abfrage zum Analysieren von durch Kommas getrennten Werten 3
Kapitel 3: DashDB 6
Einführung 6
Bemerkungen 6
Weitere Informationen zu DashDB können Sie mit folgenden Quellen versuchen: 6
Allgemeine Information: 6
Weitere Dokumentation 6
Examples 6
Eine grundlegende SQL-Auswahlliste - Alle Zeilen einer Tabelle auflisten. 6
Kapitel 4: DB2-Einschränkungsinformationen 7
Einführung 7
Examples 7
Abrufen von Einschränkungen basierend auf dem Spaltennamen 7
Informationen zu Einschränkungen erhalten, die auf dem Namen der Einschränkung basieren 7
Kapitel 5: Einfügen in eine Tabelle durch Auswahl aus einer anderen Tabelle 9
Examples 9
Einfügen in eine Tabelle durch Auswahl aus einer anderen Tabelle 9
Kapitel 6: Hallo Welt; 10
Examples 10
Datenbank in DB2 erstellen 10
Verbindung zu einer Datenbank in DB2 herstellen 10
Erstellen Sie in DB2 eine Tabelle mit dem Namen "Mitarbeiter". 10
Eine Zeile in eine DB2-Tabelle einfügen 11
Beispielauswahlabfrage; 11
Kapitel 7: Kombinieren Sie mehrere Zeilen in einem durch Kommas getrennten Wert 13
Examples 13
Verwendung der Funktion listagg () 13
Kapitel 8: Tabelle mit oder ohne Daten kopieren 14
Einführung 14
Syntax 14
Examples 14
Tabelle mit Daten kopieren 14
Tabelle ohne Daten kopieren 14
Tabelle mit where-Klausel kopieren 14
Kapitel 9: Tisch ablegen 15
Einführung 15
Examples 15
Grundlegende Drop Table-Syntax 15
Kapitel 10: Wo nicht in mehreren Spalten 16
Examples 16
Mehrere Wertekombinationen herausfiltern 16
Credits 17
Über
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: db2
It is an unofficial and free db2 ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official db2.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to [email protected]
https://riptutorial.com/de/home 1
Kapitel 1: Erste Schritte mit db2
Bemerkungen
In diesem Abschnitt erhalten Sie einen Überblick darüber, was db2 ist und warum ein Entwickler es verwenden möchte.
Es sollte auch alle großen Themen in db2 erwähnen und auf die verwandten Themen verweisen. Da die Dokumentation für db2 neu ist, müssen Sie möglicherweise erste Versionen dieser verwandten Themen erstellen.
Examples
Installation
Es gibt verschiedene Arten von DB2. Eines davon ist LUW: Linux, UNIX und Windows.
DB2 LUW in Linux / UNIX kann mit oder ohne Root installiert werden. Bei der Installation mit root können Sie verschiedene Instanzen erstellen, die sie verschiedenen Benutzern zuordnen.
Wenn Sie DB2 LUW ohne Rootberechtigungen installieren, können Sie DB2 in Ihrem Basisverzeichnis installieren. Ihr Benutzer ist automatisch die einzige Instanz, die diese Installation haben kann. Die Instanz wird nicht automatisch jedes Mal gestartet, wenn der Computer zumindest gestartet wird, wenn Sie dies konfigurieren.
Nachdem Sie die Binärdateien heruntergeladen haben (von Fixpack Central, Passport Advantage oder von einer CD), können Sie die Dateien extrahieren. Es gibt ein Verzeichnis, das die von Ihnen verwendete DB2 Edition beschreibt (Expc, server_t usw.). In diesem Verzeichnis finden Sie db2setup und db2_install . Eine davon ist für die grafische Installation, die andere für die Textinstallation über eine Antwortdatei.
Erste Schritte mit db2 online lesen: https://riptutorial.com/de/db2/topic/5617/erste-schritte-mit-db2
https://riptutorial.com/de/home 2
Kapitel 2: Analysieren Sie durch Kommas getrennte Werte in einer Spalte in mehrere Zeilen
Syntax
WITH CTE_name ( Spaltenname [, ...]) AS (•SELECT spaltenname [, ...] FROM base_table•UNION ALL•SELECT Spaltenname [, ...] FROM CTE_name•WHERE < Rekursionsbeschränkungsbedingung >•)•SELECT Spaltenname [, ...] FROM CTE_name•
Examples
Rekursive Abfrage zum Analysieren von durch Kommas getrennten Werten
Obwohl das Speichern mehrerer Werte in einer einzelnen Spalte gegen Normalisierungsregeln verstößt, muss manchmal mit schlecht entworfenen Legacy-Tabellen gearbeitet werden. Eine rekursive Abfrage kann helfen, durch Kommas getrennte Werte in verschiedene Zeilen umzuwandeln.
Erstellen Sie eine schlecht entworfene Beispieltabelle und fügen Sie einige Daten ein:
create table projects (name varchar(10), members varchar(1000)); insert into projects (name, members) values ('Luna', '1, 3, 4'), ('Terra', '2,3,5');
Überprüfen Sie, was wir haben:
select * from projects;
wird ausgegeben
NAME MEMBERS ---------- ------------------------- Luna 1, 3, 4 Terra 2,3,5 2 record(s) selected.
Verwenden Sie einen allgemeinen Tabellenausdruck (CTE), um jeden durch Kommas getrennten Wert aus MEMBERS in seine eigene Zeile zu extrahieren:
https://riptutorial.com/de/home 3
WITH parse (lvl, name, member, tail) AS ( SELECT 1, name, CASE WHEN LOCATE(',',members) > 0 THEN TRIM(LEFT(members, LOCATE(',',members)-1)) ELSE TRIM(members) END, CASE WHEN LOCATE(',',members) > 0 THEN SUBSTR(members, LOCATE(',',members)+1) ELSE '' END FROM projects UNION ALL SELECT lvl + 1, name, CASE WHEN LOCATE(',', tail) > 0 THEN TRIM(LEFT(tail, LOCATE(',', tail)-1)) ELSE TRIM(tail) END, CASE WHEN LOCATE(',', tail) > 0 THEN SUBSTR(tail, LOCATE(',', tail)+1) ELSE '' END FROM parse WHERE lvl < 100 AND tail != '') SELECT name, integer(member) member FROM parse ORDER BY 1
wird zurückkehren
NAME MEMBER ---------- ----------- Luna 1 Luna 3 Luna 4 Terra 2 Terra 3 Terra 5 6 record(s) selected.
Das vom CTE zurückgegebene Ergebnis kann als reguläre Tabelle verwendet werden, z. B. indem es mit einer anderen Tabelle verbunden wird. Erstellen Sie beispielsweise eine Mitarbeiter-Nachschlagetabelle:
create table employees (id integer, name varchar(20)); insert into employees (id, name) values (1, 'John'), (2, 'Peter'), (3, 'Venkat'), (4, 'Mishka'), (5, 'Xiao');
Dann die folgende Abfrage
WITH parse (lvl, name, member, tail) AS ( SELECT 1, name, CASE WHEN LOCATE(',',members) > 0 THEN TRIM(LEFT(members, LOCATE(',',members)-1)) ELSE TRIM(members) END, CASE WHEN LOCATE(',',members) > 0 THEN SUBSTR(members, LOCATE(',',members)+1)
https://riptutorial.com/de/home 4
ELSE '' END FROM projects UNION ALL SELECT lvl + 1, name, CASE WHEN LOCATE(',', tail) > 0 THEN TRIM(LEFT(tail, LOCATE(',', tail)-1)) ELSE TRIM(tail) END, CASE WHEN LOCATE(',', tail) > 0 THEN SUBSTR(tail, LOCATE(',', tail)+1) ELSE '' END FROM parse WHERE lvl < 100 AND tail != '') SELECT p.name "Project name", e.name "Member name" FROM parse p INNER JOIN employees e ON e.id = integer(p.member) ORDER BY 1, 2
wird zurückkehren
Project name Member name ------------ -------------------- Luna John Luna Mishka Luna Venkat Terra Peter Terra Venkat Terra Xiao 6 record(s) selected.
Analysieren Sie durch Kommas getrennte Werte in einer Spalte in mehrere Zeilen online lesen: https://riptutorial.com/de/db2/topic/6751/analysieren-sie-durch-kommas-getrennte-werte-in-einer-spalte-in-mehrere-zeilen
https://riptutorial.com/de/home 5
Kapitel 3: DashDB
Einführung
IBM dashDB ist eine Familie von SQL-Datenbanken. Die Engine ist eine Mischung aus DB2, Netezza und der BLU-In-Memory-Engine . Jeder unterstützte DB2-Treiber funktioniert. es ist ein Ersatz für DB2.
Die drei Produktlinien für dashDB sind: (1) IBM dashDB for Transactions: Eine vollständig verwaltete Cloud-SQL-Datenbank für allgemeine Zwecke. (2) IBM dashDB for Analytics: Ein Cloud SQL-Data Warehouse. (3) IBM dashDB Local: Eine lokale Version, die Sie auf Ihrer eigenen Hardware installieren können.
Bemerkungen
Weitere Informationen zu DashDB können Sie mit folgenden Quellen versuchen:
Allgemeine Information:
Hauptwebsite: http://dashdb.com/•DashDB für Transaktionen Bluemix Page•DashDB für Analytics Bluemix-Seite•
Weitere Dokumentation
DashDB-Dokumente auf Bluemix•IBM Knowledge Center für DashDB•API-Referenz für DashDB für Analytics•
Examples
Eine grundlegende SQL-Auswahlliste - Alle Zeilen einer Tabelle auflisten.
SELECT * FROM MY_TABLE
DashDB online lesen: https://riptutorial.com/de/db2/topic/8673/dashdb
https://riptutorial.com/de/home 6
Kapitel 4: DB2-Einschränkungsinformationen
Einführung
Diese Dokumentation hilft jedem, der nach allen Beschreibungen in einer Tabellenspalte sucht. Die Abfrage kann geändert werden, um die Tabelle / Spalten basierend auf dem Einschränkungsnamen zu finden.
Examples
Abrufen von Einschränkungen basierend auf dem Spaltennamen
select cst.constraint_schema, cst.constraint_name, fk.table_name, fk.ordinal_position, fk.column_name, pk.table_name, pk.column_name from qsys2.syscst cst join qsys2.syskeycst fk on fk.constraint_schema = cst.constraint_schema and fk.constraint_name = cst.constraint_name join qsys2.sysrefcst ref on ref.constraint_schema = cst.constraint_schema and ref.constraint_name = cst.constraint_name join qsys2.syskeycst pk on pk.constraint_schema = ref.unique_constraint_schema and pk.constraint_name = ref.unique_constraint_name where cst.constraint_type = 'FOREIGN KEY' and fk.ordinal_position = pk.ordinal_position and pk.table_name = 'PRIMARYTABLE' and pk.column_name = 'EMPID' order by cst.constraint_schema, cst.constraint_name
Informationen zu Einschränkungen erhalten, die auf dem Namen der Einschränkung basieren
select cst.constraint_schema, cst.constraint_name, fk.table_name, fk.ordinal_position, fk.column_name, pk.table_name, pk.column_name from qsys2.syscst cst join qsys2.syskeycst fk on fk.constraint_schema = cst.constraint_schema and fk.constraint_name = cst.constraint_name join qsys2.sysrefcst ref on ref.constraint_schema = cst.constraint_schema and ref.constraint_name = cst.constraint_name join qsys2.syskeycst pk on pk.constraint_schema = ref.unique_constraint_schema and pk.constraint_name = ref.unique_constraint_name where fk.ordinal_position = pk.ordinal_position and cst.constraint_name = 'CST NAME' order by cst.constraint_schema, cst.constraint_name
https://riptutorial.com/de/home 7
DB2-Einschränkungsinformationen online lesen: https://riptutorial.com/de/db2/topic/9381/db2-einschrankungsinformationen
https://riptutorial.com/de/home 8
Kapitel 5: Einfügen in eine Tabelle durch Auswahl aus einer anderen Tabelle
Examples
Einfügen in eine Tabelle durch Auswahl aus einer anderen Tabelle
insert into schema.table (field1, field2) select 'Static Value', foreignField from schema.otherTable;
Einfügen in eine Tabelle durch Auswahl aus einer anderen Tabelle online lesen: https://riptutorial.com/de/db2/topic/6306/einfugen-in-eine-tabelle-durch-auswahl-aus-einer-anderen-tabelle
https://riptutorial.com/de/home 9
Kapitel 6: Hallo Welt;
Examples
Datenbank in DB2 erstellen
CREATE DATABASE SAMPLEDB;
Dadurch wird eine neue Datenbank mit dem Namen sampledb erstellt.
Verbindung zu einer Datenbank in DB2 herstellen
CONNECT TO SAMPLEDB;
Über die Befehlszeile (db2clp, terminal, db2cmd) können Sie schreiben:
db2 CONNECT TO SAMPLEDB
Erstellen Sie in DB2 eine Tabelle mit dem Namen "Mitarbeiter".
Die folgende Anweisung erstellt eine neue Tabelle mit dem Namen employee:
CREATE TABLE EMPLOYEE ( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, SALARY DECIMAL(9,2) , PRIMARY KEY (EMPNO) )
Dadurch wird eine neue Tabelle mit dem Namen Employee erstellt. Die Tabelle enthält einen Primärschlüssel in der Spalte EMPNO . Die ersten drei Spalten dürfen keinen Nullwert haben und sind Text. Die vierte kann Nullen haben und ist eine Zahl.
Sie können diese Tabelle aus db2clp (Linux, UNIX, MacOS) wie folgt erstellen (indem Sie die Anweisung in Anführungszeichen setzen):
db2 "CREATE TABLE EMPLOYEE ( EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, SALARY DECIMAL(9,2) , PRIMARY KEY (EMPNO) )"
Unter Linux / UNIX können Sie die Sonderzeichen auch mit dem Back-Slash umgehen, dies könnte jedoch schwieriger zu schreiben sein:
https://riptutorial.com/de/home 10
db2 CREATE TABLE EMPLOYEE \( \ EMPNO CHAR\(6\) NOT NULL, \ FIRSTNME VARCHAR\(12\) NOT NULL, \ LASTNAME VARCHAR\(15\) NOT NULL, \ SALARY DECIMAL\(9,2\) , \ PRIMARY KEY \(EMPNO\) \ \)
Eine Zeile in eine DB2-Tabelle einfügen
Nehmen wir an, wir werden Zeilen in die zuvor erstellte Tabelle einfügen.
Wir können die Spalten, in denen wir die Werte herausgeben wollen, und ihre Reihenfolge explizit nennen:
INSERT INTO EMPLOYEE (EMPNO, FIRSTNME, LASTNAME, SALARY) VALUES ( '123456', 'Ali', 'Veli', 100000);
Wenn wir die Reihenfolge kennen und Werte für alle Spalten setzen, können wir schreiben:
INSERT INTO EMPLOYEE VALUES ( '123456', 'Ali', 'Veli', 100000);
Bei der Verwendung von db2clp müssen wir aufgrund der Klammern Anführungszeichen setzen (ohne Semikolon am Ende):
db2 "INSERT INTO EMPLOYEE (EMPNO, FIRSTNME, LASTNAME, SALARY) VALUES ( '123456', 'Ali', 'Veli', 100000)"
Beispielauswahlabfrage;
SELECT 'HELLO WORLD' FROM SYSIBM.SYSDUMMY1; 1 ----------- Hello World 1 record(s) selected.
"Die Tabelle SYSIBM.SYSDUMMY1 enthält eine Zeile. Die Tabelle wird für SQL-Anweisungen verwendet, in denen eine Tabellenreferenz erforderlich ist, der Inhalt der Tabelle ist jedoch nicht wichtig."
Diese Tabelle hat nur eine Spalte. Der Spaltenname lautet IBMREQD. Der Standardwert ist Y.
SELECT * FROM SYSIBM.SYSDUMMY1; IBMREQD ------- Y 1 record(s) selected.
https://riptutorial.com/de/home 11
Hallo Welt; online lesen: https://riptutorial.com/de/db2/topic/5995/hallo-welt-
https://riptutorial.com/de/home 12
Kapitel 7: Kombinieren Sie mehrere Zeilen in einem durch Kommas getrennten Wert
Examples
Verwendung der Funktion listagg ()
Angenommen, Sie haben eine Tabelle mit Darlehen und eine weitere zugehörige Tabelle mit Paketen, bei denen jedem Darlehen ein oder mehrere Pakete zugeordnet sein können. Wenn Sie möchten, dass eine Abfrage jedes Darlehen und eine Liste aller zugehörigen Pakete anzeigt, Sie jedoch nur ein einziges Mal angezeigt werden sollen, können Sie Folgendes verwenden:
select loan.loannumber, parcel_agg.p_list as parcel_list from schema.loan loan left join ( select loannumber, listagg(parcelnum, ', ') from schema.parcel parcel group by loannumber ) parcel_agg on parcel_agg.loannumber = loan.loannumber
Kombinieren Sie mehrere Zeilen in einem durch Kommas getrennten Wert online lesen: https://riptutorial.com/de/db2/topic/5940/kombinieren-sie-mehrere-zeilen-in-einem-durch-kommas-getrennten-wert
https://riptutorial.com/de/home 13
Kapitel 8: Tabelle mit oder ohne Daten kopieren
Einführung
Beispiel für das Kopieren einer vorhandenen Tabellenstruktur mit / ohne Daten
Syntax
CREATE TABLE schemaName.table AS (SELECT-Spalten FROM schemaName.table) WITH DATA
1.
Examples
Tabelle mit Daten kopieren
CREATE TABLE myschema.tableNew AS ( SELECT * FROM myschema.tableOld ) WITH DATA
Tabelle ohne Daten kopieren
CREATE TABLE myschema.tableNew AS ( SELECT * FROM myschema.tableOld ) WITHOUT DATA
Tabelle mit where-Klausel kopieren
CREATE TABLE myschema.tableNew AS ( SELECT * FROM myschema.tableOld WHERE column1 = 'myCriteria' ) WITH DATA
Tabelle mit oder ohne Daten kopieren online lesen: https://riptutorial.com/de/db2/topic/8778/tabelle-mit-oder-ohne-daten-kopieren
https://riptutorial.com/de/home 14
Kapitel 9: Tisch ablegen
Einführung
Grundlegende Anweisungen zum Löschen einer Tabelle in DB2.
Examples
Grundlegende Drop Table-Syntax
db2 connect to {databaseName} db2 drop table {schema}.{table} db2 connect reset
Das Schema ist nicht erforderlich, wenn es mit dem aktuellen Benutzernamen übereinstimmt. Das Präfix "db2" ist nicht erforderlich, wenn Sie sich bereits in einer DB2-Eingabeaufforderung befinden.
Tisch ablegen online lesen: https://riptutorial.com/de/db2/topic/10115/tisch-ablegen
https://riptutorial.com/de/home 15
Kapitel 10: Wo nicht in mehreren Spalten
Examples
Mehrere Wertekombinationen herausfiltern
Angenommen, Sie möchten eine Abfrage nach zwei Spalten filtern, jedoch nur nach bestimmten Kombinationen dieser Spalten. Beispielsweise ist es in Ordnung, das Konto 60400 mit der Referenznummer JE zu haben. Sie können jedoch nicht das Konto 60400 mit der Referenznummer ED haben. Sie können jedoch das Konto 60500 mit der Referenznummer ED haben.
select * from schema.table where (acct, ref) not in ( values (60400, 'ED'), (60600, 'ED'), (60701, 'ED'), (70400, 'ED'), (70500, 'ED'), (70600, 'ED'), (80800, 'ED') );
Wo nicht in mehreren Spalten online lesen: https://riptutorial.com/de/db2/topic/6349/wo-nicht-in-mehreren-spalten
https://riptutorial.com/de/home 16
Credits
S. No
Kapitel Contributors
1 Erste Schritte mit db2 AngocA, Community, J. Allen, Surya Sg
2
Analysieren Sie durch Kommas getrennte Werte in einer Spalte in mehrere Zeilen
mustaccio
3 DashDB SilentSteel
4DB2-Einschränkungsinformationen
uSeruSher
5Einfügen in eine Tabelle durch Auswahl aus einer anderen Tabelle
AngocA, J. Allen
6 Hallo Welt; AngocA, Mustafa DOGRU, Wieland
7Kombinieren Sie mehrere Zeilen in einem durch Kommas getrennten Wert
J. Allen, Stephen Leppik
8Tabelle mit oder ohne Daten kopieren
uSeruSher
9 Tisch ablegen J. Allen
10 Wo nicht in mehreren Spalten J. Allen
https://riptutorial.com/de/home 17