Les développeurs PHP rencontrent souvent des défis pour manipuler efficacement les bases de données avec SQL, causant des erreurs et une performance médiocre.
Une mauvaise utilisation de SQL peut entraîner des failles de sécurité, des requêtes inefficaces et des problèmes de gestion des données, compromettant ainsi vos applications PHP.
Ce guide complet couvre les bases et les techniques avancées de SQL, vous aidant à écrire des requêtes optimisées et sécurisées pour améliorer la performance de vos applications. Découvrez les meilleures pratiques ici !
Découvrir les requêtes SQL avec PHP 8
SQL, ou Structured Query Language, est un langage utilisé pour interagir avec des bases de données relationnelles. Il vous permet de gérer et de manipuler les données de manière efficace à travers des commandes spécifiques.
Principales opérations SQL :
- SELECT : Récupérer des données
- INSERT : Ajouter de nouvelles données
- UPDATE : Modifier des données existantes
- DELETE : Supprimer des données
Mettre en place une base de données avec SQL et PHP 8
Pour commencer à utiliser SQL, vous devez d’abord créer une base de données. Suivez les étapes ci-dessous pour créer une base de données appelée alphorm et ajouter deux tables : client et ville.
Étape 1 : Créer une Base de Données
- Accéder à phpMyAdmin :
- Ouvrez votre navigateur web et allez à l’adresse de votre phpMyAdmin (par exemple, http://localhost/phpmyadmin).
- Créer une Nouvelle Base de Données :
- Cliquez sur l’onglet « Bases de données » en haut de la page.
- Dans le champ « Créer une base de données », entrez le nom alphorm.
- Choisissez un « Jeu de caractères » si nécessaire (par défaut, utf8mb4_general_ci est souvent suffisant).
- Cliquez sur « Créer ».
Étape 2 : Créer les Tables
- Créer la Table client :
- Cliquez sur l’onglet « Structure » ou directement sur le bouton « Créer une table ».
- Dans le champ « Nom de la table », entrez client.
- Dans le champ « Nombre de colonnes », entrez 4 et cliquez sur « Exécuter »
Ensuite, configurez les colonnes comme suit :
- Créer la Table ville :
- Cliquez sur l’onglet « Structure » ou directement sur le bouton « Créer une table ».
- Dans le champ « Nom de la table », entrez ville.
- Dans le champ « Nombre de colonnes », entrez 2 et cliquez sur « Exécuter ».
Ensuite, configurez les colonnes comme suit :
Voilà un schéma explicatif de ces tables :
Insérer des données avec les requêtes SQL en PHP 8
L’insertion de données dans une table s’effectue à l’aide de la commande INSERT INTO. Cette commande permet au choix d’inclure une seule ligne à la base existante ou plusieurs lignes d’un coup.
- La syntaxe pour remplir une ligne d’une table est la suivante :
INSERT INTO table (nom_colonne_1, nom_colonne_2, ...)
VALUES ('valeur 1', 'valeur 2', ...)
- Exemple d’insérer une ligne a la table client
INSERT INTO client (prenom, nom, villeID)
VALUES ('Jean', 'Dupond', 1)
Voila le résultat après l’exécution de cette requête dans PhpMyAdmin:
Modifier des données avec les requêtes SQL en PHP 8
La commande UPDATE permet d’effectuer des modifications sur des lignes existantes. Très souvent cette commande est utilisée avec WHERE
pour spécifier sur quelles lignes doivent porter la ou les modifications.
- La syntaxe basique d’une requête utilisant UPDATE est la suivante :
UPDATE table
SET nom_colonne_1 = 'nouvelle valeur'
WHERE condition
Cette syntaxe permet d’attribuer une nouvelle valeur à la colonne nom_colonne_1
pour les lignes qui respectent la condition stipulée avec WHERE
. Il est aussi possible d’attribuer la même valeur à la colonne nom_colonne_1 pour toutes les lignes d’une table si la condition WHERE
n’était pas utilisée.
- Exemple de modifier une ligne a la table client
UPDATE client
SET prenom='Pascal' ,nom='Dufource'
WHERE ClientID=2
Voilà le résultat après l’exécution de cette requête dans PhpMyAdmin :
La commande DELETE
en SQL permet de supprimer des lignes dans une table. En utilisant cette commande associée à WHERE
il est possible de sélectionner les lignes concernées qui seront supprimées.
- La syntaxe pour supprimer des lignes est la suivante :
Supprimer des données
DELETE FROM `table`
WHERE condition
- Exemple de supprimer une ligne a la table client
Voilà la table client avant la suppression :
Voilà la requête pour faire la suppression
DELETE FROM client
WHERE ClientID=3
Et voilà la table après l’exécution de la requête dans PhpMyAdmin :
Afficher toutes les données d'une table avec SQL en PHP 8
L’utilisation la plus courante de SQL consiste à lire des données issues de la base de données. Cela s’effectue grâce à la commande SELECT
, qui retourne des enregistrements dans un tableau de résultat. Cette commande peut sélectionner une ou plusieurs colonnes d’une table.
- La syntaxe pour lire les données d’une table est la suivante :
SELECT nom_du_champ
FROM nom_du_tableau
Si vous devez lire toutes les données en utilisant la syntaxe suivante :
SELECT *
FROM nom_du_tableau
- Exemple 1 de lire les données dans la table client
SELECT *
FROM client
Ici, tu as récupéré toutes les lignes et les colonne existantes dans la table client.
- Exemple 2 de lire les données dans la table client
SELECT nom,prenom
FROM client
Ici, en lire Just les données de deux colonne le nom et le prénom
Ordonner l'affichage des données d'une table avec SQL et PHP 8
La commande ORDER BY permet de trier les lignes dans un résultat d’une requête SQL. Il est possible de trier les données sur une ou plusieurs colonnes, par ordre ascendant ou descendant.
- Une requête où l’on souhaite filtrer l’ordre des résultats utilise la commande ORDER BY de la sorte :
SELECT colonne1, colonne2
FROM table
ORDER BY colonne1
Par défaut les résultats sont classés par ordre ascendant, toutefois il est possible d’inverser l’ordre en utilisant le suffixe DESC après le nom de la colonne.
- Exemple 1 de trier la table client selon la colonne nom dans ordre alphabétique :
SELECT nom, prenom
FROM `client`
ORDER BY nom
Voilà le résultat après l’exécution de cette requête dans PhpMyAdmin :
- Exemple 2 de trier la table client selon la colonne nom dans ordre décroissante :
SELECT nom, prenom
FROM `client`
ORDER BY nom DESC
Voilà le résultat de cette deuxième de trier les données dans ordre décroissante après l’exécution de cette requête dans PhpMyAdmin :
Supprimer les doublons dans les requêtes SQL en PHP 8
L’utilisation de la commande SELECT en SQL permet de lire toutes les données d’une ou plusieurs colonnes. Cette commande peut potentiellement afficher des lignes en doubles. Pour éviter des redondances dans les résultats il faut simplement ajouter DISTINCT après le mot SELECT.
- L’utilisation basique de cette commande consiste alors à effectuer la requête suivante:
SELECT DISTINCT ma_colonne
FROM nom_du_tableau
- Exemple d’utilisation de cette requête pour distinguer et éviter de répéter deux noms identiques dans la table client :
Voila la table de client complet :
Si vous devez ici récupérer tous les noms mais sans aucune répétition de chaque nom en utilisant la requête suivante :
SELECT DISTINCT nom
FROM `client`
ORDER BY nom
Et voilà le résultat après l’exécution de cette requête dans l’onglet SQL de PhpMyAdmin :
Conditionner l'affichage des données
La commande WHERE
dans une requête SQL permet d’extraire les lignes d’une base de données qui respectent une condition. Cela permet d’obtenir uniquement les informations désirées.
- La commande
WHERE
s’utilise en complément à une requête utilisantSELECT
. La façon la plus simple de l’utiliser est la suivante:
SELECT nom_colonnes
FROM nom_table
WHERE condition
- Exemple d’utilisation de cette requête pour limiter l’affichage des lignes que vous voulez :
SELECT nom,prenom
FROM `client`
WHERE ClientID=4
Elle affiche uniquement la ligne où clientID=4, c’est-à-dire le nom=ben et le prénom=khalid.
Combiner plusieurs conditions dans les requêtes SQL en PHP 8
Une requête SQL peut être restreinte à l’aide de la condition WHERE
. Les opérateurs logiques AND
et OR
peuvent être utilisées au sein de la commande WHERE
pour combiner des conditions.
- L’opérateur AND permet de s’assurer que la condition1 ET la condition2 sont vrai :
SELECT nom_colonnes
FROM nom_table
WHERE condition1 AND condition2
- L’opérateur OR vérifie quant à lui que la condition1 OU la condition2 est vrai :
SELECT nom_colonnes
FROM nom_table
WHERE condition1 OR condition2
- Exemple d’utilisation “ AND “ :
SELECT *
FROM `client`
WHERE nom='Dupond' AND prenom='Claude'
Et voila son résultat :
- Exemple d’utilisation “ OR “ :
SELECT *
FROM `client`
WHERE nom='Dupond' OR nom='Dufource'
Et voila son résultat:
Différence entre les opérateurs AND et OR
Voici une table qui présente clairement les différences entre les opérateurs AND et OR en SQL :
Critère | Opérateur AND | Opérateur OR |
---|---|---|
Condition | Toutes les conditions doivent être vraies | Au moins une des conditions doit être vraie
|
Utilisation | Combine des conditions pour restreindre davantage les résultats | Combine des conditions pour élargir les résultats |
Résultats | Renvoie des enregistrements qui satisfont toutes les conditions | Renvoie des enregistrements qui satisfont au moins une condition |
Exemple de Requête SQL | SELECT * FROM table WHERE condition1 AND condition2; | SELECT * FROM table WHERE condition1 OR condition2; |
Exemple avec Table ’employees’ | SELECT * FROM employees WHERE Title = ‘Developer’ AND Location = ‘Chicago’; | SELECT * FROM employees WHERE Title = ‘Developer’ OR Location = ‘New York’; |
Nombre de Résultats | Restreint le nombre de résultats car toutes les conditions doivent être vraies | Augmente le nombre de résultats car il suffit qu’une condition soit vraie |
Utiliser la commande IN dans les requêtes SQL avec PHP 8
L’opérateur logique IN
dans SQL s’utilise avec la commande WHERE pour vérifier si une colonne est égale à une des valeurs comprise dans set de valeurs déterminés. C’est une méthode simple pour vérifier si une colonne est égale à une valeur OU une autre valeur OU une autre valeur et ainsi de suite, sans avoir à utiliser de multiple fois l’opérateur OR
.
- Pour chercher toutes les lignes où la colonne “nom_colonne” est égale à ‘valeur 1’ OU ‘valeur 2’ ou ‘valeur 3’, il est possible d’utiliser la syntaxe suivante:
SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... )
- Exemple d’utilisation cette commande :
SELECT *
FROM `client`
WHERE nom IN ('alcaraz', 'Dufource')
Et voila le résultat d’affichage dans PhpMyAdmin :
Utiliser la commande NOT IN dans les requêtes SQL avec PHP 8
La commande NOT IN
en SQL est utilisée pour filtrer les résultats d’une requête en excluant les valeurs spécifiées dans une sous-requête ou une liste donnée. C’est un opérateur logique qui permet de sélectionner les enregistrements dont une colonne ne contient pas une des valeurs présentes dans une liste.
- Syntaxe de base
SELECT column1, column2, ...
FROM table_name
WHERE column_name NOT IN (value1, value2, ...)
- Exemple d’utilisation cette commande :
SELECT *
FROM `client`
WHERE nom NOT IN ('alcaraz', 'Dufource')
Et voilà l’affichage des résultats. Il affichera les lignes qui ne sont pas incluses dans la commande IN,
c’est-à-dire le contraire de la commande IN.
Différence entre les commandes IN et NOT IN
Voici une table qui présente clairement les différences entre les opérateurs IN
et NOT IN
en SQL :
Critère | Opérateur IN | Opérateur NOT IN |
---|---|---|
Condition | Sélectionne les enregistrements dont une colonne contient l’une des valeurs spécifiées | Exclut les enregistrements dont une colonne contient l’une des valeurs spécifiées
|
Utilisation | Simplifie la sélection des enregistrements correspondant à une liste de valeurs | Simplifie l’exclusion des enregistrements correspondant à une liste de valeurs
|
Résultats | Renvoie des enregistrements où la colonne contient une des valeurs dans la liste | Renvoie des enregistrements où la colonne ne contient aucune des valeurs dans la liste
|
Exemple de Requête SQL | SELECT * FROM table WHERE column_name IN (value1, value2, …); | SELECT * FROM table WHERE column_name NOT IN (value1, value2, …); |
Exemple avec Table ’employees’ | SELECT * FROM employees WHERE Location IN (‘New York’, ‘Chicago’); | SELECT * FROM employees WHERE Location NOT IN (‘New York’, ‘Chicago’); |
Nombre de Résultats | Augmente le nombre de résultats car il suffit qu’une condition soit vraie | Restreint le nombre de résultats car toutes les conditions doivent être vraies |
Utiliser la commande AS dans les requêtes SQL avec PHP 8
Dans le langage SQL il est possible d’utiliser des alias pour renommer temporairement une colonne ou une table dans une requête. Cette astuce est particulièrement utile pour faciliter la lecture des requêtes.
- Syntaxe de base
Alias sur une colonne :
SELECT colonne1 AS c1 , colonne2
FROM `table`
Alias sur une table :
SELECT colonne1 , colonne2
FROM `table` AS t1
- Exemple de requête utilisant un alias sur la table et la clause « AS » suivante :
SELECT c.nom,c.prenom
FROM `client` AS c
WHERE nom='Dupond'
Découvrir les fonctions statistiques
Découvrez les fonctions SQL de statistiques qui permettent d’analyser vos données en calculant des agrégats comme les moyennes, les sommes, les minimums, les maximums et les écarts-types. Ces outils essentiels facilitent la prise de décision basée sur des données précises.
Alors, c’est pourquoi vous pouvez créer une autre table appelée « article » dans PhpMyAdmin et insérer ces données pour les traiter selon les axes suivants.
- Voila la requête de l’insertion des données dans la tables article :
INSERT INTO `article` (`articleID`, `nom`, `prix`, `quantite`)
VALUES (NULL, 'table', '299', '10'), (NULL, 'chaise', '49.99', '20'), (NULL, 'tabouret', '25', '15'), (NULL, 'fauteuil', '195.50', '2')
- Voici la table « article » après leur création et l’insertion des données dans PhpMyAdmin :
Calculer une moyenne avec les requêtes SQL PHP 8
La fonction d’agrégation AVG() dans le langage SQL permet de calculer une valeur moyenne sur un ensemble d’enregistrement de type numérique et non nul.
- La syntaxe pour utiliser cette fonction de statistique est simple :
SELECT AVG(nom_colonne)
FROM nom_table
SELECT AVG(nom_colonne) As [Moyenne]
FROM nom_table
- Exemple d’utilisation cette function:
SELECT AVG(prix) As Moyenne
FROM `article`
Et voila le résultat d’affichage qui permet d’afficher la moyenne des prix de la table article :
Connaître le nombre d'enregistrements
En SQL, la fonction d’agrégation COUNT()
permet de compter le nombre d’enregistrement dans une table. Connaître le nombre de lignes dans une table est très pratique dans de nombreux cas, par exemple pour savoir combien d’utilisateurs sont présents dans une table ou pour connaître le nombre de commentaires sur un article.
- Pour connaître le nombre de lignes totales dans une table, il suffit d’effectuer la requête SQL suivante :
SELECT COUNT(*)
FROM table
- Exemple d’utilisation cette function:
SELECT Count(*) As total
FROM `article`
Et voilà le résultat d’affichage :
Connaître le nombre le plus élevé
Dans le langage SQL, la fonction d’agrégation MAX()
vous permet de retourner la valeur maximale d’une colonne dans un set d’enregistrement. La fonction peut s’appliquée à des données numériques ou alphanumériques. Il est par exemple possible de rechercher le produit le plus cher dans une table d’une boutique en ligne.
- La syntaxe de la requête SQL pour retourner la valeur maximum de la colonne “nom_colonne” est la suivante:
SELECT MAX(nom_colonne)
FROM table
- Exemple d’utilisation cette function:
SELECT Max(prix) As pluscher
FROM `article`
Et voilà le résultat d’affichage :
Connaître le nombre le moins élevé
La fonction d’agrégation MIN()
de SQL permet de retourner la plus petite valeur d’une colonne sélectionnée. Cette fonction s’applique aussi bien à des données numériques qu’à des données alphanumériques.
- La syntaxe de la requête SQL pour retourner la valeur minimum de la colonne “nom_colonne” est la suivante:
SELECT MINnom_colonne)
FROM table
- Exemple d’utilisation cette function:
SELECT Min(prix) As moincher
FROM `article`
Et voilà le résultat d’affichage :
Calculer la somme d'une colonne avec SQL en PHP 8
Dans le langage SQL, la fonction d’agrégation SUM()
vous permet de calculer la somme totale d’une colonne contenant des valeurs numériques. Cette fonction ne fonction que sur des colonnes de types numériques (INT, FLOAT …) et n’additionne pas les valeurs NULL.
- La syntaxe pour utiliser cette fonction SQL peut être similaire à celle-ci:
SELECT SUM (nom_colonne)
FROM table
- Exemple d’utilisation cette function:
SELECT SUM(quantite) As QuantiteTotal
FROM `article`
Et voilà le résultat d’affichage :
Voici une table illustrant les fonctions d’agrégation en SQL : AVG, MIN, MAX, SUM, et COUNT.
Fonction | Description | Exemple d’Utilisation | Résultat |
---|---|---|---|
AVG | Calcule la moyenne des valeurs d’une colonne | SELECT AVG(column_name) FROM table_name; | Moyenne des valeurs dans column_name |
MIN | Renvoie la plus petite valeur d’une colonne | SELECT MIN(column_name) FROM table_name; | Plus petite valeur dans column_name |
MAX | Renvoie la plus grande valeur d’une colonne | SELECT MAX(column_name) FROM table_name; | Plus grande valeur dans column_name |
SUM | Calcule la somme des valeurs d’une colonne | SELECT SUM(column_name) FROM table_name; | Somme des valeurs dans column_name |
COUNT | Compte le nombre de valeurs (non NULL) dans une colonne | SELECT COUNT(column_name) FROM table_name; | Nombre de valeurs dans column_name |
Arrondir à la valeur la plus proche
Dans le langage SQL la fonction ROUND()
vous permet d’arrondir un résultat numérique. Cette fonction permet soit d’arrondir sans utiliser de décimal pour retourner un nombre entier (c’est-à-dire : aucun chiffre après la virgule), ou de choisir le nombre de chiffre après la virgule.
- Cette fonction mathématique peut être utilisée de la façon suivante:
SELECT ROUND(nom_colonne)
FROM `table`
- Exemple d’utilisation cette function:
SELECT ROUND(prix) As Nouveauprix
FROM `article`
WHERE articleID=2
Et voilà le résultat d’affichage :
Arrondir à l'entier inférieur dans les requêtes SQL PHP 8
La fonction FLOOR
en SQL vous permet d’obtenir le plus grand entier inférieur ou égal à une valeur numérique donnée. C’est utile pour arrondir des valeurs à l’entier inférieur le plus proche.
- Syntaxe de base :
SELECT FLOOR(nom_colonne)
FROM `table`
- Exemple d’utilisation cette function:
Le résultat sera affiché : 49.
Conditionner avec un opérateur de comparaison
Conditionner avec un opérateur de comparaison en SQL vous permet de filtrer et de manipuler les données en fonction de critères spécifiques. Ces opérateurs, tels que =, !=, <, >, <=, et >=, sont essentiels pour effectuer des requêtes précises et obtenir des résultats ciblés.
- Exemple d’utilisation le ‘< ‘:
SELECT nom, prix
FROM `article`
WHERE prix <195.5
Voici le résultat obtenu après l’exécution de cette requête dans PhpMyAdmin :
Voici une table présentant les différents opérateurs de comparaison en SQL :
Opérateur | Description | Exemple d’Utilisation | Résultat |
---|---|---|---|
= | Égalité | SELECT * FROM table WHERE age = 30; | Sélectionne les enregistrements où l’âge est égal à 30 |
!= | Inégalité | SELECT * FROM table WHERE age != 30; | Sélectionne les enregistrements où l’âge n’est pas égal à 30 |
< | Inférieur à | SELECT * FROM table WHERE age < 30; | Sélectionne les enregistrements où l’âge est inférieur à 30
|
> | Supérieur à | SELECT * FROM table WHERE age > 30; | Sélectionne les enregistrements où l’âge est supérieur à 30 |
<= | Inférieur ou égal à | SELECT * FROM table WHERE age <= 30; | Sélectionne les enregistrements où l’âge est inférieur ou égal à 30 |
>= | Supérieur ou égal à | SELECT * FROM table WHERE age >= 30; | Sélectionne les enregistrements où l’âge est supérieur ou égal à 30
|
Grouper les résultats dans les requêtes SQL PHP 8
Avant de faire cela, vous pouvez apporter des changements à votre table d’articles en ajoutant une autre colonne ‘catégorie’ après la colonne ‘nom’ et en remplissant chaque ligne avec sa valeur de catégorie. Voici la table des articles après ces modifications :
Maintenant, vous pouvez effectuer une requête plus complexe dans laquelle nous introduirons plusieurs points. Voici le texte de la requête :
Afficher pour chacune des catégories :
- Le nom de la catégorie
- Son prix moyen
- Le nombre d’articles différents qu’elle possède
- Le prix le plus cher
- Le prix le moins cher
- Le nombre total d’articles disponible
Alors, voici la correspondance de ces cahiers des charges dans une requête SQL :
SELECT
categorie AS Nom_Catégorie,
AVG(prix) AS Prix_Moyen,
COUNT(DISTINCT nom) AS Nombre_Articles_Différents,
MAX(prix) AS Prix_Maximum,
MIN(prix) AS Prix_Minimum,
SUM(quantite) AS Nombre_Total_Articles
FROM article
GROUP BY categorie;
- Résultat Attendu
Pour la table donnée, la requête SQL produira les résultats suivants :
Définir un intervalle de résultats
L’opérateur BETWEEN est utilisé dans une requête SQL pour sélectionner un intervalle de données dans une requête utilisant WHERE. L’intervalle peut être constitué de chaînes de caractères PHP 8, de nombres ou de dates. L’exemple le plus concret consiste par exemple à récupérer uniquement les enregistrements entre 2 dates définies.
- L’utilisation de la commande
BETWEEN
s’effectue de la manière suivante :
SELECT *
FROM table
WHERE nom_colonne BETWEEN 'valeur1' AND 'valeur2'
- Exemple d’utilisation function :
SELECT nom,prix
FROM `article`
WHERE prix BETWEEN 10 AND 50
Voici le résultat obtenu après l’exécution de cette requête dans PhpMyAdmin:
Filtrer des résultats avec des fonctions dans les requêtes SQL PHP 8
La condition HAVING
en SQL est presque similaire à WHERE
à la seule différence que HAVING
permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN()
ou MAX().
- L’utilisation de
HAVING
s’utilise de la manière suivante :
SELECT colonne1, SUM(colonne2)
FROM nom_table
GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur
- Exemple d’utilisation cette fonction :
Ici, vous pouvez faire une requête qui permet d’afficher la catégorie dont le prix moyen est supérieur à 300.
SELECT categorie,CEIL(AVG(prix)) As PrixMoyen
FROM `article`
GROUP BY categorie
HAVING AVG(prix)>300
Donc, voici le résultat attendu :
Rechercher un enregistrement par information avec SQL en PHP 8
L’opérateur LIKE est utilisé dans la clause WHERE
des requêtes SQL. Ce mot-clé vous permet d’effectuer une recherche sur un modèle particulier. Il est par exemple possible de rechercher les enregistrements dont la valeur d’une colonne commence par telle ou telle lettre. Les modèles de recherches sont multiple.
- La syntaxe à utiliser pour utiliser l’opérateur LIKE est la suivante :
SELECT *
FROM table
WHERE colonne LIKE modele
Dans cet exemple le “modèle” n’a pas été défini, mais il ressemble très généralement à l’un des exemples suivants:
- LIKE ‘%a’ : le caractère “%” est un caractère joker qui remplace tous les autres caractères. Ainsi, ce modèle permet de rechercher toutes les chaines de caractère qui se termine par un “a”.
- LIKE ‘a%’ : ce modèle permet de rechercher toutes les lignes de “colonne” qui commence par un “a”.
- LIKE ‘%a%’ : ce modèle est utilisé pour rechercher tous les enregistrement qui utilisent le caractère “a”.
- LIKE ‘pa%on’ : ce modèle permet de rechercher les chaines qui commence par “pa” et qui se terminent par “on”, comme “pantalon” ou “pardon”.
- LIKE ‘a_c’ : peu utilisé, le caractère “_” (underscore) peut être remplacé par n’importe quel caractère, mais un seul caractère uniquement (alors que le symbole pourcentage “%” peut être remplacé par un nombre incalculable de caractères . Ainsi, ce modèle permet de retourner les lignes “aac”, “abc” ou même “azc”.
- Exemple d’utilisation ce mot-clé :
SELECT nom
FROM `article`
WHERE nom LIKE 'ta%'
Il affiche les noms des articles qui commencent par ‘ta’ :
Concaténer des colonnes
Dans le langage SQL la fonction CONCAT()
vous permet de concaténer les valeur de plusieurs colonnes pour ne former qu’une seule chaîne de caractère. Cette fonction SQL peut se révéler pratique pour mettre bout-à-bout les valeurs de plusieurs colonnes pour n’en afficher qu’une. C’est donc pratique pour afficher un résultat facile à lire tout en maintenant les données dans plusieurs colonnes pour une bonne maintenance des données.
- Pour concaténer plusieurs chaîne de caractère, il convient d’utiliser une requête SQL avec la syntaxe suivante:
CONCAT( colonne1, colonne2 )
- Exemple d’utilisation cette fonction
SELECT CONCAT(categorie,nom) As Ensemble
FROM `article`
WHERE articleID=5
Voici le résultat obtenu après l’exécution de cette requête :
Créer une requête de lecture imbriquée avec SQL en PHP 8
Créer une requête de lecture imbriquée, ou sous-requête, vous permet d’effectuer des opérations complexes en SQL en intégrant une requête à l’intérieur d’une autre. Cette technique est utile pour obtenir des résultats basés sur des critères calculés dynamiquement à partir de données intermédiaires.
- Syntaxe de base (par exemple ):
SELECT colonne1, colonne2, ...
FROM table_principale
WHERE colonneX IN (
SELECT colonneX
FROM table_secondaire
WHERE condition
)
- Exemple d’une requête imbriquée dans votre table articles :
SELECT t1.categorie, Min(t1.prix) As moinCher, ( SELECT t2.nom FROM article As t2 WHERE t2.prix = MIN(t1.prix)) As nomArticle
FROM `article` As t1
GROUP BY t1.categorie
Voici une brève explication de cette requête :
- Sélection des Catégories : Vous sélectionnez la colonne categorie de la table article pour chaque groupe de catégories.
- Prix Minimum : Vous calculez le prix le moins cher (Min(t1.prix)) pour chaque catégorie.
- Nom de l’Article : Vous utilisez une sous-requête pour trouver le nom de l’article (nomArticle) ayant le prix minimum pour chaque catégorie.
- Groupement : Vous regroupez les résultats par categorie pour obtenir les informations pour chaque catégorie distincte.
Et voici le résultat obtenu de la requête :
Créer une sous-requête FROM avec SQL en PHP 8
Créer une sous-requête FROM vous permet d’utiliser les résultats d’une requête comme une table temporaire dans une autre requête SQL. Cette technique est utile pour effectuer des opérations complexes sur les données intermédiaires sans créer de tables supplémentaires.
- Syntaxe de base :
SELECT colonne1, colonne2, ...
FROM (SELECT colonneA, colonneB, ... FROM table WHERE condition) AS alias
WHERE condition_sur_alias
- Exemple d’une sous-requête
FROM
dans votre table articles :
SELECT AVG(somme)
FROM ( SELECT SUM(quantite) As somme
FROM article
GROUP BY categorie
)
Voici une brève explication de cette requête:
- Sous-requête : La sous-requête calcule la somme totale des quantités (SUM(quantite)) pour chaque catégorie d’articles dans la table article et nomme ce total somme.
- Agrégation par Catégorie : Les résultats sont regroupés par categorie pour obtenir une somme pour chaque groupe.
- Requête Principale : La requête principale calcule la moyenne (AVG(somme)) des sommes obtenues pour chaque catégorie.
Et voilà le résultat d’affichage :
Créer une sous-requête dans une condition avec SQL en PHP 8
Créer une sous-requête dans une condition vous permet d’utiliser les résultats d’une sous-requête pour filtrer les données de la requête principale. Cela est particulièrement utile pour effectuer des comparaisons basées sur des ensembles de données calculés dynamiquement.
- Syntaxe de base :
SELECT colonne1, colonne2, ...
FROM table_principale
WHERE colonneX OPERATOR (
SELECT colonneY
FROM table_secondaire
WHERE condition
)
Explication
- Requête Principale : Vous sélectionnez les colonnes souhaitées de la table_principale.
- Condition avec Sous-requête : Vous appliquez une condition sur colonneX de la table_principale en utilisant le résultat de la sous-requête.
- Sous-requête : La sous-requête calcule des résultats basés sur une condition spécifique et fournit des valeurs utilisées pour filtrer les résultats de la requête principale.
- Exemple d’une sous-requête dans une condition dans votre table article :
SELECT T1.nom
FROM article T1
WHERE T1.prix = (
SELECT MAX(T2.prix)
FROM article T2
)
Et voila le résultat d’affichage obtenu :
Exercice : Afficher l'article le plus cher et le moins cher
Dans cet exercice, nous allons faire une requête qui permet d’afficher, pour chaque catégorie :
– L’article le plus cher (nom + prix)
– L’article le moins cher (nom + prix)
Donc voila la requête qui faire ça :
SELECT T1.categorie,
CONCAT( (SELECT T2.nom FROM article T2 WHERE T2.prix = MAX(T1.prix) AND T2.categorie = T1.categorie), ' ', MAX(T1.prix) ) AS ArticlePlusCher,
CONCAT( (SELECT T3.nom FROM article T3 WHERE T3.prix = MIN(T1.prix) AND T3.categorie = T1.categorie), ' ', MIN(T1.prix) ) AS ArticleMoinsCher
FROM article T1
GROUP BY T1.categorie;
Explication
- Sélection des Colonnes :
T1.categorie : Affiche la catégorie des articles.
- Article le Plus Cher (ArticlePlusCher) :
MAX(T1.prix) : Trouve le prix maximum pour chaque catégorie.
La sous-requête (SELECT T2.nom FROM article T2 WHERE T2.prix = MAX(T1.prix) AND T2.categorie = T1.categorie)
: Cherche le nom de l’article dont le prix est le maximum dans la même catégorie.
CONCAT(...)
: Combine le nom de l’article le plus cher avec son prix.
- Article le Moins Cher (ArticleMoinsCher) :
MIN(T1.prix)
: Trouve le prix minimum pour chaque catégorie.
La sous-requête (SELECT T3.nom FROM article T3 WHERE T3.prix
= MIN(T1.prix) AND T3.categorie = T1.categorie) : Cherche le nom de l’article dont le prix est le minimum dans la même catégorie.
CONCAT(...)
: Combine le nom de l’article le moins cher avec son prix.
- Groupement :
GROUP BY T1.categorie
: Regroupe les résultats par catégorie pour obtenir les informations pour chaque groupe distinct.
le résultat d’affichage obtenu :
Créer une base de données relationnelle avec SQL en PHP 8
Dans cette section, vous allez créer une nouvelle sous-section intitulée ‘Commerce’. Vous devrez créer quatre tableaux :
- Client avec les colonnes suivantes : nom, prenom, et clientID.
- Commande avec les colonnes suivantes : commandeID, tarif, date, et clientID.
- Article avec les colonnes suivantes : articleID, ainsi que d’autres attributs éventuels.
Voici toutes les tables :
Interroger deux tables dans MySQL avec SQL en PHP 8
Pour interroger deux tables dans MySQL, vous pouvez utiliser des requêtes JOIN pour combiner les données de plusieurs tables. Voici quelques exemples de requêtes pour interroger les tables que vous avez créées :
- Exemple :
SELECT cde.commandeID,c1.prenom,c1.nom
FROM commande as cde, client as c1
WHERE cde.commandeID=c1.clientID AND cde.commandeID=1
Voici la sorti de requête
Créer une requête de jointure interne avec SQL en PHP 8
Une jointure interne (ou inner join en anglais) est une opération en SQL qui permet de combiner des lignes de deux ou plusieurs tables en fonction d’une condition de correspondance. Lorsqu’une jointure interne est effectuée, seules les lignes qui satisfont la condition de jointure dans toutes les tables impliquées sont incluses dans le résultat.
- Syntaxe
SELECT colonnes
FROM table1
INNER JOIN table2 ON table1.colonne_commune = table2.colonne_commune;
Example
SELECT cde.commandeID , c1.prenom,c1.nom
FROM commande as cde
INNER JOIN client as c1 ON cde.commandeID=c1.clientID WHERE cde.commandeID=1
- Sortir de requête
Comprendre la subtilité d'une requête de jointure interne avec SQL en PHP 8
La condition de jointure que vous définissez dans la clause ON est cruciale pour déterminer comment les lignes des différentes tables sont combinées. Assurez-vous que cette condition reflète correctement la relation entre les tables.
- Exemple :
SELECT cde.commandeID , c1.prenom,c1.nom
FROM commande as cde
INNER JOIN client as c1 ON cde.commandeID=c1.clientID WHERE cde.commandeID=1
Ici, cde.commandeID=c1.clientID
assure que seules les commandes associées à un client existant sont récupérées.
- Lignes Non Correspondantes
Une jointure interne exclut les lignes qui ne trouvent pas de correspondance dans l’autre table. Cela signifie que si une table contient des lignes sans correspondance dans la table jointe, ces lignes seront omises du résultat.
- Exemple :
Si Client a un clientID qui n’existe pas dans Commande, ce client ne sera pas inclus dans le résultat.
Créer une requête externe gauche avec SQL en PHP 8
Une requête externe gauche (ou left outer join en anglais) est une opération en SQL qui permet de combiner des lignes de deux tables en fonction d’une condition de correspondance, tout en conservant toutes les lignes de la table de gauche (la première table mentionnée). Les lignes de la table de droite (la deuxième table mentionnée) qui ne trouvent pas de correspondance avec la table de gauche apparaîtront avec des valeurs NULL
pour les colonnes de la table de droite.
- Syntaxe
SELECT colonnes
FROM table_gauche
LEFT OUTER JOIN table_droite ON table_gauche.colonne_commune = table_droite.colonne_commune;
- Exemple
SELECT cde.commandeID, c1.prenom, c1.nom
FROM commande AS cde
LEFT JOIN client AS c1 ON cde.clientID = c1.clientID
- Sortir d’affichage
Créer une requête externe droite avec SQL en PHP 8
Une requête externe droite (ou right outer join en anglais) est une opération en SQL qui combine les lignes de deux tables en fonction d’une condition de correspondance, tout en conservant toutes les lignes de la table de droite (la deuxième table mentionnée). Les lignes de la table de gauche (la première table mentionnée) qui ne trouvent pas de correspondance avec la table de droite apparaîtront avec des valeurs NULL pour les colonnes de la table de gauche.
- Syntaxe
Voici la syntaxe générale pour une requête externe droite :
SELECT colonnes
FROM table_gauche
RIGHT OUTER JOIN table_droite ON table_gauche.colonne_commune = table_droite.colonne_commune;
- Exemple
SELECT cde.commandeID, c1.prenom, c1.nom
FROM commande AS cde
RIGHT OUTER JOIN client AS c1 ON cde.clientID = c1.clientID;
- Sortir !
Créer une requête externe gauche et droite avec SQL en PHP 8
Pour créer une requête combinant à la fois une jointure externe gauche (LEFT JOIN) et une jointure externe droite (RIGHT JOIN), vous devrez utiliser une requête UNION ou effectuer deux jointures différentes pour obtenir l’ensemble des données de manière complète. En SQL standard, il n’existe pas directement de jointure qui combine à la fois des fonctionnalités de jointure externe gauche et droite en une seule opération, mais vous pouvez obtenir un effet similaire en utilisant UNION.
- Syntaxe
SELECT colonnes
FROM table_gauche
FULL OUTER JOIN table_droite ON table_gauche.colonne_commune = table_droite.colonne_commune;
- Exemple
select cde.commandeID , cde.tarif , c1.prenom, c2.nom
FROM commande as cde
FULL OUTER JOIN client as c1 ON cde.commandeID=c1.clientID
Unir plusieurs requêtes SELECT avec SQL en PHP 8
Pour unir plusieurs requêtes SELECT
en SQL, vous utilisez les opérateurs UNION
, UNION ALL
, INTERSECT
, ou EXCEPT
, selon le type de combinaison que vous souhaitez réaliser. Voici une explication détaillée de chacun de ces opérateurs et comment les utiliser :
UNION
L’opérateur UNION
combine les résultats de deux ou plusieurs requêtes SELECT
et élimine les doublons. Les requêtes doivent avoir le même nombre de colonnes et des types de données compatibles.
- Syntaxe
SELECT colonne1, colonne2, ...
FROM table1
UNION
SELECT colonne1, colonne2, ...
FROM table2;
- Exemple
SELECT commandeID , tarif
FROM commande
UNION
SELECT prenom,nom
FROM client
- Sortir de requête
Améliorer le résultat d'une UNION avec SQL en PHP 8
Pour améliorer cette requête, nous allons utiliser les jointures avec la requête suivante.
- Exemple
SELECT cde.commandeID ,cde.tarif, c1.prenom,c1.nom
FROM commande as cde
LEFT JOIN client c1 ON cde.clientID=c1.clientID
UNION
SELECT cde.commandeID ,cde.tarif, c1.prenom,c1.nom
FROM commande as cde
RIGHT JOIN client c1 ON cde.clientID=c1.clientID
- Sortir !
Personnaliser le résultat NULL avec SQL en PHP 8
Pour personnaliser les résultats NULL
dans une requête SQL, vous pouvez utiliser la fonction COALESCE
ou IFNULL
pour remplacer les valeurs NULL
par des valeurs par défaut plus significatives ou lisibles. Voici comment utiliser ces fonctions dans vos requêtes :
Utilisation de COALESCE
La fonction COALESCE
retourne le premier argument non-NULL parmi une liste d’arguments. Si toutes les valeurs sont NULL, elle retourne NULL.
- Syntaxe
COALESCE (expression1, expression2, ..., expressionN)
Exemple :
SELECT cde.commandeID, cde.tarif, COALESCE(c1.prenom, 'Non spécifié') AS prenom, COALESCE(c1.nom, 'Non spécifié') AS nom
FROM commande AS cde
LEFT JOIN client AS c1 ON cde.clientID = c1.clientID
UNION
SELECT cde.commandeID, cde.tarif, COALESCE(c1.prenom, 'Non spécifié') AS prenom, COALESCE(c1.nom, 'Non spécifié') AS nom
FROM commande AS cde
RIGHT JOIN client AS c1 ON cde.clientID = c1.clientID;
- Sortir !
Joindre plusieurs tables avec SQL en PHP 8
Pour joindre plusieurs tables en SQL, vous pouvez utiliser plusieurs clauses JOIN
dans une seule requête. Voici comment vous pouvez améliorer la requête pour joindre les tables commande, client, commande_article, et article :
- Exemple
SELECT cde.commandeID , cde.tarif , cde.date , c1.prenom,c1.nom,art.article
FROM commande as cde
JOIN client as c1
JOIN commande_article as ca ON cde.commandeID=ca.commendeID
JOIN article AS art ON ca.articleID=art.articleID WHERE cde.commandeID=2
- Sortir
Créer une jointure naturelle avec SQL en PHP 8
Pour créer une jointure naturelle en SQL, vous utilisez la syntaxe suivante pour combiner les tables en fonction des colonnes ayant le même nom :
- Syntaxe
SELECT colonne1, colonne2, ...
FROM table1
NATURAL JOIN table2;
- Exemple
SELECT cde.commandeID, cde.tarif, cde.date, c1.prenom, c1.nom
FROM commande AS cde
NATURAL JOIN client AS c1;
- Sortir
Créer une auto-jointure avec SQL en PHP 8
Une auto-jointure (ou auto-jointure) en SQL est une jointure d’une table avec elle-même. Cette opération est utile pour comparer des lignes dans une même table ou pour obtenir des relations hiérarchiques.
- Syntaxe
SELECT alias1.colonne1, alias2.colonne2, ...
FROM table AS alias1
JOIN table AS alias2 ON alias1.colonne_commune = alias2.colonne_commune WHERE condition;
- Exemple :
Supposons que vous avez une table employe qui contient des informations sur les employés, y compris un champ superviseurID indiquant le superviseur de chaque employé. Vous pouvez utiliser une auto-jointure pour obtenir les informations sur chaque employé ainsi que sur son superviseur :
Table employe
employeID | nom | superviseurID |
---|---|---|
1 | Alice | NULL |
2 | Bob | 1 |
3 | Carol | 1 |
4 | Dave | 2 |
Requête pour obtenir les employés et leurs superviseurs
SELECT e1.employeID AS EmployeID, e1.nom AS EmployeNom, e2.employeID AS SuperviseurID, e2.nom AS SuperviseurNom
FROM employe AS e1
LEFT JOIN employe AS e2 ON e1.superviseurID = e2.employeID;
Explication
- FROM employe AS e1 : Utilise la table employe sous l’alias e1 pour représenter les employés.
- JOIN employe AS e2 : Utilise à nouveau la table employe, cette fois sous l’alias e2, pour représenter les superviseurs.
- ON e1.superviseurID = e2.employeID : Effectue la jointure basée sur la colonne superviseurID de e1 et employeID de e2.
- LEFT JOIN : Permet d’inclure les employés qui n’ont pas de superviseur (c’est-à-dire ceux dont superviseurID est NULL).
Retourner le produit cartésien de deux tables avec SQL en PHP 8
Pour retourner le produit cartésien de deux tables en SQL, vous utilisez la clause CROSS JOIN.
Cette opération retourne toutes les combinaisons possibles de lignes entre les deux tables. Voici comment procéder :
- Syntaxe
SELECT *
FROM table1
CROSS JOIN table2;
Exemple
select v.voiture, c.couleur
FROM voiture as v
CROSS JOIN couleure as c
- Sortir
Écrire un commentaire dans une requête SQL avec PHP 8
En SQL, vous pouvez ajouter des commentaires à vos requêtes pour expliquer ou documenter votre code. Les commentaires peuvent être écrits de deux manières :
Commentaires sur une seule ligne
Utilisez deux tirets (–) pour ajouter un commentaire sur une seule ligne. Tout ce qui suit les tirets sur la même ligne sera considéré comme un commentaire et ignoré lors de l’exécution de la requête.
SELECT
*
FROM
client; — Ceci récupère toutes les informations des clients
Commentaires multi-lignes
Utilisez les barres obliques et les astérisques (/* … */) pour ajouter des commentaires qui s’étendent sur plusieurs lignes.
/*
Cette requête récupère les informations sur les clients et les commandes associées. On utilise une jointure interne pour combiner les tables
*/
SELECT c.clientID, c.nom, o.commandeID, o.date
FROM client AS c
JOIN commande AS o ON c.clientID = o.clientID;
Compter le nombre de caractères d'un enregistrement avec SQL en PHP 8
Pour compter le nombre de caractères dans un enregistrement d’une colonne spécifique d’une table en SQL, vous utilisez la fonction LENGTH()
ou CHAR_LENGTH()
, selon le système de gestion de base de données que vous utilisez. En MySQL, LENGTH()
est couramment utilisée pour cette tâche.
- Syntaxe
SELECT LENGTH(colonne) AS longueur
FROM table;
- Exemple
Supposons que vous avez une table client avec une colonne nom et que vous voulez compter le nombre de caractères dans chaque nom. Voici comment vous pouvez le faire :
SELECT nom, LENGTH(nom) AS longueur_nom
FROM client;
- Sortir
Remplacer un caractère par un autre avec SQL en PHP 8
Pour remplacer un caractère par un autre dans une chaîne de caractères dans une colonne d’une table SQL, vous utilisez la fonction REPLACE().
Cette fonction permet de remplacer toutes les occurrences d’une sous-chaîne par une autre.
- Syntaxe
REPLACE(colonne, 'ancien_caractere', 'nouveau_caractere')
- Exemple
Supposons que vous avez une table client avec une colonne nom et que vous souhaitez remplacer toutes les occurrences du caractère ‘a’ par le caractère ‘KHALID’ dans cette colonne. Voici comment vous pouvez le faire :
SELECT nom, REPLACE(nom, 'a', 'KHALID') AS nom_modifie FROM client
- Sortir
Afficher une partie d'une chaîne de caractères avec SQL en PHP 8
Pour afficher une partie d’une chaîne de caractères dans SQL, vous utilisez la fonction SUBSTRING()
ou SUBSTR()
selon le système de gestion de base de données que vous utilisez. Ces fonctions permettent d’extraire une sous-chaîne d’une chaîne donnée.
Syntaxe de SUBSTRING() en MySQL
SUBSTRING(colonne, position_debut, longueur)
- colonne : La colonne contenant la chaîne de caractères.
- position_debut : La position de départ pour extraire la sous-chaîne. (1 pour le premier caractère).
- longueur : Le nombre de caractères à extraire.
- Exemple
Supposons que vous avez une table client avec une colonne nom et que vous souhaitez extraire les 3 premiers caractères du nom de chaque client :
- Sortir
Inverser une chaîne de caractères avec SQL en PHP 8
Pour inverser une chaîne de caractères en SQL en utilisant uniquement la fonction REVERSE(), il faut savoir que cette fonction est directement disponible dans certains systèmes de gestion de bases de données, comme SQL Server. Cependant, elle n’est pas disponible dans MySQL, PostgreSQL ou SQLite.
- Syntaxe
REVERSE(chaine)
- Exemple
SELECT nom, REVERSE(nom) AS nom_inversé FROM client;
Modifier la casse d'une chaîne de caractères avec SQL en PHP 8
Modifier la casse d’une chaîne de caractères en SQL dépend du système de gestion de base de données que vous utilisez. Voici comment vous pouvez le faire dans les systèmes les plus courants
En MySQL, vous pouvez utiliser les fonctions suivantes pour modifier la casse d’une chaîne :
- UPPER() : Convertit une chaîne en majuscules.
- LOWER() : Convertit une chaîne en minuscules.
- CONCAT() : Peut être utilisé pour combiner les chaînes après transformation si nécessaire.
- Syntaxe
UPPER(chaine)
LOWER(chaine)
Exemple
SELECT nom,
UPPER(nom) AS nom_majuscule,
LOWER(nom) AS nom_minuscule
FROM client;
- Sortir
Supprimer les espaces d'une chaîne de caractères avec SQL en PHP 8
Pour supprimer les espaces d’une chaîne de caractères en SQL, vous pouvez utiliser les fonctions TRIM()
, LTRIM()
, RTRIM()
, et dans certains systèmes de gestion de bases de données, des expressions régulières. Voici comment vous pouvez le faire dans les systèmes les plus courants :
En MySQL, vous pouvez utiliser les fonctions suivantes pour supprimer les espaces :
- TRIM() : Supprime les espaces en début et fin de chaîne.
- LTRIM() : Supprime les espaces en début de chaîne.
- RTRIM() : Supprime les espaces en fin de chaîne.
- REPLACE() : Peut être utilisé pour supprimer tous les espaces dans une chaîne.
- Syntaxe
TRIM(chaine)
LTRIM(chaine)
RTRIM(chaine)
REPLACE(chaine, ' ', '')
- Exemple
SELECT nom,
TRIM(nom) AS nom_trim,
LTRIM(nom) AS nom_ltrim,
RTRIM(nom) AS nom_rtrim,
REPLACE(nom, ' ', '') AS nom_sans_espaces
FROM client;
- Sortir
Manipuler les champs de type DATE avec SQL en PHP 8
Manipuler les champs de type DATE
dans SQL est essentiel pour de nombreuses applications. Les systèmes de gestion de bases de données (SGBD) courants offrent diverses fonctions pour travailler avec les dates, comme les fonctions pour obtenir la date actuelle, ajouter ou soustraire des intervalles de temps, formater les dates, etc. Voici comment vous pouvez manipuler les champs de type DATE
dans plusieurs SGBD :
Obtenir la date actuelle
SELECT CURDATE() AS date_actuelle;
Ajouter ou soustraire des intervalles de temps
- Ajouter des jours :
SELECT DATE_ADD(NOW(), INTERVAL 10 DAY) AS date_plus_10_jours;
- Soustraire des jours :
Extraire des parties de la date
- Jour du mois :
SELECT DAY(NOW()) AS jour_du_mois;
- Mois :
SELECT MONTH(NOW()) AS mois;
- Année :
SELECT YEAR(NOW()) AS annee;
Retourner la date et l'heure actuelles avec SQL en PHP 8
Retourner la date et l’heure actuelle dans SQL peut être fait en utilisant des fonctions intégrées spécifiques à chaque système de gestion de base de données (SGBD). Voici comment faire cela dans plusieurs SGBD courants :
Syntaxe
SELECT NOW() AS date_heure_actuelle;
Interroger un champ DATE avec SQL en PHP 8
Interroger un champ DATE dans SQL permet de récupérer, comparer, et manipuler des données basées sur des dates. Voici quelques exemples et requêtes courantes pour interroger des champs de type DATE dans différents SGBD.
- Exemple
SELECT pseudo
FROM memebre WHERE dateInscription BETWEEN "2017-12-16 17:00:00" AND "2018-01-15 15:00:00"
- Sortir
Insérer la date ou l'heure actuelles avec SQL en PHP 8
Pour insérer la date et l’heure actuelles dans une base de données, vous pouvez utiliser les fonctions spécifiques de chaque SGBD pour obtenir la date et l’heure actuelles et les insérer dans la table correspondante. Voici comment faire cela dans plusieurs SGBD courants.
Pour insérer l’heure actuelle en utilisant CURRENT_TIME
dans MySQL, vous pouvez utiliser la fonction CURRENT_TIME
qui retourne uniquement l’heure actuelle. Voici comment faire :
- Exemple
Insert INTO membre (pseudo, dateInscription)
VALUES ('toto')
- Sortir
Afficher le jour, le mois ou l'année d'inscription avec SQL en PHP 8
Pour afficher le jour, le mois ou l’année d’inscription d’un utilisateur dans une table MySQL, vous pouvez utiliser les fonctions DAY(), MONTH(), et YEAR().
Supposons que vous avez une table membre avec une colonne dateInscription de type DATETIME
. Voici comment procéder :
Sélectionner le jour d’inscription
SELECT pseudo, DAY(dateInscription
FROM membre;
- Sortir
Sélectionner le mois d’inscription
SELECT pseudo, MONTH(dateInscription)
FROM membre;
- Sortir
Sélectionner l’année d’inscription
SELECT pseudo, YEAR(dateInscription)
FROM membre;
- Sortir
Afficher l'heure, les minutes ou les secondes d’inscription avec SQL en PHP 8
Pour afficher l’heure, les minutes ou les secondes d’un champ de type DATETIME
ou TIME dans MySQL, vous pouvez utiliser les fonctions HOUR(), MINUTE()
, et SECOND()
. Voici comment vous pouvez le faire :
Sélectionner l’heure d’inscription
SELECT pseudo, HOUR(dateInscription)
FROM membre;
- Sortir
Sélectionner les minutes d’inscription
SELECT pseudo, MINUTE(dateInscription)
FROM membre;
- Sortir
Sélectionner les secondes d’inscription
SELECT pseudo, SECOND(dateInscription)
FROM membre;
- Sortir !
Formater la date et l'heure avec SQL en PHP 8
Pour formater la date et l’heure dans MySQL, vous pouvez utiliser la fonction DATE_FORMAT()
. Cette fonction vous permet de spécifier le format dans lequel vous souhaitez afficher la date et l’heure.
- Syntaxe de DATE_FORMAT()
DATE_FORMAT(date, format)
- date : La colonne ou l’expression de date/heure que vous souhaitez formater.
- format : La chaîne de format utilisée pour spécifier la sortie souhaitée.
Formats courants
Voici quelques formats courants que vous pouvez utiliser avec DATE_FORMAT() :
- %Y : Année sur quatre chiffres (ex. : 2024)
- %y : Année sur deux chiffres (ex. : 24)
- %m : Mois sur deux chiffres (01 à 12)
- %d : Jour du mois sur deux chiffres (01 à 31)
- %H : Heure en format 24 heures (00 à 23)
- %i : Minutes sur deux chiffres (00 à 59)
- %s : Secondes sur deux chiffres (00 à 59)
- %a : Abbréviation du jour de la semaine (ex. : Mon)
- %b : Abbréviation du mois (ex. : Jan)
- %p : AM ou PM
Exemples
SELECT DATE_FORMAT(dateInscription, '%d %M %Y') AS nouvelleDate
FROM membre;
- Sortir
Afficher le jour, la semaine ou l'année avec SQL en PHP 8
Pour afficher le jour du mois, de la semaine ou de l’année à partir d’une colonne de type DATE
ou DATETIME
dans MySQL, vous pouvez utiliser les fonctions suivantes :
- DAY() : Pour obtenir le jour du mois.
- WEEKDAY() : Pour obtenir le jour de la semaine (0 = Lundi, 6 = Dimanche).
- DAYOFWEEK() : Pour obtenir le jour de la semaine (1 = Dimanche, 7 = Samedi).
- DAYOFYEAR() : Pour obtenir le jour de l’année
Syntaxe
Afficher le jour du mois
DAY(date)
Afficher le jour de la semaine avec WEEKDAY()
WEEKDAY(date)
- Exemples
SELECT pseudo, WEEKDAY(dateInscription)
FROM membre;
- Sortir
Ajouter un intervalle de temps à une date avec SQL en PHP 8
Pour ajouter un intervalle de temps à une date dans MySQL, vous pouvez utiliser la fonction DATE_ADD(). Cette fonction vous permet d’ajouter des intervalles de temps tels que des jours, des mois, des années, des heures, des minutes, ou des secondes à une date.
Syntaxe de DATE_ADD()
DATE_ADD(date, INTERVAL expr unit)
- date : La date à laquelle vous souhaitez ajouter un intervalle.
- INTERVAL expr unit : L’intervalle à ajouter, où expr est la quantité de temps et unit est l’unité de temps (ex. : DAY, MONTH, YEAR, HOUR, MINUTE, SECOND).
Unités de Temps
- SECOND : Secondes
- MINUTE : Minutes
- HOUR : Heures
- DAY : Jours
- WEEK : Semaines
- MONTH : Mois
- QUARTER : Trimestres
- YEAR : Années
Exemples
Ajouter des jours à une date
Syntaxe :
SELECT DATE_ADD(dateInscription, INTERVAL 10 DAY) AS date_plus_10_jours
FROM membre;
Ajouter des mois à une date
SELECT DATE_ADD(dateInscription, INTERVAL 3 MONTH) AS date_plus_3_mois
FROM membre;
Ajouter des années à une date
SELECT DATE_ADD(dateInscription, INTERVAL 1 YEAR) AS date_plus_1_an
FROM membre;
Ajouter des heures à une date
SELECT DATE_ADD(dateInscription, INTERVAL 5 HOUR) AS date_plus_5_heures
FROM membre; Ajouter des minutes à une date
SELECT DATE_ADD(dateInscription, INTERVAL 30 MINUTE) AS date_plus_30_minutes
FROM membre;
Résultat attendu
pseudo | date_plus_10_jours | date_plus_3_mois | date_plus_1_an | date_plus_5_heures | date_plus_30_minutes |
---|---|---|---|---|---|
user1 | 2024-08-14 14:30:15 | 2024-11-04 14:30:15 | 2025-08-04 14:30:15 | 2024-08-04 19:30:15 | 2024-08-04 15:00:15
|
user2 | 2024-01-04 09:45:30 | 2024-03-25 09:45:30 | 2024-12-25 09:45:30 | 2023-12-25 14:45:30 | 2023-12-25 10:15:30
|
Retirer un intervalle de temps à une date avec SQL en PHP 8
Pour retirer un intervalle de temps à une date dans MySQL, vous pouvez utiliser la fonction DATE_SUB()
. Cette fonction vous permet de soustraire des intervalles de temps tels que des jours, des mois, des années, des heures, des minutes, ou des secondes à une date.
Syntaxe
DATE_SUB(date, INTERVAL expr unit)
date : La date à laquelle vous souhaitez soustraire un intervalle.
INTERVAL expr unit : L’intervalle à soustraire, où expr est la quantité de temps et unit est l’unité de temps (ex. : DAY, MONTH, YEAR, HOUR, MINUTE, SECOND).
Exemple
select pseudo DATE_SUB(dateInscription,INTERVAL 10 DAY)
FROM membre
Sortir
Connaître l'intervalle de jours entre deux dates avec SQL en PHP 8
Pour connaître l’intervalle de jours entre deux dates dans MySQL, vous pouvez utiliser la fonction DATEDIFF()
. Cette fonction calcule la différence en jours entre deux dates.
Syntaxe
DATEDIFF(date1, date2)
Exemple
select pseudo DATEDIF(dateFin,dateInscription) AS jour
FROM membre
Sortir
Connaître l'intervalle d'heures entre deux dates avec SQL en PHP 8
Pour connaître l’intervalle d’heures entre deux dates dans MySQL, vous pouvez utiliser la fonction TIMEDIF
Cette fonction permet de calculer la différence entre deux dates dans l’unité de temps souhaitée, y compris les heures.
Exemple
select pseudo TIMEDIF(dateFin,dateInscription) AS temps
FROM membre
Sortir
Retourner le TIMESTAMP d'une date avec SQL en PHP 8
Pour retourner le TIMESTAMP
d’une date dans MySQL, vous pouvez utiliser la fonction UNIX_TIMESTAMP()
. Cette fonction renvoie le nombre de secondes écoulées depuis le ‘1970-01-01 00:00:00’ UTC (l’époque Unix) jusqu’à la date spécifiée.
Syntaxe
UNIX_TIMESTAMP(date)
Exemple
select pseudo UNIX_TIMESTAMP(dateInscription) AS seconde
FROM membre
Créer une table avec SQL en PHP 8
Créer une table en SQL est une étape fondamentale pour organiser et stocker des données dans une base de données relationnelle. Cette opération définit la structure de la table, y compris les colonnes, leurs types de données, et les contraintes éventuelles, afin de garantir l’intégrité et la cohérence des informations stockées.
- Pour créer une table en SQL, il faut respecter la syntaxe suivante :
CREATE TABLE nom_table
(
colonne1 type_donnee [contraintes],
colonne2 type_donnee [contraintes],
... [contraintes_table]
)
- Exemple de création d’une table membre :
CREATE TABLE membre
(
memberID INT PRIMARY KEY AUTO_INCREMENT,
pseudo VARCHAR(50) NOT NULL,
pays VARCHAR(50) DEFAULT 'France',
dateInscription DATE
)
Voilà le résultat obtenu :
Supprimer les enregistrements d'une table avec SQL en PHP 8
Ajouter une nouvelle colonne à une table avec SQL en PHP 8
En SQL, la commande TRUNCATE
permet de supprimer toutes les données d’une table sans supprimer la table en elle-même. En d’autres mots, cela permet de purger la table. Cette instruction diffère de la commande DROP
qui à pour but de supprimer les données ainsi que la table qui les contient.
A noter : l’instruction TRUNCATE
est semblable à l’instruction DELETE
sans utilisation de WHERE
. Parmi les petite différences TRUNCATE
est toutefois plus rapide et utilise moins de ressource. Ces gains en performance se justifie notamment parce que la requête n’indiquera pas le nombre d’enregistrement supprimés et qu’il n’y aura pas d’enregistrement des modifications dans le journal.
- Cette instruction s’utilise dans une requête SQL semblable à celle-ci
TRUNCATE TABLE `table`
- Exemple de supprimer les enregistrement de la table membre :
TRUNCATE TABLE membre
a commande ALTER TABLE
en SQL permet de modifier une table existante. Idéal pour ajouter une colonne, supprimer une colonne ou modifier une colonne existante, par exemple pour changer le type.
- D’une manière générale, la commande s’utilise de la manière suivante:
ALTER TABLE nom_table
Instruction
- Exemple d’ajouter une colonne de ‘pass’ a la table membre :
ALTER TABLE membre
ADD COLUMN pass VARCHAR(50) NOT NULL AFTER pseudo
Et voilà la table comment ré-épersenter après l’exécution de cette requête :
Modifier le type d'une colonne avec SQL en PHP 8
- Exemple de modifier une colonne dans la table membre :
ALTER TABLE membre
MODIFY COLUMN dateInscription DATETIME NOT NULL
Et voilà la table comment ré-épersenter après l’exécution de cette requête :
Renommer une colonne avec SQL en PHP 8
- Exemple de renommer une colonne dans la table membre :
ALTER TABLE membre
CHANGE COLUMN pass password VARCHAR(50) NOT NULL
Et voilà la table comment ré-épersenter après l’exécution de cette requête :
Supprimer une colonne avec SQL en PHP 8
- Exemple de supprimer une colonne dans la table membre :
ALTER TABLE membre
DROP COLUMN password
Et voilà le résultat après l’exécution de la requête de suppression de la colonne password :
Modifier le nom d'une table avec SQL en PHP 8
- Exemple de modifier le nom de la table membre avec nouvelle nom ‘membres’ :
ALTER TABLE membre
RENAME To members
Maintenant, après l’exécution de cette requête, le nom de la table sera « membres ».
Supprimer une table avec SQL en PHP 8
La commande DROP TABLE en SQL permet de supprimer définitivement une table d’une base de données. Cela supprime en même temps les éventuels index, trigger, contraintes et permissions associées à cette table.
Attention : il faut utiliser cette commande avec attention car une fois supprimée, les données sont perdues. Avant de l’utiliser sur une base importante il peut être judicieux d’effectuer un backup (une sauvegarde) pour éviter les mauvaises surprises.
- Pour supprimer une table “nom_table” il suffit simplement d’utiliser la syntaxe suivante :
DROP TABLE nom_table
- Exemple pour suppression de la table membres :
DROP TABLE membres
Maintenant, après l’exécution de cette requête, la table n’est pas conservée dans la base de données alphorm.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !
Conclusion
La maîtrise des requêtes SQL avec PHP 8 vous ouvre les portes d’une gestion optimale de vos bases de données. En appliquant les techniques et les bonnes pratiques abordées dans cet article, vous pouvez non seulement améliorer l’efficacité de vos requêtes, mais aussi garantir la fiabilité et la sécurité de vos données. Que ce soit pour l’exécution de requêtes simples ou l’optimisation de processus complexes, PHP 8 et SQL constituent des outils puissants pour tout développeur souhaitant créer des applications web robustes et performantes. N’hésitez pas à mettre en pratique ces conseils pour faire évoluer vos compétences en développement.