La base de démonstration

Tous les exemples utilisent la même base : une boutique en ligne, avec ses clients, son catalogue, ses commandes et son personnel. Ses quelque 50 000 lignes suffisent pour observer le comportement des regroupements et des index.

Gardez cette page à portée de main. Elle permet de vérifier les colonnes disponibles quand vous commencez à écrire vos propres requêtes.

Les informations ci-dessous sont lues dans le fichier de la base : elles correspondent donc à la base ouverte dans les exemples.

Les noms de colonnes en police à chasse fixe sont ceux que vous taperez. La colonne des remarques indique ce que la base sait de chacune :

  • clé primaire — identifie la ligne. Jamais répétée, jamais vide.
  • obligatoire — la colonne ne peut pas rester vide (NOT NULL). Tout ce qui n’a pas cette mention peut contenir NULL, et c’est le sujet de la leçon sur le filtrage.
  • → table.colonne — une clé étrangère : cette colonne contient une valeur venant de cette autre table. Les jointures suivent ces liens.
  • unique — deux lignes ne peuvent pas partager cette valeur. C’est là-dessus qu’un upsert détecte un conflit.
  • indexée — la base conserve une copie triée de cette colonne, ce qui rend le filtrage et le tri rapides. La dernière leçon explique ce que cela signifie.

Catalogue

categories 33 lignes

ColonneTypeRemarques
idINTEGERclé primaire
nameTEXTobligatoire, unique
descriptionTEXT
parent_idINTEGER→ categories.id, indexée
sort_orderINTEGERobligatoire, défaut 0
is_activeINTEGERobligatoire, défaut 1

products 400 lignes

ColonneTypeRemarques
idINTEGERclé primaire
category_idINTEGER→ categories.id, obligatoire, indexée
nameTEXTobligatoire
descriptionTEXT
skuTEXTobligatoire, unique
priceREALobligatoire, indexée, défaut 0
costREALobligatoire, défaut 0
stock_quantityINTEGERobligatoire, défaut 0
weight_kgREAL
attributesTEXT
is_activeINTEGERobligatoire, défaut 1
created_atTEXTobligatoire
updated_atTEXTobligatoire

product_images 1 024 lignes

ColonneTypeRemarques
idINTEGERclé primaire
product_idINTEGER→ products.id, obligatoire, indexée
urlTEXTobligatoire
alt_textTEXT
sort_orderINTEGERobligatoire, défaut 0
is_primaryINTEGERobligatoire, défaut 0

tags 15 lignes

ColonneTypeRemarques
idINTEGERclé primaire
nameTEXTobligatoire, unique

product_tags 624 lignes

ColonneTypeRemarques
product_idINTEGERclé primaire, → products.id
tag_idINTEGERclé primaire, → tags.id

suppliers 12 lignes

ColonneTypeRemarques
idINTEGERclé primaire
nameTEXTobligatoire
contact_nameTEXT
emailTEXT
phoneTEXT
countryTEXT
ratingREAL
is_activeINTEGERobligatoire, défaut 1

product_suppliers 579 lignes

ColonneTypeRemarques
product_idINTEGERclé primaire, → products.id
supplier_idINTEGERclé primaire, → suppliers.id
supplier_skuTEXT
unit_costREALobligatoire
lead_time_daysINTEGERobligatoire, défaut 7

inventory_logs 11 547 lignes

ColonneTypeRemarques
idINTEGERclé primaire
product_idINTEGER→ products.id, obligatoire, indexée
change_qtyINTEGERobligatoire
reasonTEXTobligatoire
referenceTEXT
employee_idINTEGER→ employees.id
logged_atTEXTobligatoire, indexée

Clients

customers 1 500 lignes

ColonneTypeRemarques
idINTEGERclé primaire
first_nameTEXTobligatoire, indexée
last_nameTEXTobligatoire, indexée
emailTEXTobligatoire, unique
phoneTEXT
birth_dateTEXT
countryTEXTobligatoire, indexée, défaut 'US'
marketing_opt_inINTEGERobligatoire, défaut 0
loyalty_pointsINTEGERobligatoire, défaut 0
created_atTEXTobligatoire
updated_atTEXTobligatoire

addresses 1 959 lignes

ColonneTypeRemarques
idINTEGERclé primaire
customer_idINTEGER→ customers.id, obligatoire, indexée
labelTEXTobligatoire, défaut 'home'
line1TEXTobligatoire
line2TEXT
cityTEXTobligatoire
postal_codeTEXT
countryTEXTobligatoire
is_defaultINTEGERobligatoire, défaut 0

wishlists 2 493 lignes

ColonneTypeRemarques
customer_idINTEGERclé primaire, → customers.id
product_idINTEGERclé primaire, → products.id
added_atTEXTobligatoire

reviews 2 992 lignes

