Offre une représentation visuelle de la structure d'une base de données
On vise à protéger l'intégrité des données via la définition explicite des caractéristiques de l'information stockée
Quelles caractéristiques peut-on identifier sur ce modèle de données?
Quelques bonne pratiques à garder en tête lors de la rédaction de code SQL
ℹ️ Référence
Pour rappel
Il faut donc préciser la BD à utiliser pour les commandes SQL subséquentes
USE db_name;
CREATE [OR REPLACE] TABLE [IF NOT EXISTS] table_name ( column_name data_type [column_attributes], other_colum_name data_type [column_attributes] ); data_type: https://mariadb.com/kb/en/data-types/ column_attributes: [NOT NULL] [AUTO_INCREMENT KEY] [UNIQUE] [DEFAULT default_value]
📚 Documentation DATATYPES et CREATE TABLE
Une fois une base de données en fonction, on veut préserver l'information, tout en étant capable de la faire évoluer selon les besoins.
📚 ALTER TABLE
CREATE TABLE teachers ( employee_number INT AUTO_INCREMENT KEY, name VARCHAR(200) NOT NULL, email VARCHAR(200) UNIQUE NOT NULL );
CREATE TABLE courses ( code CHAR(10) NOT NULL UNIQUE, credits DOUBLE(2,1) NOT NULL DEFAULT 1, name VARCHAR(200) NOT NULL, description VARCHAR(1000) );
-- Voir les tables d'une BD SHOW TABLES [FROM db_name];
-- Voir la structure d'une table DESCRIBE table_name;
-- Voir la requête de création d'une table SHOW CREATE TABLE table_name;
-- Supprimer une table -- Attention, supprimer une table n'efface pas les privilèges associés DROP TABLE [IF EXISTS] table_name [, table_name ...];
-- Reinitialiser une table (DROP + CREATE) TRUNCATE TABLE table_name;
INSERT INTO table_name [(column_name, ...)] VALUES ({expr | DEFAULT}, ...), (...), ...
📚 Documentation
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' ); -- est equivalent a INSERT INTO teachers (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 INSERT INTO teachers (name, email) VALUES ('nom c', 'email c' );
-- On peut 'déplacer' la valeur d'AUTO_INCREMENT en saisissant manuellement une valeur INSERT INTO teachers VALUES ( 100, 'nom d', 'email d' ), (DEFAULT, 'nom e', 'email e' ); -- DEFAULT sera 101, et ainsi de suite pour les prochains INSERT
SELECT column_def [, column_def, ...] FROM table_name [WHERE where_condition] column_def : Utiliser * pour lister toutes les colonnes, sinon nommer explicitement les colonnes Opérateur AS permets de renommer une colonne where_condition : Applique un critère de sélection aux lignes à retourner Les opérateurs logiques disponibles sont IS NULL, IS NOT NULL, >, >=, <, <=, =, <>, &&, ||
SELECT * FROM teachers;
SELECT name, email FROM teachers;
SELECT name AS Nom, credits AS `Crédits` FROM courses;
SELECT * FROM courses WHERE description IS NOT NULL;
SELECT * FROM courses WHERE (description IS NOT NULL AND description <> '') OR (credits > 2);
👉 Énoncé