oujood.com

manipulation des données : where, limit et order by

La sélection d’enregistrement dans une table peut être filtrée avec les instructions : WHERE, ORDER BY et LIMIT
Lorsque vous sélectionnez des enregistrements dans une table, vous pouvez filtrer la sélection en utilisant les instructions :
- WHERE : pour ne sélectionner que les enregistrements répondants à une condition donnée.
- LIMIT :pour limiter le nombre d'enregistrements renvoyés par la requête.
- ORDER BY : pour trier le résultat par ordre croissant ou décroissant.

chercher |

Python MySQL la clause Where

Si vous voulez récupérer, supprimer ou mettre à jour des lignes particulières d'une table dans MySQL, vous devez utiliser la clause where pour spécifier la condition permettant de filtrer les lignes de la table pour l'opération.

Par exemple, si vous avez une instruction SELECT avec la clause where, seules les lignes qui satisfont à la condition spécifiée seront récupérées.

Syntaxe:
La syntaxe de la clause WHERE est la suivante

SELECT colonne1, colonne2,... colonneN FROM nom_table WHERE [condition]

Exemple : Dans l'exemple suivant nous allons sélectionner, dans la table EMPLOYEE(créée dans le chapitre Créer une table MySQL), à l'aide de la clause where, les enregistrements dont l'âge est supérieur à 35 ans.

  Copier le code

# Importation des module nécessaires
import mysql.connector
try:
	#Créer une connexion à la base de données
	conn = mysql.connector.connect(
	host = "localhost",
	user = "votre nom utilisateur",
	passwd = "votre mot de passe",
	database="oujood_py"
	)

# préparation d'un objet curseur
    curseurObjet = conn.cursor()

#Récupération des données de la table EMPLOYEE
    sql = "SELECT * from EMPLOYEE WHERE age > 35"

#Exécution de la requête
    curseurObjet.execute(sql)

#Récupération du resultat
    resultat = curseurObjet.fetchall();
    print(resultat)


except mysql.connector.Error as error:
    print("Échec de la sélection des enregistrements de la table : {}".format(error,"\n"))
finally:
    if conn.is_connected():
        curseurObjet.close()
        conn.close()
        print("\n La connexion MySQL est fermée")

De même pour supprimer des enregistrements avec la clause DELETE, on peut suprimer les enregistrements répondant à une codition donnée. Pour avoir des exemples consultez notre cours pour supprimer des enregistrements dans une table.

La clause WHERE est aussi utilisée avec la clause UPDATE pour mettre à jour des enregistrements qui répondent à une condition donnée . Pour avoir des exemples consultez notre cours surMySQL UPDATE .

ORDER BY : pour trier le résultat par ordre croissant ou décroissant

Lorsque vous récupérez des données à l'aide de la requête SELECT, vous pouvez trier les résultats dans l'ordre souhaité (ascendant ou descendant) à l'aide de la clause OrderBy. Par défaut, cette clause trie les résultats dans l'ordre croissant. Si vous souhaitez les classer dans l'ordre décroissant, vous devez utiliser explicitement le mot clé "DESC".

Syntaxe : Voici la syntaxe de la clause ORDER BY :

SELECT colonne1, colonne2,... colonneN FROM nom_table WHERE [condition] [ORDER BY column1, column2,... columnN] [ASC | DESC]

Pour récupérer le contenu d'une table dans un ordre spécifique, invoquez la méthode execute() sur l'objet curseur et passez-lui en paramètre l'instruction SELECT accompagnée de la clause ORDER BY.

Exemple : Dans l'exemple suivant, on récupère les enregistrements dans l'ordre (croissant) de leur âge, en utilisant la clause ORDER BY.

  Copier le code

# Importation des module nécessaires
import mysql.connector
try:
	#Créer une connexion à la base de données
	conn = mysql.connector.connect(
	host = "localhost",
	user = "votre nom utilisateur",
	passwd = "votre mot de passe",
	database="oujood_py"
	)
# préparation d'un objet curseur
    curseurObjet = conn.cursor()

#Récupération des données de la table EMPLOYEE
    sql = "SELECT * from EMPLOYEE ORDER BY AGE"

#Exécution de la requête
    curseurObjet.execute(sql)

#Récupération du resultat
    resultat = curseurObjet.fetchall();
    print(resultat)


except mysql.connector.Error as error:
    print("Échec de la sélection des enregistrements de la table : {}".format(error,"\n"))
finally:
    if conn.is_connected():
        curseurObjet.close()
        conn.close()
        print("\n La connexion MySQL est fermée")	
Si vous voulez trier par orqre décroissant, changez le code ci dessus en utilisant le mot clé "DESC" comme suit:
 "SELECT * from EMPLOYEE ORDER BY AGE DESC"

La Clause LIMIT en utilisant python

Lorsque vous récupérez des enregistrements, si vous souhaitez récupérer un nombre donné d'enregistrements, vous pouvez le faire en utilisant la clause LIMIT de MYSQL.

Si vous invoquez la méthode execute() sur l'objet curseur en passant la requête SELECT avec la clause LIMIT, vous pouvez récupérer un nombre requis d'enregistrements.

Exemple : L'exemple python suivant utilise la clause LIMIT et récupère les trois premiers enregistrements.

  Copier le code

# Importation des module nécessaires
import mysql.connector
try:
	#Créer une connexion à la base de données
	conn = mysql.connector.connect(
	host = "localhost",
	user = "votre nom utilisateur",
	passwd = "votre mot de passe",
	database="oujood_py"
	)
# préparation d'un objet curseur
    curseurObjet = conn.cursor()

#Récupération des données de la table EMPLOYEE
    sql = "SELECT * from EMPLOYEE  LIMIT 3"

#Exécution de la requête
    curseurObjet.execute(sql)

#Récupération du resultat
    resultat = curseurObjet.fetchall();
    print(resultat)


except mysql.connector.Error as error:
    print("Échec de la sélection des enregistrements de la table : {}".format(error,"\n"))
finally:
    if conn.is_connected():
        curseurObjet.close()
        conn.close()
        print("\n La connexion MySQL est fermée")

LIMIT avec OFFSET

Si vous souhaitez sélectionner les enregistrements à partir du nième enregistrement (et non du premier), vous pouvez le faire en utilisant OFFSET avec LIMIT comme suit :
 "SELECT * from EMPLOYEE  LIMIT 3 OFFSET 3"
Ce qui va récupérer trois enregistrements à partir du troisième enregistrement.



Voir aussi nos tutoriel :

fonction str_word_count

Compte le nombre de mots utilisés dans une chaîne

La fonction rtrim

Supprime les espaces (ou d'autres caractères) de fin de chaîne

fonction ucwords, ucwords

Met en majuscule la premi re lettre de tous les mots