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
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.
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}, ...), (...), ...
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, >, >=, <, <=, =, <>, &&, ||