Die Beispiel-Shopdatenbank

Alle Beispiele laufen auf derselben Webshop-Datenbank mit Kunden, Produktkatalog, Bestellungen und Personal. Sie enthält etwa 50.000 Zeilen, sodass sich Gruppierungen und Indizes unter realistischen Bedingungen beobachten lassen.

Nutzen Sie diese Seite, um beim Schreiben von Abfragen Tabellen und Spalten nachzuschlagen.

Die folgenden Angaben werden direkt aus der Beispieldatei gelesen und entsprechen der Datenbank, die Sie in der App öffnen.

Spaltennamen in Festbreitenschrift sind die, die Sie tippen. Die Spalte "Hinweise" zeigt, was die Datenbank über die jeweilige Spalte weiß:

  • Primärschlüssel – identifiziert die Zeile. Kommt nie doppelt vor und ist nie leer.
  • Pflichtfeld – die Spalte darf nicht leer bleiben (NOT NULL). Alles ohne diese Markierung darf NULL enthalten, und darum geht es in der Lektion zum Filtern.
  • → tabelle.spalte – ein Fremdschlüssel: Diese Spalte enthält einen Wert aus jener anderen Tabelle. Joins folgen genau diesen Verweisen.
  • eindeutig – keine zwei Zeilen dürfen denselben Wert haben. Ein Upsert erkennt daran den Konflikt.
  • indiziert – die Datenbank hält eine sortierte Kopie dieser Spalte vor, deshalb sind Filtern und Sortieren darauf schnell. Die letzte Lektion erklärt, was das heißt.

Katalog

categories 33 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
nameTEXTPflichtfeld, eindeutig
descriptionTEXT
parent_idINTEGER→ categories.id, indiziert
sort_orderINTEGERPflichtfeld, Standard 0
is_activeINTEGERPflichtfeld, Standard 1

products 400 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
category_idINTEGER→ categories.id, Pflichtfeld, indiziert
nameTEXTPflichtfeld
descriptionTEXT
skuTEXTPflichtfeld, eindeutig
priceREALPflichtfeld, indiziert, Standard 0
costREALPflichtfeld, Standard 0
stock_quantityINTEGERPflichtfeld, Standard 0
weight_kgREAL
attributesTEXT
is_activeINTEGERPflichtfeld, Standard 1
created_atTEXTPflichtfeld
updated_atTEXTPflichtfeld

product_images 1.024 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
product_idINTEGER→ products.id, Pflichtfeld, indiziert
urlTEXTPflichtfeld
alt_textTEXT
sort_orderINTEGERPflichtfeld, Standard 0
is_primaryINTEGERPflichtfeld, Standard 0

tags 15 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
nameTEXTPflichtfeld, eindeutig

product_tags 624 Zeilen

SpalteTypHinweise
product_idINTEGERPrimärschlüssel, → products.id
tag_idINTEGERPrimärschlüssel, → tags.id

suppliers 12 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
nameTEXTPflichtfeld
contact_nameTEXT
emailTEXT
phoneTEXT
countryTEXT
ratingREAL
is_activeINTEGERPflichtfeld, Standard 1

product_suppliers 579 Zeilen

SpalteTypHinweise
product_idINTEGERPrimärschlüssel, → products.id
supplier_idINTEGERPrimärschlüssel, → suppliers.id
supplier_skuTEXT
unit_costREALPflichtfeld
lead_time_daysINTEGERPflichtfeld, Standard 7

inventory_logs 11.547 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
product_idINTEGER→ products.id, Pflichtfeld, indiziert
change_qtyINTEGERPflichtfeld
reasonTEXTPflichtfeld
referenceTEXT
employee_idINTEGER→ employees.id
logged_atTEXTPflichtfeld, indiziert

Kunden

customers 1.500 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
first_nameTEXTPflichtfeld, indiziert
last_nameTEXTPflichtfeld, indiziert
emailTEXTPflichtfeld, eindeutig
phoneTEXT
birth_dateTEXT
countryTEXTPflichtfeld, indiziert, Standard 'US'
marketing_opt_inINTEGERPflichtfeld, Standard 0
loyalty_pointsINTEGERPflichtfeld, Standard 0
created_atTEXTPflichtfeld
updated_atTEXTPflichtfeld

addresses 1.959 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
customer_idINTEGER→ customers.id, Pflichtfeld, indiziert
labelTEXTPflichtfeld, Standard 'home'
line1TEXTPflichtfeld
line2TEXT
cityTEXTPflichtfeld
postal_codeTEXT
countryTEXTPflichtfeld
is_defaultINTEGERPflichtfeld, Standard 0

wishlists 2.493 Zeilen

SpalteTypHinweise
customer_idINTEGERPrimärschlüssel, → customers.id
product_idINTEGERPrimärschlüssel, → products.id
added_atTEXTPflichtfeld

