Offre une représentation visuelle de la structure d'une base de données
Tables
Colonnes
Type de donnée
Attributs(Auto-incrément, Non null, Unicité)
Valeur par défaut
On vise à protéger l'intégrité des données via la définition explicite des caractéristiques de l'information stockée
Précise, Complète, Cohérente
classDiagram
direction RL
class Enseignants {
numero_employe int ai
nom varchar[200] nn
courriel varchar[200] un
}
class Cours {
sigle char[10] nn un
credits double[2,1] nn = 1
nom varchar[200] nn
description varchar[1000]
}
class Groupes {
numero tinyint[3] nn
session char[5] nn
}
class Etudiants {
numero_da char[7] nn un
nom varchar[200] nn
}
Cours --> Enseignants
Groupes --> Cours
Groupes --> Etudiants
Quelles caractéristiques peut-on identifier sur ce modèle de données?
"create [or replace] database [if not exists] school;\n\ndrop database [if exists] school;\n\n-- ATTENTION\n-- La manipulation des base de données de supprime pas les GRANTS associés..."
create[orreplace]database[ifnotexists]school;
dropdatabase[ifexists]school;
-- ATTENTION -- La manipulation des base de données de supprime pas les GRANTS associés...
Il faudra donc préciser la BD à utiliser pour les commandes SQL subséquentes
"create table teachers (\n employee_number int auto_increment key,\n name varchar(200) not null,\n email varchar(200) unique not null\n);\n\ncreate table courses (\n code char(10) not null unique,\n credits double(2,1) not null default 1,\n name varchar(200) not null,\n description varchar(1000)\n);"
"-- Voir les tables d'une BD\nshow tables [from db_name];\n\n\n-- Voir la structure d'une table\ndescribe table_name;\n\n\n-- Voir la requête de création d'une table\nshow create table table_name;\n\n\n-- Supprimer une table\n-- Attention, supprimer une table n'efface pas les privilèges associés\ndrop table [if exists] table_name [, table_name ...];\n\n\n-- Reinitialiser une table (DROP + CREATE)\ntruncate table table_name;"
-- Voir les tables d'une BD showtables[fromdb_name];
-- Voir la structure d'une table describetable_name;
-- Voir la requête de création d'une table showcreatetabletable_name;
-- Supprimer une table -- Attention, supprimer une table n'efface pas les privilèges associés droptable[ifexists]table_name[,table_name...];
-- Reinitialiser une table (DROP + CREATE) truncatetabletable_name;
Pour insérer des données, on fait correspondre une valeur à chacune des colonnes de la table, dans le même ordre qu'elles sont définies dans la table.
On peut également préciser un sous-ensemble des colonnes et associer une valeur seulement pour ces dernières. Les colonnes ignorées doivent avoir une valeur par défaut/auto_increment.
"insert into teachers values ( default, 'nom a', 'email a' );\n-- est equivalent a\ninsert into teachers (employee_number, name, email) values ( default, 'nom b', 'email b' );\n\n\n-- La colonne AUTO_INCREMENT doit avoir la valeur DEFAULT pour être incrémentée automatiquement\n-- ou être ignorée\ninsert into teachers (name, email) values ('nom c', 'email c' );\n\n\n-- On peut 'déplacer' la valeur d'AUTO_INCREMENT en saisissant manuellement une valeur\ninsert into teachers\nvalues ( 100, 'nom d', 'email d' ), (default, 'nom e', 'email e' );\n-- default sera 101, et ainsi de suite pour les prochains insert"
insertintoteachersvalues(default,'nom a','email a'); -- est equivalent a insertintoteachers(employee_number,name,email)values(default,'nom b','email b');
-- La colonne AUTO_INCREMENT doit avoir la valeur DEFAULT pour être incrémentée automatiquement -- ou être ignorée insertintoteachers(name,email)values('nom c','email c');
-- On peut 'déplacer' la valeur d'AUTO_INCREMENT en saisissant manuellement une valeur insertintoteachers values(100,'nom d','email d'),(default,'nom e','email e'); -- default sera 101, et ainsi de suite pour les prochains insert
"select * from teachers;\n\n\nselect name, email from teachers;\n\n\nselect name as nom, credits as \u0060crédits\u0060 from courses;\n\n\nselect *\nfrom courses\nwhere description is not null;\n\n\nselect *\nfrom courses\nwhere (description is not null and description \u003c\u003e '') or (credits \u003e 2);"