3.1 - Introduction à SQL, suite


Base de données

Introduction à SQL, suite

Plan

  • Modification
  • Suppression

BD de démonstration

Base de données de démonstration

Base de données de démonstration

CREATE OR REPLACE DATABASE school;
CREATE TABLE school.teachers (
  employee_number INT AUTO_INCREMENT KEY,
  name VARCHAR(200) NOT NULL,
  email VARCHAR(200) UNIQUE NOT NULL,
  birthday DATE NOT NULL
);
CREATE TABLE school.courses (
  code CHAR(10) NOT NULL,
  credits DOUBLE(3,2) NOT NULL DEFAULT 1,
  name VARCHAR(200) NOT NULL,
  description VARCHAR(1000),
  teacher INT NOT NULL,
  semester CHAR(5) NOT NULL
);
INSERT INTO school.teachers (employee_number, name, email, birthday)
VALUES (1, 'James', 'jhoffman@cshawi.ca', '1990-01-01'), (2, 'Mathieu', 'mstyves@cshawi.ca', '1980-02-02'), (3, 'Stevens', 'sgagnon@cshawi.ca', '1970-03-03'), (4, 'Marco', 'mguilmette@cshawi.ca', '1975-04-04');
INSERT INTO school.courses(code, credits, name, description, teacher, semester)
VALUES  ('420-0Q4-SW', 2, 'Initiation à la profession', NULL, 1, 'A2021'), ('420-0Q4-SW', 2, 'Initiation à la profession', NULL, 1, 'A2020'), ('420-0Q7-SW', 2.33, 'Base de données 1', NULL, 1, 'A2021'), ('420-2SS-SW', 2, 'Développement d''applications mobiles', NULL, 1, 'A2021'), ('420-2SS-SW', 2, 'Développement d''applications mobiles', NULL, 1, 'A2020'), ('420-0Q7-SW', 2.33, 'Base de données 1', NULL, 2, 'A2021'), ('420-2SS-SW', 2, 'Développement d''applications mobiles', NULL, 2, 'A2020'), ('420-0SU-SW', 1.33, 'Web: Client 1', NULL, 2, 'A2021'), ('420-2SU-SW', 2.33, 'Web: Serveur 2', NULL, 2, 'A2021'), ('420-1SY-SW', 2.66, 'Analyse objet', NULL, 2, 'A2021'), ('420-0SV-SW', 1.66, 'Échange de données 1', 'Développement d''applications client-serveur', 3, 'A2021'), ('420-1SX-SW', 1.66, 'Robotique', 'Programmer un robot pour suivree un tracé', 3, 'A2021');

Modification et Suppression

Modification

UPDATE table_name
SET column_name1={ expression | DEFAULT} [, column_name2={ expression | DEFAULT}, ...]
[WHERE where_condition]
[ORDER BY ...] -- Pour trier avant d'appliquer le LIMIT
[LIMIT rows_count] -- Appliquer seulement aux rows_count premiers enregistrements

ATTENTION
Si aucun WHERE n'est fourni, TOUS les enregistrements seront modifiés

📚 Documentation

Modification - Exemples

SELECT * FROM school.courses;

UPDATE school.courses
SET description = 'N/A',     -- Valeur
    name = UPPER(name),      -- Fonction
    credits = (credits * 2); -- Calcul

UPDATE school.courses
SET teacher = 4
WHERE teacher = 1; -- Condition, Marco(4) remplacera James(1)

SELECT * FROM school.courses;

Suppression

DELETE FROM table_name
[WHERE where_condition]
[ORDER BY ...] -- Pour trier avant d'appliquer le LIMIT
[LIMIT rows_count] -- Appliquer seulement aux rows_count premiers enregistrements
[RETURNING column_def [, column_def ...]] -- Permets de SELECT les enregistrements supprimés
-- RETURNING ne fonctionne PAS avec SQLectron 1.37.1, utiliser cmd ou Beekeeper Studio

ATTENTION
Si aucun WHERE n'est fourni, TOUS les enregistrements seront supprimés

  • Il est souvent judicieux de tester un DELETE en appliquant la condition sur un SELECT pour valider le WHERE
  • Rappel: TRUNCATE TABLE table_name réinitialise une table

📚 Documentation

Suppression - Exemples

SELECT * FROM school.courses;

DELETE FROM school.courses
WHERE teacher = 3 -- Supprime les cours de Stevens(3)
RETURNING code, UPPER(name) as `nom`, credits; -- Les cours supprimés

DELETE FROM school.courses; -- Vide la table

SELECT * FROM school.courses;


SELECT * FROM school.teachers;

DELETE FROM school.teachers
ORDER BY employee_number DESC
LIMIT 1; -- Supprime l'enseignant avec le numero le plus élevé

SELECT * FROM school.teachers;