SQL avancé

Mar 03 2023
Il n'y a pas longtemps, j'ai créé un tutoriel SQL Beginner, vous pouvez le lire ici. Aujourd'hui, il est temps de vous parler de sujets plus avancés, tels que les opérateurs GROUP BY et HAVING, l'instruction MERGE et les procédures stockées.

Il n'y a pas longtemps, j'ai créé un tutoriel SQL Beginner, vous pouvez le lire ici . Aujourd'hui, il est temps de vous parler de sujets plus avancés, tels que les opérateurs GROUP BY et HAVING, l'instruction MERGE et les procédures stockées.

PAR GROUPE

La clause GROUP BY dans SQL est utilisée pour regrouper des lignes dans un jeu de résultats basé sur une ou plusieurs colonnes. Il est généralement utilisé en conjonction avec des fonctions d'agrégation telles que COUNT, SUM, AVG, MIN et MAX pour calculer les valeurs de chaque groupe.

SELECT category, SUM(sales)
FROM orders
GROUP BY category;

Un autre exemple:

SELECT department, COUNT(employee_id)
FROM employees
GROUP BY department;

Il est important de noter que vous devez utiliser des fonctions d'agrégation sur toutes les colonnes que vous choisissez qui ne sont pas couvertes par la clause GROUP BY afin d'éviter de recevoir une erreur. De plus, il est essentiel de se rappeler que les colonnes de la clause GROUP BY sont celles qui définissent les groupes ; l'ordre des colonnes dans l'instruction SELECT n'a aucune incidence sur le jeu de résultats.

AYANT

En fonction des conditions de la fonction d'agrégation, les groupes de lignes d'un jeu de résultats peuvent être filtrés à l'aide de la clause HAVING dans SQL. Elle est généralement associée à la clause GROUP BY pour éliminer les groupes qui ne répondent pas à des exigences particulières.

Par exemple, considérez la requête SQL suivante qui sélectionne le total des ventes pour chaque catégorie de produit dans un exemple de ordertable et ne renvoie que les catégories dont le total des ventes est supérieur à 1 000 :

SELECT category, SUM(sales)
FROM orders
GROUP BY category
HAVING SUM(sales) > 1000;

Un autre exemple:

SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING COUNT(employee_id) > 5;

Semblable à la clause WHERE, la clause HAVING est utilisée pour filtrer les groupes après que la clause GROUP BY les a produits et que les fonctions d'agrégation ont été appliquées.

FUSIONNER

L'instruction SQL MERGE est utilisée pour mettre à jour ou insérer des données dans une table cible en fonction des données d'une table source, ou pour combiner les données de deux tables ou plus dans une seule table. Il est fréquemment utilisé comme alternative aux instructions qui combinent INSERT, UPDATE et DELETE.

Syntaxe:

MERGE INTO target_table
USING source_table
ON (join_condition)
WHEN MATCHED THEN
    UPDATE SET target_table.column1 = source_table.column1, ...
WHEN NOT MATCHED THEN
    INSERT (column1, column2, ...)
    VALUES (source_table.column1, source_table.column2, ...)

MERGE INTO products
USING prices
ON (products.product_id = prices.product_id)
WHEN MATCHED THEN
    UPDATE SET products.price = prices.price;

MERGE INTO employees
USING temp_employees
ON (employees.employee_id = temp_employees.employee_id)
WHEN MATCHED THEN
    UPDATE SET employees.salary = temp_employees.salary
WHEN NOT MATCHED THEN
    INSERT (employee_id, first_name, last_name, department, salary)
    VALUES (temp_employees.employee_id, temp_employees.first_name, temp_employees.last_name, temp_employees.department, temp_employees.salary);

Certains systèmes de gestion de base de données tels que MySQL et SQLite ne prennent pas en charge l'instruction MERGE, vous devez donc utiliser la combinaison des instructions INSERT, UPDATE et DELETE à la place.

La commande MERGE doit être testée sur un petit sous-ensemble de données avant d'être utilisée sur la table entière car elle peut avoir un impact majeur sur les performances des grandes tables.

Procédures stockées

Groupe précompilé d'instructions SQL conservées dans une base de données en tant que procédure stockée. Ils sont souvent employés pour effectuer une tâche spécifique ou un ensemble d'activités, comme extraire des informations d'une base de données ou faire des calculs délicats. Par rapport à l'exécution de nombreuses instructions SQL distinctes, les procédures stockées sont plus polyvalentes et efficaces car elles peuvent recevoir des paramètres d'entrée et renvoyer des valeurs de sortie.

Voici un exemple de procédure stockée simple qui récupère toutes les lignes d'une table employees:

CREATE PROCEDURE GetAllEmployees
AS
BEGIN
    SELECT * FROM employees;
END

EXEC GetAllEmployees;

Soutenez notre publication en la suivant

Reportez-vous également aux articles suivants.

Questions et réponses de l'entretien avec l'API Java 8 Stream