From 2c530f2a58014e8e9479c41dabff9a639e9297a5 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Mon, 16 Feb 2026 10:16:31 +0100 Subject: =?UTF-8?q?Cours=20du=2002=20au=2013=20f=C3=A9vrier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- semestre 4/db/3- SQL-base.typ | 142 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 semestre 4/db/3- SQL-base.typ (limited to 'semestre 4/db/3- SQL-base.typ') diff --git a/semestre 4/db/3- SQL-base.typ b/semestre 4/db/3- SQL-base.typ new file mode 100644 index 0000000..d9e07bd --- /dev/null +++ b/semestre 4/db/3- SQL-base.typ @@ -0,0 +1,142 @@ +#import "@local/template:1.0.0": * +#import "@local/callout:1.0.0": * + +#show: doc.with( + authors: ( + (name: "William Hergès", affiliation: "Sorbonne Université", email: "william@herges.fr"), + ), + page_title: "SQL base", +) + += Création d'une table + +On utilise H2 comme DB. + +```sql +CREATE TABLE ( + [NOT NULL] [DEFAULT ], + [NOT NULL] [DEFAULT ], + [NOT NULL] [DEFAULT ], + ... + [NOT NULL] [DEFAULT ], + , + , + +) +``` + +== Types + +=== Alphanumériques + +Alphanumériques~: +- `char(n)`, `character(n)` +- `varchar(n)`, `varying(n)` + +$n$ vaut $1$ par défaut, peut aller de $1$ à $1048576$. + +`char(n)` est une allocation statique -> tous les mots feront toujours $n$. + +`varchar(n)` est une allocation dynamique -> les mots font au maximum $n$. + +=== Numériques + +Numériques~: +- `smallint`, `int` (ou `integer`), `bigint` +- `numeric(t,d)` ou `decimal(t,d)` +- `real`, `double precision` + +`numeric(t,d)` ou `decimal(t,d)` représentent les nombres à virgule. +- `t` est le nombre total de chiffres (on ne compte pas le signe) +- `d` est le nombre de chiffres après la virgule (partie décimale) + +`real`, `double precision` représentent les floatants. + +=== Temps + +`date` est la date calendaire (jour, mois, année). + +`time` est le temps d'un jour (heure, minutes, secondes), peut contenir un fuseau horaire. + +`timestamp` est la combinaison de `date` et de `time`. + +=== Domaine + +Définition d'un nouveau type à partir d'un type de base. + +Associe éventuellement une contraine devant être évaluée à vrai ou inconnu pour être vérifiée. + +```sql +CREATE DOMAIN AS []; +``` + +Par exemple, +```sql +CREATE DOMAIN fin_semaine as TEXT CHECK (VALUE in ('sam', 'dim')); +CREATE DOMAIN sal_min as NUMERIC(7,2) CHECK (VALUE >= 10000); +``` + +== Contrainte + +Est une condition devant être vérifiée par toutes les données. +Cela permet d'avoir une cohérence et de garder cette cohérence avec une mise à jour. + +=== Type + +Peut toucher rôle des clés~: +- identification des $n$-uplets +- chaque table possède au moins une clé (la primaire) +- vérification efficace avec des index + +Peut toucher les données basiques~: +- _voir diapo_ + +=== Contraintes de clés + +Clé candidate sont les attributs dont les valeurs sont distinctes pour tous les $n$-uplets. + +Clé primaire est une clé candidate dont chacun des attributs est renseigné. +```sql +PRIMARY KEY() +``` + +Clé étrange est un attribut dans les valeurs proviennent d'une clé candidate ou d'une clé primaire définie autre part. +(Peut être la même table.) +```sql +FOREIGN KEY REFERENCES
+``` +Comme on n'a pas indique d'attributs, cela signifie que l'on réfère à la clé primaire. + +=== Contraintes sur les données + +_Voir le diapo_ + +=== CHECK et ASSERTION + +_Voir le diapo_ + +== Modifier une table + +=== Suppression + +Pour supprimer une table~: +```sql +DROP TABLE [IF EXISTS]; +``` + +Si il existe des contraintes portant sur cette table, on peut les supprimer durant la suppression~: +```sql +DROP TABLE IF EXISTS CASCADE; +``` + +=== Modification d'un champ + += Requêtes SQL simples + +SQL provient de la fusion entre l'algèbre relationnelle et des tuples. + +```sql +SELECT +FROM
+[WHERE ] +``` -- cgit v1.2.3