DDL
CREATE DATABASE
CREATE DATABASE shop_db;
CREATE TABLE
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Beispiel mit Constraints
CREATE TABLE Projekt (
id CHAR(2) NOT NULL,
bezeichnung VARCHAR(30) NOT NULL,
mittel MONEY NULL,
kd_id INT NULL,
CONSTRAINT pk_projekt
PRIMARY KEY (id),
CONSTRAINT fk_projekt_kunde
FOREIGN KEY (kd_id) REFERENCES Kunde (id)
);
GO
ALTER TABLE
Ändert eine bestehende Tabelle (z. B. Spalte hinzufügen).
ALTER TABLE table_name
ADD column_name datatype;
ALTER TABLE table_name
DROP COLUMN column_name;
ALTER TABLE table_name
MODIFY column_definition;
ALTER TABLE table_name
DROP CONSTRAINT key_name;
ALTER TABLE
ADD CONSTRAINT key_name
FOREIGN KEY column_name
REFERENCES ref_table_name (ref_column_name)
ON DELETE CASCADE;
Beispiele
-- Spalte hinzufügen
ALTER TABLE Customers
ADD Email varchar(255);
-- Spalte löschen
ALTER TABLE Customers
DROP COLUMN Email;
-- Spalte verändern
ALTER TABLE employees
MODIFY name VARCHAR(100);
DROP TABLE
-- Datenbank löschen
DROP DATABASE databasename IF EXISTS
-- Tabelle löschen
DROP TABLE tablename IF EXISTS
TRUNCATE TABLE
Löscht alle Daten aus einer Tabelle, behält aber die Struktur bei. Im Gegensatz zu DELETE ist TRUNCATE schneller und setzt Zählerwerte zurück.
TRUNCATE TABLE customers;
CREATE INDEX
Erstellt einen Index zur Optimierung der Abfragen.
CREATE INDEX idx_customers_email ON customers(email);
DROP INDEX
Löscht einen bestehenden Index.
DROP INDEX IF EXISTS idx_customers_email;
CREATE VIEW
Erstellt eine virtuelle Tabelle basierend auf einer Abfrage.
CREATE VIEW active_customers AS
SELECT id, name, email FROM customers WHERE active = TRUE;
DROP VIEW
Löscht eine bestehende View.
DROP VIEW IF EXISTS active_customers;
CREATE SCHEMA
Erstellt ein neues Schema zur Strukturierung von Datenbanken.
CREATE SCHEMA sales;
DROP SCHEMA
Löscht ein Schema und optional alle enthaltenen Objekte.
DROP SCHEMA IF EXISTS sales CASCADE;