Recherche la première occurrence dans une chaîne, sans tenir compte de la casse
Dans MySQL quand vous divisez les données en deux tables ou plus, vous pouvez récupérer les enregistrements combinés de ces tables en utilisant des jointures.
Les jointures MySQL sont utilisées avec l'instruction SELECT. Ils sont utilisés pour récupérer des données de plusieurs tables. On l'exécute chaque fois que l'on a besoin d'extraire des enregistrements de deux tables ou plus.
SELECT colonnes FROM table1 INNER JOIN table2 ON table1.colonne_commune = table2.colonne_commune
Exemple : Supposons que nous avons créé une table sous le nom CLIENTS et que nous y avons introduit des données comme indiqué ci-dessous.CREATE TABLE IF NOT EXISTS CLIENTS( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, PRENOM CHAR(20) NOT NULL, NOM CHAR(20), ADRESSE CHAR(200)), PHONE LONG, EMAIL CHAR(100), FAVORI INT ) requete_sql = "INSERT INTO CLIENTS(ID,PRENOM, NOM, ADRESSE, PHONE, EMAIL, FAVORI) VALUES (%s, %s, %s, %s, %s, %s, %s)" valeur = [ (101,'Marcus','Mohanus', '40 lot 1 paris','0676160137','marcus@mon_mail.com', 201), (102,'Peter', 'Neel', '43 rue 1 quartier B ville G', '0522722976','Peter@mon_mail.com', 202), (103,'Amy', 'Barik', '35 Av B bloc 7 ville C', '0742553500','amy@mon_mail.com',''), (104,'Raja', 'Moufid', '32 BV L ville D', '0645782206','raja@mon_mail.com','') ]Puis une table sous le nom PRODUITS et que nous y avons introduit des données comme indiqué ci-dessous.
CREATE TABLE IF NOT EXISTS PRODUITS( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, PRODUIT(20) NOT NULL, PRIX FLOAT ) requete_sql = "INSERT INTO PRODUITS(ID,PRODUIT, PRIX) VALUES (%s, %s, %s)" valeur = [ (201,'Chocolat',15.00), (202,'Bombon',5.25 ), (203,'Huile', 10.75 ), (204,'Lait écrémé', 1.25 )]Dans la colonne FAVORI bous avons introduit le ID du Produit favori du CLIENTS.
# 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() #Suppression de la table EMPLOYEE si elle existe déjà. curseurObjet.execute("DROP TABLE IF EXISTS CLIENTS") #Creation de la table CLIENTS requete ='''CREATE TABLE CLIENTS( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, PRENOM CHAR(20) NOT NULL, NOM CHAR(20), ADRESSE CHAR(200), PHONE LONG, EMAIL CHAR(50) NOT NULL, FAVORI INT )''' curseurObjet.execute(requete) requete_sql = "INSERT INTO CLIENTS(ID,PRENOM, NOM, ADRESSE, PHONE, EMAIL, FAVORI) VALUES (%s, %s, %s, %s, %s, %s, %s)" valeur = [ (101,'Marcus','Mohanus', '40 lot 1 paris','0676160137','marcus@mon_mail.com',201), (102,'Peter', 'Neel', '43 rue 1 quartier B ville G', '0522722976','Peter@mon_mail.com',202), ] # Exécution de la commande SQL curseurObjet.executemany(requete_sql, valeur) conn.commit() requete_sql1 = "INSERT INTO CLIENTS(PRENOM, NOM, ADRESSE, PHONE, EMAIL) VALUES ( %s, %s, %s, %s, %s)" valeur = [ ('Amy', 'Barik', '35 Av B bloc 7 ville C', '0742553500','amy@mon_mail.com'), ('Raja', 'Moufid', '32 BV L ville D', '0645782206','raja@mon_mail.com'), ] # Exécution de la commande SQL curseurObjet.executemany(requete_sql1, valeur) conn.commit() #Suppression de la table EMPLOYEE si elle existe déjà. curseurObjet.execute("DROP TABLE IF EXISTS PRODUITS") sql = '''CREATE TABLE IF NOT EXISTS PRODUITS( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, PRODUIT CHAR(20), PRIX INT )''' curseurObjet.execute(sql) conn.commit() sql1 = """INSERT INTO PRODUITS(ID,PRODUIT, PRIX) VALUES (201, 'Chocolat', 15), (202, 'Bombon', 5), (203, 'Huile', 10), (204, 'Lait écrémé', 1) """ curseurObjet.execute(sql1) conn.commit() # Récupérer du résultat sql2 = "SELECT * from CLIENTS INNER JOIN PRODUITS ON CLIENTS.FAVORI = PRODUITS.ID" # Exécution de la commande SQL curseurObjet.execute(sql2) # Affichage du résultat resultat = curseurObjet.fetchall(); for x in resultat: print(x) except mysql.connector.Error as error: print("Échec : {}".format(error),"\n") finally: if conn.is_connected(): curseurObjet.close() conn.close() print("\n La connexion MySQL est fermée")Nous reprenons le même exemple mais cette fois au lieu de sélectionner toutes les colonnes, nous pouvons ne sélectionner que les colonnes dont nous avons besoin.
# 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érer du résultat sql2 = "SELECT CLIENTS.PRENOM , PRODUITS.PRODUIT from CLIENTS INNER JOIN PRODUITS ON CLIENTS.FAVORI = PRODUITS.ID" # Exécution de la commande SQL curseurObjet.execute(sql2) # Affichage du résultat resultat = curseurObjet.fetchall(); for x in resultat: print(x) except mysql.connector.Error as error: print("Échec : {}".format(error),"\n") finally: if conn.is_connected(): curseurObjet.close() conn.close() print("\n La connexion MySQL est fermée")
Note : Les clients qui n'ont pas de produit favori, ne sont pas inclus dans le résultat, à savoir : Amy et raja
# 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érer du résultat sql2 = "SELECT CLIENTS.PRENOM , PRODUITS.PRODUIT from CLIENTS LEFT JOIN PRODUITS ON CLIENTS.FAVORI = PRODUITS.ID" # Exécution de la commande SQL curseurObjet.execute(sql2) # Affichage du résultat resultat = curseurObjet.fetchall(); for x in resultat: print(x) except mysql.connector.Error as error: print("Échec : {}".format(error),"\n") finally: if conn.is_connected(): curseurObjet.close() conn.close() print("\n La connexion MySQL est fermée")
# 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érer du résultat sql2 = "SELECT CLIENTS.PRENOM , PRODUITS.PRODUIT from CLIENTS RIGHT JOIN PRODUITS ON CLIENTS.FAVORI = PRODUITS.ID" # Exécution de la commande SQL curseurObjet.execute(sql2) # Affichage du résultat resultat = curseurObjet.fetchall(); for x in resultat: print(x) except mysql.connector.Error as error: print("Échec : {}".format(error),"\n") finally: if conn.is_connected(): curseurObjet.close() conn.close() print("\n La connexion MySQL est fermée")