{"id":15984,"date":"2024-07-29T14:27:12","date_gmt":"2024-07-29T10:57:12","guid":{"rendered":"https:\/\/www.itpiran.net\/blog\/?p=15984"},"modified":"2024-07-29T14:27:12","modified_gmt":"2024-07-29T10:57:12","slug":"how-to-use-primary-keys-in-sql","status":"publish","type":"post","link":"https:\/\/www.itpiran.net\/blog\/de\/tutorials\/how-to-use-primary-keys-in-sql\/","title":{"rendered":"Wie man Prim\u00e4rschl\u00fcssel in SQL verwendet"},"content":{"rendered":"<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87\">Einf\u00fchrung<\/h2>\n<p>Eine der wertvollen Eigenschaften relationaler Datenbanken ist die Formatierung von Daten in einer klar definierten Struktur. Diese Struktur wird durch die Verwendung von Tabellen mit festen Spalten, die Einhaltung klar definierter Datentypen und die Gew\u00e4hrleistung eines einheitlichen Formats f\u00fcr jede Zeile erreicht. Beim Speichern von Daten als Zeilen in Tabellen ist es ebenso wichtig, diese eindeutig finden und referenzieren zu k\u00f6nnen. In der strukturierten Abfragesprache (SQL) wird dies durch Prim\u00e4rschl\u00fcssel realisiert, die als Identifikatoren f\u00fcr einzelne Zeilen in Tabellen einer relationalen Datenbank dienen.<\/p>\n<p>In diesem Tutorial lernen Sie Prim\u00e4rschl\u00fcssel kennen und verwenden verschiedene Typen, um eindeutige Zeilen in Datenbanktabellen zu identifizieren. Anhand von Beispieldatens\u00e4tzen erstellen Sie Prim\u00e4rschl\u00fcssel f\u00fcr einzelne Spalten, f\u00fcr mehrere Spalten und automatisch inkrementierende, fortlaufende Schl\u00fcssel.<\/p>\n<h5 id=\"%d9%be%db%8c%d8%b4-%d9%86%db%8c%d8%a7%d8%b2%d9%87%d8%a7\">Voraussetzungen<\/h5>\n<p>Um dieser Anleitung folgen zu k\u00f6nnen, ben\u00f6tigen Sie einen Computer mit einem SQL-basierten relationalen Datenbankmanagementsystem (RDBMS). Die Anweisungen und Beispiele in dieser Anleitung wurden in der folgenden Umgebung validiert:<\/p>\n<ul>\n<li>Ein Server mit Ubuntu 20.04, einem Benutzer ohne Root-Rechte, aber mit Administratorrechten, und einer mit UFW konfigurierten Firewall.<\/li>\n<li>MySQL ist auf dem Server installiert und gesichert.<\/li>\n<li>Grundlegende Einf\u00fchrung in die Ausf\u00fchrung von SELECT-Abfragen zum Abrufen von Daten aus der Datenbank<\/li>\n<\/ul>\n<p><span style=\"color: #ff0000;\">Hinweis: Bitte beachten Sie, dass viele relationale Datenbankmanagementsysteme (RDBMS) ihre eigene SQL-Implementierung verwenden. Obwohl die in diesem Tutorial genannten Befehle auf den meisten RDBMS funktionieren und Prim\u00e4rschl\u00fcssel Teil des SQL-Standards sind, sind einige Funktionen datenbankspezifisch. Daher k\u00f6nnen Syntax und Ausgabe auf anderen Systemen als MySQL abweichen.<\/span><\/p>\n<p>Sie ben\u00f6tigen au\u00dferdem eine leere Datenbank, in der Sie die Tabellen mithilfe von Prim\u00e4rschl\u00fcsseln erstellen. Wir empfehlen Ihnen, die folgenden Abschnitte zu lesen, um detaillierte Informationen zum Verbinden mit dem MySQL-Server und zum Erstellen der in den Beispielen dieses Leitfadens verwendeten Testdatenbank zu erhalten.<\/p>\n<h2 id=\"%d8%a7%d8%aa%d8%b5%d8%a7%d9%84-%d8%a8%d9%87-mysql-%d9%88-%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%db%8c%da%a9-%d9%be%d8%a7%db%8c%da%af%d8%a7%d9%87-%d8%af%d8%a7%d8%af%d9%87-%d9%86%d9%85\">Verbindung zu MySQL herstellen und eine Beispieldatenbank einrichten<\/h2>\n<p>In diesem Abschnitt stellen Sie eine Verbindung zum MySQL-Server her und erstellen eine Datenbankinstanz, damit Sie die Beispiele in diesem Leitfaden verwenden k\u00f6nnen.<\/p>\n<p>Wenn Ihr SQL-Datenbanksystem auf einem Remote-Server l\u00e4uft, stellen Sie eine SSH-Verbindung von Ihrem lokalen Rechner zu Ihrem Server her:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>ssh sammy@your_server_ip<\/code><\/pre>\n<\/div>\n<p>\u00d6ffnen Sie anschlie\u00dfend die MySQL-Server-Eingabeaufforderung und ersetzen Sie \u201eSami\u201c durch Ihren MySQL-Benutzernamen:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>mysql -u sammy -p\r\n<\/code><\/pre>\n<\/div>\n<p>Erstelle eine Datenbank namens primary_keys:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE DATABASE primary_keys;\r\n<\/code><\/pre>\n<\/div>\n<p>Wenn die Datenbank erfolgreich erstellt wurde, erhalten Sie folgende Ausgabe:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 1 row affected (0.01 sec)<\/code><\/pre>\n<\/div>\n<p>Um die Datenbank primary_keys auszuw\u00e4hlen, f\u00fchren Sie die folgende USE-Anweisung aus:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>USE primary_keys;\r\n<\/code><\/pre>\n<\/div>\n<p>Sie erhalten folgende Ausgabe:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nDatabase changed<\/code><\/pre>\n<\/div>\n<p>Nachdem Sie eine Datenbank ausgew\u00e4hlt haben, k\u00f6nnen Sie darin Beispieltabelle erstellen. Nun k\u00f6nnen Sie dem Rest der Anleitung folgen und mit Prim\u00e4rschl\u00fcsseln in MySQL arbeiten.<\/p>\n<h2 id=\"%d9%85%d9%82%d8%af%d9%85%d9%87-%d8%a7%db%8c-%d8%a8%d8%b1-%da%a9%d9%84%db%8c%d8%af%d9%87%d8%a7%db%8c-%d8%a7%d8%b5%d9%84%db%8c\">Einf\u00fchrung in die Dur-Tonarten<\/h2>\n<p>Daten in einer relationalen Datenbank werden in Tabellen mit einer spezifischen, einheitlichen Struktur einzelner Zeilen gespeichert. Die Tabellendefinition beschreibt die Spalten und die Datentypen, die in den einzelnen Spalten gespeichert werden k\u00f6nnen. Dies allein gen\u00fcgt, um Informationen in der Datenbank zu speichern und sie mithilfe verschiedener Filterkriterien \u00fcber die WHERE-Klausel zu finden. Diese Struktur garantiert jedoch nicht, dass jede Zeile eindeutig gefunden werden kann.<\/p>\n<p>Stellen Sie sich eine Datenbank aller zugelassenen Fahrzeuge vor, die auf \u00f6ffentlichen Stra\u00dfen fahren d\u00fcrfen. Die Datenbank enth\u00e4lt Informationen wie Marke, Modell, Baujahr und Lackfarbe. Wenn Sie jedoch nach einem roten Chevrolet Camaro aus dem Jahr 2007 suchen, finden Sie m\u00f6glicherweise mehrere Exemplare. Schlie\u00dflich verkaufen Autohersteller dieselben Fahrzeuge an mehrere Kunden. Deshalb haben zugelassene Autos Kennzeichen, die jedes Fahrzeug eindeutig identifizieren. Wenn Sie nach einem Auto mit dem Kennzeichen OFP857 suchen, finden Sie mit Sicherheit nur ein einziges Fahrzeug. Denn laut Gesetz identifizieren Kennzeichen zugelassene Fahrzeuge eindeutig. In einer relationalen Datenbank wird ein solches Datenelement als Prim\u00e4rschl\u00fcssel bezeichnet.<\/p>\n<p>Prim\u00e4rschl\u00fcssel sind eindeutige Kennungen in einer Spalte oder einer Gruppe von Spalten, die jede Zeile einer Datenbanktabelle eindeutig identifizieren k\u00f6nnen. Mehrere Regeln spiegeln die technischen Eigenschaften von Prim\u00e4rschl\u00fcsseln wider:<\/p>\n<ul>\n<li>Ein Prim\u00e4rschl\u00fcssel muss eindeutige Werte verwenden. Besteht der Prim\u00e4rschl\u00fcssel aus mehreren Spalten, muss die Kombination der Werte in diesen Spalten innerhalb der gesamten Tabelle eindeutig sein. Da der Schl\u00fcssel jede Zeile eindeutig identifiziert, darf er nicht mehrfach vorkommen.<\/li>\n<li>Ein Prim\u00e4rschl\u00fcssel sollte keine NULL-Werte enthalten.<\/li>\n<li>Jede Datenbanktabelle kann nur einen Prim\u00e4rschl\u00fcssel verwenden.<\/li>\n<\/ul>\n<p>Die Datenbank-Engine setzt diese Regeln durch. Wenn also ein Prim\u00e4rschl\u00fcssel f\u00fcr eine Tabelle definiert ist, k\u00f6nnen Sie darauf vertrauen, dass diese Attribute korrekt sind.<\/p>\n<p>Neben diesen technischen Merkmalen sollten Sie auch den Inhalt der Daten ber\u00fccksichtigen, um zu entscheiden, welche Art von Daten sich als Prim\u00e4rschl\u00fcssel eignet. Nat\u00fcrliche Schl\u00fcssel sind Kennungen, die bereits im Datensatz vorhanden sind, w\u00e4hrend k\u00fcnstliche Schl\u00fcssel k\u00fcnstliche Kennungen sind.<\/p>\n<p>Manche Datenstrukturen besitzen Prim\u00e4rschl\u00fcssel, die auf nat\u00fcrliche Weise im Datensatz vorkommen, wie beispielsweise Kfz-Kennzeichen in einer Fahrzeugdatenbank oder Sozialversicherungsnummern in einem US-amerikanischen B\u00fcrgerregister. Manchmal bestehen solche Identifikatoren nicht aus einem einzelnen Wert, sondern aus einem Paar oder einer Kombination mehrerer Werte. So kann beispielsweise in einem lokalen Hausverzeichnis ein Stra\u00dfenname oder eine Hausnummer allein ein Haus nicht eindeutig identifizieren. Es k\u00f6nnen sich mehrere H\u00e4user in einer Stra\u00dfe befinden, und dieselbe Hausnummer kann in mehreren Stra\u00dfen vorkommen. Ein Paar aus Stra\u00dfenname und Hausnummer kann jedoch als eindeutiger Hausidentifikator betrachtet werden. Solche nat\u00fcrlich vorkommenden Identifikatoren werden als nat\u00fcrliche Schl\u00fcssel bezeichnet.<\/p>\n<p>H\u00e4ufig lassen sich Daten jedoch nicht eindeutig anhand der Werte einer einzelnen Spalte oder einer kleinen Teilmenge von Spalten identifizieren. In solchen F\u00e4llen werden k\u00fcnstliche Prim\u00e4rschl\u00fcssel erstellt, beispielsweise mithilfe einer Zahlenfolge oder zuf\u00e4llig generierter Kennungen wie UUIDs. Diese Schl\u00fcssel werden als Ersatzschl\u00fcssel bezeichnet.<\/p>\n<p>In den folgenden Abschnitten erstellen Sie nat\u00fcrliche Schl\u00fcssel auf Basis einer oder mehrerer Spalten und erstellen alternative Schl\u00fcssel in Tabellen, in denen ein nat\u00fcrlicher Schl\u00fcssel nicht m\u00f6glich ist.<\/p>\n<h2 id=\"%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%da%a9%d9%84%db%8c%d8%af-%d8%a7%d8%b5%d9%84%db%8c-%d8%af%d8%b1-%db%8c%da%a9-%d8%b3%d8%aa%d9%88%d9%86\">Erstellen Sie einen Prim\u00e4rschl\u00fcssel f\u00fcr eine Spalte<\/h2>\n<p>In vielen F\u00e4llen enth\u00e4lt ein Datensatz von Natur aus eine Spalte, die zur eindeutigen Identifizierung von Zeilen in einer Tabelle verwendet werden kann. In diesen F\u00e4llen kann ein nat\u00fcrlicher Schl\u00fcssel zur Beschreibung der Daten erstellt werden. Stellen Sie sich, ausgehend vom vorherigen Beispiel der Datenbank f\u00fcr zugelassene Fahrzeuge, eine Tabelle mit folgender Struktur vor:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Sample table\r\n+---------------+-----------+------------+-------+------+\r\n| license_plate | brand | model | color | year |\r\n+---------------+-----------+------------+-------+------+\r\n| ABC123 | Ford | Mustang | Red | 2018 |\r\n| CES214 | Ford | Mustang | Red | 2018 |\r\n| DEF456 | Chevrolet | Camaro | Blue | 2016 |\r\n| GHI789 | Dodge | Challenger | Black | 2014 |\r\n+---------------+-----------+------------+-------+------+<\/code><\/pre>\n<\/div>\n<p>Die erste und zweite Zeile beschreiben jeweils einen roten Ford Mustang Baujahr 2018. Das Fahrzeug l\u00e4sst sich anhand von Marke und Modell nicht eindeutig identifizieren. Das Kennzeichen ist in beiden F\u00e4llen unterschiedlich und dient als eindeutiger Identifikator f\u00fcr jede Zeile in der Tabelle. Da die Kennzeichennummer bereits Teil der Daten ist, erzeugt ihre Verwendung als Prim\u00e4rschl\u00fcssel einen nat\u00fcrlichen Schl\u00fcssel. W\u00fcrde man die Tabelle ohne Prim\u00e4rschl\u00fcssel f\u00fcr die Spalte \u201eKennzeichen\u201c erstellen, best\u00fcnde die Gefahr, dass an einer Stelle im Datensatz doppelte oder leere Eintr\u00e4ge auftreten.<\/p>\n<p>Als N\u00e4chstes erstellen Sie eine Tabelle \u00e4hnlich der obigen, wobei die Spalte \u201eLicense_plate\u201c als Prim\u00e4rschl\u00fcssel dient und die folgenden Spalten enthalten sind:<\/p>\n<ul>\n<li>License_plate: Diese Spalte enth\u00e4lt die Kfz-Kennzeichennummer, dargestellt durch den Datentyp varchar.<\/li>\n<li>Marke: Diese Spalte repr\u00e4sentiert die Marke des Autos und wird mit Hilfe des Datentyps varchar mit maximal 50 Zeichen angegeben.<\/li>\n<li>Modell: Diese Spalte enth\u00e4lt das Automodell, ausgedr\u00fcckt als varchar-Datentyp mit maximal 50 Zeichen.<\/li>\n<li>Farbe: Diese Spalte enth\u00e4lt die Farbe, die mit dem Datentyp varchar und maximal 20 Zeichen angegeben wird.<\/li>\n<li>Jahr: Diese Spalte zeigt das Herstellungsjahr des Fahrzeugs an, ausgedr\u00fcckt durch den Datentyp int zur Speicherung numerischer Daten.<\/li>\n<\/ul>\n<p>Um die Tabelle \u201eMaschinen\u201c zu erstellen, f\u00fchren Sie die folgende SQL-Anweisung aus:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE cars (\r\nlicense_plate varchar(8) PRIMARY KEY,\r\nbrand varchar(50),\r\nmodel varchar(50),\r\ncolor varchar(20),\r\nyear int\r\n);... *\/<\/code><\/pre>\n<\/div>\n<p>Die PRIMARY KEY-Anweisung folgt der Definition des Datentyps License_plate. Bei Prim\u00e4rschl\u00fcsseln, die auf einzelnen Spalten basieren, kann die vereinfachte Syntax zum Erstellen des Schl\u00fcssels verwendet und der Prim\u00e4rschl\u00fcssel in der Spaltendefinition angegeben werden.<\/p>\n<p>Wenn die folgende Ausgabe gedruckt wird, wurde die Tabelle erstellt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 0 rows affected (0.00 sec)<\/code><\/pre>\n<\/div>\n<p>Laden Sie anschlie\u00dfend die Tabelle mit den oben genannten Beispielzeilen, indem Sie die folgende INSERT INTO-Operation ausf\u00fchren:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO cars VALUES\r\n('ABC123', 'Ford', 'Mustang', 'Red', 2018),\r\n('CES214', 'Ford', 'Mustang', 'Red', 2018),\r\n('DEF456', 'Chevrolet', 'Camaro', 'Blue', 2016),\r\n('GHI789', 'Dodge', 'Challenger', 'Black', 2014);<\/code><\/pre>\n<\/div>\n<p>Die Datenbank wird mit einer Erfolgsmeldung antworten:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 4 rows affected (0.010 sec)\r\nRecords: 4 Duplicates: 0 Warnings: 0<\/code><\/pre>\n<\/div>\n<p>Sie k\u00f6nnen nun mit der SELECT-Anweisung \u00fcberpr\u00fcfen, ob die neu erstellte Tabelle die erwarteten Daten und das erwartete Format enth\u00e4lt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT * FROM cars;\r\n<\/code><\/pre>\n<\/div>\n<p>Die Ausgabe zeigt eine Tabelle, die derjenigen am Anfang des Abschnitts \u00e4hnelt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+---------------+-----------+------------+-------+------+\r\n| license_plate | brand | model | color | year |\r\n+---------------+-----------+------------+-------+------+\r\n| ABC123 | Ford | Mustang | Red | 2018 |\r\n| CES214 | Ford | Mustang | Red | 2018 |\r\n| DEF456 | Chevrolet | Camaro | Blue | 2016 |\r\n| GHI789 | Dodge | Challenger | Black | 2014 |\r\n+---------------+-----------+------------+-------+------+<\/code><\/pre>\n<\/div>\n<p>Als N\u00e4chstes k\u00f6nnen Sie \u00fcberpr\u00fcfen, ob die Regeln f\u00fcr den Prim\u00e4rschl\u00fcssel von der Datenbank-Engine gew\u00e4hrleistet werden. Versuchen Sie, ein Auto mit einem doppelten Kennzeichen einzuf\u00fcgen, indem Sie Folgendes ausf\u00fchren:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO cars VALUES ('DEF456', 'Jeep', 'Wrangler', 'Yellow', 2019);\r\n<\/code><\/pre>\n<\/div>\n<p>MySQL antwortet mit einer Fehlermeldung, die besagt, dass das DEF456-Tag zu einem doppelten Eintrag f\u00fcr den Prim\u00e4rschl\u00fcssel f\u00fchrt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\">Output\r\nERROR 1062 (23000): Duplicate entry 'DEF456' for key 'cars.PRIMARY'<\/pre>\n<\/div>\n<p><span style=\"color: #ff0000;\">Hinweis: Prim\u00e4rschl\u00fcssel werden im Hintergrund mithilfe eindeutiger Indizes implementiert und weisen viele \u00e4hnliche Eigenschaften wie manuell erstellte Indizes f\u00fcr andere Spalten einer Tabelle auf. Vor allem verbessern Prim\u00e4rschl\u00fcsselindizes die Abfrageleistung der Spalte, f\u00fcr die der Index definiert ist. Weitere Informationen zur Verwendung von Indizes f\u00fcr diesen Zweck finden Sie im Abschnitt \u201eVerwendung von Indizes\u201c in diesem Tutorial.<\/span><\/p>\n<p>Sie k\u00f6nnen nun sicher sein, dass doppelte Kennzeichen nicht zul\u00e4ssig sind. Pr\u00fcfen Sie als N\u00e4chstes, ob ein Auto mit einem leeren Kennzeichen importiert werden kann:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO cars VALUES (NULL, 'Jeep', 'Wrangler', 'Yellow', 2019);\r\n<\/code><\/pre>\n<\/div>\n<p>Diesmal antwortet die Datenbank mit einer anderen Fehlermeldung:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nERROR 1048 (23000): Column 'license_plate' cannot be null<\/code><\/pre>\n<\/div>\n<p>Dank dieser beiden von der Datenbank durchgesetzten Regeln k\u00f6nnen Sie sicher sein, dass License_plate jede Zeile in der Tabelle eindeutig identifiziert. Wenn Sie die Tabelle anhand jedes Kennzeichens abfragen, erhalten Sie jedes Mal genau eine Zeile zur\u00fcck.<\/p>\n<p>Im n\u00e4chsten Abschnitt erfahren Sie, wie Sie Prim\u00e4rschl\u00fcssel mit mehreren Spalten verwenden.<\/p>\n<h2 id=\"%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%da%a9%d9%84%db%8c%d8%af-%d8%a7%d8%b5%d9%84%db%8c-%d8%af%d8%b1-%da%86%d9%86%d8%af%db%8c%d9%86-%d8%b3%d8%aa%d9%88%d9%86\">Erstellen eines Prim\u00e4rschl\u00fcssels \u00fcber mehrere Spalten<\/h2>\n<p>Wenn eine Spalte nicht ausreicht, um eine Zeile in einer Tabelle eindeutig zu identifizieren, k\u00f6nnen Sie Prim\u00e4rschl\u00fcssel erstellen, die mehr als eine Spalte verwenden.<\/p>\n<p>Stellen Sie sich beispielsweise ein Hausregister vor, in dem weder der Stra\u00dfenname noch die Hausnummer allein ausreichen, um jedes Haus zu identifizieren:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Sample table\r\n+-------------------+---------------+-------------------+------+\r\n| street_name | street_number | house_owner | year |\r\n+-------------------+---------------+-------------------+------+\r\n| 5th Avenue | 100 | Bob Johnson | 2018 |\r\n| Broadway | 1500 | Jane Smith | 2016 |\r\n| Central Park West | 100 | John Doe | 2014 |\r\n| Central Park West | 200 | Tom Thompson | 2015 |\r\n| Lexington Avenue | 5001 | Samantha Davis | 2010 |\r\n| Park Avenue | 7000 | Michael Rodriguez | 2012 |\r\n+-------------------+---------------+-------------------+------+<\/code><\/pre>\n<\/div>\n<p>Der Stra\u00dfenname Central Park West und die Hausnummer 100 kommen mehrfach in der Tabelle vor. Es gibt jedoch keine doppelten Paare aus Stra\u00dfenname und Hausnummer. Obwohl in diesem Fall keine der beiden Spalten als Prim\u00e4rschl\u00fcssel dienen kann, lassen sich die beiden Wertepaare verwenden, um jede Zeile in der Tabelle eindeutig zu identifizieren.<\/p>\n<p>Als N\u00e4chstes erstellen Sie eine Tabelle \u00e4hnlich der oben gezeigten mit den folgenden Spalten:<\/p>\n<ul>\n<li>street_name: Diese Spalte repr\u00e4sentiert den Namen der Stra\u00dfe, in der sich das Haus befindet. Der Datentyp ist varchar und auf 50 Zeichen begrenzt.<\/li>\n<li>Hausnummer: Diese Spalte enth\u00e4lt die Hausnummer, dargestellt als VARCHAR. Sie kann bis zu 5 Zeichen speichern. Der numerische Datentyp INT wird nicht verwendet, da manche Hausnummern Buchstaben enthalten (z. B. 200B).<\/li>\n<li>house_owner: Diese Spalte enth\u00e4lt den Namen des Hausbesitzers, dargestellt durch den Datentyp varchar mit einer maximalen L\u00e4nge von 50 Zeichen.<\/li>\n<li>Jahr: Diese Spalte gibt das Baujahr des Hauses an, dargestellt durch den Datentyp int zur Speicherung numerischer Werte.<\/li>\n<\/ul>\n<p>Diesmal verwendet der Prim\u00e4rschl\u00fcssel sowohl die Spalte \u201estreet_name\u201c als auch die Spalte \u201estreet_number\u201c anstatt nur einer von beiden. F\u00fchren Sie dazu die folgende SQL-Anweisung aus:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE houses (\r\nstreet_name varchar(50),\r\nstreet_number varchar(5),\r\nhouse_owner varchar(50),\r\nyear int,\r\nPRIMARY KEY(street_name, street_number)\r\n);<\/code><\/pre>\n<\/div>\n<p>Diesmal, anders als im vorherigen Beispiel, steht die PRIMARY KEY-Anweisung unterhalb der Spaltendefinitionen. Sie ist in Klammern gesetzt und enth\u00e4lt die beiden Spaltennamen \u201estreet_name\u201c und \u201estreet_number\u201c. Diese Syntax erzeugt einen Prim\u00e4rschl\u00fcssel in der Tabelle \u201ehouses\u201c, der sich auf zwei Spalten bezieht.<\/p>\n<p>Wenn die folgende Ausgabe gedruckt wird, wurde die Tabelle erstellt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 0 rows affected (0.00 sec)<\/code><\/pre>\n<\/div>\n<p>Laden Sie anschlie\u00dfend die Tabelle mit den im vorherigen Beispiel bereitgestellten Beispielzeilen, indem Sie die folgende INSERT INTO-Operation ausf\u00fchren:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO houses VALUES\r\n('Central Park West', '100', 'John Doe', 2014),\r\n('Broadway', '1500', 'Jane Smith', 2016),\r\n('5th Avenue', '100', 'Bob Johnson', 2018),\r\n('Lexington Avenue', '5001', 'Samantha Davis', 2010),\r\n('Park Avenue', '7000', 'Michael Rodriguez', 2012),\r\n('Central Park West', '200', 'Tom Thompson', 2015);\r\n<\/code><\/pre>\n<\/div>\n<p>Die Datenbank wird mit einer Erfolgsmeldung antworten:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 6 rows affected (0.000 sec)\r\nRecords: 6 Duplicates: 0 Warnings: 0<\/code><\/pre>\n<\/div>\n<p>Sie k\u00f6nnen nun mit der SELECT-Anweisung \u00fcberpr\u00fcfen, ob die neu erstellte Tabelle die erwarteten Daten und das erwartete Format enth\u00e4lt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT * FROM houses;\r\n<\/code><\/pre>\n<\/div>\n<p>Die Ausgabe zeigt eine Tabelle, die derjenigen am Anfang des Abschnitts \u00e4hnelt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+-------------------+---------------+-------------------+------+\r\n| street_name | street_number | house_owner | year |\r\n+-------------------+---------------+-------------------+------+\r\n| 5th Avenue | 100 | Bob Johnson | 2018 |\r\n| Broadway | 1500 | Jane Smith | 2016 |\r\n| Central Park West | 100 | John Doe | 2014 |\r\n| Central Park West | 200 | Tom Thompson | 2015 |\r\n| Lexington Avenue | 5001 | Samantha Davis | 2010 |\r\n| Park Avenue | 7000 | Michael Rodriguez | 2012 |\r\n+-------------------+---------------+-------------------+------+\r\n6 rows in set (0.000 sec)<\/code><\/pre>\n<\/div>\n<p>Pr\u00fcfen wir nun, ob die Datenbank Zeilen mit wiederholten Stra\u00dfennamen und Hausnummern zul\u00e4sst, aber doppelte vollst\u00e4ndige Adressen in der Tabelle verhindert. Beginnen wir mit dem Hinzuf\u00fcgen eines weiteren Hauses in der Parkstra\u00dfe:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO houses VALUES ('Park Avenue', '8000', 'Emily Brown', 2011);\r\n<\/code><\/pre>\n<\/div>\n<p>MySQL antwortet mit einer Erfolgsmeldung, da die Adresse 8000 Park Avenue zuvor nicht in der Tabelle vorhanden war:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 1 row affected (0.010 sec)<\/code><\/pre>\n<\/div>\n<p>Ein \u00e4hnliches Ergebnis ergibt sich, wenn man ein Haus in der Hauptstra\u00dfe 8000 hinzuf\u00fcgt und die Hausnummer wiederholt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO houses VALUES ('Main Street', '8000', 'David Jones', 2009);\r\n<\/code><\/pre>\n<\/div>\n<p>Auch hier wird die neue Zeile korrekt eingef\u00fcgt, da die gesamte Adresse nicht wiederholt wird:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 1 row affected (0.010 sec)<\/code><\/pre>\n<\/div>\n<p>F\u00fcgen Sie jedoch ein weiteres Haus in der 100 5th Avenue mithilfe der folgenden INSERT-Anweisung hinzu:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO houses VALUES ('5th Avenue', '100', 'Josh Gordon', 2008);\r\n<\/code><\/pre>\n<\/div>\n<p>Die Datenbank antwortet mit einer Fehlermeldung, die Sie dar\u00fcber informiert, dass ein doppelter Eintrag f\u00fcr den Prim\u00e4rschl\u00fcssel f\u00fcr das Wertepaar 5th Avenue und 100 existiert:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nERROR 1062 (23000): Duplicate entry '5th Avenue-100' for key 'houses.PRIMARY'<\/code><\/pre>\n<\/div>\n<p>Die Datenbank setzt die Regeln f\u00fcr Prim\u00e4rschl\u00fcssel korrekt um, wobei der Schl\u00fcssel \u00fcber ein Spaltenpaar definiert ist. Sie k\u00f6nnen sicher sein, dass die vollst\u00e4ndige Adresse, einschlie\u00dflich Stra\u00dfenname und Hausnummer, nicht doppelt in der Tabelle vorhanden ist.<\/p>\n<p>In diesem Abschnitt haben Sie einen nat\u00fcrlichen Schl\u00fcssel mit zwei Spalten erstellt, um jede Zeile in der Basistabelle eindeutig zu identifizieren. Prim\u00e4rschl\u00fcssel lassen sich jedoch nicht immer direkt aus den Daten extrahieren. Im n\u00e4chsten Abschnitt verwenden Sie daher k\u00fcnstliche Prim\u00e4rschl\u00fcssel, die nicht direkt aus den Daten stammen.<\/p>\n<h2 id=\"%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%db%8c%da%a9-%da%a9%d9%84%db%8c%d8%af-%d8%a7%d8%b5%d9%84%db%8c-%d9%85%d8%aa%d9%88%d8%a7%d9%84%db%8c\">Erstellen eines sequenziellen Prim\u00e4rschl\u00fcssels<\/h2>\n<p>Bisher haben Sie eindeutige Prim\u00e4rschl\u00fcssel mithilfe von Spalten aus dem Beispieldatensatz erstellt. In manchen F\u00e4llen sind Daten jedoch unvermeidlich dupliziert, sodass die Spalten keine eindeutigen Identifikatoren mehr darstellen k\u00f6nnen. In diesen F\u00e4llen k\u00f6nnen Sie mithilfe der generierten Identifikatoren sequentielle Prim\u00e4rschl\u00fcssel erstellen. Wenn Ihre Daten die Erstellung neuer Identifikatoren zur Identifizierung von Zeilen erfordern, werden die auf diesen k\u00fcnstlichen Identifikatoren basierenden Prim\u00e4rschl\u00fcssel als Ersatzschl\u00fcssel bezeichnet.<\/p>\n<p>Stellen Sie sich eine Liste von Buchclubmitgliedern vor \u2013 ein informelles Treffen, dem jeder ohne Ausweis beitreten kann. Es ist wahrscheinlich, dass Personen mit \u00e4hnlichen Namen dem Club irgendwann beitreten werden:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Sample table\r\n+------------+-----------+\r\n| first_name | last_name |\r\n+------------+-----------+\r\n| John | Doe |\r\n| Jane | Smith |\r\n| Bob | Johnson |\r\n| Samantha | Davis |\r\n| Michael | Rodriguez |\r\n| Tom | Thompson |\r\n| Sara | Johnson |\r\n| David | Jones |\r\n| Jane | Smith |\r\n| Bob | Johnson |\r\n+------------+-----------+<\/code><\/pre>\n<\/div>\n<p>Die Namen Bob Johnson und Jane Smith kommen in der Tabelle doppelt vor. Um die einzelnen Personen eindeutig zu identifizieren, w\u00e4re ein zus\u00e4tzliches Identifikationsmerkmal erforderlich, und es gibt keine M\u00f6glichkeit, die Zeilen in dieser Tabelle eindeutig zu kennzeichnen. W\u00fcrde man eine Liste der Buchclubmitglieder auf Papier f\u00fchren, k\u00f6nnte man Hilfsidentifikatoren verwenden, um Personen mit \u00e4hnlichen Namen innerhalb der Gruppe zu unterscheiden.<\/p>\n<p>In einer relationalen Datenbank l\u00e4sst sich etwas \u00c4hnliches realisieren, indem man eine zus\u00e4tzliche Spalte verwendet, die generierte, nicht-reale IDs enth\u00e4lt, deren einziger Zweck darin besteht, alle Zeilen in der Tabelle eindeutig zu identifizieren. Nennen wir sie Member_id.<\/p>\n<p>Es ist jedoch m\u00fchsam, jedes Mal eine solche Kennung zu erstellen, wenn man ein weiteres Buchclubmitglied zur Datenbank hinzuf\u00fcgen m\u00f6chte. Um dieses Problem zu l\u00f6sen, bietet MySQL eine Funktion zur automatischen Inkrementierung numerischer Spalten. Dabei erh\u00f6ht die Datenbank den Spaltenwert automatisch um eine Folge von ganzen Zahlen.<\/p>\n<p>Erstellen wir eine Tabelle \u00e4hnlich der obigen. Sie f\u00fcgen eine zus\u00e4tzliche Spalte mit automatischer Inkrementierung (member_id) hinzu, die jedem Clubmitglied automatisch zugewiesene Nummern enth\u00e4lt. Diese automatisch zugewiesene Nummer dient als Prim\u00e4rschl\u00fcssel der Tabelle.<\/p>\n<p>Member_id: Diese Spalte verf\u00fcgt \u00fcber eine automatisch inkrementierende numerische ID, die vom Datentyp int dargestellt wird.<\/p>\n<p>first_name: Diese Spalte enth\u00e4lt den Vornamen der Clubmitglieder, dargestellt durch den Datentyp varchar mit einer maximalen L\u00e4nge von 50 Zeichen.<\/p>\n<p>Nachname: Diese Spalte enth\u00e4lt den Nachnamen der Clubmitglieder, der mit einem varchar-Datentyp angezeigt wird, der auf 50 Zeichen begrenzt ist.<\/p>\n<p>Um die Tabelle zu erstellen, f\u00fchren Sie die folgende SQL-Anweisung aus:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>CREATE TABLE club_members (\r\nmember_id int AUTO_INCREMENT PRIMARY KEY,\r\nfirst_name varchar(50),\r\nlast_name varchar(50)\r\n);<\/code><\/pre>\n<\/div>\n<p>Die PRIMARY KEY-Anweisung folgt zwar nach der Spaltentypdefinition, genau wie bei einem einspaltigen Prim\u00e4rschl\u00fcssel, jedoch steht davor ein zus\u00e4tzliches Attribut: AUTO_INCREMENT. Dieses weist MySQL an, Werte f\u00fcr diese Spalte automatisch zu generieren, sofern keine expliziten Werte angegeben werden. Dabei werden fortlaufend aufsteigende Zahlen verwendet.<\/p>\n<p><span style=\"color: #ff0000;\">Hinweis: Die AUTO_INCREMENT-Eigenschaft f\u00fcr Spaltendefinitionen ist spezifisch f\u00fcr MySQL. Andere Datenbanken bieten oft \u00e4hnliche Methoden zur Generierung sequenzieller Schl\u00fcssel, die Syntax variiert jedoch je nach Datenbanksystem. Im Zweifelsfall empfehlen wir, die offizielle Dokumentation Ihres RDBMS zu konsultieren.<\/span><\/p>\n<p><span style=\"color: #000000;\">Wenn die folgende Ausgabe gedruckt wird, wurde die Tabelle erstellt:<\/span><\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 0 rows affected (0.00 sec)<\/code><\/pre>\n<\/div>\n<p>Laden Sie anschlie\u00dfend die Tabelle mit den oben genannten Beispielzeilen, indem Sie die folgende INSERT INTO-Operation ausf\u00fchren:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO club_members (first_name, last_name) VALUES\r\n('John', 'Doe'),\r\n('Jane', 'Smith'),\r\n('Bob', 'Johnson'),\r\n('Samantha', 'Davis'),\r\n('Michael', 'Rodriguez'),\r\n('Tom', 'Thompson'),\r\n('Sara', 'Johnson'),\r\n('David', 'Jones'),\r\n('Jane', 'Smith'),\r\n('Bob', 'Johnson');<\/code><\/pre>\n<\/div>\n<p>Die INSERT-Anweisung enth\u00e4lt nun eine Liste der Spaltennamen (first_name und last_name), wodurch sichergestellt wird, dass die Datenbank wei\u00df, dass die Spalte Member_id im Datensatz nicht vorhanden ist, sodass stattdessen der Standardwert verwendet werden soll.<\/p>\n<p>Die Datenbank wird mit einer Erfolgsmeldung antworten:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 10 rows affected (0.002 sec)\r\nRecords: 10 Duplicates: 0 Warnings: 0<\/code><\/pre>\n<\/div>\n<p>Verwenden Sie die SELECT-Anweisung, um die Daten in der neu erstellten Tabelle zu \u00fcberpr\u00fcfen:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT * FROM club_members;\r\n<\/code><\/pre>\n<\/div>\n<p>Die Ausgabe zeigt eine Tabelle, die derjenigen am Anfang des Abschnitts \u00e4hnelt:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+-----------+------------+-----------+\r\n| member_id | first_name | last_name |\r\n+-----------+------------+-----------+\r\n| 1 | John | Doe |\r\n| 2 | Jane | Smith |\r\n| 3 | Bob | Johnson |\r\n| 4 | Samantha | Davis |\r\n| 5 | Michael | Rodriguez |\r\n| 6 | Tom | Thompson |\r\n| 7 | Sara | Johnson |\r\n| 8 | David | Jones |\r\n| 9 | Jane | Smith |\r\n| 10 | Bob | Johnson |\r\n+-----------+------------+-----------+\r\n10 rows in set (0.000 sec)<\/code><\/pre>\n<\/div>\n<p>Diesmal erscheint jedoch die Spalte Member_id im Ergebnis und enth\u00e4lt eine Zahlenfolge von 1 bis 10. Dank dieser Spalte sind die doppelten Zeilen f\u00fcr Jane Smith und Bob Johnson nicht mehr erkennbar, da jedem Namen eine eindeutige Kennung (Member_id) zugeordnet ist.<\/p>\n<p>Nun pr\u00fcfen wir, ob die Datenbank es uns erlaubt, einen weiteren Tom Thompson zur Mitgliederliste des Clubs hinzuzuf\u00fcgen:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>INSERT INTO club_members (first_name, last_name) VALUES ('Tom', 'Thompson');\r\n<\/code><\/pre>\n<\/div>\n<p>MySQL antwortet mit einer Erfolgsmeldung:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\nQuery OK, 1 row affected (0.009 sec)\r\n<\/code><\/pre>\n<\/div>\n<p>Um zu \u00fcberpr\u00fcfen, welche numerische ID die Datenbank dem neuen Eintrag zugewiesen hat, f\u00fchren Sie die SELECT-Abfrage erneut aus:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-sql\" data-lang=\"SQL\"><code>SELECT * FROM club_members;\r\n<\/code><\/pre>\n<\/div>\n<p>Die Ausgabe enth\u00e4lt noch eine weitere Zeile:<\/p>\n<div class=\"hcb_wrap\" data-no-translation=\"\" data-no-auto-translation=\"\">\n<pre class=\"prism line-numbers lang-plain\" data-lang=\"Plain Text\"><code>Output\r\n+-----------+------------+-----------+\r\n| member_id | first_name | last_name |\r\n+-----------+------------+-----------+\r\n| 1 | John | Doe |\r\n| 2 | Jane | Smith |\r\n| 3 | Bob | Johnson |\r\n| 4 | Samantha | Davis |\r\n| 5 | Michael | Rodriguez |\r\n| 6 | Tom | Thompson |\r\n| 7 | Sara | Johnson |\r\n| 8 | David | Jones |\r\n| 9 | Jane | Smith |\r\n| 10 | Bob | Johnson |\r\n| 11 | Tom | Thompson |\r\n+-----------+------------+-----------+\r\n11 rows in set (0.000 sec)<\/code><\/pre>\n<\/div>\n<p>\u00dcber das AUTO_INCREMENT-Attribut der Datenbank wurde automatisch eine neue Zeile mit der Nummer 11 in der Spalte Member_id erstellt.<\/p>\n<p>Wenn die Daten, mit denen Sie arbeiten, keine nat\u00fcrlichen Kandidaten f\u00fcr Prim\u00e4rschl\u00fcssel aufweisen und Sie nicht jedes Mal neue Kennungen erfinden m\u00f6chten, wenn Sie neue Daten zur Datenbank hinzuf\u00fcgen, k\u00f6nnen Sie getrost auf sequenziell generierte Kennungen als Prim\u00e4rschl\u00fcssel zur\u00fcckgreifen.<\/p>\n<h2 id=\"%d9%86%d8%aa%db%8c%d8%ac%d9%87\">Ergebnis<\/h2>\n<p>Durch Befolgen dieser Anleitung haben Sie gelernt, was Prim\u00e4rschl\u00fcssel sind und wie Sie in MySQL g\u00e4ngige Datentypen erstellen, um eindeutige Zeilen in Datenbanktabellen zu identifizieren. Sie haben nat\u00fcrliche Prim\u00e4rschl\u00fcssel erstellt, Prim\u00e4rschl\u00fcssel, die sich \u00fcber mehrere Spalten erstrecken, und automatisch inkrementierende sequentielle Schl\u00fcssel verwendet, wenn keine nat\u00fcrlichen Schl\u00fcssel vorhanden sind.<\/p>","protected":false},"excerpt":{"rendered":"Einleitung Eine der wertvollen Eigenschaften relationaler Datenbanken ist die Formatierung von Daten in einer klar definierten Struktur. Dies\u2026","protected":false},"author":1,"featured_media":15985,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_yoast_wpseo_focuskw":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL","_yoast_wpseo_title":"","_yoast_wpseo_metadesc":"","_yoast_wpseo_canonical":"","_yoast_wpseo_opengraph-description":"","_yoast_wpseo_opengraph-image":"","_yoast_wpseo_twitter-description":"","_yoast_wpseo_twitter-image":"","_yoast_wpseo_focuskeywords":"","_yoast_wpseo_primary_category":"193","footnotes":""},"categories":[193,349],"tags":[403,391],"class_list":{"0":"post-15984","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tutorials","8":"category-database","9":"tag-data-base","10":"tag-mysql"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.itpiran.net\/blog\/de\/tutorials\/how-to-use-primary-keys-in-sql\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"og:description\" content=\"\u0645\u0642\u062f\u0645\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc\u060c \u0642\u0627\u0644\u0628\u200c\u06af\u06cc\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0627\u0645\u0644\u0627\u064b \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.itpiran.net\/blog\/de\/tutorials\/how-to-use-primary-keys-in-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0628\u0644\u0627\u06af ITPiran\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-29T10:57:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.itpiran.net\/2024\/07\/29135935\/sql-key.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1793\" \/>\n\t<meta property=\"og:image:height\" content=\"1110\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\"},\"headline\":\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL\",\"datePublished\":\"2024-07-29T10:57:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/\"},\"wordCount\":140,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/29135935\\\/sql-key.jpg\",\"keywords\":[\"data base\",\"MySQL\"],\"articleSection\":[\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/\",\"name\":\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/29135935\\\/sql-key.jpg\",\"datePublished\":\"2024-07-29T10:57:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/29135935\\\/sql-key.jpg\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2024\\\/07\\\/29135935\\\/sql-key.jpg\",\"width\":1793,\"height\":1110},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/tutorials\\\/how-to-use-primary-keys-in-sql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0622\u0645\u0648\u0632\u0634\u06cc\",\"item\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/category\\\/tutorials\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"name\":\"\u0628\u0644\u0627\u06af ITPiran\",\"description\":\"\u0627\u062e\u0628\u0627\u0631 \u0648 \u0645\u0642\u0627\u0644\u0627\u062a \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#organization\",\"name\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\",\"alternateName\":\"ITPIran Blog\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"contentUrl\":\"https:\\\/\\\/cdn.itpiran.net\\\/2023\\\/12\\\/27150508\\\/cropped-ITPIRAN-BLOG-LOGO-2.png\",\"width\":512,\"height\":512,\"caption\":\"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646\"},\"image\":{\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/#\\\/schema\\\/person\\\/04ed27b919baca468a2273f8e4318f81\",\"name\":\"admin\",\"url\":\"https:\\\/\\\/www.itpiran.net\\\/blog\\\/de\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wie man Prim\u00e4rschl\u00fcssel in SQL verwendet \u2013 ITPiran-Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.itpiran.net\/blog\/de\/tutorials\/how-to-use-primary-keys-in-sql\/","og_locale":"de_DE","og_type":"article","og_title":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL - \u0628\u0644\u0627\u06af ITPiran","og_description":"\u0645\u0642\u062f\u0645\u0647 \u06cc\u06a9\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc\u060c \u0642\u0627\u0644\u0628\u200c\u06af\u06cc\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u062f\u0631 \u06cc\u06a9 \u0633\u0627\u062e\u062a\u0627\u0631 \u06a9\u0627\u0645\u0644\u0627\u064b \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646&hellip;","og_url":"https:\/\/www.itpiran.net\/blog\/de\/tutorials\/how-to-use-primary-keys-in-sql\/","og_site_name":"\u0628\u0644\u0627\u06af ITPiran","article_published_time":"2024-07-29T10:57:12+00:00","og_image":[{"width":1793,"height":1110,"url":"https:\/\/cdn.itpiran.net\/2024\/07\/29135935\/sql-key.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"admin","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#article","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/"},"author":{"name":"admin","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81"},"headline":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL","datePublished":"2024-07-29T10:57:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/"},"wordCount":140,"commentCount":0,"publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/29135935\/sql-key.jpg","keywords":["data base","MySQL"],"articleSection":["\u0622\u0645\u0648\u0632\u0634\u06cc","\u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/","url":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/","name":"Wie man Prim\u00e4rschl\u00fcssel in SQL verwendet \u2013 ITPiran-Blog","isPartOf":{"@id":"https:\/\/www.itpiran.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#primaryimage"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/29135935\/sql-key.jpg","datePublished":"2024-07-29T10:57:12+00:00","breadcrumb":{"@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#primaryimage","url":"https:\/\/cdn.itpiran.net\/2024\/07\/29135935\/sql-key.jpg","contentUrl":"https:\/\/cdn.itpiran.net\/2024\/07\/29135935\/sql-key.jpg","width":1793,"height":1110},{"@type":"BreadcrumbList","@id":"https:\/\/www.itpiran.net\/blog\/tutorials\/how-to-use-primary-keys-in-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.itpiran.net\/blog\/"},{"@type":"ListItem","position":2,"name":"\u0622\u0645\u0648\u0632\u0634\u06cc","item":"https:\/\/www.itpiran.net\/blog\/category\/tutorials\/"},{"@type":"ListItem","position":3,"name":"\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u062f\u0631 SQL"}]},{"@type":"WebSite","@id":"https:\/\/www.itpiran.net\/blog\/#website","url":"https:\/\/www.itpiran.net\/blog\/","name":"ITPiran Blog","description":"Iranische Nachrichten und Artikel zum Thema nachhaltiger Handel","publisher":{"@id":"https:\/\/www.itpiran.net\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.itpiran.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.itpiran.net\/blog\/#organization","name":"Nachhaltiger iranischer Unternehmensblog","alternateName":"ITPIran Blog","url":"https:\/\/www.itpiran.net\/blog\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","contentUrl":"https:\/\/cdn.itpiran.net\/2023\/12\/27150508\/cropped-ITPIRAN-BLOG-LOGO-2.png","width":512,"height":512,"caption":"\u0628\u0644\u0627\u06af \u062a\u062c\u0627\u0631\u062a \u067e\u0627\u06cc\u062f\u0627\u0631 \u0627\u06cc\u0631\u0627\u0646\u06cc\u0627\u0646"},"image":{"@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.itpiran.net\/blog\/#\/schema\/person\/04ed27b919baca468a2273f8e4318f81","name":"Administrator","url":"https:\/\/www.itpiran.net\/blog\/de\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/posts\/15984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/comments?post=15984"}],"version-history":[{"count":2,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/posts\/15984\/revisions"}],"predecessor-version":[{"id":15987,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/posts\/15984\/revisions\/15987"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/media\/15985"}],"wp:attachment":[{"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/media?parent=15984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/categories?post=15984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itpiran.net\/blog\/de\/wp-json\/wp\/v2\/tags?post=15984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}