In diesem Lab werden wir die Erstellung von PostgreSQL-Tabellen und Datentypen untersuchen. Ziel ist es, grundlegende Datentypen wie Integer (Ganzzahlen), Text, Datumsangaben und Boolesche Werte zu verstehen, die für die Definition von Tabellenstrukturen und die Sicherstellung der Datenintegrität entscheidend sind.
Wir werden uns mit psql mit der PostgreSQL-Datenbank verbinden, Tabellen mit Primärschlüsseln unter Verwendung von SERIAL erstellen und grundlegende Constraints (Beschränkungen) wie NOT NULL und UNIQUE hinzufügen. Anschließend werden wir die Tabellenstruktur inspizieren und Daten einfügen, um die Verwendung verschiedener Datentypen wie INTEGER, SMALLINT, TEXT, VARCHAR(n) und CHAR(n) zu demonstrieren.
Skills Graph
%%%%{init: {'theme':'neutral'}}%%%%
flowchart RL
postgresql(("PostgreSQL")) -.-> postgresql/PostgreSQLGroup(["PostgreSQL"])
postgresql/PostgreSQLGroup -.-> postgresql/table_init("Create Basic Table")
postgresql/PostgreSQLGroup -.-> postgresql/col_int("Add Integer Column")
postgresql/PostgreSQLGroup -.-> postgresql/col_text("Add Text Column")
postgresql/PostgreSQLGroup -.-> postgresql/col_date("Add Date Column")
postgresql/PostgreSQLGroup -.-> postgresql/key_primary("Set Primary Key")
postgresql/PostgreSQLGroup -.-> postgresql/row_add("Insert One Row")
postgresql/PostgreSQLGroup -.-> postgresql/data_all("Select All Data")
postgresql/PostgreSQLGroup -.-> postgresql/col_add("Add New Column")
subgraph Lab Skills
postgresql/table_init -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/col_int -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/col_text -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/col_date -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/key_primary -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/row_add -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/data_all -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
postgresql/col_add -.-> lab-550901{{"PostgreSQL Tabellenerstellung und Datentypen"}}
end
PostgreSQL-Datentypen erkunden
In diesem Schritt werden wir einige der grundlegenden Datentypen untersuchen, die in PostgreSQL verfügbar sind. Das Verständnis von Datentypen ist entscheidend für die Definition von Tabellenstrukturen und die Sicherstellung der Datenintegrität. Wir werden gängige Typen wie Integer (Ganzzahlen), Text, Datumsangaben und Boolesche Werte behandeln.
Zuerst verbinden wir uns mit der PostgreSQL-Datenbank. Öffnen Sie ein Terminal und verwenden Sie den Befehl psql, um sich als Benutzer postgres mit der Datenbank postgres zu verbinden. Da der Benutzer postgres der standardmäßige Superuser ist, müssen Sie möglicherweise zuerst sudo verwenden, um zu diesem Benutzer zu wechseln.
sudo -u postgres psql
Sie sollten sich nun im interaktiven PostgreSQL-Terminal befinden. Sie sehen eine Eingabeaufforderung wie postgres=#.
Lassen Sie uns nun einige grundlegende Datentypen erkunden.
1. Integer-Typen (Ganzzahltypen):
PostgreSQL bietet verschiedene Integer-Typen mit unterschiedlichen Bereichen. Die gebräuchlichsten sind INTEGER (oder INT) und SMALLINT.
INTEGER: Eine typische Wahl für die meisten ganzzahligen Werte.
SMALLINT: Wird für kleinere ganzzahlige Werte verwendet, um Speicherplatz zu sparen.
Erstellen wir eine einfache Tabelle, um diese Typen zu demonstrieren:
CREATE TABLE integer_example (
id SERIAL PRIMARY KEY,
quantity INTEGER,
small_quantity SMALLINT
);
Hier ist SERIAL ein spezieller Typ, der automatisch eine Folge von ganzen Zahlen generiert und sich daher für Primärschlüssel eignet.
Fügen wir nun einige Daten ein:
INSERT INTO integer_example (quantity, small_quantity) VALUES (100, 10);
INSERT INTO integer_example (quantity, small_quantity) VALUES (2000000, 32767);
Sie können die Daten mit folgendem Befehl anzeigen:
Der Typ BOOLEAN speichert Wahrheitswerte (true/false).
Erstellen Sie eine Tabelle:
CREATE TABLE boolean_example (
id SERIAL PRIMARY KEY,
is_active BOOLEAN
);
Daten einfügen:
INSERT INTO boolean_example (is_active) VALUES (TRUE);
INSERT INTO boolean_example (is_active) VALUES (FALSE);
Zeigen Sie die Daten an:
SELECT * FROM boolean_example;
Ausgabe:
id | is_active
----+-----------
1 | t
2 | f
(2 rows)
Beenden Sie abschließend das psql-Terminal:
\q
Sie haben nun einige der grundlegenden Datentypen in PostgreSQL erkundet. Diese Datentypen bilden die Bausteine für die Erstellung robuster und wohldefinierter Datenbankschemata.
Tabellen mit Primärschlüsseln erstellen
In diesem Schritt lernen wir, wie man Tabellen mit Primärschlüsseln in PostgreSQL erstellt. Ein Primärschlüssel ist eine Spalte oder eine Menge von Spalten, die jede Zeile in einer Tabelle eindeutig identifiziert. Er erzwingt Eindeutigkeit und dient als entscheidendes Element für die Datenintegrität und die Beziehungen zwischen Tabellen.
Zuerst verbinden wir uns mit der PostgreSQL-Datenbank. Öffnen Sie ein Terminal und verwenden Sie den Befehl psql, um sich als Benutzer postgres mit der Datenbank postgres zu verbinden.
sudo -u postgres psql
Sie sollten sich nun im interaktiven PostgreSQL-Terminal befinden.
Grundlegendes zu Primärschlüsseln
Ein Primärschlüssel hat die folgenden Eigenschaften:
Er muss eindeutige Werte enthalten.
Er darf keine NULL-Werte enthalten.
Eine Tabelle kann nur einen Primärschlüssel haben.
Erstellen einer Tabelle mit einem Primärschlüssel
Es gibt zwei gängige Möglichkeiten, einen Primärschlüssel beim Erstellen einer Tabelle zu definieren:
Verwenden des PRIMARY KEY-Constraints (Beschränkung) innerhalb der Spaltendefinition:
In diesem Beispiel wird product_id als Primärschlüssel mithilfe des PRIMARY KEY-Constraints definiert. Das Schlüsselwort SERIAL erstellt automatisch eine Sequenz, um eindeutige ganzzahlige Werte für die product_id zu generieren.
Dies demonstriert den PRIMARY KEY-Constraint in Aktion, der doppelte Werte verhindert.
Beenden Sie abschließend das psql-Terminal:
\q
Sie haben nun erfolgreich eine Tabelle mit einem Primärschlüssel erstellt und beobachtet, wie dieser die Eindeutigkeit erzwingt. Dies ist ein grundlegendes Konzept im Datenbankdesign.
In diesem Schritt lernen wir, wie man grundlegende Constraints zu Tabellen in PostgreSQL hinzufügt. Constraints (Beschränkungen) sind Regeln, die die Datenintegrität und -konsistenz erzwingen. Wir werden uns auf zwei grundlegende Constraints konzentrieren: NOT NULL und UNIQUE.
Zuerst verbinden wir uns mit der PostgreSQL-Datenbank. Öffnen Sie ein Terminal und verwenden Sie den Befehl psql, um sich als Benutzer postgres mit der Datenbank postgres zu verbinden.
sudo -u postgres psql
Sie sollten sich nun im interaktiven PostgreSQL-Terminal befinden.
Grundlegendes zu Constraints
Constraints werden verwendet, um die Art der Daten zu begrenzen, die in eine Tabelle eingefügt werden können. Dies gewährleistet die Genauigkeit und Zuverlässigkeit der Daten in der Datenbank.
1. NOT NULL Constraint
Der NOT NULL-Constraint stellt sicher, dass eine Spalte keine NULL-Werte enthalten kann. Dies ist nützlich, wenn eine bestimmte Information für jede Zeile in der Tabelle unerlässlich ist.
2. UNIQUE Constraint
Der UNIQUE-Constraint stellt sicher, dass alle Werte in einer Spalte unterschiedlich sind. Dies ist nützlich für Spalten, die eindeutige Kennungen oder Werte haben sollten, wie z. B. Benutzernamen oder E-Mail-Adressen (neben dem Primärschlüssel).
Hinzufügen von Constraints während der Tabellenerstellung
Sie können Constraints hinzufügen, wenn Sie eine Tabelle erstellen. Erstellen wir eine Tabelle namens employees mit NOT NULL- und UNIQUE-Constraints:
CREATE TABLE employees (
employee_id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
hire_date DATE
);
In dieser Tabelle:
employee_id ist der Primärschlüssel.
first_name und last_name werden als NOT NULL deklariert, was bedeutet, dass sie für jeden Mitarbeiter einen Wert haben müssen.
email wird als UNIQUE deklariert, wodurch sichergestellt wird, dass jeder Mitarbeiter eine eindeutige E-Mail-Adresse hat.
Versuchen wir nun, einige Daten einzufügen, die gegen diese Constraints verstoßen.
Versuch, einen NULL-Wert in eine NOT NULL-Spalte einzufügen:
employee_id | first_name | last_name | email | hire_date
-------------+------------+-----------+---------------------+------------
1 | John | Smith | [email protected] | 2023-10-27
2 | Jane | Doe | [email protected] | 2023-10-28
(2 rows)
Beenden Sie abschließend das psql-Terminal:
\q
Sie haben nun erfolgreich eine Tabelle mit NOT NULL- und UNIQUE-Constraints erstellt und beobachtet, wie diese die Datenintegrität erzwingen.
Tabellenstruktur untersuchen
In diesem Schritt lernen wir, wie man die Struktur von Tabellen in PostgreSQL untersucht. Das Verständnis der Struktur einer Tabelle, einschließlich Spaltennamen, Datentypen, Constraints (Beschränkungen) und Indizes, ist für das effektive Abfragen und Bearbeiten von Daten unerlässlich.
Zuerst verbinden wir uns mit der PostgreSQL-Datenbank. Öffnen Sie ein Terminal und verwenden Sie den Befehl psql, um sich als Benutzer postgres mit der Datenbank postgres zu verbinden.
sudo -u postgres psql
Sie sollten sich nun im interaktiven PostgreSQL-Terminal befinden.
Der Befehl \d
Das wichtigste Werkzeug zum Untersuchen der Tabellenstruktur in psql ist der Befehl \d (describe - beschreiben). Dieser Befehl liefert detaillierte Informationen über eine Tabelle, einschließlich:
Untersuchen wir die Struktur der Tabelle employees, die wir im vorherigen Schritt erstellt haben:
\d employees
Ausgabe:
Table "public.employees"
Column | Type | Collation | Nullable | Default
-------------+------------------------+-----------+----------+------------------------------------------------
employee_id | integer | | not null | nextval('employees_employee_id_seq'::regclass)
first_name | character varying(50) | | not null |
last_name | character varying(50) | | not null |
email | character varying(100) | | |
hire_date | date | | |
Indexes:
"employees_pkey" PRIMARY KEY, btree (employee_id)
"employees_email_key" UNIQUE CONSTRAINT, btree (email)
Die Ausgabe liefert die folgenden Informationen:
Table "public.employees": Gibt den Tabellennamen und das Schema an.
Column: Listet die Spaltennamen auf (employee_id, first_name, last_name, email, hire_date).
Type: Zeigt den Datentyp jeder Spalte an (integer, character varying, date).
Nullable: Gibt an, ob eine Spalte NULL-Werte enthalten kann (not null oder leer).
Default: Zeigt den Standardwert für eine Spalte an (falls vorhanden).
Indexes: Listet die für die Tabelle definierten Indizes auf, einschließlich des Primärschlüssels (employees_pkey) und des Unique Constraints für die Spalte email (employees_email_key).
Untersuchen anderer Tabellen
Sie können den Befehl \d verwenden, um jede Tabelle in der Datenbank zu untersuchen. Um beispielsweise die Tabelle users zu untersuchen, die in Schritt 2 erstellt wurde:
Um alle Tabellen in der aktuellen Datenbank aufzulisten, können Sie den Befehl \dt verwenden:
\dt
Ausgabe (variiert je nach den von Ihnen erstellten Tabellen):
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+----------
public | boolean_example | table | postgres
public | customers | table | postgres
public | datetime_example | table | postgres
public | employees | table | postgres
public | integer_example | table | postgres
public | products | table | postgres
public | text_example | table | postgres
public | users | table | postgres
(8 rows)
Beenden Sie abschließend das psql-Terminal:
\q
Sie haben nun gelernt, wie man die Struktur von Tabellen in PostgreSQL mit den Befehlen \d und \dt untersucht. Dies ist eine grundlegende Fähigkeit, um Datenbanken zu verstehen und mit ihnen zu arbeiten.
Zusammenfassung
In diesem Lab haben wir grundlegende PostgreSQL-Datentypen untersucht, wobei wir uns auf Ganzzahlen und Text konzentriert haben. Wir haben INTEGER und SMALLINT zum Speichern von ganzzahligen Werten kennengelernt und ihre unterschiedlichen Bereiche und Anwendungsfälle verstanden. Wir haben auch TEXT, VARCHAR(n) und CHAR(n) für die Handhabung von Textdaten untersucht und die Unterschiede zwischen Zeichenketten variabler Länge und fester Länge festgestellt.
Darüber hinaus haben wir das Erstellen von Tabellen mit diesen Datentypen geübt, einschließlich der Verwendung von SERIAL zur automatischen Generierung von Primärschlüsselsequenzen. Wir haben Beispieldaten in die Tabellen eingefügt und die Daten mit SELECT-Anweisungen verifiziert, wodurch wir unser Verständnis des Verhaltens dieser Datentypen in einem praktischen Datenbankkontext gefestigt haben.