ColonneTypeRemarques
idINTEGERclé primaire
product_idINTEGER→ products.id, obligatoire, unique
customer_idINTEGER→ customers.id, obligatoire, unique
ratingINTEGERobligatoire
titleTEXT
bodyTEXT
is_verifiedINTEGERobligatoire, défaut 0
helpful_votesINTEGERobligatoire, défaut 0
created_atTEXTobligatoire

notifications 3 000 lignes

ColonneTypeRemarques
idINTEGERclé primaire
customer_idINTEGER→ customers.id, obligatoire, indexée
typeTEXTobligatoire
titleTEXTobligatoire
bodyTEXT
is_readINTEGERobligatoire, indexée, défaut 0
created_atTEXTobligatoire

Commandes

orders 4 000 lignes

ColonneTypeRemarques
idINTEGERclé primaire
order_numberTEXTobligatoire, unique
customer_idINTEGER→ customers.id, obligatoire, indexée
address_idINTEGER→ addresses.id
shipping_method_idINTEGER→ shipping_methods.id
coupon_idINTEGER→ coupons.id
statusTEXTobligatoire, indexée
subtotalREALobligatoire, défaut 0
discountREALobligatoire, défaut 0
shipping_costREALobligatoire, défaut 0
totalREALobligatoire, défaut 0
notesTEXT
ordered_atTEXTobligatoire, indexée
updated_atTEXTobligatoire

order_items 12 091 lignes

ColonneTypeRemarques
idINTEGERclé primaire
order_idINTEGER→ orders.id, obligatoire, unique
product_idINTEGER→ products.id, obligatoire, unique
quantityINTEGERobligatoire
unit_priceREALobligatoire

payments 3 651 lignes

ColonneTypeRemarques
idINTEGERclé primaire
order_idINTEGER→ orders.id, obligatoire, indexée
methodTEXTobligatoire
amountREALobligatoire
currencyTEXTobligatoire, défaut 'USD'
statusTEXTobligatoire
transaction_refTEXT
paid_atTEXT

shipments 2 319 lignes

ColonneTypeRemarques
idINTEGERclé primaire
order_idINTEGER→ orders.id, obligatoire, indexée
carrierTEXTobligatoire
tracking_numberTEXT
shipped_atTEXT
delivered_atTEXT

shipping_methods 5 lignes

ColonneTypeRemarques
idINTEGERclé primaire
nameTEXTobligatoire, unique
base_costREALobligatoire
est_daysINTEGERobligatoire
is_activeINTEGERobligatoire, défaut 1

coupons 10 lignes

ColonneTypeRemarques
idINTEGERclé primaire
codeTEXTobligatoire, unique
discount_typeTEXTobligatoire
discount_valueREALobligatoire
min_orderREALobligatoire, défaut 0
starts_atTEXTobligatoire
ends_atTEXTobligatoire
max_usesINTEGER
used_countINTEGERobligatoire, défaut 0

Personnel

departments 10 lignes

ColonneTypeRemarques
idINTEGERclé primaire
nameTEXTobligatoire, unique
descriptionTEXT
created_atTEXTobligatoire

employees 120 lignes

ColonneTypeRemarques
idINTEGERclé primaire
department_idINTEGER→ departments.id, obligatoire, indexée
manager_idINTEGER→ employees.id, indexée
first_nameTEXTobligatoire
last_nameTEXTobligatoire
emailTEXTobligatoire, unique
phoneTEXT
hire_dateTEXTobligatoire
salaryREALobligatoire, défaut 0
positionTEXT
is_activeINTEGERobligatoire, défaut 1

audit_logs 2 000 lignes

ColonneTypeRemarques
idINTEGERclé primaire
employee_idINTEGER→ employees.id
actionTEXTobligatoire
table_nameTEXTobligatoire, indexée
record_idINTEGERindexée
old_valuesTEXT
new_valuesTEXT
ip_addressTEXT
created_atTEXTobligatoire

Paramètres

settings 8 lignes

ColonneTypeRemarques
keyTEXTclé primaire
valueTEXTobligatoire
descriptionTEXT
updated_atTEXTobligatoire

Vues

Une vue est une requête enregistrée qui se comporte comme une table : vous pouvez faire un SELECT dessus, mais aucune ligne ne lui appartient en propre. Ces quatre-là résument les tables ci-dessus.

v_customer_lifetime 1 500 lignes

ColonneTypeRemarques
customer_idINTEGER
customerTEXT
countryTEXT
ordersTEXT
revenueTEXT
first_orderTEXT
last_orderTEXT

v_low_stock 44 lignes

ColonneTypeRemarques
idINTEGER
skuTEXT
nameTEXT
stock_quantityINTEGER
categoryTEXT

v_order_summary 4 000 lignes

ColonneTypeRemarques
order_idINTEGER
order_numberTEXT
statusTEXT
ordered_atTEXT
customerTEXT
countryTEXT
itemsTEXT
totalREAL

v_product_sales 400 lignes

ColonneTypeRemarques
product_idINTEGER
nameTEXT
skuTEXT
categoryTEXT
units_soldTEXT
revenueTEXT
avg_ratingTEXT
review_countTEXT