reviews 2.992 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
product_idINTEGER→ products.id, Pflichtfeld, eindeutig
customer_idINTEGER→ customers.id, Pflichtfeld, eindeutig
ratingINTEGERPflichtfeld
titleTEXT
bodyTEXT
is_verifiedINTEGERPflichtfeld, Standard 0
helpful_votesINTEGERPflichtfeld, Standard 0
created_atTEXTPflichtfeld

notifications 3.000 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
customer_idINTEGER→ customers.id, Pflichtfeld, indiziert
typeTEXTPflichtfeld
titleTEXTPflichtfeld
bodyTEXT
is_readINTEGERPflichtfeld, indiziert, Standard 0
created_atTEXTPflichtfeld

Bestellungen

orders 4.000 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
order_numberTEXTPflichtfeld, eindeutig
customer_idINTEGER→ customers.id, Pflichtfeld, indiziert
address_idINTEGER→ addresses.id
shipping_method_idINTEGER→ shipping_methods.id
coupon_idINTEGER→ coupons.id
statusTEXTPflichtfeld, indiziert
subtotalREALPflichtfeld, Standard 0
discountREALPflichtfeld, Standard 0
shipping_costREALPflichtfeld, Standard 0
totalREALPflichtfeld, Standard 0
notesTEXT
ordered_atTEXTPflichtfeld, indiziert
updated_atTEXTPflichtfeld

order_items 12.091 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
order_idINTEGER→ orders.id, Pflichtfeld, eindeutig
product_idINTEGER→ products.id, Pflichtfeld, eindeutig
quantityINTEGERPflichtfeld
unit_priceREALPflichtfeld

payments 3.651 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
order_idINTEGER→ orders.id, Pflichtfeld, indiziert
methodTEXTPflichtfeld
amountREALPflichtfeld
currencyTEXTPflichtfeld, Standard 'USD'
statusTEXTPflichtfeld
transaction_refTEXT
paid_atTEXT

shipments 2.319 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
order_idINTEGER→ orders.id, Pflichtfeld, indiziert
carrierTEXTPflichtfeld
tracking_numberTEXT
shipped_atTEXT
delivered_atTEXT

shipping_methods 5 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
nameTEXTPflichtfeld, eindeutig
base_costREALPflichtfeld
est_daysINTEGERPflichtfeld
is_activeINTEGERPflichtfeld, Standard 1

coupons 10 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
codeTEXTPflichtfeld, eindeutig
discount_typeTEXTPflichtfeld
discount_valueREALPflichtfeld
min_orderREALPflichtfeld, Standard 0
starts_atTEXTPflichtfeld
ends_atTEXTPflichtfeld
max_usesINTEGER
used_countINTEGERPflichtfeld, Standard 0

Personal

departments 10 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
nameTEXTPflichtfeld, eindeutig
descriptionTEXT
created_atTEXTPflichtfeld

employees 120 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
department_idINTEGER→ departments.id, Pflichtfeld, indiziert
manager_idINTEGER→ employees.id, indiziert
first_nameTEXTPflichtfeld
last_nameTEXTPflichtfeld
emailTEXTPflichtfeld, eindeutig
phoneTEXT
hire_dateTEXTPflichtfeld
salaryREALPflichtfeld, Standard 0
positionTEXT
is_activeINTEGERPflichtfeld, Standard 1

audit_logs 2.000 Zeilen

SpalteTypHinweise
idINTEGERPrimärschlüssel
employee_idINTEGER→ employees.id
actionTEXTPflichtfeld
table_nameTEXTPflichtfeld, indiziert
record_idINTEGERindiziert
old_valuesTEXT
new_valuesTEXT
ip_addressTEXT
created_atTEXTPflichtfeld

Einstellungen

settings 8 Zeilen

SpalteTypHinweise
keyTEXTPrimärschlüssel
valueTEXTPflichtfeld
descriptionTEXT
updated_atTEXTPflichtfeld

Sichten

Eine Sicht ist eine gespeicherte Abfrage, die sich wie eine Tabelle verhält: Sie können sie mit SELECT lesen, aber eigene Zeilen liegen nirgends gespeichert. Diese vier fassen die Tabellen oben zusammen.

v_customer_lifetime 1.500 Zeilen

SpalteTypHinweise
customer_idINTEGER
customerTEXT
countryTEXT
ordersTEXT
revenueTEXT
first_orderTEXT
last_orderTEXT

v_low_stock 44 Zeilen

SpalteTypHinweise
idINTEGER
skuTEXT
nameTEXT
stock_quantityINTEGER
categoryTEXT

v_order_summary 4.000 Zeilen

SpalteTypHinweise
order_idINTEGER
order_numberTEXT
statusTEXT
ordered_atTEXT
customerTEXT
countryTEXT
itemsTEXT
totalREAL

v_product_sales 400 Zeilen

SpalteTypHinweise
product_idINTEGER
nameTEXT
skuTEXT
categoryTEXT
units_soldTEXT
revenueTEXT
avg_ratingTEXT
review_countTEXT