> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baenninger.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Primärschlüssel

Der `PRIMARY KEY`-Constraint erstellt einen Primärschlüssel in der Tabelle. Eine Tabelle kann dabei nur einen Primärschlüssel haben.

```sql theme={null}
CREATE TABLE Persons (
    Id INTEGER NOT NULL,
    LastName VARCHAR(45) NOT NULL,
    FirstName VARCHAR(45),
    Age INTEGER,
    CONSTRAINT PK_Person PRIMARY KEY (Id)
);
```

```sql theme={null}
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (FirstName, LastName);
```

<Info>
  Hier erstellen wir einen Primärschlüssel, welcher aus zwei Werten besteht (zusammengesetzter Primärschlüssel).

  Zudem ist wichtig zu beachten, dass wenn man `ALTER TABLE` nutzt, dass die Werte **nicht `NULL`** sind.
</Info>

```sql theme={null}
ALTER TABLE Persons
DROP PRIMARY KEY;
```

## `AUTO_INCREMENT`

Mit `AUTO_INCREMENT` können wir eine einzigartige Zahl automatisch generieren, wenn ein neuer Datensatz erstellt wird. Es wird oftmals in Kombination mit dem Primärschlüssel verwendet.

```sql theme={null}
CREATE TABLE Person (
    PersonID INTEGER AUTO_INCREMENT,
    LastName VARCHAR(255) NOT NULL,
    FirstName VARCHAR(255),
    Age INTEGER,
    CONSTRAINT PK_Person PRIMARY KEY (PersonID)
);
```
