Préparation : création d'un tableau de test
Avant de commencer à travailler avec les données, créons un tableau simple pour les exemples :
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SELECT : lecture des données
La commande SELECT est utilisée pour extraire des données d'une table. C'est l'opération la plus courante lors de l'utilisation de bases de données.
Syntaxe de base
SELECT column1, column2 FROM table_name;Exemples d'utilisation
Sélection de toutes les colonnes :
SELECT * FROM users;Sélection de colonnes spécifiques :
SELECT name, email FROM users;Utilisation de WHERE pour le filtrage :
SELECT * FROM users WHERE age > 25;Trier les résultats avec ORDER BY :
SELECT * FROM users ORDER BY name ASC;
SELECT * FROM users ORDER BY created_at DESC;Limitation du nombre de résultats:
SELECT * FROM users LIMIT 10;
SELECT * FROM users LIMIT 10 OFFSET 20; -- пагинацияUtilisation de LIKE pour rechercher par modèle :
SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM users WHERE name LIKE 'А%'; -- имена на букву АFonctions agrégées :
SELECT COUNT(*) FROM users;
SELECT AVG(age) FROM users;
SELECT MAX(age), MIN(age) FROM users;Regroupement avec GROUP BY :
SELECT age, COUNT(*) as count
FROM users
GROUP BY age
HAVING COUNT(*) > 1;
INSERT : ajout de données
La commande INSERT permet d'ajouter de nouveaux enregistrements à la table.
Syntaxe de base
INSERT INTO table_name (column1, column2) VALUES (value1, value2);Exemples d'utilisation
Insérer un enregistrement :
INSERT INTO users (name, email, age)
VALUES ('Alexey', 'alexey@example.com', 28);Insérer plusieurs entrées :
INSERT INTO users (name, email, age) VALUES
('Maria', 'maria@example.com', 25),
('Dmitry', 'dmitry@example.com', 32),
('Elena', 'elena@example.com', 29);Insérer sans spécifier toutes les colonnes :
INSERT INTO users (name, email)
VALUES ('Ivan', 'ivan@example.com');
-- age будет NULL, created_at заполнится автоматическиInsertion avec retour d'ID :
-- MySQL
INSERT INTO users (name, email, age)
VALUES ('Olga', 'olga@example.com', 27);
SELECT LAST_INSERT_ID();
-- PostgreSQL
INSERT INTO users (name, email, age)
VALUES ('Olga', 'olga@example.com', 27)
RETURNING id;MISE À JOUR : mise à jour des données
La commande UPDATE modifie les enregistrements existants dans la table.
Syntaxe de base
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;Exemples d'utilisation
Mise à jour d'un enregistrement :
UPDATE users
SET age = 29
WHERE id = 1;Mise à jour de plusieurs champs :
UPDATE users
SET name = 'Alexey Petrov', age = 30
WHERE id = 1;Mise à jour de plusieurs entrées :
UPDATE users
SET age = age + 1
WHERE age < 30;Utilisation des calculs :
UPDATE users
SET email = LOWER(email);Mise à jour conditionnelle avec plusieurs conditions :
UPDATE users
SET age = 25
WHERE name = 'Maria' AND email LIKE '%@example.com';Avertissement important
Toujours utiliser WHERE lors de la mise à jour ! Sans cette condition, tous les enregistrements du tableau seront mis à jour :
-- ОПАСНО! Обновит все записи
UPDATE users SET age = 25;
-- ПРАВИЛЬНО! Обновит только нужные записи
UPDATE users SET age = 25 WHERE id = 1;DELETE : suppression de données
La commande DELETE supprime des enregistrements de la table.
Syntaxe de base
DELETE FROM table_name WHERE condition;Exemples d'utilisation
Suppression d'un enregistrement :
DELETE FROM users WHERE id = 1;Suppression par condition :
DELETE FROM users WHERE age < 18;Suppression avec plusieurs conditions :
DELETE FROM users
WHERE created_at < '2024-01-01' AND age IS NULL;Suppression de tous les enregistrements (attention !) :
DELETE FROM users; -- удалит все записи
TRUNCATE TABLE users; -- быстрее, но нельзя откатить в транзакцииAvertissement important
Comme pour UPDATE, vérifiez toujours la présence de WHERE avec DELETE :
-- ОПАСНО! Удалит все записи
DELETE FROM users;
-- ПРАВИЛЬНО! Удалит только нужные записи
DELETE FROM users WHERE id = 1;Transactions : travail sécurisé avec les données
Lors de l'exécution des opérations INSERT, UPDATE et DELETE, il est recommandé d'utiliser des transactions pour garantir l'intégrité des données :
START TRANSACTION;
UPDATE users SET age = 30 WHERE id = 1;
UPDATE users SET age = 28 WHERE id = 2;
-- Если всё хорошо:
COMMIT;
-- Если нужно отменить изменения:
ROLLBACK;Conseils pratiques
Utilisez SELECT avant UPDATE/DELETE
Avant de modifier ou de supprimer des données, exécutez SELECT avec la même condition pour vous assurer que vous travaillez avec les bons enregistrements :
-- Сначала проверяем
SELECT * FROM users WHERE age < 18;
-- Если всё верно, удаляем
DELETE FROM users WHERE age < 18;Indices de performance
Créez des index pour les colonnes fréquemment utilisées dans WHERE :
CREATE INDEX idx_email ON users(email);
CREATE INDEX idx_age ON users(age);Évitez SELECT *
Dans le code de production, indiquez des colonnes spécifiques à la place de l'astérisque :
-- Плохо
SELECT * FROM users;
-- Хорошо
SELECT id, name, email FROM users;Utilisez LIMIT
Lorsque vous travaillez avec de grandes tables, limitez le nombre d'enregistrements renvoyés :
SELECT * FROM users LIMIT 100;Requêtes paramétrées
Lorsque vous travaillez avec SQL à partir du code, utilisez toujours des requêtes paramétrées pour vous protéger contre les injections SQL :
JavaScript (Node.js)
const userId = 1;
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);Python
user_id = 1
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))PHP (PDO)
$userId = 1;
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);Fusion des équipes : exemple pratique
Créons une petite application pour gérer les utilisateurs :
-- Создание пользователя
INSERT INTO users (name, email, age)
VALUES ('Anna', 'anna@example.com', 26);
-- Получение ID нового пользователя
SET @user_id = LAST_INSERT_ID();
-- Чтение данных пользователя
SELECT * FROM users WHERE id = @user_id;
-- Обновление возраста
UPDATE users SET age = 27 WHERE id = @user_id;
-- Проверка обновления
SELECT name, age FROM users WHERE id = @user_id;
-- Удаление пользователя
DELETE FROM users WHERE id = @user_id;
-- Проверка удаления
SELECT COUNT(*) FROM users WHERE id = @user_id; -- должно вернуть 0Conclusion
Les commandes SELECT, INSERT, UPDATE et DELETE sont la base du travail avec SQL. Après avoir maîtrisé ces opérations, vous serez en mesure de gérer efficacement les données dans n'importe quelle base de données relationnelle. Gardez à l'esprit la sécurité lorsque vous travaillez avec UPDATE et DELETE, utilisez toujours des requêtes paramétrées dans le code et n'oubliez pas les transactions pour les opérations critiques.
Rejoignez la plateforme éducative Code — vous trouverez ici des cours interactifs sur Python, JavaScript, HTML, CSS, SQL et d'autres langages de programmation. Tous les supports sont créés spécifiquement pour les développeurs débutants avec des exemples pratiques et des explications étape par étape.
Kodika a également un communauté Telegram, où les développeurs communiquent, partagent leurs expériences et s'entraident pour résoudre les problèmes.
Rejoignez-nous et commencez votre parcours en programmation !
