Qu'est-ce que INSERT INTO?
INSERT INTO est utilisé pour stocker des données dans les tables. La commande INSERT crée une nouvelle ligne dans la table pour stocker les données. Les données sont généralement fournies par des programmes d'application qui s'exécutent au-dessus de la base de données.
Syntaxe de base
Regardons la syntaxe de base de la commande INSERT INTO MySQL:
INSERT INTO `nom_table` (colonne_1, colonne_2,…) VALEURS (valeur_1, valeur_2,…);
ICI
- INSERT INTO `nom_table` est la commande qui indique au serveur MySQL d'ajouter une nouvelle ligne dans une table nommée` nom_table.`
- (column_1, column_2,…) spécifie les colonnes à mettre à jour dans la nouvelle ligne MySQL
- VALUES (value_1, value_2,…) spécifie les valeurs à ajouter dans la nouvelle ligne
Lors de la fourniture des valeurs de données à insérer dans la nouvelle table, les éléments suivants doivent être pris en compte:
- Types de données de chaîne - toutes les valeurs de chaîne doivent être placées entre guillemets simples.
- Types de données numériques - toutes les valeurs numériques doivent être fournies directement sans les placer entre guillemets simples ou doubles.
- Types de données de date - placez les valeurs de date entre guillemets simples au format «AAAA-MM-JJ».
Exemple:
Supposons que nous ayons la liste suivante des nouveaux membres de la bibliothèque qui doivent être ajoutés à la base de données.
Noms complets | Date de naissance | le genre | Adresse physique | adresse postale | Numéro de contact | Adresse e-mail |
---|---|---|---|---|---|---|
Leonard Hofstadter | Homme | Woodcrest | 0845738767 | |||
Sheldon Cooper | Homme | Woodcrest | 0976736763 | |||
Rajesh Koothrappali | Homme | Fairview | 0938867763 | |||
Leslie Winkle | 14/02/1984 | Homme | 0987636553 | |||
Howard Wolowitz | 24/08/1981 | Homme | Parc du Sud | Boîte postale 4563 | 0987786553 | Cette adresse e-mail est protégée du spam. Vous devez activer JavaScript pour le visualiser. |
INSÉRONS les données une par une. Nous commencerons par Leonard Hofstadter. Nous traiterons le numéro de contact comme un type de données numérique et n'inclurons pas le numéro entre guillemets simples.
INSERT INTO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALUES ('Leonard Hofstadter', 'Male', 'Woodcrest', 0845738767);
L'exécution du script ci-dessus supprime le 0 du numéro de contact de Leonard. En effet, la valeur sera traitée comme une valeur numérique et le zéro (0) au début est supprimé car il n'est pas significatif.
Pour éviter de tels problèmes, la valeur doit être placée entre guillemets simples comme indiqué ci-dessous -
INSERT INTO `members` (` full_names`, `gender`,` physical_address`, `contact_number`) VALUES ('Sheldon Cooper', 'Homme', 'Woodcrest', '0976736763');
Dans le cas ci-dessus, zéro (0) ne sera pas supprimé
La modification de l'ordre des colonnes n'a aucun effet sur la requête INSERT dans MySQL tant que les valeurs correctes ont été mappées aux colonnes correctes.
La requête ci-dessous illustre le point ci-dessus.
INSERT INTO `members` (` contact_number`, `gender`,` full_names`, `physical_address`) VALUES ('0938867763', 'Male', 'Rajesh Koothrappali', 'Woodcrest');
Les requêtes ci-dessus ont ignoré la colonne de date de naissance. Par défaut, MySQL insérera des valeurs NULL dans les colonnes qui sont omises dans la requête INSERT.
Insérons maintenant l'enregistrement pour Leslie, qui a la date de naissance fournie. La valeur de la date doit être placée entre guillemets simples en utilisant le format «AAAA-MM-JJ».
INSERT INTO `members` (` full_names`, `date_of_birth`,` gender`, `physical_address`,` contact_number`) VALUES ('Leslie Winkle', '1984-02-14', 'Male', 'Woodcrest', ' 0987636553 ');
Toutes les requêtes ci-dessus ont spécifié les colonnes et les ont mappées aux valeurs de l'instruction d'insertion MySQL. Si nous fournissons des valeurs pour TOUTES les colonnes de la table, nous pouvons omettre les colonnes de la requête d'insertion MySQL.
Exemple:-
INSÉRER DANS LES VALEURS `membres` (9, 'Howard Wolowitz', 'Homme', '1981-08-24',
'SouthPark', 'PO Box 4563', '0987786553', 'lwolowitz [at] email.me') ;
Utilisons maintenant l'instruction SELECT pour afficher toutes les lignes de la table du membre.
SELECT * FROM `members`;
numéro de membre | noms complets | le genre | date de naissance | adresse physique | adresse postale | contct_ numéro | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Femme | 21-07-1980 | Parcelle de la première rue n ° 4 | Sac privé | 0759 253 542 | Cette adresse e-mail est protégée du spam. Vous devez activer JavaScript pour le visualiser. |
2 | Janet Smith Jones | Femme | 23-06-1980 | Melrose 123 | NUL | NUL | Cette adresse e-mail est protégée du spam. Vous devez activer JavaScript pour le visualiser. |
3 | Robert Phil | Homme | 12-07-1989 | 3e rue 34 | NUL | 12345 | Cette adresse e-mail est protégée du spam. Vous devez activer JavaScript pour le visualiser. |
4 | Gloria Williams | Femme | 14-02-1984 | 2e rue 23 | NUL | NUL | NUL |
5 | Leonard Hofstadter | Homme | NUL | Woodcrest | NUL | 845738767 | NUL |
6 | Sheldon Cooper | Homme | NUL | Woodcrest | NUL | 976736763 | NUL |
7 | Rajesh Koothrappali | Homme | NUL | Woodcrest | NUL | 938867763 | NUL |
8 | Leslie Winkle | Homme | 14-02-1984 | Woodcrest | NUL | 987636553 | NUL |
9 | Howard Wolowitz | Homme | 24-08-1981 | Parc du Sud | Boîte postale 4563 | 987786553 | Cette adresse e-mail est protégée du spam. Vous devez activer JavaScript pour le visualiser. |
Notez que le numéro de contact de Leonard Hofstadter a supprimé le zéro (0) du numéro de contact. Les autres numéros de contact n'ont pas baissé le zéro (0) au début.
Insertion dans une table à partir d'une autre table
La commande INSERT peut également être utilisée pour insérer des données dans une table à partir d'une autre table. La syntaxe de base est illustrée ci-dessous.
INSERT INTO table_1 SELECT * FROM table_2;
Regardons maintenant un exemple pratique. Nous créerons une table factice pour les catégories de films à des fins de démonstration. Nous appellerons la nouvelle table des catégories categories_archive. Le script ci-dessous crée la table.
CREATE TABLE `categories_archive` (` category_id` int (11) AUTO_INCREMENT, `category_name` varchar (150) DEFAULT NULL,` remarques` varchar (500) DEFAULT NULL, PRIMARY KEY (`category_id`))
Exécutez le script ci-dessus pour créer la table.
Insérons maintenant toutes les lignes du tableau des catégories dans le tableau des archives des catégories. Le script ci-dessous nous aide à y parvenir.
INSERT INTO `categories_archive` SELECT * FROM` categories`;
L'exécution du script ci-dessus insère toutes les lignes de la table des catégories dans la table d'archive des catégories. Notez que les structures de table devront être les mêmes pour que le script fonctionne. Un script plus robuste est celui qui mappe les noms de colonne de la table d'insertion à ceux de la table contenant les données.
La requête ci-dessous montre son utilisation.
INSERT INTO `archives_catégories` (id_catégorie, nom_catégorie, remarques) SELECT id_catégorie, nom_catégorie, remarques FROM` catégories`;
Exécution de la requête SELECT
SELECT * FROM `categories_archive`
donne les résultats suivants indiqués ci-dessous.
category_id | Nom de catégorie | remarques |
---|---|---|
1 | Comédie | Films avec humour |
2 | Romantique | Histoires d'amour |
3 | Épique | Histoire de films anciens |
4 | Horreur | NUL |
5 | La science-fiction | NUL |
6 | Polar | NUL |
7 | action | NUL |
8 | Comédie romantique | NUL |
9 | Les dessins animés | NUL |
dix | Les dessins animés | NUL |
Exemple PHP: insérer dans une table MySQL
La fonction mysqli_query est utilisée pour exécuter des requêtes SQL.
La fonction peut être utilisée pour exécuter les types de requête suivants;
- Insérer
- Sélectionner
- Mettre à jour
- effacer
Il a la syntaxe suivante.
mysqli_query($db_handle,$query);
ICI,
"mysqli_query (
…) "Est la fonction qui exécute les requêtes SQL."$ query" est la requête SQL à exécuter
"$ link_identifier" est facultatif, il peut être utilisé pour passer le lien de connexion au serveur
Exemple
$servername = "localhost";$username = "alex";$password = "yPXuPT";$dbname = "afmznf";// Create connection$conn = mysqli_connect($servername, $username, $password, $dbname);// Check connectionif (!$conn) {die("Connection failed: " . mysqli_connect_error());}$sql= "INSERT INTO addkeyworddata(link, keyword)VALUES ('https://www.guru99.com/','1000')";if (mysqli_query($conn, $sql)) {echo "New record created successfully".'
';} else {echo "Error: " . $sql. "
" . mysqli_error($conn);}}
Résumé
- La commande INSERT est utilisée pour ajouter de nouvelles données dans une table. MySql ajoutera une nouvelle ligne, une fois la commande exécutée.
- Les valeurs de date et de chaîne doivent être placées entre guillemets simples.
- Les valeurs numériques n'ont pas besoin d'être placées entre guillemets.
- La commande INSERT peut également être utilisée pour insérer des données d'une table dans une autre.